第18章 学生成绩管理系统设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

融智技术学院第18章学生成绩管理系统设计本篇运用C语言来设计一个学生的成绩管理系统,整个系统综合运用我们前几章所学习的C语言的知识,如结构化程序设计、数组、函数、结构体等等,在复习巩固C语言的基础知识的基础上,进一步加深对C语言编程的理解和掌握。利用所学知识,理论和实际结合,采用模块化的结构,锻炼学生综合分析解决实际问题的编程能力;使读者对C语言有更加深刻的了解与认识。融智技术学院18.1学生成绩管理系统功能本系统实现的功能:(1)录入学生的成绩,(2)输出学生的成绩(3)添加学生的成绩信息(4)删除指定学生的成绩信息(5)按照要求对学生成绩信息进行排序(6)根据学号查询指定学生的成绩(7)将学生的成绩信息保存到文件融智技术学院融智技术学院融智技术学院18.2功能模块的描述18.2.1数据结构结构体说的定义如下:structscorenode{intnumber;/*学生学号*/charname[10];/*学生姓名*/floatchinese;/*语文成绩*/floatmathmatic;/*数学成绩*/floatenglish;/*英语成绩*/structscorenode*next;};typedefstructscorenodescore;融智技术学院18.2.2main()主函数程序采用模块化设计,主函数是程序的入口,各模块独立,可分块调整,均由主函数控制。采用while死循环和switch分支语句编写菜单选择控制各个模块的功能,每个模块的功能由简单的基本函数构成。融智技术学院18.2.3score*creatlink()创建动态链表由于记录并不是一次性全部输入,而是随时添加和删除的,而预先开辟的空间数往往大于实际的记录数,浪费内存空间,因此使用动态空间开僻函数malloc()为输入的数据动态分配内存空间。融智技术学院18.2.4voidprint(score*head)显示学生信息使用参数head传递链表的首地址,首先判断链表是否为空,如果为空,则输出提示信息;如果不为空,设一个指针变量p,先指向第一个结点,输出p所指的结点,然后使p后移一个结点,再输出,直到链表的尾结点。融智技术学院18.2.5score*add(score*head,score*stu)向链表中添加学生数据该函数有两个数,head头结点指向链表的首地址,stu指向新建立的结点,向其中输入数据,然后添加到链表上,最后根据学生的学号进行排序。融智技术学院18.2.6score*search(score*head)查询学生成绩由于在向链表中输入数据、添加数据的时候,已经对链表按学号从大到小排好序了,因此在进行查找时,只需要从链表的表头开始进行查询。如果链表为空,则直接输出提示信息;如果链表不为空,则按输出的学号进行查询,查询成功就输出该学号学生的成绩,否则输出提示信息。融智技术学院18.2.7score*dele(score*head)删除数据该函数根据输入学生的学号,在链表中进行查找如果有匹配的,就将该学号的学生信息删除掉。最后返回删除后的链表的头结点。融智技术学院18.2.8score*sortdata(score*head)对数据进行排序该函数提供了几种排序方法,可以按照学生的学号进行排序,按照学生的姓名,或者按照学生的单科成绩进行排序。使用switch-case语句根据用户的选择,判断是按照学号、姓名或是单科成绩使用交换法进行排序。融智技术学院18.2.9save(score*p1)保存数据在程序中的数据输入和输出是以终端为对象的,当程序关闭后,数据也就丢失了,所以为了能随时查阅数据,必须将数据输出到磁盘文件上保存起来,使用时人磁盘中读入到内存中,这就用到了磁盘文件的读写操作。融智技术学院18.2.10score*load(score*head)从文件中读取数据为了程序关闭后丢失,我们将数据保存到磁盘文件中,下一次对已经有的数据进行的时候可以直接从文件中读取数据进行操作。融智技术学院18.2.11score*statistics(score*head)成绩统计该函数主要实现了对学生成绩统计的几种方式:统计个人总分和平均分、统计单科平均分、统计总分最高分和最低分。融智技术学院18.2.12intmenu(intk)菜单该函数主要提供一个系统显示的界面,系统模块进行介绍,便于用户进行操作。融智技术学院18.2.12用到的头文件和全局变量#includemalloc.h#includestdio.h#includestdlib.h#includestring.h#defineLENsizeof(structscorenode)#defineDEBUGintn,k;/*n,k为全局变量,本程序中的函数均可以使用它,分别用于记数和标记*/融智技术学院18.3程序代码根据上一节对学生成绩管理系统的数据结构的模块功能的分析,并列出了实现各个模块功能的函数以及它们的程序执行N-S图,下面是实现各个函数的程序代码以及在程序运行进的运行结果。融智技术学院18.3.1主函数main代码主函数main功能是通过调用creat,search,dele,add,print,ststistics,save,sortdata等函数,实现学生成绩查询系统功能。融智技术学院18.3.2创建链表函数creatlink函数creatlink的功能是创建链表,此函数带回一个指向链表头的指针。函数体中使用了goto语句,方便程序执行过程中的跳转。融智技术学院18.3.3显示学生信息函数print函数print的功能是显示学生成绩,即将所建立的学生成绩链表打印出来。如果链表不为空时,逐个打印出学生的学号,姓名和各科成绩。}融智技术学院18.3.4向链表中添加学生数据函数add函数add的功能是向已经建立的链表中追加学生资料,并且将所有学生资料按学号排序。融智技术学院18.3.5查询学生成绩函数search函数search的功能是从链表中查询输入学号的学生信息。融智技术学院18.3.6删除数据函数dele函数dele的功能是删除输入学号的学生信息。融智技术学院18.3.7对数据进行排序函数sortdata函数sortdata的功能是对链表中的数据按照一定的要求进行排序。本函数提供了几种排序方法,使用switch-case语句根据用户的选择,判断是按照学号、姓名或是单科成绩使用交换法进行排序。此函数带回一个指向链表头的指针融智技术学院18.3.8保存数据函数save函数save的功能是保存学生的资料到磁盘中,在程序关系以后,下次使用时不会丢失。融智技术学院18.3.9从文件中读取数据函数load函数loadfile的功能是从文件读入学生记录。当把学生记录保存到磁盘上后,下次使用时还需要从保存的文件中读取。融智技术学院18.3.10成绩统计函数statistics函数statistics的功能是统计学生成绩,该函数主要实现了对学生成绩进行统计个人总分和平均分、统计单科平均分、统计总分最高分和最低分的操作。

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功