1、算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简 短 评 语教师签名: 年 月 日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格学生成绩管理系统一、课题内容和要求设计一个简化的学生成绩管理系统,并用C或C#语言实现。对该系统的要求如下:1. 该系统应实现以下功能 (1)按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。(2)三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和40%。(3)计算每位学生的总评成绩。(4)算该班级本课程的总平均成绩。(5)算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比
2、。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。(6)按要求输出成绩在优、良、中、及格、不及格各区间的学生学号。2. 系统应有以下菜单: 0.退出 1.计算每位学生的总评成绩 2.计算班级本课程总评成绩 3.统计优、良、中、及格、不及格的学生人数以及所占比例 4.查询成绩在优、良、中、及格、不及格各区间的学生学号允许用户不断从这个菜单选择任一功能执行, 直到选择退出, 才退出整个系统。二、需求分析1.系统要从文件中读入相应的平时成绩、期中成绩和期末考试成绩。这里就用到了C+中的输入输出文件的操作。在C+语言中进行文件操作的一般步骤为:(1)为要进行
3、操作的文件定义一个流。(2)建立(或打开)文件。(3)进行读/写操作。(4)关闭文件另外从文件中读入的数据要在后面进行计算,所以应该把文件中的数据对应到类或者结构体数组上去。(在这个程序中用的是结构体数组)2.系统还要有计算的功能,这里的计算包括总评成绩的计算和平均值的计算。因为要计算多个学生的成绩,所以利用循环语句来进行逐个学生成绩的计算并输出。(在这个程序中都是用的for循环)3.统计功能。需要运用到条件语句,既满足条件就加1,以此来完成计数统计。4.查询功能。同样是运用条件语句,判断符合条件就对屏幕输出,达到用户查询的目的。5.菜单功能。用简单的菜单函数完成整体的框架,用到switch语
4、句来完成菜单函数的循环。三、概要设计 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判断语句来统计人数并计算比例,然后输出屏幕。 (5)if判断语句,把
5、符合用户输入等级的学生的学号输出到屏幕。四、详细设计 #include /*输入输出的头文件*/fstream.h /*对文件的操作*/string.h /*定义字符串变量*/stdlib.hstruct 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=成绩等级void file() /*定义一个函数,方便后面的调用
6、*/ fs.open(note.dat,ios:in|ios:out); /*对文件读入的操作,文件以输入输出方式打开*/ fsnum; for(int i=0;istui.Idstui.psstui.qzstui.qm; /*把文件中得数值对应到结构数组中*/ for(i=0;i+) /*完成对总评成绩的计算*/ stui.all=stui.ps*0.3+stui.qz*0.3+stui.qm*0.4; if(stui.all=90) stui.grade=A if(stui.all90)&=80)B80)&=70)C70)&=60)D60)&=0)Evoid readall() /*对选项
7、1的实现,后面调用*/ file(); int i; ofstream fout(out.dat); /*输出保存到out文件中*/ if(!fout) /*如果文件打开失败*/ coutCannot open the file!endl; foutstr5tstr6str7 /*把表头文字存入文件*/ cout /*把表头文字输出屏幕*/ for(i=0;i+) /*for循环逐次输出学生的成绩*/ foutstui.Idstui.allstui.gradett void readaverage() /*对选项2的实现,后面调用*/本课程的总评成绩: file(); float a20,p;
8、 ai=stui.all; for(i=1; ai=ai+ai-1; p=anum-1/num;pendlvoid readgrade() /*对选项3的实现,后面调用*/ int i; int j=0; int k=0; int x=0; int y=0; int z=0; 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+;成绩为优的学生人数:j成绩为良的学生人数:k成绩为中等的学生人数:x成绩为及格的学生人数:y成绩为不及格的学生人数:z float n;成绩为优的学生百分比: n=float(j)/num;nm; if(m0!=65)&(m0!=66)&=67)&=68)&=69)Input error if(m0=65) cout if(stui.grade=) cout if(m0=66) if(m0=67) if(m0=68) if(m0=69) coutvoid main() /*菜单函数,整体框架*/
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1