学生成绩标准管理系统程序设计方案报告.doc
《学生成绩标准管理系统程序设计方案报告.doc》由会员分享,可在线阅读,更多相关《学生成绩标准管理系统程序设计方案报告.doc(19页珍藏版)》请在咨信网上搜索。
程序设计汇报 ( 201 / 201 年 第 学期) 题 目: 学生成绩管理系统 专 业 软件工程(NIIT) 学 生 姓 名 班 级 学 号 指 导 教 师 成小惠 指 导 单 位 计算机软件学院 日 期 .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)关闭文件 另外从文件中读入数据要在后面进行计算,所以应该把文件中数据对应到类或结构体数组上去。(在这个程序中用是结构体数组) 2. 系统还要有计算功效,这里计算包含总评成绩计算和平均值计算。因为要计算多个学生成绩,所以利用循环语句来进行逐一学生成绩计算并输出。(在这个程序中全部是用for循环) 3. 统计功效。需要利用到条件语句,既满足条件就加1,以此来完成计数统计。 4. 查询功效。一样是利用条件语句,判定符合条件就对屏幕输出,达成用户查询目标。 5. 菜单功效。用简单菜单函数完成整体框架,用到switch语句来完成菜单函数循环。 定义结构体数组 三、概要设计 定义函数 对选项2计算课程总评成绩函数 void readaverage() (调用file函数) 对选项1计算学生总评成绩函数 void readall() (调用file函数) 对选项3统计计算函数 void readgrade() (调用file函数) 对选项4查询学号函数 void 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判定语句来统计人数并计算百分比,然后输出屏幕。 (5)if判定语句,把符适用户输入等级学生学号输出到屏幕。 四、具体设计 #include<iostream.h> /*输入输出头文件*/ #include<fstream.h> /*对文件操作*/ #include<string.h> /*定义字符串变量*/ #include<stdlib.h> struct student /*定义一个结构数组*/ { public: char Id[10]; float ps; float qz; float qm; float all; char grade; }stu[20]; fstream fs; int num; char str5[100]="学生学号"; char str6[100]="总评成绩"; char str7[100]="成绩等级"; void file() /*定义一个函数,方便后面调用*/ { fs.open("note.dat",ios::in|ios::out); /*对文件读入操作,文件以输入输出方法打开*/ fs>>num; for(int i=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'; } } void readall() /*对选项1实现,后面调用*/ { file(); int i; ofstream fout("out.dat"); /*输出保留到out文件中*/ if(!fout) /*假如文件打开失败*/ { cout<<"Cannot open the file!"<<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; } } void readaverage() /*对选项2实现,后面调用*/ { cout<<"本课程总评成绩:"; file(); int i; float a[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; } void readgrade() /*对选项3实现,后面调用*/ { int i; int j=0; int k=0; int x=0; int y=0; int z=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; float n; 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; } void readABCDE() /*对选项4实现,后面调用*/ { char m[10]; cout<<"请输入你需要查询学生成绩等级:"; cin>>m; if((m[0]!=65)&&(m[0]!=66)&&(m[0]!=67)&&(m[0]!=68)&&(m[0]!=69)) cout<<"Input error!!!!"<<endl<<endl; if(m[0]==65) { cout<<str5<<endl; for(int i=0;i<num;i++) { if(stu[i].grade=='A') cout<<stu[i].Id<<endl; } } if(m[0]==66) { cout<<str5<<endl; for(int i=0;i<num;i++) { if(stu[i].grade=='B') cout<<stu[i].Id<<endl; } } if(m[0]==67) { cout<<str5<<endl; for(int i=0;i<num;i++) { if(stu[i].grade=='C') cout<<stu[i].Id<<endl; } } if(m[0]==68) { cout<<str5<<endl; for(int i=0;i<num;i++) { if(stu[i].grade=='D') cout<<stu[i].Id<<endl; } } if(m[0]==69) { cout<<str5<<endl; for(int i=0;i<num;i++) { if(stu[i].grade=='E') cout<<stu[i].Id<<endl; } } cout<<endl; } void main() /*菜单函数,整体框架*/ { int m=1; int n; do{ cout<<"1.计算每位学生总评成绩"<<endl; cout<<"2.计算班级本课程总评成绩"<<endl; cout<<"3.统计优、良、中、及格、不及格学生人数和所占百分比"<<endl; cout<<"4.查询成绩在优、良、中、及格、不及格各区间学生学号"<<endl; cout<<"5.退出"<<endl; cout<<"请选择:"; cin>>n; /*实现菜单函数循环*/ switch(n){ case 1: readall(); break; case 2: readaverage(); break; case 3: readgrade(); break; case 4: readABCDE(); break; case 5: exit(0); break; default: cout<<"Input error!!!!"<<endl<<endl; } }while(m==1); } 五、测试数据及其结果分析 1.note.dat文件中内容: 20 06030201 88 75.5 66 06030202 91 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 06030219 90 80.5 82 06030220 75.5 88 66 2.out.dat文件中内容: 学生学号 总评成绩 成绩等级 06030201 75.45 C 06030202 81.55 B 06030203 78.8 C 06030204 80.5 B 06030205 66 D 06030206 54.7 E 06030207 93.2 A 06030208 82.1 B 06030209 70.8 C 06030210 64.2 D 06030211 69.1 D 06030212 79.4 C 06030213 56.6 E 06030214 72.6 C 06030215 92.2 A 06030216 66 D 06030217 64.4 D 06030218 75.2 C 06030219 83.95 B 06030220 75.45 C 运行结果演示: 1.运行程序后显示菜单: 2.输入1,并按Enter,得到学生总评成绩: 3.输入2,并按Enter,得到课程总评成绩: 4.输入3,并按Enter,统计各等级人数并计算百分比: 5.输入4,并按Enter,可输入要查询等级: 输入A: 输入B: 输入C: 输入D: 输入E: 六、调试过程中问题 1.对于此次程序书写,感悟良多,刚开始时候,认为课题不是极难,因为在书本上,有这么例题。而此题和其它学生成绩管理系统不一样,它基础要求实现对一个班级成绩录入,个人成绩,班级信息等等。对于学生成绩计算包含了平时成绩,期中成绩,期末成绩。不是书本例题似,实现多门科目标成绩录入。于是刚开始难点就是考虑怎样实现这一功效。刚开始,书本上实现时候,采取是指针,链表,去实现,然后,我在去调链表指针时候,就要去用很多头文件,要写4个左右大量头文件,做了4天左右时候,我们没有时候所要功效,在编译时候没有错误,不过程序还是实现不了,于是,放弃采取链表,指针。选择数组。即使数组在内存上有很大缺点,但对于此题,可能数组去实现,相对轻易; 2.实现学生成绩录入功效时候,我没能深去了解题目所要求得实现保留在note.dat中,开始对文件没有深刻去认识,于是我一根筋去认为首先建一个note.dat文件,然后用程序去读出这个文件其中数据。于是,我不管进行咋样操作,还是发觉程序中没有内容,以后考虑许久, 发觉没有了解题目标意思,对和一个系统而言首先要实现录入功效,于是我就想,能够在程序中实现程序数据录入,然后去保留在note.dat文件中,但于是写程序时候首先定义一个save函数用来存取学生数据,在main函数中,在录入功效后面增加一个选项,用来去实现保留功效,开始存入一个人信息时候,我没有发觉错误,不过录入大家时候,发觉在note.dat文件存入是一个人信息,于是我找不到错误,开始我去想可能是文件中输出格式有错误.可能是“r”问题,因为我不太确定用是“w”还是“r”,以后分别去试验,发觉还是处理不了问题,以后仔细想了想,之所以只存入一个学生信息,估量没有加入录入成功或保留成功,于是我把,save函数放在input函数,也就意思是在实现对一个学生录入功效时候,顺便实现保留在文本中然后发觉没录入一个学生成绩就要去保留,要是有很多学生,那么就要用很多遍去保留,发觉就是一个问题,于是在想到,之所以去调用一次,就是有for循环,于是我把save函数方法,写在for循环前面,系统实现默认保留功效。这么不会出现提醒信息,问是不是需要实现保留。 3. 以后经过一系列函数实现出个人成绩等级,总评,关键经过for循环,if语句,因为我定义grade,zongping ,number是结构体变量,而且是全局,这要对多个函数调用很轻易去实现到;在文件输出中,按要求输出三项,分别是学号,总评,等级;按要求输出在一个文件中,开始时候,输出没有实现,因为录入没有实现保留功效,于是发觉输出空,以后当实现了保留功效后,发觉输出功效自然处理。 4.开始时候,我把学生学号定义为了char类型,当输出时候在学生学号一栏时候,发觉字母,以后,想到改成int型,从而实现正确输出; 七、程序设计总结 1:这是我第一次做课程设计,感觉在前一个星期,没有做出结果,因为开始时候自己走错路,采取了指针,以后想到了数组,才有了一定气色,但去实现一个程序时候,就要有一定很清楚思绪,去了解到底实现什么样功效,开始时候,没有清楚思绪,在想到什么了函数,就在主函数下面就写想用程序,然而这么去写以后,才发觉程序很乱,错时候,找不到错在哪里。心里很是着急,有函数并不是有了就能去实现对应功效,要知道放在哪里,是放在for循环前面,还是放在for循环中,这是有很大不一样; 2:心态,很关键,尤其是程序犯错时候,自己程序碰到错误时候,发觉不管咋样去找,还是没能够找到函数,自己心态很乱,很着急;然后去找周围同学,可是周围同学也不知道时候自己心态更糟糕。于是去问部分专业课老师,可是有老师,还是没有够给出对应解释,于是自己静下心,深刻去想程序; 3:对于团体意识很关键,要有很明确分工,一起去探讨部分出现问题; 4:当程序独立完成时候,那种深深满足感无法用言语能够表示出来,程序出现问题时候,自己发觉自己在这方面知识很欠缺,比如在这个程序中,实现对文本输出,输入,这在以前不是很了解,做了程序以后,才有了部分了解。于是,我想自己以前学过知识肯定有很多不懂,这在以后学习中,一定要多多去加强。只有不停去复习,有些知识才不会忘记。只有自己亲自去动手完成这么程序,才能领悟到软件这门学科精髓。只有用心去做,亲自去做,用心去想,碰到无数错误时候,不放弃,不抛弃,错误一定会能找得到,部分功效一定能够实现;因为我坚信:成功,永远给予那些默默付出不放弃人!- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 标准 管理 系统 程序设计 方案 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文