版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1342 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码
2、的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 课程设计要求11.2 课程设计任务2第2章 系统实现思路32.1 需求分析32.2 系统性能要求32.3 系统功能模块32.4 模块设计与分析4第3章 系统详细设计53.1 类的设计63.2 主函数设计9第4章 系统调试运行164.1 调试结果164.2 系统缺陷214.3 总结21 4.4课程设计体会22参考文献22第1章 系统设计目的1.1 课程设计要求在计算机领域中,任何好的创意和设计最终都需要通过高水平的程序设计实现,因此学习程序设计是计算机及相关专业学生必备的基本技能之一。为了使学生更好的学习和
3、掌握这一基本技能,必须系统而全面地的安排程序设计课程设计,目的是通过具体的课程设计,不仅使学生能够进一步理解程序设计的基本概念,掌握基本的程序设计方法,培养良好的程序设计风格,同时还可以借助程序设计技巧的训练,培养学生抽象思维、逻辑思维及统筹规划的能力。要求通过查阅与设计课题有关的文献资料,并自学与其相关内容,掌握Visual C+6.0集成开发环境的使用,每人独立完成课程设计全部内容,具体要求如下:1、 对系统进行功能模块分析、控制模块分析正确2、 系统设计要能尽力完成题目所要求的功能。3、 编程简练,可用,尽可能的使系统的功能更加完善和全面4、 说明书、流程图要清楚。1.2 课程设计任务(
4、1)设计四个类,包括学生类(描述学生基本信息)、成绩类、班级类、课程类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);(2)学生成绩及课程信息用文件保存,程序执行时从文件读入;(3)能按学期、按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;(4)求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单,能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比) 显示学生的姓名、所选课程
5、名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件) 注意:至少应包含一个班、30人、三门课 第2章 系统实现思路2.1 需求分析学生成绩管理系统主要提供成绩查询,方便管理的网上的信息查阅平台,学生可以通过该系统查阅与自己相关信息。教师可以通过成绩管理系统查阅学生成绩信息等相关操作。系统管理员可以实现以上的所有功能,还有对学生的添加、删除、修改。2.2 系统性能要求按照课程设计任务书中的要求,我编写了此程序,该程序的功能如下:()能对学生各科成绩进行录入。()能对学生的成绩进行增加。()能对学生的成绩进行删除。()能对学生的成绩进行修改。()能对学生的成绩按
6、总成绩、平均分、姓名进行查询。()能输出学生的所有数据。()能输出每个学生的平均成绩。()能统计不及格人数。()能进行成绩统计。(10)能进行总分查询排名。(11)系统安全、可靠。(12)功能齐全。(13)操作方便、界面友好。(14)易于维护和扩充。2.3 系统功能模块系统主要根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作,“学生成绩管理系统”包括12个模块:输入学生资料,输出学生资料,学生成绩按顺序排列,按姓名、总分、平均分查找,添加学生资料,删除该学生资料,修改该学生资料,查找并显示学生资料,显示学生平均分,显示各科不及格人数,从文件中读入数据,储存学生
7、资料并退出系统。这十二个模块既相互联系又相互独立。 系统首先为3个类:学生类、课程类、成绩类;接下来就是主函数,主函数中包括界面显示、各个功能的代码编写。 2.4 系统框架图学生成绩查询系统分为:操作部分(成绩录入、输出、增加、删除、修改),查询部分(按总成绩查询、按姓名查询、按平均分查询),还有总成绩输出,平均分输出,平时成绩的输出,不及格人数的统计输出,按总成绩排序后的输出,程序界面简洁明了,功能分工明确,下面是系统的框架图,这样可以更直接的了解程序的功能。学生成绩管理系统操作查询成绩统计按总成绩排名录入增加删除修改总成绩查询姓名、平均分查询每个学生的平均成绩各科不及格的人数输出所有学生的
8、成绩图2-1 系统框架2.4模块设计与分析(1)输入学生资料模块:主要功能用来对学生的成绩进行录入和输入。在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如学号,姓名。在准确输入学生资料后,就可以对该学生的各科成绩进行录入。该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。 (2)输出学生资料模块:主要功能用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。具体包括学生的学号,姓名和各科成绩。在查看学生的资料,成绩各方面的信息后
9、,按任意键就可以返回到主菜单。(3) 按学生姓名进行排列模块 主要功能是用来对学生的资料按姓名进行排序。在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按姓名进行排序,这样就方便查找姓氏相同或是相近的同学的资料。(4) 添加学生资料模块主要功能是用来添加学生资料,成绩。如果系统有保存学生资料的情况下,想录入学生成绩的话,就不用添加学生资料这模块。如果系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。(5)按姓名查找,删除该学生资料模块主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该
10、学生资料后,就可以删除了。由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化。(6)查找并显示学生资料模块主要功能是用来查找学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息。(7)按姓名查找,修改学生资料模块主要功能是用来修改学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。(8)从文件中读入数据模块主要功能是用来从文件中读入学生数据。由于一些资料可以用Word文档或Exce
11、l表格输入,故在此模块中增加了导入数据的功能。这样就方便很多,不用把学生资料一个一个添加,节省了很多时间精力。(9)储存学生资料并退出系统模块主要功能是用来储存学生资料。在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。第3章 系统详细设计3.1 类的设计类是程序不可缺少的部分,在本程序中设计了3个类,分别为学生类、课程类和成绩类,类中定义了各个数据成员,以构造函数的方式给数据成员赋初值,下面是对3个类介绍:(1)首先是student类studentnumnamenumber图3-1 Student类类图class student
12、/定义一个学生类char name30;/定义姓名数组int num;/定义学号int number;public:student();/声明无参的构造函数student(char n30,int num);/声明有参的构造函数friend void main();/将主函数声明为类的友元函数,方便访问类中数据;表3-1 student类说明表名称属性说明num数据成员说明学生学号name数据成员说明学生名字number数据成员定义的数据成员(2)接着是subjic类subjicmathcppchinese图3-2 Subjic类类图class subjic/定义一个课程类public:flo
13、at math,cpp,chinese;/定义数据成员friend void main();subjic();subjic(float ma,float cj,float ch);表3-2 subjic类说明表名称属性说明Math数据成员说明学生数学成绩Cpp数据成员说明学生c+成绩chinese数据成员说明学生语文成绩(3)最后是result类resultaveragesumpingshicjzpcjmathcppchinese图3-3 Result类类图class result/定义一个成绩类,计算平均分,总成绩和平时成绩float average,sum,pingshicj,zpcj,m
14、ath,cpp,chinese;/定义数据成员float getaver();/声明计算平均分的函数float getsum();/声明计算总分的函数float www();/计算总评成绩的函数friend void main(); ;表3-3 Result类说明表名称属性说明average数据成员学生平均分sum数据成员学生总成绩pingshicj数据成员平时成绩zpcj数据成员总评成绩math数据成员学生数学成绩cpp数据成员学生c+成绩chinese数据成员学生语文成绩3.2 主函数设计主函数在程序中起核心作用,本程序的主函数主要完成了界面的设计、调用成绩类的函数计算总成绩、平均成绩和总
15、评成绩,然后是定义指针方便后面调用类的数据成员,还定义了全局变量用于输入数据的下标。(1)首先是介绍界面设计和选择操作的设计: 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)按平均分查询endl;cout(7)按姓名查询endl;cout(8)输出所以学生的数据endl;cout成绩统计endl;cout(9)每
16、个学生的平均成绩endl;cout(10)各科不及格人数endl;cout排名endl;cout(11)按总分查询排名endl;cout(12)退出endl;这里是查询的主页面的界面设计,页面输出以后都会显示这些操作选项供用户选择,达到了简洁明了的效果。下面是操作选项的选择下标的设计,设计全局变量可以很好的控制下标的选择,而且定义的指向各个类的指针可以方便后面操作程序的编写。cout选择操作请选择相应操作前的阿拉伯数字!p;if(p=1&p=12)chrisl=1;elsecout!输入错误,请重新输入:endl;while(chrisl=0);doswitch(p)(2)这里是各个操作的具体
17、编译:其中数据录入、数据删除、按总成绩查询、按平均分查询、按姓名查询都是以文件的方式读入,其他的按总成绩排序和不及格人数的输出case 1:/数据录入char c;/用于在小项中选择是否继续操作char name30;/定义各个数据int number;float math,cpp,chinese;float pingshicj;float zpcj;上面是数据成员的定义,接下来是具体操作的编译:docout请输入姓名name;cout请输入学号number;cout请输入数学成绩math;cout请输入c+成绩cpp;cout请输入语文成绩chinese;cout请输入平时成绩pingshi
18、cj;(3)以下是查询操作的编写首先为按总分查询,以指针来调用类中数据,其他的查询操作都是以相同的方式设计完成,因代码篇幅过多这里不一一列出 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; cout你要查询的学生是:(*sj).nameendl; cout该生的信息为:endl; cout学号:(*sj).num数学分数:(*d
19、j).mathc+分数:(*dj).cpp 语文分数:(*dj).chinese平时成绩:(*fj).pingshicjendl; if(flag=0)cout对不起!您要查询的学生不存在!endl;coutc;if(c!=y&c!=n)cout指令错误!请重新输入!c; ; while(c=y); break; 该程序除了总分查询外,还可以按平均分查询,按平均分查询操作的设计,使您可以方便的查询到你所希望的平均分的学生,接下来是输出操作:()输出所有学生数据操作 case 8:/输出所有学生数据 cout所有学生数据如下:endl; ifstream file; file.open(f1.t
20、xt,ios:in); coutfile.rdbuf(); file.close(); break; ()统计学生的平均成绩,以一个if语句判断系统内是否有数据,如果没有数据需要重新输入 case 9:/统计每个学生的平均成绩 if(i=0) cout系统中没有输入数据,请先输入数据!endl;break; for(int m=0;mi;m+) cout(*sm).name学号:(*sm).number总分:(*fm).getsum()平均分: (*fm).getaver()平时成绩:(*fj).pingshicjendl; break; ()统计不及格人数,以if语句判断是否大于60分 ca
21、se 10:/统计各学科不及格人数 if(i=0) cout系统中没有输入数据,请先输入数据!endl;break; int m,n,k,j;m=0;n=0;k=0; for(j=0;jmathcppchinese60)k+; cout数学不及格人数为:mendl; coutc+不及格人数为:nendl; cout语文不及格人数为:kendl; break; 第4章 系统调试运行4.1调试结果程序调试是非常重要的工作,调试需要耐心,调试可以发现程序的不足,便于我们改进程序,让程序更完美,下面是我调试时的一些结果:图4-1是进入主界面,我们首先可以看到,主界面共有12个操作选项,12个小选项又分
22、为4个大的选项:操作、查询、成绩统计和排名,当您看完操作选项以后是一条温馨的提示:选择相关操作请输入相对括号里的阿拉伯数字及字母。我选择的是数字“1”,接下来就是输入学生姓名等信息了。图4-1 数据录入图4-2是输入完学生信息以后界面显示的信息,可以看到,当输入完成时系统会自动显示出学生信息:图4-2 数据录入图4-3是增加学生数据的操作,看图的最后一行,提示输入要增加的学生的姓名:图4-3 增加数据 图4-4是选择删除操作,您可以发现当完成删除操作后都会提醒您是否要继续:图4-4 删除数据图4-5执行修改学生信息的操作,当您选择此操作时,系统会提醒您先输入信息:图4-5 数据修改图4-6是执
23、行按总成绩查询操作,需要先输入总成绩:图4-6 成绩查询 图4-7输出了所以学生的数据图4-7 学生数据输出 图4-8是每个学生的平均成绩输出图4-8 平均成绩输出 图4-9是不及格人数的显示图4-9 不及格人数统计最后一个,图4-10是按总成绩的排名图4-10 总成绩排序经过以上测试,每一个case都能执行,但是有很多的地方都不够完善,例如:在总成绩排序中,只能输出总成绩,不能单独的输出学生的相应的信息;每次进行别的操作之前都要在进行一次数据的录入,不能直接对原有的文件进行读取。4.2 系统缺陷在总成绩排序中,只能输出总成绩,不能单独的输出学生的相应的信息;每次进行别的操作之前都要在进行一次
24、数据的录入,不能直接对原有的文件进行读取。4.3 总结通过本次设计,了解了很多类的作用,也增加了设计的灵感,这个成绩管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。只能实现学生管理系统最基本的功能,可以进行简单的输入、输出学生资料,查询和修改学生信息,能直接从文件中读入数据,能对系统所作的修改、操作进行保存等。而且在每个模块也有不足的地方,比如在输入学生资料时,对每个信息项没有严格的规定,不可以输入中文字符。同时有些模块还不能实现本应该有的功能,这有待以后努力,争能够实现该有的功能。4.4课程设计体会通过这次设计,我有了更多的灵感,也找到了一些学习的技巧
25、,耐心也得到了很大的锻炼,特别是在调试程序时,每一个错你都要认真的去看,每一个细节都要注意,不然在调试时都有可能出错。这次的程序还不是很成功,开始两天都没有思路,但到后面两天有思路了,感觉时间又有点紧,所以做得有些仓促。以后这方面还得提高,做更好的准备。参考文献C+面向对象程序设计 谭浩强 清华大学出版社C+程序设计试验指导 钱能 清华大学出版社C语言程序设计教程 张永 中国永州水电出版社C+程序设计 钱能 清华大学出版社C程序设计 谭浩强 清华大学出版社C+语言程序设计实训教程 曾辉等 机械工业出版社#include #include #include#include#includeusin
26、g namespace std; class Tstu /通过定义一个类来定义数据录入的函数 char name20; int number; float math,cpp,english,average,sum; public: Tstu() ; Tstu ( char n20, int num,float ma,float cj,float eng ) ; float getsum();/得到总分的函数 float getaver(); /得到平均分的函数 friend void main(); /将主函数定义为友元函数,方便访问类中的成员 ; Tstu:Tstu ( char n20,
27、int num,float ma,float cj,float eng ) strcpy(name,n); /得到姓名 number=num; /得到学号 math=ma; /得到数学成绩 cpp=cj; /得到c+成绩 english=eng; /得到英语成绩 float Tstu:getsum() /得到总分的函数 sum=cpp+english+math; return sum; float Tstu:getaver() /得到平均分的函数 average=getsum()/3; return average; void main() cout*欢迎来到学生成绩查询系统*endl; co
28、ut请选择您需要的操作!endl; /菜单的输出 cout操作:endl; cout(1)数据录入endl; cout(2)增加学生endl; cout(3)删除学生endl; cout(4)修改数据endl; cout查询:endl; cout(5)按总成绩查询endl; cout(6)按姓名查询endl; cout(7)按平均分查询endl; cout(8)输出所有学生的数据endl; cout成绩统计:endl; cout(9)每个学生的平均成绩endl; cout(10)各科不及格人数endl; cout排名:endl; cout(11)按总分查询排名endl; cout(12)退出e
29、ndl; cout选择相关操作请输入相对的括号里的阿拉伯数字及字母!p; if(p=1&p=12) chris1=1; else cout指令错误!请重新输入:endl; while(chris1=0); do switch(p) case 1: /数据的录入 char c; /用于在小项中选择是否继续操作 char name20; int number; float math,cpp,english; do cout请输入姓名:name; cout请输入学号:number; cout请输入数学成绩:math; cout请输入C+成绩:cpp; cout请输入英语成绩:english; fst
30、ream outfile,infile; /作一个文本文档在文件夹中用于显示所录入的数据 outfile.open(f1.txt,ios:out|ios: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 ch; whil
31、e(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指令错误!请重新输入!c; else chris1=1; while(chris1=0); while(c=y); /重复输入 break; case 2: /增加学生数据 char name20; int number; float math,cpp,english; cha
32、r c; 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 外语成绩:englishendl; outfile.close(); inf
33、ile.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, english); i+; cout数据录入成功,想继续录入吗(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); break; case 3:/删除学生信息 char c; string xingming,
34、line,str,name; do ifstream fin(f1.txt); fstream outfile(f2.txt,ios:trunc|ios:out); /作一个文本文档在文件夹中用于显示所录入的数据 cout请输入您要删除的学生的姓名:xingming; while(!fin.eof() ) getline(fin,line); istringstream stream(line); name = line.substr(0,line.find( ,0);/找到名字,判断是否相等 if(name != xingming) outfilelineendl; outfile.clos
35、e(); 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指令错误!请重新输入!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系统中没有输入数据,请先输入
36、数据!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); istringstream stream(line); sname = line.substr(0,line.find( ,0);if(name!=sname)outfilelineendl;else flag=1; fin.close(); if(flag=1) coutn
37、amenumacomeng;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()endl;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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 失业保险业务审计制度
- 学校财务室标牌规章制度
- 安全培训机构教育制度
- 安利公司绩效考核制度
- 实验员教育培训管理制度
- 审计中权责分离制度
- 审计会计制度
- 审计公司薪酬制度
- 审计协议制度
- 审计回访制度模板
- GB/T 12137-2025气瓶气密性试验方法
- 2025年四川省拟任县处级领导干部任职资格试题及参考答案
- 肺气肿课件教学课件
- 外研版七年级英语下Unit 1 The secrets of happiness 书面表达 (含范文)
- 中式美学鉴赏讲解课件
- 冷板液冷标准化及技术优化白皮书
- 基于人工智能的止痛设备智能优化研究-洞察阐释
- 公司电力工程部管理制度
- 土建类安全员(C2)习题库
- 智塑健康科技(嘉兴)有限公司年产2万套3D打印骨科融合器项目环评报告
- (一模)2025年广州市普通高中毕业班综合测试(一)物理试卷(含答案详解)
评论
0/150
提交评论