c语言程序设计 学生成绩管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验题目:学生成绩管理系统
一、课程设计目的
1、进一步掌握和利用C语言进行程设计的能力;
2、进一步理解和运用结构化程设计的思想和方法;
3、初步掌握开发一个小型实用系统的基本方法;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图或N-S图表示算法;
6、掌握书写程设计开发文档的能力(书写课程设计报告);
二、课程设计内容
1、每一条记录包括一个学生的学号、姓名、性别、4门课成绩、平均成绩。
2、输入功能:可以一次完成若干条记录的输入。
3、输出功能:完成全部学生记录的显示。
4、查找功能:完成按姓名查找学生记录,并显示。
5、新增功能:完成对任意学生信息的增加。
6、删除功能:完成对任意学生信息的删除。
7、统计功能:完成对学生四门成绩最高分、最低分、平均成绩的统计。
8、排序功能:完成学生四门成绩由高到低的排序,并显示。
9、将学生记录存在文件student中。
10、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
三、需求分析
1、用C语言实现系统;
2、利用结构体数组实现学生成绩的数据结构设计;
3、系统具有增加,查询,插入,排序等基本功能;
4、系统的各个功能模块要求用函数的形式实现;
5、完成设计任务并书写课程设计报告。
6、将学生成绩信息存在文件中。
四、概要设计
1、方案设计
对系统进行分析,给出结构图
分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计
结构图如下:
2、模块功能说明
对各个模块进行功能的描述
(1)、输入模块:
录入需要管理的学生信息并将信息保存于文件中,以方便日后进行打印、读取、修改等操作。
(2)、输出模块:
将所有学生信息或想要查询的学生信息显示于屏幕,用于打印学生信息或查找某些学生信息。
(3)、查询模块:
可对已建立的学生信息进行查询,并且可根据需要选择按姓名查询。
(4)、新增模块:
根据需要随时增加学生信息。
(5)、修改模块:
可根据需要对多个学生信息进行修改,也可随时对个别项进行修改。
(6)、删除模块:
可对退学或休学的学生信息做删除处理。
(7)、统计模块:
对学生四门成绩最高分、最低分、平均成绩的统计。(8)、排序模块:
对学生四门成绩由高到低的排序。
(9)、退出系统:
选择该项,自动退出该系统。
五、详细设计及运行结果
流程图,函数之间相互调用的图示,程序设计及编码, 运行结果。
六.调试情况及运行结果
1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
此次实践课编写的是一个应用程序,相对于以前我们见的程序,它要大得多,运行的结果也没有预想中的好,数据
的输出格式不太规范,而且各模块也出现了一些小问题,在同学们的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可是毕竟是第一次独立完成这样的大程序,结果还不是太理想。
由于时间很短,在选题报告中设想到的好多功能都没有实现。已有的那些功能虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。如:再录入数据时,没有设计数据输入出错的提示,如果成绩输的是负值程序也继续执行,这就给运用上带来一些不便;没有设计按各科成绩排序的功能。
2、在设计过程中的感受。
本次C 语言的实习课让我对C 语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。
本次实习中遇到了很多以前没有遇到过的问题,也曾想要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。在同学的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结的重要性。
3、程序中出现的问题及解决方法
问题一、学生初始信息模块:
其中包括学生的姓名、学号和性别以及学生的语文数学、英语和计算机等相关信息;可用函数input()来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。解决办法及步骤:
(1)一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。
(2)既然有此学生,那么检查循环判断是否有此学生的语句发现没有错。
(3)仔细分析原因后,最后发现是变量的类型错误,错将学生
类型的结构体指针变量定义为了其他类型的变量。
问题二、查询模块:
可用inquire()函数来实现。找到就输出此学生全部信息,包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。解决办法及步骤:(1)检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。(2)检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。
问题三、插入模块:
可用insert( )函数来实现。当我们输入插入信息时,系统却提示插入不进数据。解决办法及步骤:
(1)检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。
( 2)检查当我们在输入插入信息时,看是否我们输入的插入信息有。
七.参考文献
《C语言程序设计》王曙燕曹锰科学出版社2005年2月
八. 附录:
# include
# include
# define N 5
int sum; /*用来记录学生人数*/
/*学生信息结构体类型*/
struct student
{ int num;
char name[12];