【期末作业】学生成绩管理系统【源代码—重构】【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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言期末作业学生成绩管理系统(免积分下载) 1.主界面:“1.学生登录”“2.教师登录”“3.校长登录”“0.退出系统”,4个选项进行跳转。(main.c) 2.1 选择1,跳转“学生登录界面”,输入学号及默认密码(三次错误及锁定此学号,登录成功后即进入“修改密码子界面”) 2.2 选择2,跳转“教师登录界面”,输入工号及默认密码(三次错误及锁定此工号,登录成功后即进入“修改密码子界面”) 2.3 选择3,跳转“校长登录界面”,输入学号及默认密码(登录成功后即进入“修改密码子界面”) 2.4 选择0,关闭程序。 3.1 成功登录及修改密码后,跳转“学生功能界面”(student.c, student.h) 1、第一次登录强制修改密码。 2、查询成绩 排名 不显示姓名和学号。 平均分 最高分 最低分 3、修改密码 4、查看个人信息 5、三次密码错误锁定帐号,由教师解锁 0、返回上一级 3.2 成功登录及修改密码后,跳转“教师功能界面”(teacher.c ,teacher.h) 1、第一次登录强制修改密码。 2、添加学生(学生的学号自动生成) 单个添加 批量导入 3、删除学生 输入两人次学号确定 删除的学生要记录保存在已退学的文件中 4、查找学生 按姓名查找 按学号查找 5、修改学生信息 修改学生基础信息 修改学生成绩 6、录入学生成绩 单个录入 批量导入 7、重置学生密码 8、显示所有在校学生信息 9、显示所有退出学生信息 10、三次密码错误锁定帐号,由校长解锁 0、返回上一级

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值