版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程 1342 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代
2、码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1系统设计目的11.2 系统设计要求11.3 系统设计内容1第2章 系统实现思路22.1 需求分析22.2 系统的功能分析22.3 系统功能模块2第3章 系统详细设计43.1 模块框架图43.2 设计内容4第4章 系统调试运行114.1 系统测试及调试分析114.2 测试结果114.3 系统维护17课程设计体会18参考文献19第1章 系统设计目的1.1系统设计目的通过具体的课程设计,不仅使我们能够进一步理解程序设计的基本概念,掌握基本的程序设计方法,培养良好的程序设计风格,同时还可以借助程序设计技巧的训练,
3、培养我们抽象思维、逻辑思维及统筹规划的能力。1.2 系统设计要求根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程序对给出的程序源代码要给出各部分的详细注释自己根据能力及需要添加相应功能模块,增强模拟系统功能。1.3 系统设计内容(1)设计四个类;学生类(描述学生基本信息),成绩类,班级类,课程类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等),学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入。 (2)能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩,求学生的总分
4、及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单,能按班级输出学生的成绩单。 (3)设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比。 (4)计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)。 (5)显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件) 。(6)注意,至少一个班,30人三门课。第2章 系统实现思路2.1 需求分析学生成绩管理工作都是采用传统的手工管理,这种传统的人工管理方式存在着许多缺点,如:效率低,保密
5、性差,一方面导致教师,学生成绩情况的不了解,教师对成绩管理工作倍感头疼,因为时间一长,将产生大量的文件和数据,这对于查找,更新和维护都带来不少的困难,耗费大量的劳动力,难于避免错误的产生。所以成绩管理系统应具有以下特征:(1)能对学生各科成绩进行录入。(2)能对学生的成绩进行增加。(3)能对学生的成绩进行删除。(4)能对学生的成绩进行修改。(5)能对学生的成绩按总成绩,姓名,进行查询。(6)能输出学生的所有数据。(7)能进行成绩统计。(8)能进行总分查询排名。2.2 系统的功能分析资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览。系统查
6、询:可以对学生的信息进行查询。2.3 系统功能模块根据设计要求,可化分成7个模块。1用户输入模块 在此模块中,用户将根据菜单提示结合自己的需求输入一个011的值,来实现一定的功能。2学生的录入模块此模块可以让用户从键盘输入以下功能的序号,进行增加、修改、删除。(1)增加学生信息(2)修改学生信息(3)删除学生信息3文件保存功能模块用户在确定以录入的成绩无误之后,可以将学生信息以每班为单位存为一个数据文件。用户输入的学生信息可随时保存数据文件。4文件打开功能模块用户可以用词模块将数据文件在程序中打开、编辑,程序只能对当前打开的数据文件进行编辑。5查询功能模块在此模块里,用户可实现以下操作:(1)
7、能按总分查询(2)按姓名查询(3)能输出所有学生所有的数据6统计功能模块在此模块中,您可以有以下的操作:(1)每个学生的平均成绩(2)每科不及格人数7排名模块在此模块中,您可以有以下的操作:(1)按总分查询排名(2)退出第3章 系统详细设计3.1 模块框架图模块框架图就是系统的整个大概流程,学生成绩管理系统可以分为操作、查询、成绩统计及按总成绩排名等操作。其中操作包括对学生信息的录入、增加、删除及修改。查询包括总成绩查询、按学生姓名查询、及输出所有学生的成绩。成绩统计又分为每个学生的平均成绩及各科不及格的人数。(图3-1模块框架图)学生成绩管理系统操作查询成绩统计按总成绩排名录入增加删除修改总
8、成绩查询姓名每个学生的平均成绩各科不及格的人数输出所有学生的成绩图3-1模块框架图3.2 设计内容进入系统:(1)欢迎页面:显示学生成绩管理系统的主菜单,供用户选择所需的功能,通过定义的void main()函数实现。void main() cout*欢迎来到学生成绩查询系统*endl; cout请选择您需要的操作!endl; /菜单的输出 cout操作:endl; cout(1)数据录入endl; cout(2)增加学生endl; cout(3)删除学生endl; cout(4)修改数据endl; cout查询:endl; cout(5)按总成绩查询endl; cout(6)按姓名查询end
9、l; cout(7)输出所有学生的数据endl; cout成绩统计:endl; cout(8)每个学生的平均成绩endl; cout(9)各科不及格人数endl; cout排名:endl; cout(10)按总分查询排名endl; cout(11)退出endl; cout选择相关操作请输入相对的括号里的阿拉伯数字及字母!endl; (2)输入模版:输入1进入do-while函数,函数定义的录入模版。供用户进行学生成绩的录入工作。case 1: /数据的录入 char c; /用于在小项中选择是否继续操作 char name20; int number; float math,cpp,engli
10、sh; do cout请输入姓名:name; cout请输入学号:number; cout请输入数学成绩:math; cout请输入C+成绩:cpp; cout请输入英语成绩:english; (3)增加模版:输入2进入函数定义的增加模版。通过switch,case函数进行学生信息增加。case 2: /增加学生数据 char name20; int number; float math,cpp,english; char c; do cout请输入您要增加的学生的姓名:name; cout请输入你要增加的学生的学号:number; cout请输入数学成绩:math; cout请输入C+成绩:
11、cpp; cout请输入英语成绩:english; (4)删除模版:输入3进入删除模版,通过switch,case,while等函数进行学生信息的删除。case 3:/删除学生信息 char c; string xingming,line,str,name; do ifstream fin(f1.txt); fstream outfile(f2.txt,ios:trunc|ios:out); /作一个文本文档在文件夹中用于显示所录入的数据 cout请输入您要删除的学生的姓名:xingming; while(!fin.eof() ) getline(fin,line); istringstrea
12、m stream(line); name = line.substr(0,line.find( ,0);/找到名字,判断是否相等 if(name != xingming) outfilelineendl; (5)修改模版:输入4函数的修改模版。通过while函数进行学生信息的修改。coutnamenumacomeng;coutendl;outfilename 学号:nu 数学成绩:ma C+成绩:com 外语成绩:engendl; (6)总分查询模版:输入5进入void switch()函数中的case 5,函数的总分查询模版。通过输入学生姓的总成绩进行查询。cout请输入您要查询的学生的总成
13、绩:SUM; for(int j=0;jgetsum()=SUM)flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息为:endl;cout 学号:(*sj).number 数学分数:(*sj).math c+分数:(*sj).cpp 英语分数(*sj).englishendl;(7)姓名查询:输入6进入系统的查询模版。通过while循环语句对学生姓名进行查询。flag=0;cout请输入要查询的名字: n;for(int j=0;ji;j+)if(strcmp(n,(*sj).name)=0)flag=1;cout您要查询的学生是:(*sj).nameen
14、dl;cout该生的信息是:学号:(*sj).number 数学分数:(*sj).mathc+分数:(*sj).cpp英语分数:(*sj).englishendl;(8)输出所有学生信息:输入7进入void switch()函数中的case 7。cout所有学生数据如下:endl;ifstream file; file.open(f1.txt,ios:in); coutfile.rdbuf(); file.close();break; (9)平均成绩模版:输入8进入void switch()函数中的case 8。for(int m=0;mi;m+)cout(*sm).name 学号:(*sm)
15、.number 总分:(*sm).getsum() 均分:(*sm).getaver()endl; (10)各学科不及格人数:输入9进入void switch()函数中的case 9。int m,n,k,j;m=0;n=0;k=0; for(j=0;jmathcppenglish60)k+; cout数学不及格人数为:mendl;coutc+不及格人数为:nendl;cout英语不及格人数为:kendl;break;(11)总分排名:输入10进入学生总分排名模版。通过for,while语句进行。int h,g,n;int j=0;float a100,temp;for(g=0;gi;g+) a
16、j=(*sg).getsum();j+; for(h=0;hi;h+)for(n=0;nan+1)temp=an;an=an+1;an+1=temp; for(n=1;n=i;n+) coutanendl;(12)退出系统。第4章 系统调试运行4.1 系统测试及调试分析按“自下而上”的原则从模块测试、子系统测试、系统总测试3个阶段进行:(1)模块测试 寻找程序或详细设计中的错误;(2)子系统测试 把经测试的模块放在一起形成一个子系统来测试;(3)系统总测试 即把一个模块装成若干子系统并充分测试。根据检验程序的可靠性,用多组测试用例调试分析系统的正确性,完备性等各项性能指标,主要是对程序的所有功
17、能的检验,用多组数据并与自己的掌握和可测的事实结果进行比较,来判断程序是否正确。要求一次检验程序的每个功能,都要有多种数据。4.2 测试结果(1)程序运行的主界面(图4-1),通过输入的选项,函数会进入不同功能的函数继续运行。图4-1 程序运行的主界面(2)输入1进行数据录入界面(图4-2)图4-2 数据录入界面(3)输入2进行增加学生操作界面(图4-3)图4-3 增加学生操作界面(4)输入3进入学生成绩删除界面(图4-4)图4-4 学生成绩删除界面(5)输入4进入修改数据界面(图4-5)图4-5 修改数据界面(6)输入5进入按总成绩排名界面(图4-6)图4-6 按总成绩排名界面(7)输入6进
18、入按姓名查询界面(图4-7)图4-7 按姓名查询界面(8)输入7进入输出所有学生的数据界面(图4-8)图4-8 输出所有学生的数据界面(9)输入8进入学生的平均分界面(图4-9)图4-9 学生的平均分界面(10)输入9进入各科不及格人数界面(图4-10)图4-10 各科不及格人数界面(11)输入10进入按总分查询排名界面(图4-11)图4-11 按总分查询排名界面(12)输入11进入退出界面(4-12)图4-12 退出界面每一个case都能执行,但是有很多的地方都不够完善,例如:在总成绩排序中,只能输出总成绩,不能单独的输出学生的相应的信息;每次进行别的操作之前都要在进行一次数据的录入,不能直
19、接对原有的文件进行读取。4.3 系统维护系统维护主要包括了硬件设备的维护,应用软件系统维护和数据维护3部分内容。根据目的可分为:(1)改正性维护;(2)适应性维护;(3)完善性维护;(4)预防性维护。课程设计体会刚开始对于c+这门课程并没有浓厚的兴趣,觉得枯燥无味。但是,通过这周的课程设计,从不爱动手,不想动脑,到初步掌握了程序设计的基本方法,同时学会了怎样去借鉴别人的方法和经验,并融入自己的想法。同时也知道如何去查阅有用的资料,在整合处理这些资料的时候也使自己的思维得到拓展,这为以后的大学毕业设计论文打下了一个初步的基础。当然,这段时间让我学会了独立思考和自主学习,先从上网查找该系统的基本资
20、料,再编写学生成绩管理系统源程序代码,最后是进行编译,尽管这些环节都是非常艰难的,常常会因为一个点的错误而陷在编译失败与再次修改的漫漫循环之路中,但失败的越多,对人的考验就越多,收获的也越多,在系统运行成功之后的享受成功的喜悦就越多,另一方面在调试过程中通过错误及不足,从而引发自己的不断思考和运用已经学到的知识进行修改,这也是对自己在以后编程的道路上是有很大的帮助的。总之大一一年自己所学的知识只是些皮毛,而且编程经验比较少,所以系统中仍存在一些错误和不足,有些细节暂时还无法做得更好,还有待于在以后的学习中不断改进和提高。参考文献1谭浩强c+程序设计解题与上机指导清华大学出版社2谭浩强c+面向对
21、象的程序设计清华大学出版社3龚志翔Visual C+编程实例与技巧集粹北京期望电子出版社4孔鹏 Visual c+ 6.0完全自学手册机械工业出版社 5邓华 Visual C+案例教程北京中科多媒体电子出版社#include #include #include#include#includeusing namespace std; class Tstu /通过定义一个类来定义数据录入的函数 char name20; int number; float math,cpp,english,average,sum; public: Tstu() ; Tstu ( char n20, int num,
22、float ma,float cj,float eng ) ; float getsum();/得到总分的函数 float getaver(); /得到平均分的函数 friend void main(); /将主函数定义为友元函数,方便访问类中的成员 ; Tstu:Tstu ( char n20, int num,float ma,float cj,float eng ) strcpy(name,n); /得到姓名 number=num; /得到学号 math=ma; /得到数学成绩 cpp=cj; /得到c+成绩 english=eng; /得到英语成绩 float Tstu:getsum(
23、) /得到总分的函数 sum=cpp+english+math; return sum; float Tstu:getaver() /得到平均分的函数 average=getsum()/3; return average; void main() cout*欢迎来到学生成绩查询系统*endl; cout请选择您需要的操作!endl; /菜单的输出 cout操作:endl; cout(1)数据录入endl; cout(2)增加学生endl; cout(3)删除学生endl; cout(4)修改数据endl; cout查询:endl; cout(5)按总成绩查询endl; cout(6)按姓名查询
24、endl; cout(7)输出所有学生的数据endl; cout成绩统计:endl; cout(8)每个学生的平均成绩endl; cout(9)各科不及格人数endl; cout排名:endl; cout(10)按总分查询排名endl; cout(11)退出endl; cout选择相关操作请输入相对的括号里的阿拉伯数字及字母!p; if(p=1&p=11) chris1=1; else cout指令错误!请重新输入:endl; while(chris1=0); do switch(p) case 1: /数据的录入 char c; /用于在小项中选择是否继续操作 char name20; in
25、t number; float math,cpp,english; do cout请输入姓名:name; cout请输入学号:number; cout请输入数学成绩:math; cout请输入C+成绩:cpp; cout请输入英语成绩:english; fstream outfile,infile; /作一个文本文档在文件夹中用于显示所录入的数据 outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 数学成绩:math C+成绩:cpp 外
26、语成绩:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) /判断文件是否打开 coutf1.txt can not open.n; return; char ch; while(infile.get(ch) coutch; coutendl; infile.close(); j+; si=new Tstu(name, number,math, cpp, english); i+; cout数据录入成功,想继续录入吗(y/n)c; chris1=0; do if(c!=y&c!=n) cout指令错误!请重新输
27、入!c; else chris1=1; while(chris1=0); while(c=y); /重复输入 break; case 2: /增加学生数据 char name20; int number; float math,cpp,english; char c; do cout请输入您要增加的学生的姓名:name; cout请输入你要增加的学生的学号:number; cout请输入数学成绩:math; cout请输入C+成绩:cpp; cout请输入英语成绩:english; fstream outfile,infile; outfile.open(f1.txt,ios:out|ios:
28、app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 数学成绩:math C+成绩:cpp 外语成绩:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) coutf1.txt can not open.n; return; char h; while(infile.get(h) couth; coutendl; infile.close(); j+; si=new Tstu(name,number, math, cpp,
29、 english); i+; cout数据录入成功,想继续录入吗(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); break; case 3:/删除学生信息 char c; string xingming,line,str,name; do ifstream fin(f1.txt); fstream outfile(f2.txt,ios:trunc|ios:out); /作一个文本文档在文件夹中用于显示所录入的数据 cout请输入您要删除的学生的姓名:xingming; while(!fin.eof() ) getline(fin,line
30、); istringstream stream(line); name = line.substr(0,line.find( ,0);/找到名字,判断是否相等 if(name != xingming) outfilelineendl; outfile.close(); fin.close(); fstream f(f1.txt,ios:trunc|ios:out); ifstream outf(f2.txt); foutf.rdbuf(); outf.close(); f.close(); cout数据删除成功,想继续删除吗(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输
31、入!c; while(c=y); break; case 4:/修改数据 string sname,line,str,name; int nu;float eng,ma,com;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); coutendl; while(!fin.eof() ) /在文件中查找 getline(fin,line); istrings
32、tream stream(line); sname = line.substr(0,line.find( ,0);if(name!=sname)outfilelineendl;else flag=1; fin.close(); if(flag=1) coutnamenumacomeng;coutendl;outfilename 学号:nu 数学成绩:ma C+成绩:com 外语成绩:engendl; outfile.close();fstream outf(f1.txt,ios:trunc|ios:out);fstream inf(f.txt,ios:in);outfinf.rdbuf()en
33、dl;outf.close();inf.close(); if(flag=0)cout对不起,您要修改的学生不存在!请查证后输入!endl; coutc; coutendl; if(c!=y&c!=n) cout 指令错误!请重新输入!endlc; while(c=y);break; case 5:/按总分查询 int j=0;float SUM;char c;int flag; if(i=0)cout系统中没有输入数据,请先输入数据!endl;break; do flag=0; cout请输入您要查询的学生的总成绩:SUM; for(int j=0;jgetsum()=SUM) flag=1
34、;cout您要查询的学生是:(*sj).nameendl;cout该生的信息为:endl;cout 学号:(*sj).number 数学分数:(*sj).math c+分数:(*sj).cpp 英语分数(*sj).englishendl; if(flag=0)cout对不起!您要查询的学生不存在!endl;coutc;if(c!=y&c!=n)cout指令错误!请重新输入!c; ; while(c=y); break; case 6:/按姓名查询 char n20;char c;int j=0;int flag; if(i=0)cout系统中没有输入数据,请先输入数据!endl;break; do flag=0; cout请输入要查询的名字: n; for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0)flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息是:学号:(*sj).number 数学分数:(*sj).mathc+分数:(*sj).cpp英语分数:(*sj).englishendl; if(flag=0)cout对不起您要查询的学生不存在,请查证后再输入!endl;coutc;if(c!=y&c!=n)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内科护理学考试试题及参考答案
- 体育世界教案
- 健美操社团活动总结范文(3篇)
- 企业采购与供应商管理七大实战技能范文
- 2026 学龄前自闭症教师实操课件
- 六年级数学科上册教学工作总结
- 电子商务安全期末试卷及答案2套
- 2026 学龄前自闭症共同关注训练课件
- 2026年新媒体运营方案数据驱动决策模型构建
- 信息安全保护措施
- 水利工程监理实施细则范本(2025版水利部)
- 一项目一档案管理制度
- 2025华润建材科技校园招聘正式启动笔试历年参考题库附带答案详解
- 有关PLC的毕业论文
- 员工职位申请表(完整版2026年版)
- 2025新教材-译林版-七年级英语-上册-单词表
- 矛盾纠纷排查化解课件
- 注塑车间安全生产培训内容
- 国家安全生产十五五规划
- 开颅手术手术中过程护理的配合
- 酒店防损部安全培训课件
评论
0/150
提交评论