C语言程序设计课程实训报告-学生成绩管理系统(63页).docx
《C语言程序设计课程实训报告-学生成绩管理系统(63页).docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程实训报告-学生成绩管理系统(63页).docx(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C语言程序设计课程实训报告-学生成绩管理系统-第 59 页C语言程序设计课程实训报告项目名称 学生成绩管理系统指导教师 学生姓名_学生学号_152集成信息科学技术学院_院(部)_专业_班20161211_年 _月 _日目录1. 需求分析1.1 课程设计性质和目的 Page31.2 输入输出的形式 Page31.3 程序实现的功能 Page32. 程序设计2.1 概要设计 Page42.2 详细设计 Page52.3 使用说明 Page73. 程序测试3.1 【录入学生信息】功能测试 Page73.2 【统计学生数据】功能测试 Page93.3 【查找学生信息】功能测试 Page93.4 【修
2、改学生信息】功能测试 Page103.5 【删除学生信息】功能测试 Page113.6 【插入学生信息】功能测试 Page113.7 【学生成绩排名】功能测试 Page123.8 【输出学生信息】功能测试 Page143.9 【整理学生信息】功能测试 Page154. 实训总结4.1 实训遇到的问题 Page164.2 实训心得 Page165. 参考文献 Page186. 附录 Page197. 致谢 Page871. 需求分析1.1 课程设计性质和目的本课程设计主要是运用面向对象程序设计课程中学到的理论知识来指导实践,了解面向对象和面向过程之间的区别,学会运用类的方法解决实际问题。掌握一般
3、类的定义、测试、封装等概念,掌握面向对象程序设计的基本概念和基本方法,掌握c+的基本语法和基本内容,并能运用c+语言进行基本的面向对象程序设计,并能通过综合课程实际,提高自己的实践动手技能,培养自己独立分析问题和解决问题的能力。1.2 输入输出的形式本系统是一个学生成绩管理系统,采用codeblocks编译器作为开发环境。输入数据类型主要是char,int double等基本数据类型,输入内容包括:学号,姓名,数学成绩、语文成绩、英语成绩等数据。用户在输入学生数据时要保证输入数据格式的正确性。输出形式与输入形式相似,根据需要可以选择显示输入的各项内容,还可以选择显示计算好总分、平均分后并排序后
4、的记录,显示内容包括:学号,姓名,数学成绩、语文成绩、英语成绩、总分、平均分。系统还可显示统计之后及格率,优秀率等数据的记录。1.3 程序实现的功能学生成绩管理系统整理学生信息修改学生信息删除学生信息插入学生信息退出本系统输出学生信息查找学生信息学生成绩排名显示统计数据录入学生信息用户运行程序后进入系统主界面,在主界面用户可以输入所有的数据并保存到文件中,也可以读取文件中已有的学生数据。用户在保存数据的时候,如果保存位置没有文件则自动新建一个文件进行保存。本系统同时只能对一个数据文件进行相关操作,不能同时打开多个数据文件,其类似于单用户操作系统。当用户读取学生数据后可对其进行显示,插入、删除、
5、修改、排序,统计,计算总分和平均分等相关操作。1. 在录入学生信息时,以前的学生信息会被删除,所以【录入学生信息】功能只能适用重新录入,而如果想在原有的学生数量上增加学生信息,应选择【插入学生信息】功能。2. 【显示统计数据】功能可以显示总成绩、数学成绩、语文成绩、英语成绩的及格率和优秀率。(其中分数大于等于60为及格,大于等于80为优秀)3. 【查找学生信息】功能中可以按学号和姓名进行查找。4. 【修改学生信息】功能只能根据学号进行修改,因为根据名字修改有可能修改到重名的学生信息。5. 【删除学生信息】也只能根据学生学号进行删除。6. 【插入学生信息】功能是在原有的学生信息基础上增加新录入学
6、生的信息。7. 【学生成绩排名】功能可以对学生的总成绩、数学成绩、语文成绩、英语成绩分别进行排名,而且每一种都可以选择是降序排序还是升序排序。8. 【输出学生信息】功能可以输出所有学生的信息,也可以选择输出总成绩、数学成绩、语文成绩、英语成绩及格或优秀的学生信息。9. 【整理学生信息】功能可以将学生的学号进行降序排序10. 在以上几种功能中,用户都可自行选择是否将删改后的学生信息保存至文件,以防止修改的数据丢失。2.程序设计1.4 概要设计在进入程序主界面之前是开发者自身的简要信息介绍。在按任意键之后进入程序的主界面:主界面:在此界面用户可以选择要操作的选项,回车之后即可进入相关页面进行操作。
7、1.5 2.2详细设计在main()函数中主要是通过“switch(menu()”选择判断来调试相关功能模块。系统的运行是在一个永真的循环里面进行的,只有在主界面并选择【退出本系统】时,才会跳出真循环,并退出主程序。主界面的设计:在主界面中包括【录入学生信息】、【显示统计数据】、【查找学生信息】、【修改学生信息】、【删除学生信息】、【插入学生信息】、【学生成绩排名】、【输出学生信息】、【整理学生信息】、【退出本系统】等全部的功能,之所以设计这么一个主界面,一是因为能使用户对程序操作的流程更加清楚简明,二是保证了用户同时只能对一个文件进行操作的系统要求,保证了系统不会发生打开文件紊乱或者出现致命
8、错误。每个函数的具体功能:1. 主函数main()/显示主界面,对其他功能函数进行调用和处理。2. class Stu /声明Stu类3. void Write(Stu s,int n)/向文件中写入数据4. int Read(Stu s)/从文件中读取数据5. void Input(Stu s) / 录入学生数据6. void Statistic(Stu s) /统计学生数据7. double S_pass_rate(Stu s) /统计总成绩及格率8. double S_excellent_rate(Stu s) /统计总成绩优秀率9. double M_pass_rate(Stu s)
9、/统计数学成绩及格率10. double M_excellent_rate(Stu s) /统计数学成绩优秀率11. double C_pass_rate(Stu s) /统计语文成绩及格率12. double C_excellent_rate(Stu s) /统计语文成绩优秀率13. double E_pass_rate(Stu s) /统计英语成绩及格率14. double E_excellent_rate(Stu s) /统计英语成绩优秀率15. void findWithNum(Stu s) /根据学号查询学生信息16. void findWithName(Stu s) /根据姓名查询
10、学生信息17. void Modify(Stu s) / 修改学生信息18. void Delete(Stu s)/按学号删除学生信息19. void Insert(Stu s) /增加学生信息20. void rankWithSum(Stu s) /根据总成绩进行排名21. void rankWithMath(Stu s) / 根据数学成绩进行排名22. void rankWithChinese(Stu s) /根据语文成绩进行排名23. void rankWithEnglish(Stu s) /根据英语成绩进行排名24. void Output(Stu s) /输出学生信息25. void
11、 tidy(Stu s) / 将学生信息按学号升序进行整理26. int menu()/菜单函数27. void self() /自我介绍函数1.6 使用说明用户运行程序后进入系统主界面,在主界面用户可以打开或者新建数据文件。用户新建或者打开文件要符合操作系统的要求,如果用户打开不存在的文件,那么系统将按照用户打开的文件名作为新的数据文件名,并对其进行相关操作。本系统同时只能对一个数据文件进行相关操作,不能同时打开多个数据文件,其类似于单用户操作系统。当用户指定当前文件后可对其进行显示,插入,删除,修改,计算平均分等相关功能。用户在操作过程中可随时对当前文件进行保存到文件操作,以防止修改的数据
12、丢失。操作完当前文件后,用户可以关闭该文件,在不退出本系统的前提下另行打开或者新建数据文件对其进行相关操作。2. 程序测试2.1 【录入学生信息】功能测试进入【录入学生信息】功能后会显示如上提示,输入“y”或“Y”均可输入学生信息如图所示。下面进行错误输入演示:1)当输入学号重复时:2)当输入学生成绩不符合规范时:当结束录入时,会弹出以下界面:2.2 【统计学生数据】功能测试2.3 【查找学生信息】功能测试当选择【按学号查询功能】时:选择【按姓名进行查询】时;错误输入演示;1)选择时输入有误:2)查询时输入有误:2.4 【修改学生信息】功能测试输入y后:2.5 【删除学生信息】功能测试2.6
13、【插入学生信息】功能测试2.7 【学生成绩排名】功能测试根据总成绩进行排名输入2后:输入1后:按数学成绩排名语文成绩和英语成绩不进行展示2.8 【输出学生信息】功能测试输出全部学生信息输出总成绩及格的学生信息输出总成绩优秀的 学生信息其他情况不予展示2.9 【整理学生信息】功能测试根据【输出学生信息】功能可看到学生信息按学号降序进行整理:4.实训总结4.1 实训中遇到的问题1)文件的写入与读出,刚开始对文件的操作不太明白,一致不能很好的操作文件,其中最大的问题是对已存在的文件读取问题,通过“显示全部学生成绩” 将数据从文件中读取,可是在使用过程中总是出现读出错误,出现乱码。2)内存的分配问题,
14、这也是困惑了我好久的问题。对于我们初学者来说对内存的分配和释放问题是比较抽象和模糊的难题,本来使用链表的方式存储数据,然而待到排序时出现了交换数据困难的问题,以及分配空间繁琐释放空间不及时的问题,造成空间浪费使得程序运行效率低的问题。因此最后采用了顺序存储记录的方式,这样就能改变前述问题。3)语句的最后忘记了加上“;”,使程序发生错误。4)把“”写反,以及字符与字符串的操作问题,这些是比较简单的错误,很容易分辨出来,并改正之。5)myFile.seekg(0);/直接把指针定位在文件首部6)Loop与goto loop;/实现条件判断循环某语句块7)在插入函数中输入15008040203程序运
15、行结果和预想的一样,但是当15080402033时,运行结果出现死循环。原因是:所输入数字超出long型的范围。8)输出小数点后两位的小数:coutfixedsetprecision(2)a;头文件9)学会改变程序运行背景及字体的颜色。system(“color 70”);头文件4.2 实训心得C+已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多。对这些知识也有了更深的理解和很好的掌握。也有很多理论上说得过去的代码,但到了实际操作,却是行不通的。这种困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白。只能避过这些方法,换方法实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课程 报告 学生 成绩管理系统 63
限制150内