1、程序设计学生成绩管理系统程序设计学生成绩管理系统LT图目录1.问题的描述设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,可以用数组来设计这个程序,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。1.1设计内容1、每一条记录包括一个学生的学号、姓名、性别、各门课成绩(上学期的科目)、平均成绩。2、输入功能:可以一次完成若干条记录的输入。3、显示功能:完成全部学生记录的显示。4、查找功能:完成按姓名或学号查找学生记录,并显示。5、排序功能:按学生平均成绩进行排序。6、插入功能:按平均成绩高低插入一条学生记录。7、将学生记录存在文件student.dat中。8、应
2、提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!1.2设计要求已知有存储本班学生记录(包括学号、姓名、科目成绩、性别、)的文件student.dat,所有学生以学号从小到大排序(该文件自行建立)。要求编程序实现查询、排序、插入、删除诸功能。具体要求如下: 要求显示如下界面 * 1-查询 2-排序 3-插入 4-删除 * 通过选择1-4来确定要做哪一个操作。 若选1,则出现如下界面 * 1.1-按学号查询 1.2-按姓名查询 1.3-按成绩查询 * 通过选择1.1-1.3来确定要做哪一个操作,其中:按姓名查询用顺序法实现;按成绩查询实现查询成绩小于m分的学生;找到该生将
3、学生记录输出到屏幕,若查无此人,输出相关信息。 若选2,则按成绩从大到小排序,姓名,学号顺序也随之调整。 若选3,将一个新学生记录按学号顺序插入,并把结果保存到文件student.dat中。 若选4,删除指定学生的记录,并把结果保存到文件student.dat中。 不同的模块都要有出错处理,并能给出出错提示。如输入数据错误,文件操作错误等等 以上各个功能均编写成子函数,由主函数调用实现。 利用结构体数组实现学生成绩的数据结构设计; 完成设计任务并书写课程设计报告。2.总体设计根据上面的题目,可以将这个系统分为以下模块: 查询模块.、排序模块.、插入模块、删除模块.如图:主流程图 2.13.详细
4、设计各功能模块的具体实现算法流程图查询流程图 3.1排序流程图 3.2插入流程图 3.3删除流程图 3.44.数据结构设计描述4.1结构struct student int num; char name20; char sex10; int cgrade; int egrade; int mgrade; double average;4.2主函数功能介绍主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.菜单选用switch-case来选择4.3各个子函数功能介绍1、查询模块:可用void find(FILE *f)来实现。找到就输出此学生全部信息包括
5、学生的姓名、学号和性别以及学生的语文、数学、英语的成绩。 用fscanf()函数将文件中的数据读入,并判断设置的两个结构空间是否有足够的空间。在做选择,按学号,姓名,成绩三个不同的途径查找学生,这里用if-else来选择判断。查找中都用一个for循环找出查询的学生,并输出该学生的信息。2、排序模块:可用void sort(FILE *f)来实现。对学生的成绩进行排序。 用fscanf()函数将文件中的数据读入,并判断设置的两个结构空间是否有足够的空间。用两重for循环比较学号大小并将学号从小到大排序。3、插入模块:可用void insert(FILE *f)函数来实现。其中通过学号的大小来比较
6、的,并且以此来排序。 用fscanf()函数将文件中的数据读入,并判断设置的两个结构空间是否有足够的空间。判断文件中是否有学生,若有学生(if),先用两重for循环比较学号大小并将原有学生学号从小到大排序,然后用一个for循环找出你要插学生的位置,再用一个for循环将这个位置后面的数都向后移一位,再将要插学生的信息插入,再输出并保存。若没有学生(else),直接输出并保存到文件中。4、删除模块:可用void dele(FILE *f)函数来实现。删除指定姓名的学生 用fscanf()函数将文件中的数据读入,并判断设置的两个结构空间是否有足够的空间。输入要查找的学生的姓名,先查找是否存在该学生,
7、若不存在,直接处处不存在该学生;若存在,将该学生位置后面的学生向前进一位,再输出并保存。5.调试分析包含各模块的测试用例,及测试结果。开始输入5时,输入错误!再用插入操作插入按学号查询按姓名查询按成绩查询删除操作排序6.总结和心得课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,
8、至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表通过
9、这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。 我做的是学生成绩管理系统,虽然是很简单的一个小的程序,但对我一个初学者来说却是一个很大的困难。更加是第一次做课程设计,所以连续做了几天却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇
10、类似的程序,经过仔细的研究,终于读懂了一些C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。 编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力和同学的讨论,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。 通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些文件运用方面不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我会更加注视实践操作,使自己便好地学好计算机。7.参考文献1 何钦铭、颜晖,C语言程序设计,高等教育出版社8.答辩记录9.教师意见