C语言实验大作业 学生成绩管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3
2 详细设计
2.1 程序结构
程序的流程: 该程序首先定义了一个记录学生基本信息的结构体,和全局变量链表的头指针“*head”,自定义了 13 个函数,然后是主函数通过调用以上自定义函数来实现程序的功能。这样做的好处是,在调用自定义函数 时不必再对其申明。主函数第一行首先在程序运行界面中央输出“欢迎进入学生管理”,接着是输出“按 回车键进入”(在界面中央),以提醒用户进一步操作程序。按回车键后程序执行创建链表函数(create()), 这时出现界面需要用户输入三个学生的基本信息,按回车键后创建成功,同时进入 while 循环体。该循环 提以“system("cls")”开始,作用是在每次循环结束进入下一次循环时对上一次循环的运行结果进行清除, 以保证本次循环的结果能清晰展示。该循环第二行执行函数“printfmenu()”,输出当前链表内容。接着 进入菜单选择界面,此时需输入数字(0~8)进行菜单选择。若输入‘8’,该循环结束;否则继续。然后 执行菜单选择函数,用户通过菜单上执行不同的操作调用不同的函数。执行完菜单函数后,按回车键本次 循环结束,并进入下一次循环。循环结束后,又一次执行清屏程序,最后输出“谢谢使用,愿你开心度过 每一天”字样,至此整个程序结束。 自定义函数: 一、显示菜单函数:void printfmenu()。 用输出管理菜单: 0. 显示 1. 排序 2. 插入 3. 查找 4. 删除 5. 统计 6. 存盘 7. 读入 8. 结束 二、链表输出函数:void printfform()。用来将已经创建链表或当前所建链表进行输出显示。 三、链表创建函数:void create()。该函数用来创建一个动态链表,期间需要用户输入学生基本信息。 四、排序函数:void arrange()。该函数用来对所创建的链表或当前存在的链表中的结构体按学号递增
Email:2010300092@
5
函数之间也有调用。
2.4 开发日志
关于该程序的设计,首先根据题目的要求考虑实现该函数所需的函数。考虑把自定义函数放在整个程 序的前面,这样在主函数调用时就不必再对其进行申明。比如必须的一些基本函数链表输出函数、链表创 建函数、链表排序函数、查询函数、链表删除函数、统计函数等,先把这些基本函数建立起来之后,程序 的整体结构。考虑到程序的整体结构通过函数调用来实现较为方便,由此增加设计了一些函数,如链表输 出函数、显示菜单函数、存盘函数、读入函数等。
排序。排序结束调用“链表输出函数”,将新产生的链表进行输出。 五、插入函数:void insert().调用该函数时,由用户输入一个学生的信息,将产生一个新的结构体,
并将其按学号插入当前链表中。调用链表输出函数,将新链表输出。 六、查找函数:void find()。输入一个学号,将链表中该学生的信息输出。若链表中无该学号,则输出
Email:2010300092@
2
1 摘要
1.1 设计题目
学成绩管理程序
1.2 设计内容
为了便于对学生星系进行管理,这里设计了学生信息管理程序。该程序主要通过对链表的相关操作运 用菜单的形式实现对学生基本信息的管理。首先用户要输入三个学生的基本信息,程序即据此建立了一个 有三个学生的链表,每个结点包括学号、姓名、3 门课的成绩(英语、数学、计算机,其中成绩精确到小 数点后两位)。菜单为:
该程序包括主函数总共有 14 个函数,只有选择菜单函数是有参函数,其他均是无参函数。选择 菜单函数运用 switch 选择结构,形参的传递用来选择执行调用相应的菜单功能函数。如从主函数 输入‘1’,主函数调用该函数,并把‘1’传递给该函数,该函数则调用“排序函数”执行菜单 中的排序操作。
2.2 主要功能
十一、存盘函数:void save()。将链表中的内容以文件的形式存放在磁盘中。 十二、读入函数:void read()。将已经存盘的文件读入内存,进行管理。 十三、选择菜单函数:void menu(char t)。主函数输入实参变量‘t’,该函数通过选择判断调用以上函
数来实现该程序的管理功能。 参数传递:
1.显示。(即显示所建立的链表及当前链表内容) 2.排序。(即将用户所输入的学生信息按学号大小对原有链表内容进行排序,并将
经排序所产生的新链表展示给用户) 3.插入。(用户根据需要可增加原链表中学生的数量,输入一个学生的基本信息,
即将其插入原链表中,且新链表按学号有序排列并展现给用户) 4.查找。(输入一个学号,输出各种成绩) 5.删除。(输入一个学号,从链表中删除该学生,并展示新链表) 6.统计。(若按 1,则输入该学生的学号统计该学生的总分及平均分;若按 2,则输
3 程序调试及运行............................................................................... 7 3.1 程序运行结果............................................................................ 7 3.2 程序使用说明.......................................................................... 17 3.3 程序开发总结.......................................................................... 17
Email:2010300092@
4
九、按科目统计函数:void subjectcount()。输入一个科目序号(1.英语 2.数学 3.计算机),计算 该科目的总分和平均并输出。
十、统计函数:void count()。当输入1,调用“按学生统计函数”;当输入2,调用“按科目统计函 数”。分别进行统计操作。
函数的的创建过程实在是一个繁琐的工作,编译时常要去翻看课本去查找已经遗忘的 C 语言的相关语 法知识,特别是一些细节上的设计,更不敢轻易放过。如转义字符“\t”的使用回事程序界面更加美观整 洁好看,期间也对结构体链表的知识作了较好的复习掌握。在做到排序函数时突然忘了选择排序法的算法, 于是通过查资料对其进行了重新的掌握,其中插入函数的算法较为复杂,通过分析发现,须先查找然后再 插入,查找的算法编号之后,后面的统计、删除函数也就迎刃而解了。
入课程(1.英语 2.数学 3.计算机)求该门课程的总分及平均分) 7.存盘。(将建立起来的链表以文件的形式存储) 8.读入。(将原来已将存盘的文件读入内存,进行管理)
1.3 开发工具
Visual C++ 6.0 和 Win32。
1.4 应用平台
Windows XP/Vista 32 位
Email:2010300092@
2 详细设计............................................................................................4 2.1 程序结构.................................................................................... 4 2.2 主要功能.................................................................................... 5 2.3 函数实现.................................................................................... 5 2.4 开发日志.................................................................................... 6
“未找到”。 七、删除函数:void delet()。输入一个学号,将链表中该学号学生信息删除,并调用链表输出函数将
删除后的链表输出。若输入学号不存在,输出“未找到”。 八、按学生统计函数:void studentcount()。输入一个学号,计算该学号学生的总分和平均分并输出。
若学号不存在,输出“未找到”。
调试的过程是最令人纠结的,觉得完好的程序却总是调不出来,经过复杂的心理脑力斗争最终发现却 总是一些不该有的失误,而不是算法上问题。调试的过程是用时最长的,同时也磨练了我的耐性,让我对 频频出现的错误更加理智、更加淡定、更加耐心。而且在调试的过程中也积累了一些常见的错误经验,对 部分调试的错误能大体上感知其错误的原因及位置。影响最深的是对排序函数的调试,指针数组的地址代 码写错导致程序运行时不能读入,还有创建链表函数出现的问题,输入函数多打了几个“%lf”导致链表 创建时出现乱码。
程序功能:1、该程序主要用来对数量较少的学生基本信息进行管理(初始学生数为三)。 2、显示输入的学生基本信息。 3、对学生按学号进行排序、,并将信息以链表的形式进行保存。 4、可通过插入操作增加所要处理的学生信息数量。 5、显示所要查找的学生的基本信息。 6、删除不必要的信息。 7、统计学生成绩的相关数据,总分和平均分。 8、将经过处理的信息存盘管理。 9、以文件的形式将以存盘信息读入内存进行管理。
2.3 函数实现
函数主要运用了 while、do。。。while、for 循环结构,还有选择排序法。函数大多为无参类型,自函数之间 有少量调用。如排序、插入、删除、统计等函数都是较为简单的函数,只需根据医学知识稍加修改即可。 数据结构方面,主要事项是函数调用,主函数调用菜单函数,菜单函数又调用其它类型函数,其他自定义
原理和方法:1、该程序的要通过对链表进行操作来实现管理。 2、用循环结构和指针对已存在链表输出显示,调用输出函数“printf”。 3、排序时先把链表中的学好数据存放在一位数组中,再用选择排序法对数组中的元素排序, 最后用 while 循环结构把数组中的元素与结构体逐一配对,从而实现对链表的排序。 4、先用 while 找到插入位置,然后是链表的插入操作。 5、while 循环执行查找操作。 6、while 循环找到删除对象,链表的删除操作。 7、while 循环找到操作对象,在执行相应操作。 8、文件的存储。 9、文件的读取。
4 附件(源程序)............................................................................. 18
/*在后面的文档编写中,请你不要修改各个标题的内容,从而确保 报告内容和风格一致。完成全部内容后,你只需要在上面的目录 上右键“更新域”,选择“只更新页码”就可以更新正确的目录页 码。注意:目录的左边距为 6.5 厘米。*/
学院 班级 学号 姓名
目录
1 摘要....................................................................................................3 1.1 设计题目.................................................................................... 3 1.2 设计内容.................................................................................... 3 1.3 开发工具.................................................................................... 3 1.4 应用平台.................................................................................... 3
相关文档
最新文档