【期末作业】学生成绩管理系统【源代码—重构】【C语言】

吐槽

这作业最开始写出来的代码<<<

可以说完全用数组写的了,而且一个文件写完(至少不是一个主函数还算好吧.jpg),头文件是什么不知道;结构体啥玩意,文件操作还是被迫的,
最后我还是重新写入一遍这作业
(虽然这个我写的一半就开始摆烂,随便乱来就是了,后面的注释已经被吃了)

作业题目

1、学生成绩管理系统

学生数据由学号、姓名、班级、三门课(数学、英语、计算机)的成绩和平均成绩构成。

实现功能包括:

(1)添加学生的记录

(2)查询学生(分别按学号和姓名)

(3)对学生数据排序(分别按平均成绩和计算机成绩的降序)

(4)删除学生记录

(5)修改学生记录

(6)班级成绩分析(各科平均成绩、最高分、最低分、及格率)

(7)输出学生信息表

源代码

全部文件

在这里插入图片描述

头文件

学生成绩管理系统.h
#ifndef _学生成绩管理系统_h_ // 避免重复声明
#define _学生成绩管理系统_h_ // 一般以文件名定义_xxx_x_

/*导入头文件*/
#include <stdio.h>			//输入输出
#include <stdint.h>			//数据类型重命名
#include <stdlib.h>			//工具函数库:动态内存分配、退出程序...

/*结构体变量*/
typedef struct /*学生信息*/
{
   
	uint64_t number;
	char name[20];
	char class[40];
	float math;
	float english;
	float computer;
	float average_score;
} report_struct;

typedef struct report_list /*学生信息的单向链表*/
{
   
	report_struct data;
	struct report_list *next;
	struct report_list *last;
} report_list;

/*函数声明*/
report_list *report_list_Create_header();
void report_list_node_add(report_list *_node, report_list *_new_node);
void report_list_data_add(report_list *_node, report_struct *data);
report_list *report_list_number_seek(report_list *_header, uint64_t number);
report_list *report_list_name_seek(report_list *_header, char *_name);
report_list* report_list_class_forward_seek(report_list* _header, char* _class);
report_list* report_list_class_backward_seek(report_list* _header, char* _class);
void report_list_node_exchange(report_list *_node1, report_list *_node2);
void report_list_node_pop(report_list *_node);

int16_t Menu_input(int16_t start, int16_t stop);


void Add_student_record(report_list *_report_header);

report_list* Enquire_students_record(report_list* _report_header, int8_t flag);

void Sorting(report_list* _report_header);
void Sorting_average_score(report_list* _report_header);
void Sorting_computer(report_list* _report_header);

void Delete_student_record(report_list* _report_header);

void Revision_student_record(report_list* _report_header);

void Class_performance_analysis(report_list* _report_header);

void Output_student_information_sheet(report_list* _report_header);

void Exit_menu(report_list* _report_header);
void Save_student_information_sheet(report_list* _report_header);
void Import_student_information_sheet(report_list* _report_header);
#endif

主函数文件

main.c
#include "学生成绩管理系统.h"

void main()
{
   
	int16_t menu_number;
	report_list *_Student_information_sheet = report_list_Create_header();
	while(1){
   
	printf("1.添加学生的记录\n");
	printf("2.查询学生(分别按学号和姓名)\n");
	printf("3.对学生数据排序(分别按平均成绩和计算机成绩的降序)\n");
	printf("4.删除学生记录\n");
	printf("5.修改学生记录\n");
	printf("6.班级成绩分析(各科平均成绩、最高分、最低分、及格率)\n");
	printf("7.输出学生信息表\n");
	printf("0.退出(1.保存学生信息表、2.导入学生信息表、0.退出)\n");
	menu_number = Menu_input(0, 8);
	switch (menu_number)
	{
   
	case 1:Add_student_record(_Student_information_sheet);printf("\n\n");break;
	case 2:Enquire_students_record(_Student_information_sheet,0);printf("\n\n");break;
	case 3:	Sorting(_Student_information_sheet); printf("\n\n"); break;
	case 4:	Delete_student_record(_Student_information_sheet); printf("\n\n"); break;
	case 5:	Revision_student_record(_Student_information_sheet); printf("\n\n"); break;
	case 6:	Class_performance_analysis(_Student_information_sheet); printf("\n\n"); break;
	case 7: Output_student_information_sheet(_Student_information_sheet); printf("\n\n"); break;
	case 0: Exit_menu(_Student_information_sheet); printf("\n\n"); break;
	}
	}
}

/**
 * @brief  返回菜单输入的编号(带校验)
 * @param  start:起始编号(包含)
 * @param	stop:终止编号(不包含)
 * @retval 输入的数字编号
 */
int16_t Menu_input(int16_t start, int16_t stop)
{
   
	int16_t input;
	printf("\n输入[%hu,%hu):", start, stop);
	while (1)
	{
   
		scanf_s("%hu", &input);
		if (start <= input && input < stop)
			break;
		printf("输入错误\n");
	}
	printf("\n\n");
	return input;
}

子函数文件

report_list.c
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值