收藏 分销(赏)

学生成绩标准管理系统程序设计方案报告.doc

上传人:二*** 文档编号:4476638 上传时间:2024-09-24 格式:DOC 页数:19 大小:449.54KB
下载 相关 举报
学生成绩标准管理系统程序设计方案报告.doc_第1页
第1页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、程序设计汇报( 201 / 201 年 第 学期)题 目: 学生成绩管理系统 专 业 软件工程(NIIT) 学 生 姓 名 班 级 学 号 指 导 教 师 成小惠 指 导 单 位 计算机软件学院 日 期 .3.26 评 分 细 则评分项优异良好中等差遵守机房规章制度上机时表现学习态度程序准备情况程序设计能力团体合作精神课题功效实现情况算法设计合理性用户界面设计汇报书写认真程度内容详实程度文字表示熟练程度回复问题正确度简 短 评 语老师署名: 年 月 日评分等级备注评分等级有五种:优异、良好、中等、及格、不及格学生成绩管理系统一、 课题内容和要求设计一个简化学生成绩管理系统,并用C或C#语言实现

2、。对该系统要求以下:1. 该系统应实现以下功效 (1)按班级按课程从文件中读入对应平时成绩、期中考试成绩和期末考试成绩。(2)三个成绩对总评成绩百分比被定义为常数,各占总成绩30%、30%和40%。(3)计算每位学生总评成绩。(4)算该班级本课程总平均成绩。(5)算处于优、良、中、及格、不及格学生人数和占总人数百分比。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。(6)按要求输出成绩在优、良、中、及格、不及格各区间学生学号。2. 系统应有以下菜单: 0.退出 1.计算每位学生总评成绩 2.计算班级本课程总评成绩 3.统计优、良、中、及格、不及格学生

3、人数和所占百分比 4.查询成绩在优、良、中、及格、不及格各区间学生学号许可用户不停从这个菜单选择任一功效实施, 直到选择退出, 才退出整个系统。二、需求分析1.系统要从文件中读入对应平时成绩、期中成绩和期末考试成绩。这里就用到了C+中输入输出文件操作。在C+语言中进行文件操作通常步骤为:(1)为要进行操作文件定义一个流。(2)建立(或打开)文件。(3)进行读/写操作。(4)关闭文件另外从文件中读入数据要在后面进行计算,所以应该把文件中数据对应到类或结构体数组上去。(在这个程序中用是结构体数组)2. 系统还要有计算功效,这里计算包含总评成绩计算和平均值计算。因为要计算多个学生成绩,所以利用循环语

4、句来进行逐一学生成绩计算并输出。(在这个程序中全部是用for循环)3. 统计功效。需要利用到条件语句,既满足条件就加1,以此来完成计数统计。4. 查询功效。一样是利用条件语句,判定符合条件就对屏幕输出,达成用户查询目标。5. 菜单功效。用简单菜单函数完成整体框架,用到switch语句来完成菜单函数循环。定义结构体数组三、概要设计 定义函数对选项2计算课程总评成绩函数void readaverage()(调用file函数)对选项1计算学生总评成绩函数void readall()(调用file函数)对选项3统计计算函数void readgrade()(调用file函数)对选项4查询学号函数void

5、 readABCDE()读入文件函数void file()定义一个菜单函数在这个函数中调用上面定义函数1. 首先用struct student定义一个结构数组,里面应该包含学号Id、平时成绩ps、期中成绩qz、期末成绩qm、总评成绩all、等级grade。2. 定义函数 (1)读入文件(fs.open),对应到结构体数组中,利用for循环计算总评成绩并用判定语句来判定等级。 (2)调用file函数,把计算结果输出屏幕,而且根据要求保留到out文件中(ofstream fout(“out.dat”);)。 (3)调用file函数,计算平均成绩来得到课程总评成绩。 (4)调用file函数,if判定

6、语句来统计人数并计算百分比,然后输出屏幕。 (5)if判定语句,把符适用户输入等级学生学号输出到屏幕。四、具体设计 #include /*输入输出头文件*/#include /*对文件操作*/#include /*定义字符串变量*/#includestruct student /*定义一个结构数组*/ public:char Id10;float ps;float qz;float qm;float all;char grade;stu20;fstream fs;int num; char str5100=学生学号;char str6100=总评成绩;char str7100=成绩等级;voi

