《学生成绩管理系统设计与实现85.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计与实现85.docx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现cout请输入数学成绩math;cout请输入 c+成绩cpp;cout”请输入英语成绩”english;cout”请输入数学平时成绩“mathp;cout请输入c+平时成绩cppp;cout请输入英语平时成绩endl;cinenglishp;cout”请输入成绩百分比baif;fstream outfile, infile;outfile. open(/zf 1. txt, ios: :out | ios: :app); if(!file)coutz,f 1. txt can not open. n/z;return 0;
2、)outfilename,/学号:number 数学成绩“math。c+成绩:cpp外语成绩:english 数学平时成绩mathp c+平时成绩cppp 英语平时成绩 /zenglishpendl;outfile. close();infile. open(/zf 1. txt, ios: : in);if(!file)coutzzf 1. txt can not open. n;return 0;)char h;while(infile, get (h)couth;coutendl;infile, close();j+;si=newChengji(number, name, math, c
3、pp, english, mathp, cppp, englishp, baif, mathz, c ppz, engz);i+;coutc;if (c!=y &c!二n)cout指令错误!请重新输入! c; while (c二二y) ; break;)case 3进行信息的删除case 3: 删除学生信息char c;string xingming, line, str, name;doifstream fin (f1.txt);fstream outfile (,zf2. txt,ios: :trunc| ios: :out);cout。请输入您要删除的学生的姓名:endl;cinxing
4、ming;while(!fin. eof ()getline(fin, line);istringstream stream(line);name=line. substr(0, line, find( , 0);if (name!=xingming)outfilelineendl;)outfile. close();fin. close ();fstream f(fl. txt,ios:trunc|ios:out);if stream outf (z/f2. txt);foutf. rdbuf ();outf. close ();closeO ;cout”数据删除成功,想继续删除吗(y/n)
5、 ”c;if (c!=y &c!二n)cout指令错误!请重新输入! c;)while (c二二y) ;break;casecase尽心数据的修改:修改数据string sname, line, str, name;int nu;float eng, ma, com, map, cpp, engp;int flag;char c;if (i=0)cout”系统中没有输入数据,请先输入数据endl ;break;do flag=0;coutname;fstream fin (f1. txt,ios:in);ofstream outfile(f. txt,ios:trunc|ios:out);co
6、utendl;while(!fin. eof ()getline(fin, line);istringstream stream(line);sname=line. substr(0, line. find(, 0);if (name!=sname)outfilelinenamenumacomengmapcppengp;coutendl;outfilename,学号: nu数学成绩:c+成绩:外语成绩:eng 数学平 时成绩c+平时成绩cpp英语平时成绩:/zengpendl;outfile. close();fstream outf (fl. txt,ios:trunc|ios:out);f
7、stream inf (f.txt,ios:in);outfinf. rdbuf() endl;outf. close ();inf. close ();)if (flag=0)cout对不起,你要修改的学生不存在!请查证后 输入! endl;coutc;coutendl;if (c!=,y &c!二n)coutc;while(c二二y);break;11case实现按总分查寻case 5: 按总分查询int j=0;float SUM;char c;int flag;if(i=0) cout系统中没有输入数据,请先输入数据! z/endl;break;)do flag= 0;cout请输入您
8、要查询的学生的总成绩:endl;cinSUM;for (int j=0;jgetsum () =SUM)flag=l;cout您要查询的学生是: (*s j). nameendl;cout”该生的信息为:“endl;cout,/ 学号:数学分数:math* (*sj). baif+(*s j). mathp* (1- (*s j). baif) ,z c+分 数“(*sj). cpp*(*sj). baif+(*sj). cppp*(l-(*sjj). baif),z 英语 分数,z(*sj). english*(*sj). baif+ (*sj). englishp*(1-(*sj). ba
9、if)en dl;)if (flag=0) cout对不起!您要查询的学生不存在!endl; coutc;if (c!=,y &c!=,n ) cout指令错误!请重新输入 /c;) while (c二二y) ;break;case 6实现按学生姓名查询case 6: 按姓名查询char n20;char c;int j=0;int flag;if(i=o) cout系统中没有输入数据,请先输入数据! /zn;for(int j=0;ji;j+)if(n=(*sj). name)flag=l;cout该生的信息为:学号:(*sj).num数学 分数:/z(*sj). math* (*s j),
10、 baif+ (*s j). mathp* (1- (*s j). baif) /z c+分数”(*sj). cpp*(*sj). baif+(*sj). cppp*(1-(*sj). baif) 英语分数english*(*sj). baif+(*sj). englishp*(1-(*sj). baif)en dl;13if(flag=0)cout对不起!您要查询的学生不存在!endl;coutc;if (c!=y &c!二n) cout指令错误!请重新输入z/c;while(c=,y);break;case 7实现学生数据的输出case 7: 输出所有学生数据cout所有学生数据如下:en
11、dl;ifstream file;file. open(/zfl. txt, ios: : in);coutfile. rdbuf ();file, close();break;case 8实现学生平均成绩的统计case 8: /统计每个学生的平均成绩if(i=o) cout系统中没有输入数据,请先输入数据!/zendl;break;for (int m=0;mi ;m+) cout (*s m). namez/ 学号,(*sm). num 总分,z (*s m). get sum () ,z 均分 (*sm). getaver ()endl;break;14case 9实现各学科优秀人数的统
12、计case 9: 统计各学科优秀人数if(i=O) cout系统中没有输入数据,请先输入数据! ,endl;break;)int m, n, k, j; m=0; n=0; k=0;for(j=0;jgetmath()90)m+;if(sj-getcpp()90)n+;if(sj-geteng()90)k+;)cout数学优秀人数为:coutc+优秀人数为:nendl;cout英语优秀人数为:kendl;break;)case 10实现各学科不及格人数的统计case 10: 统计各学科不及格人数if(i=0) cout系统中没有输入数据,请先输入数据! ,endl; break;)int m,
13、 n, k, j ; m=0; n=0; k=0;for(j=0;jgetmath()getcpp()geteng()60)k+;)cout”数学不及格人数为:“mendl;coutc+不及格人数为:nendl;cout英语不及格人数为:kendl; break;)case 11实现按总分排名case 11: 按总分排名if(i=O) cout系统中没有输入数据,请先输入数据! /zendl;break;)int h,g,n;int j=0;float a100, temp;for (g=0;gi;g+)aj = (*sg). getsumO ; j+;)for (h=O;hi;h+)for
14、(n=0;nan+l)temp=an;an=an+l;an+l=temp; )for (n=l;n=i;n+)coutanendl;break;)case 12实现按数学成绩排名按数学成绩排名16题目学生成绩管理系统设计与实现考核工程考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、 基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答下列问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指
15、导教师评语:日期:if (i=0) cout系统中没有输入数据,请先输入数据! z/endl;break;)int h,g,n;int j=0;float a100, temp;for (g=0;gi;g+)aj = (*sg). getmathO ; J+;)for (h=0;hi;h+)for (n=0;nan+l)temp=an;an=an+l;an+l=temp; )for (n=l;n=i;n+)coutanendl;break;)case 13实现按c+成绩的排名按c+成绩排名if (i=0) cout系统中没有输入数据,请先输入数据! /zendl;break;)int h,g,
16、n;int j=0;float a100, temp;for (g=0;gi;g+)aj = (*sg). getcpp() ; j+;for (h=0;hi;h+)17for (n=0;nan+l)temp=an;an=an+l;an+l=temp;)for (n=l;n=i;n+)coutanendl;break;case 14实现按英语成绩排名case 12: 按英语成绩排名if (i=0) cout系统中没有输入数据,请先输入数据! /zendl;break;int h,g,n;int j=0;float a100, temp;for (g=0;gi;g+)aj = (*sg). ge
17、tengO ; j+;for (h=O;hi;h+)for (n=0;nan+l)temp=an;an=an+l;an+l=temp; for (n=l;n=i;n+)coutanuDebugshixun.exe*卷输入姓名dsq请输入学号2013请输入数学成绩66请输入C+成绩88请输入英语成绩66请输入数学平时成绩88请输入c 平时成绩88请输入英语平时成绩88请输入成绩百分比0.3dsq学号:2013数学成绩66C1成绩:88外语崎:66皴学单杯成绩88平时成绩8 8快语平时成绩88C+ +R宗合成浦250.8图4-2数据录入204. 3数据输出展示选择将学生数据输出供用户管理。具体内容
18、如图4-3:图4-3输出所有学生数据214.4排名展示用户可对学生成绩进行管理排名方便管理。具体内容如图4-4:c: *E: vuDebugshixun. exe*图4-4按总分查询排名不选 10名12 3 4 511111I Is人生生据重率数22课程设计体会经过一个学期对C+程序设计的学习,我学习到了基本的理论知识,了 解到了 C+语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打 下坚实的基础。在老师和同学的帮助下,通过自己的努力,终于完成了这次学生成绩查询系 统的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从 刚开始的选择程序、理解程序到后来的调试程序以及
19、改进程序这个过程中,我遇 到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办 法克服重重困难。通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体 会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前,要有 明确的目标和整体的设计思想。另外某些具体的细节内容也是相当的重要。这些 珍贵的编程思想和从中摸索到的经验都是在编程的过程中获得的珍贵财富。这些 经验对我以后的编程会有很大的帮助,我要好好利用。23参考文献1谭浩强编著C程序设计题解与上机指导清华大学出版社2吕凤煮著C+语言基础教程清华大学出版社3Robert L. Kruse著C+数据结构与程序
20、设计清华大学出版社4谭浩强编著C+面向对象程序设计5钱能编著C+程序设计教程清华大学出版社6 LippmanBarabaraC+ Primer人民邮电出版社7Bjarne StroustrupThe C+ Programming Language机械工业出版社24第1章系统设计目的11.1 课程实训目的11.2 课程实训的基本要求1第2章 系统实现思路11.1 问题描述22. 2功能要求2第3章系统详细设计33.1模块框架图33. 2 do while 语句33. 3 case 语句4第4章系统调试运行194. 1 运行界面展示 195. 2数据录入界面展示206. 3数据输出展示217. 4
21、排名展示22课程设计体会23参考文献24第1章系统设计目的1.1 课程实训目的为了进一步巩固C+程序设计课程的只是,深刻把握C+语言的重要概念及 基本语法,锻炼自己熟练的运用C+语言设计程序解决实际问题的能力,通过这 一周的课程实训,巩固所学C+语言基本知识,掌握Visual Studio C+开发工 具的运用,掌握结构化程序设计的主题思想,把所学课程相关知识加以融会贯通, 以逐步求精的方法编制程序解决一些实际的问题,全面掌握C+语言的编程思 想,为后续课程的学习打下坚实的基础,为将来编写软件积累一些典型的案例处 理经验。1.2 课程实训的基本要求要求通过查阅与设计课题有关的文献资料,并自学与
22、其相关内容,掌握 Visual C+6.0集成开发环境的使用,每人独立完成课程设计全部内容,具体要 求如下:(1)对系统进行功能模块分析、控制模块分析正确(2)系统设计要能尽力完成题目所要求的功能。(3)编程简练,可用,尽可能的使系统的功能更加完善和全面(4)说明书、流程图要清楚。第2章 系统实现思路1 .1问题描述对至少一个班级,N个学生,每个学生至少三门课程,该系统实现对班级成 绩的录入、显示、修改、排序等操作的管理。课程设计题目:学生成绩管理系 统设计与实现。2 . 2功能要求(1)设计四个类,包括学生类(描述学生基本信息);成绩类:班级类; 课程类(描述课程信息:课程编号,科目名称,如
23、高等数学,大学英语等);(2)学生成绩及课程信息用文件保存,程序执行时从文件读入;(3)能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生 的成绩;(4)求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询 学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。- 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期 末成绩、平时成绩所占百分比- 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩 *(1-平时成绩所占百分比)- 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信 息。分单人显示和以班输出(班成绩单格式输出到文件)-注
24、意,至少应包含一个班、30人、三门课第3章系统详细设计3.1模块框架图程序中包含类和主函数,类构成了程序的数据管理和存放区。在主函数中包 括多种功能。一类为依托构成程序框架,在主函数中实现每一个功能。类与功能 共同构成程序框架。具体内容如图3-1:图3-1模块框架图3. 2 do while 语句do while语句实现判断输入的正确性do 判断输入是否正确(cinp;if (p=l&p=14)chrisl=l;elsecout指令错误!请重新输入:endl;while (chrisl=0);case 1: 3 case 语句通过case语句选择不同功能进行操作case 1进行数据的录入数据录
25、入char c;char name20;int number;floatmath, cpp, english, mathp, cppp, englishp, baif, mathz, cppz, engz, sum; docout请输入姓名name;cout”请输入学号number;coutmath;coutcpp;cout”请输入英语成绩”english;coutmathp;cout请输入c+平时成绩cppp;cout请输入英语平时成绩“englishp;cout”请输入成绩百分比baif;fstream outfile, infile;outfile. open(,zfl. txt, io
26、s: :out | ios: :app);if(!file)cout/zf 1. txt can not open. nz/;return 0;)/zmathendlc+成绩:cppendl外语成绩:englishendl 数学平时成绩(nlathpendlc+平时成绩cpppendl英语平时成绩 englishpendl综合成绩/zmath*baif+niathp* (1-baif) +cpp*baif+cppp (l-baif) +engl ish*baif+engl i shp* (1-baif)endl;outfile. close();infile, open(/zf 1. txt,
27、 ios: : in);if(!file)coutz,f 1. txt can not open. n/z;return 0;)char ch;while (infile, get(ch)coutch;coutendl;infile, close();j+;si=newChengji (number, name, math, cpp, english, mathp, cppp, englishp, baif, mathz, c ppz, engz);i+;coutc;chrisl=O;do if (c!=y&c!二n) cout”指令错误!请重新输入! c;)elsechrisl=l;while(chrisl=0);while(c=,y);break;)case 2进行数据的增加case 2: 增加学生数据char name20;int number;floatmath, cpp, english, mathp, cppp, englishp, mathz,cppz,engz;char c;do cout请输入您要增加的学生的名字:name;cout请输入你要增加的学生的学号:number;
限制150内