




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计报告(201/201学年第学期)题目:学生成绩管理系统专业软件工程(NIIT)学生姓名杨金霖班级学号B12041015指导教师成小惠指导单位计算机软件学院日期2013.3.26评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语教师签名:年月日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格学生成绩管理系统课题内容和要求设计一个简化的学生成绩管理系统,并用C或C#语言实现。对该系统的要求如下:1.该系统应实现以下功能(1)按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。(2)三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和40%。(3)计算每位学生的总评成绩。(4)算该班级本课程的总平均成绩。(5)算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。(6)按要求输出成绩在优、良、中、及格、不及格各区间的学生学号。2.系统应有以下菜单:0.退出1.计算每位学生的总评成绩2.计算班级本课程总评成绩3.统计优、良、中、及格、不及格的学生人数以及所占比例4.查询成绩在优、良、中、及格、不及格各区间的学生学号允许用户不断从这个菜单选择任一功能执行,直到选择退出,才退出整个系统。二、需求分析1.系统要从文件中读入相应的平时成绩、期中成绩和期末考试成绩。这里就用到了C++中的输入输出文件的操作。在C++语言中进行文件操作的一般步骤为:(1)为要进行操作的文件定义一个流。(2)建立(或打开)文件。(3)进行读/写操作。(4)关闭文件另外从文件中读入的数据要在后面进行计算,所以应该把文件中的数据对应到类或者结构体数组上去。(在这个程序中用的是结构体数组)系统还要有计算的功能,这里的计算包括总评成绩的计算和平均值的计算。因为要计算多个学生的成绩,所以利用循环语句来进行逐个学生成绩的计算并输出。(在这个程序中都是用的for循环)统计功能。需要运用到条件语句,既满足条件就加1,以此来完成计数统计。查询功能。同样是运用条件语句,判断符合条件就对屏幕输出,达到用户查询的目的。菜单功能。用简单的菜单函数完成整体的框架,用到switch语句来完成菜单函数的循环。定义结构体数组三、概要设计定义结构体数组定义函数定义函数对选项2计算课程总评成绩的函数voidreadaverage()(调用file函数)对选项1计算学生总评成绩的函数voidreadall()对选项2计算课程总评成绩的函数voidreadaverage()(调用file函数)对选项1计算学生总评成绩的函数voidreadall()(调用file函数)对选项3统计计算的函数voidreadgrade()(调用file函数)对选项4查询学号的函数voidreadABCDE()读入文件的函数voidfile()定义一个菜单函数定义一个菜单函数在这个函数中调用上面定义的函数首先用structstudent定义一个结构数组,里面应该包含学号Id、平时成绩ps、期中成绩qz、期末成绩qm、总评成绩all、等级grade。定义函数(1)读入文件(fs.open),对应到结构体数组中,利用for循环计算总评成绩并用判断语句来判断等级。(2)调用file函数,把计算的结果输出屏幕,并且按照要求保存到out文件中(ofstreamfout(“out.dat”);)。(3)调用file函数,计算平均成绩来得到课程的总评成绩。(4)调用file函数,if判断语句来统计人数并计算比例,然后输出屏幕。(5)if判断语句,把符合用户输入等级的学生的学号输出到屏幕。四、详细设计#include<iostream.h>/*输入输出的头文件*/#include<fstream.h>/*对文件的操作*/#include<string.h>/*定义字符串变量*/#include<stdlib.h>structstudent/*定义一个结构数组*/{public: charId[10]; floatps; floatqz; floatqm; floatall; chargrade;}stu[20];fstreamfs;intnum;charstr5[100]="学生学号";charstr6[100]="总评成绩";charstr7[100]="成绩等级";voidfile()/*定义一个函数,方便后面的调用*/{fs.open("note.dat",ios::in|ios::out);/*对文件读入的操作,文件以输入输出方式打开*/ fs>>num; for(inti=0;i<num;i++) { fs>>stu[i].Id>>stu[i].ps>>stu[i].qz>>stu[i].qm;/*把文件中得数值对应到结构数组中*/ } for(i=0;i<num;i++)/*完成对总评成绩的计算*/ { stu[i].all=stu[i].ps*0.3+stu[i].qz*0.3+stu[i].qm*0.4; if((stu[i].all<=100)&&(stu[i].all>=90)) stu[i].grade='A'; if((stu[i].all<90)&&(stu[i].all>=80)) stu[i].grade='B'; if((stu[i].all<80)&&(stu[i].all>=70)) stu[i].grade='C'; if((stu[i].all<70)&&(stu[i].all>=60)) stu[i].grade='D'; if((stu[i].all<60)&&(stu[i].all>=0)) stu[i].grade='E'; }}voidreadall()/*对选项1的实现,后面调用*/{file();inti; ofstreamfout("out.dat");/*输出保存到out文件中*/ if(!fout)/*如果文件打开失败*/ { cout<<"Cannotopenthefile!"<<endl; } fout<<str5<<"\t"<<str6<<"\t"<<str7<<endl;/*把表头文字存入文件*/ cout<<str5<<"\t"<<str6<<"\t"<<str7<<endl;/*把表头文字输出屏幕*/ for(i=0;i<num;i++)/*for循环逐次输出学生的成绩*/ { fout<<stu[i].Id<<"\t"<<stu[i].all<<"\t"<<stu[i].grade<<endl; cout<<stu[i].Id<<"\t"<<stu[i].all<<"\t\t"<<stu[i].grade<<endl; }} voidreadaverage() /*对选项2的实现,后面调用*/{ cout<<"本课程的总评成绩:";file(); inti; floata[20],p; for(i=0;i<num;i++) { a[i]=stu[i].all; } for(i=1;i<num;i++) { a[i]=a[i]+a[i-1]; } p=a[num-1]/num; cout<<p<<endl<<endl;}voidreadgrade()/*对选项3的实现,后面调用*/{inti;intj=0; intk=0; intx=0; inty=0; intz=0; file();for(i=0;i<num;i++) { if(stu[i].grade==65) j++; if(stu[i].grade==66) k++; if(stu[i].grade==67) x++; if(stu[i].grade==68) y++; if(stu[i].grade==69) z++; } cout<<"成绩为优的学生人数:"; cout<<j<<endl;cout<<"成绩为良的学生人数:"; cout<<k<<endl; cout<<"成绩为中等的学生人数:"; cout<<x<<endl; cout<<"成绩为及格的学生人数:"; cout<<y<<endl; cout<<"成绩为不及格的学生人数:"; cout<<z<<endl; floatn; cout<<"成绩为优的学生百分比:"; n=float(j)/num; cout<<n<<endl; cout<<"成绩为良的学生百分比:"; n=float(k)/num; cout<<n<<endl; cout<<"成绩为中等的学生百分比:"; n=float(x)/num; cout<<n<<endl; cout<<"成绩为及格的学生百分比:"; n=float(y)/num; cout<<n<<endl; cout<<"成绩为不及格的学生百分比:"; n=float(z)/num; cout<<n<<endl<<endl;}voidreadABCDE()/*对选项4的实现,后面调用*/{charm[10];cout<<"请输入你需要查询学生的成绩等级:"; cin>>m; if((m[0]!=65)&&(m[0]!=66)&&(m[0]!=67)&&(m[0]!=68)&&(m[0]!=69)) cout<<"Inputerror!!!!"<<endl<<endl; if(m[0]==65) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='A') cout<<stu[i].Id<<endl; } }if(m[0]==66) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='B') cout<<stu[i].Id<<endl; } } if(m[0]==67) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='C') cout<<stu[i].Id<<endl; } } if(m[0]==68) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='D') cout<<stu[i].Id<<endl; } } if(m[0]==69) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='E') cout<<stu[i].Id<<endl; } } cout<<endl;}voidmain()/*菜单函数,整体框架*/{intm=1;intn; do{ cout<<"1.计算每位学生的总评成绩"<<endl; cout<<"2.计算班级本课程的总评成绩"<<endl; cout<<"3.统计优、良、中、及格、不及格的学生人数以及所占比例"<<endl; cout<<"4.查询成绩在优、良、中、及格、不及格各区间的学生学号"<<endl; cout<<"5.退出"<<endl; cout<<"请选择:"; cin>>n;/*实现菜单函数的循环*/ switch(n){ case1: readall(); break; case2: readaverage(); break; case3: readgrade(); break; case4: readABCDE(); break; case5: exit(0); break; default: cout<<"Inputerror!!!!"<<endl<<endl; } }while(m==1);}五、测试数据及其结果分析1.note.dat文件中的内容:20060302018875.566060302029179.5760603020385757706030204798280.50603020566706306030206536052060302079090980603020886778306030209885669060302107559600603021168697006030212668089060302135559560603021470529006030215908897060302168852600603021760805606030218806877060302199080.5820603022075.588662.out.dat文件中的内容:学生学号 总评成绩 成绩等级0603020175.45C06030202 81.55 B06030203 78.8C06030204 80.5 B06030205 66 D06030206 54.7 E06030207 93.2 A06030208 82.1 B06030209 70.8 C06030210 64.2 D06030211 69.1 D06030212 79.4 C06030213 56.6 E06030214 72.6 C06030215 92.2 A06030216 66 D06030217 64.4 D06030218 75.2 C06030219 83.95 B06030220 75.45 C运行结果演示:1.运行程序后显示菜单:2.输入1,并按Enter,得到学生的总评成绩:3.输入2,并按Enter,得到课程的总评成绩:4.输入3,并按Enter,统计各等级的人数并计算比例:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 区域旅游产品开发与市场定位分析
- 以信息驱动的现代物流服务模式研究
- 《定量分析》课件
- 质量工程师应掌握的法律法规知识试题及答案
- 商务礼仪师考试中的团队合作精神与参与意识培养试题及答案
- 纺织机械操作实务中的安全监控制度试题及答案
- 酒店盈利模式探索试题及答案
- 管理多元化团队的酒店策略试题及答案
- Adobe中国认证考试学习策略与方法试题及答案
- 2024年酒店经营管理师考试核心要素试题及答案
- (二模)2025年深圳市高三年级第二次调研考试历史试卷(含标准答案)
- 曳引式电梯知识培训课件
- 广西《疼痛综合评估规范》(材料)
- 贵港辅警考试题库2024
- 2025年山东省淄博市张店区中考一模历史试题(含答案)
- 2025年内蒙古中考一模英语试题(原卷版+解析版)
- 美容师考试与法律法规相关知识及试题答案
- 推动研究生教育高质量发展方案
- 陕西省2024年高中学业水平合格考化学试卷试题(含答案解析)
- 输液泵/微量注射泵使用技术操作考核评分标准
- 混凝土麻面、空洞及露筋修补方案计划
评论
0/150
提交评论