7、d file() /*定义一个函数,方便后面调用*/ fs.open(note.dat,ios:in|ios:out); /*对文件读入操作,文件以输入输出方法打开*/fsnum;for(int i=0;istui.Idstui.psstui.qzstui.qm; /*把文件中得数值对应到结构数组中*/for(i=0;inum;i+) /*完成对总评成绩计算*/ stui.all=stui.ps*0.3+stui.qz*0.3+stui.qm*0.4; if(stui.all=90) stui.grade=A; if(stui.all=80) stui.grade=B; if(stui.all

8、=70) stui.grade=C; if(stui.all=60) stui.grade=D; if(stui.all=0) stui.grade=E;void readall() /*对选项1实现,后面调用*/ file(); int i; ofstream fout(out.dat); /*输出保留到out文件中*/ if(!fout) /*假如文件打开失败*/ coutCannot open the file!endl; foutstr5tstr6tstr7endl; /*把表头文字存入文件*/ coutstr5tstr6tstr7endl; /*把表头文字输出屏幕*/ for(i=0

9、;inum;i+) /*for循环逐次输出学生成绩*/ foutstui.Idtstui.alltstui.gradeendl; coutstui.Idtstui.allttstui.gradeendl; void readaverage() /*对选项2实现,后面调用*/ cout本课程总评成绩:; file(); int i; float a20,p; for(i=0;inum;i+) ai=stui.all; for(i=1;inum;i+) ai=ai+ai-1; p=anum-1/num; coutpendlendl;void readgrade() /*对选项3实现,后面调用*/

10、int i; int j=0;int k=0;int x=0;int y=0;int z=0; file(); for(i=0;inum;i+) if(stui.grade=65) j+; if(stui.grade=66) k+; if(stui.grade=67) x+; if(stui.grade=68) y+; if(stui.grade=69) z+; cout成绩为优学生人数:; coutjendl; cout成绩为良学生人数:; coutkendl; cout成绩为中等学生人数:; coutxendl; cout成绩为及格学生人数:; coutyendl; cout成绩为不及格学

11、生人数:; coutzendl; float n; cout成绩为优学生百分比:; n=float(j)/num; coutnendl; cout成绩为良学生百分比:; n=float(k)/num; coutnendl; cout成绩为中等学生百分比:; n=float(x)/num; coutnendl; cout成绩为及格学生百分比:; n=float(y)/num; coutnendl; cout成绩为不及格学生百分比:; n=float(z)/num; coutnendlendl;void readABCDE() /*对选项4实现,后面调用*/ char m10; coutm; if

12、(m0!=65)&(m0!=66)&(m0!=67)&(m0!=68)&(m0!=69) coutInput error!endlendl; if(m0=65) coutstr5endl; for(int i=0;inum;i+) if(stui.grade=A) coutstui.Idendl; if(m0=66) coutstr5endl; for(int i=0;inum;i+) if(stui.grade=B) coutstui.Idendl; if(m0=67) coutstr5endl; for(int i=0;inum;i+) if(stui.grade=C) coutstui.

13、Idendl; if(m0=68) coutstr5endl; for(int i=0;inum;i+) if(stui.grade=D) coutstui.Idendl; if(m0=69) coutstr5endl; for(int i=0;inum;i+) if(stui.grade=E) coutstui.Idendl; coutendl;void main() /*菜单函数,整体框架*/ int m=1; int n;docout1.计算每位学生总评成绩endl;cout2.计算班级本课程总评成绩endl;cout3.统计优、良、中、及格、不及格学生人数和所占百分比endl;cout

14、4.查询成绩在优、良、中、及格、不及格各区间学生学号endl;cout5.退出endl;coutn; /*实现菜单函数循环*/switch(n)case 1:readall();break;case 2:readaverage();break;case 3:readgrade();break;case 4:readABCDE();break;case 5:exit(0);break;default:coutInput error!endlendl;while(m=1);五、测试数据及其结果分析 1.note.dat文件中内容: 20 06030201 88 75.5 66 06030202 9

15、1 79.5 76 06030203 85 75 77 06030204 79 82 80.5 06030205 66 70 63 06030206 53 60 52 06030207 90 90 98 06030208 86 77 83 06030209 88 56 69 06030210 75 59 60 06030211 68 69 70 06030212 66 80 89 06030213 55 59 56 06030214 70 52 90 06030215 90 88 97 06030216 88 52 60 06030217 60 80 56 06030218 80 68 77

16、06030219 90 80.5 82 06030220 75.5 88 662.out.dat文件中内容:学生学号总评成绩成绩等级06030201 75.45 C0603020281.55B0603020378.8 C0603020480.5 B0603020566 D0603020654.7 E0603020793.2 A0603020882.1 B0603020970.8 C0603021064.2 D06030211 69.1 D0603021279.4 C0603021356.6 E0603021472.6 C0603021592.2 A0603021666 D0603021764.

17、4 D0603021875.2 C0603021983.95B0603022075.45C运行结果演示: 1.运行程序后显示菜单: 2.输入1,并按Enter,得到学生总评成绩:3.输入2,并按Enter,得到课程总评成绩:4.输入3,并按Enter,统计各等级人数并计算百分比: 5.输入4,并按Enter,可输入要查询等级: 输入A: 输入B: 输入C: 输入D: 输入E:六、调试过程中问题1.对于此次程序书写,感悟良多,刚开始时候,认为课题不是极难,因为在书本上,有这么例题。而此题和其它学生成绩管理系统不一样,它基础要求实现对一个班级成绩录入,个人成绩,班级信息等等。对于学生成绩计算包含了

18、平时成绩,期中成绩,期末成绩。不是书本例题似,实现多门科目标成绩录入。于是刚开始难点就是考虑怎样实现这一功效。刚开始,书本上实现时候,采取是指针,链表,去实现,然后,我在去调链表指针时候,就要去用很多头文件,要写4个左右大量头文件,做了4天左右时候,我们没有时候所要功效,在编译时候没有错误,不过程序还是实现不了,于是,放弃采取链表,指针。选择数组。即使数组在内存上有很大缺点,但对于此题,可能数组去实现,相对轻易; 2.实现学生成绩录入功效时候,我没能深去了解题目所要求得实现保留在note.dat中,开始对文件没有深刻去认识,于是我一根筋去认为首先建一个note.dat文件,然后用程序去读出这个

19、文件其中数据。于是,我不管进行咋样操作,还是发觉程序中没有内容,以后考虑许久, 发觉没有了解题目标意思,对和一个系统而言首先要实现录入功效,于是我就想,能够在程序中实现程序数据录入,然后去保留在note.dat文件中,但于是写程序时候首先定义一个save函数用来存取学生数据,在main函数中,在录入功效后面增加一个选项,用来去实现保留功效,开始存入一个人信息时候,我没有发觉错误,不过录入大家时候,发觉在note.dat文件存入是一个人信息,于是我找不到错误,开始我去想可能是文件中输出格式有错误.可能是“r”问题,因为我不太确定用是“w”还是“r”,以后分别去试验,发觉还是处理不了问题,以后仔细

20、想了想,之所以只存入一个学生信息,估量没有加入录入成功或保留成功,于是我把,save函数放在input函数,也就意思是在实现对一个学生录入功效时候,顺便实现保留在文本中然后发觉没录入一个学生成绩就要去保留,要是有很多学生,那么就要用很多遍去保留,发觉就是一个问题,于是在想到,之所以去调用一次,就是有for循环,于是我把save函数方法,写在for循环前面,系统实现默认保留功效。这么不会出现提醒信息,问是不是需要实现保留。3. 以后经过一系列函数实现出个人成绩等级,总评,关键经过for循环,if语句,因为我定义grade,zongping ,number是结构体变量,而且是全局,这要对多个函数调

21、用很轻易去实现到;在文件输出中,按要求输出三项,分别是学号,总评,等级;按要求输出在一个文件中,开始时候,输出没有实现,因为录入没有实现保留功效,于是发觉输出空,以后当实现了保留功效后,发觉输出功效自然处理。4开始时候,我把学生学号定义为了char类型,当输出时候在学生学号一栏时候,发觉字母,以后,想到改成int型,从而实现正确输出;七、程序设计总结1:这是我第一次做课程设计,感觉在前一个星期,没有做出结果,因为开始时候自己走错路,采取了指针,以后想到了数组,才有了一定气色,但去实现一个程序时候,就要有一定很清楚思绪,去了解到底实现什么样功效,开始时候,没有清楚思绪,在想到什么了函数,就在主函

22、数下面就写想用程序,然而这么去写以后,才发觉程序很乱,错时候,找不到错在哪里。心里很是着急,有函数并不是有了就能去实现对应功效,要知道放在哪里,是放在for循环前面,还是放在for循环中,这是有很大不一样;2:心态,很关键,尤其是程序犯错时候,自己程序碰到错误时候,发觉不管咋样去找,还是没能够找到函数,自己心态很乱,很着急;然后去找周围同学,可是周围同学也不知道时候自己心态更糟糕。于是去问部分专业课老师,可是有老师,还是没有够给出对应解释,于是自己静下心,深刻去想程序;3:对于团体意识很关键,要有很明确分工,一起去探讨部分出现问题;4:当程序独立完成时候,那种深深满足感无法用言语能够表示出来,程序出现问题时候,自己发觉自己在这方面知识很欠缺,比如在这个程序中,实现对文本输出,输入,这在以前不是很了解,做了程序以后,才有了部分了解。于是,我想自己以前学过知识肯定有很多不懂,这在以后学习中,一定要多多去加强。只有不停去复习,有些知识才不会忘记。只有自己亲自去动手完成这么程序,才能领悟到软件这门学科精髓。只有用心去做,亲自去做,用心去想,碰到无数错误时候,不放弃,不抛弃,错误一定会能找得到,部分功效一定能够实现;因为我坚信:成功,永远给予那些默默付出不放弃人!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服