软件课设(学生成绩管理系统)

发布时间 : 星期二 文章软件课设(学生成绩管理系统)更新完毕开始阅读

①创建链表。在界面状态下,输入1后调用struct student *create(void) 函数创建动态链表,即提示输入初始的学生信息,其中包括学生的学号、班级、姓名、和各科目的成绩,若学号为0退出返回主菜单。学号是字符型,长度要求15位而且必须是数字,班级和姓名是字符数组型而且长度为20和30,成绩是浮点型(输出成绩时可只输出1位小数或2位小数)。都输入完成后,系统调用void TotalScore(struct student *head) 函数计算每个学生的总成绩和平均成绩,还可以调用void SaveFile(struct student *head) 函数对指定的文件进行写操作,把输入到动态链表的所有学生信息保存到文件中。在输入记录过程中若学号输入0则返回主菜单。

②插入记录。在界面状态下,输入2后调用struct student *InsertStudent(struct student *head) 函数在动态链表中插入一个学生的成绩记录,并且链表结点数加1。在插入记录过程中若学号输入0则返回主菜单。

③显示记录。该项有四个功能:1、名次排序报表:调用void SortScore(struct student *head) 函数对学生成绩排序并确定名次,而这个函数运用冒泡法进行排序,若后一结点的总成绩比前一结点的高,则调用void IntSwap(int *pt1, int *pt2) 函数交换两个整型数如学号,调用void FloatSwap(float *pt1, float *pt2) 函数交换两个实型数如成绩,调用void CharSwap(char *pt1, char *pt2) 函数交换两个字符串如班级和姓名,交换两个字符串要用到strcmp,strcpy函数,排序完毕后再调用void PrintScore(struct student *head,int k) 函数显示所有已经建立好的节点的节点号和该节点中数据项内容,即按总成绩从高到低排序后显示动态链表中所有学生的成绩记录。输出所有记录到屏幕上显示后自动则返回主菜单。2、班级排序报表:按照班号,将班级升序排列,同时输出每个班的各位学生的基本信息。调用void sort_class(struct student *head)然后再次调用void PrintScore(struct student *head,int k) ,输出所有记录到屏幕上显示后自动则返回主菜单,并且将班级分的比较清楚。3.、班级平均分报表:对每门课求其平均值,并且按班级以报表的形式输出。调用void class_aver(struct student *head)函数。4、统计分数段:可以看到在各科对应的分数段的人数以及基本信息。

④查找记录。在界面状态下,输入4后调用void SearchStudent(struct student *head)函数,即先用一个struct student类型的指针变量接收输入的学号,再与动态链表中各结点的学号一一比较,如果没有则返回失败信息,如果找到就将输出此学生全部信息到屏幕上显示出来。在查找记录过程中若学号输入0则提示找不到并返回主菜单。

⑤修改记录。在界面状态下,输入5后调用void ModifyStudent(struct student *head) 函数,即先用一个变量接受输入的学号,再与动态链表中各结点的学号一一比较,如果没有则返回失败信息,如果找到就将提示输入新的数据。在修改记录过程中若学号输入0则提示找不到并返回主菜单。

⑥删除记录。在界面状态下,输入6后调用struct student *DeleteStudent(struct student *head) 函数,即先用一个变量接收输入的学号,再与动态链表中各结点的学号一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,并且链表结点数减1。在删除记录过程中若学号输入0则提示找不到并返回主菜单。

- 13 -

⑦保存数据。在界面状态下,输入7后调用void SaveFile(struct student *head) 函数,先用一个文件(FILE)类型结构体的指针变量fp接收fopen(文件名,文件使用方式)函数的返回值(地址值),若打开操作失败,其返回值为NULL(即地址值为0,是一个无效的指向)。若打开操作成功,返回值为指向被打开文件的文件信息区(结构体变量)的起始地址,该返回值要立即赋值给文件类型指针变量(例://FILE *fp)保存起来,否则fopen函数返回值的丢失会导致无法对被打开的文件进行操作。然后用fwrite(p,LEN,1,fp)函数写入一条数据直到全部保存完毕,即移动指针指向链表尾。最后使用fclose(fp)函数关闭文件。

⑧读取数据。在界面状态下,输入8后调用struct student *LoadFile(void) 加载存储在外部介质的文件到内存或导入信息模块读取文件中所有学生的数据(包括班级、学号、姓名、成绩等)到动态链表。

⑨帮助。在界面状态下,输入9后调用void help()函数,利用函数输出帮助信息和系统信息。

⑩退出。可用一个函数exit(0)来实现,可首先提示将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

- 14 -

测试用例及结果

1、

按照名次排序:对每个学生求其总成绩和平均值,然后排名,并输出总人数。

- 15 -

2、

班级排序报表:按照班号,将班级升序排列,同时输出每个班的各位学生的基本信息,并输出各个班级的人数。

- 16 -

联系合同范文客服:xxxxx#qq.com(#替换为@)