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