




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1341 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(30分)分析系统的功能模块编程调试(30分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 设计内容:11.2 课程设计的要求:1第2章 系统实现思路22.1 系统分析:22.2 系统性能要求:22.3 系统功能分析:2第3章 系统详细设计33.1 界面设计33.2 学生的信息:33.3 数据的录入53.4删除学生信息63.5按总分查询错误!未定义书签。3.6按姓名查询73.7输出学生的数据93.8统计每个学生的平均成绩93.9统计各学科不及格人数93.10按总分排名93.11功能实现9第4章 系统调试运行104.1 系统运行与调试10课程设计体会13参考文献14第1章 系统设计目的1.1 设计内容:(1)设计四个类:学生类(描述学生基本信息);成绩类;班级类;课程类(描述课程信息:课程编号,科目名称);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入;(2)能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。-设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、平时成绩所占百分比-计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班级成绩单格式输出到文件)注意,至少一个班,30人三门课1.2 课程设计的要求:根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程序对给出的程序源代码要给出各部分的详细注释自己根据能力及需要添加相应功能模块,增强模拟系统功能。包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、逻辑结构设计,数据库中的表、视图(如果使用)、索引的结构和定义、触发器、存储过程、课程设计体会。第2章 系统实现思路2.1 系统分析:(1)能对学生各科成绩进行录入。(2)能对学生的成绩进行增加。(3)能对学生的成绩进行删除。(4)能对学生的成绩进行修改。(5)能对学生的成绩按姓名、班级进行查询。(6)能输出学生的所有数据。(7)能进行成绩统计。(8)能进行平均成绩排名2.2 系统性能要求:2.3 系统功能分析:资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览。系统查询:可以对学生的信息进行查询2.4系统功能模块图。第3章 系统详细设计3.1类的设计本系统有四个类,student类、Result类、Class类、Subject类,存储学生的个人信息、考试科目及成绩信息。有学生成绩信息录入、学生成绩信息修改、学生成绩信息显示、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。(1)student类:介绍学生的基本信息,至少包括学号StuNo,姓名StuName,性别sex,年龄age;class studentpublic:student()strcpy(StuName,0),strcpy(StuNo,0),strcpy(sex,0),age=0;/对对象初始化 void operator=(student &); private:char *StuName;char *StuNo;char *sex;int age;/建立学生类 void student:operator=(student &c) strcpy(this-StuName,c.StuName); this-age=c.age; strcpy(this-StuNo,c.StuNo); strcpy(this-sex,c.sex); /承载学生类=号 (2)学生的成绩信息:建立学生成绩记录类Results,该类是学生成绩记录的集合。包括学生的姓名,学号,课程名称及其成绩,总分,平均分其成员函数则是问题中总分及平均分,并把它放在头文件中进行封装,要求的改类具体如下, class Resultschar name30;int number;float math,cpp,english,average,sum;public:Results();Results(char n30,int num,float ma,float cp,float eng); float get_sum();float get_aver(); friend void main(); ; Results:Results ( char n30, int num,float ma,float cp,float eng ) strcpy(name,n); number=num; math=ma; cpp=cp; english=eng; float Results:get_sum() sum=cpp+english+math; return sum; float Results:get_aver() average=get_sum()/3; return average; (3)班级类(继承Results类):介绍学生所在班级class Class:public Resultsprivate:int numb;public:Class( char n30,int num, float ma, float cp, float eng ,int nu):numb(nu)void display() coutname30numbermathcppenglishendl; ;(4)课程类:3.2界面设计用户进入系统后,就会看到学生成绩管理系统的主菜单页面。 系统总共有10个模块,分别由1-10表示,输入其他字符无效, (2) 通过键盘输入数字110后,程序能够执行相应的功能,执行完后回到上述 主菜单继续等待用户输入,输入数字10后退出程序。 (3) 选择“增加学生成绩记录”后,输入要插入记录的位置。按程序提示依次 输入姓名,学号,成绩,插入记录成功。 (4) 选择“显示学生成绩记录”,显示学生成绩表中已有的学生记录的个数, 并显示出各个学生记录的相关信息。 (5) 选择“查找学生成绩记录”,按提示输入要查找的学生的姓名,则输出相应的学生信息记录,按相应操作返回主菜单。 (6) 选择“删除学生成绩记录”,按提示输入要删除的学生的姓名,则删除相应的学生记录,按相应操作返回主菜单。 (7)选择“按班级查询”则按提示操作可以的到相应班级的所有的学生成绩信息(以表格的形式输出)。(8)选择 “平均成绩”,则可根据现有的课程各分数的总和除以相应的科目数得到学生的平均成绩;(9) 选择“平均成绩排名”,程序会根据输入所保存的数据按平均成绩用循环排序的方法进行排序以得到从大到小的结果。 (10) 选择“退出学生成绩管理系统”,按任意键退出系统。 3.3 数据的录入录入 学生的姓名,学号,成绩,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(); infile.open(f1.txt,ios:in); if(!file) /判断文件是否打开 coutf1.txt can not open.n; return; 3.4删除学生信息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); 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指令错误!请重新输入!c; while(c=y); break; 3.5按姓名查询char n30;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)cout指令错误!请重新输入:c; while(c=y); break; 3.6按班级输出所有学生的数据 cout所有学生数据如下:endl; ifstream file; file.open(f1.txt,ios:in); coutfile.rdbuf(); file.close(); break; 3.7统计每个学生的平均成绩 if(i=0)cout系统中没有输入数据,请先输入数据!endl;break; for(int m=0; mi; m+) cout(*sm).name 学号:(*sm).number 总分:(*sm).get_sum() 均分:(*sm).get_aver()endl; break;3.8统计各学科不及格人数if(i=0) cout系统中没有输入数据,请先输入数据!endl;break;int m,n,k,j;m=0;n=0;k=0; for(j=0; jmathcppenglish60)k+; cout数学不及格人数为:mendl;coutc+不及格人数为:nendl;cout英语不及格人数为:kendl; break; 3.9按平均成绩排名3.10功能实现通过主窗体调用其他窗体,应用系统主控界面包括编辑和记录等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。第4章 系统调试运行4.1 (1)运行界面(2)录入数据(3)录入结果: (4)增加学生结果 (5)数据删除 (6)修改数据 (7)每次操作成功后均会出现: 依照操作要求即可4.2 调试结果说明 本文所阐述的学生成绩管理系统,具有对学生成绩信息的输入功能,但是输 入格式有所限制,比如学号的输入不可以超出所限制的范围,不然此系统就不予识别,调试无法再进行下去,而且学号不能相同,相同也会影响程序的调试。在输出班级成绩单的模块中,系统将成绩单保存到了文件夹中,方便进行查看,统计学生是否有不及格科目的过程,可以将学生的姓名学号成绩等都显示出来,非常方便查看。各功能模块在主菜单中都有选择序号,操作人员可以根据序号选择要进行的操作,退出的时候只要选择10,即可方便退出课程设计体会通过这次的C+程序的学生成绩管理系统作业,我又更深层次的了解了这门专业课,当老师布置完作业后,通过与同学的交流,自己的思考,网络资料的帮助,完成了这次的作业,虽然完成的有点小辛苦,但是心中却是欣喜和安慰; 这是一个综合性较强,很实际的一个编程实例。刚学C+时候,感觉类和对象还挺有意思的,刚接触到这个题目时,感觉只是应该问题不算太大吧,因为,我自认为一些基本知识点都已经掌握了。可是,真的当我动手编程的时候,才发现编写这个的过程真的比想象中更艰难。单个知识点是弄清了,但是,将所有的知识点综合起来运用时,就碰到了各种各样的问题了。有时候,一个错误得找好久才能发现。 本系统的重点就是要会建立四个类。一个是学生类student,用来存放一个学生的基本信息,相当于一个结构体的功能吧。一个类是学生成绩记录系统类Results,该类用来存放多个学生的成绩记录,并将此类加以封装;再一个就是班级类Class,记录学生的所在班级信息;最后一个是课程类subject,记录学生的课程名称、课程编号;这几个类之间存在继承与派生关系,同时也用到了友元函数。总的来说,添加,显示,查找,这三个功能比较容易,但是,删除,保存,加载这三个功能就需要花点心思了,可能是平时用的比较少吧,生疏了。可见只有通过平时多加练习,才能有助于自己巩固知识点。 最后想说的是,通过这个实验的练习,我也学到了很多东西,特别是加深了对类和对象理解和应用方面,我认为应该对程序的设计要有一个比较明确的认识,然后分析系统的作用功能与设计系统,最终通过代码的设计与调试,完成系统,调试程序真的很关键。调试程序需要较大的耐心。可能调试程序的时间比自己编写整个程序的时间还要长,下的工夫还要深,但这是一个程序员必须了解,也必须接受的事实。有好几次,几个错误让我很是头疼啊,很想删了,重新来过,可是最后发现,还是得有耐心去调试程序。这次的作业对我一个初学c+的学生来说 还是比较难得,但是我对c+有浓厚的兴趣,所以编程过程中并没有过多的烦恼,根据c+所学的概念、理论和方法,进一步加深对c+语言的理解和掌握。在c+编程中,需要的是不断改进,才能提高自己的能力。参考文献1 C+程序设计教程(第二版),罗建军等编著,高等教育出版社2陈国君等.Java程序设计基础(第二版).清华大学出版社3Deitel.Java大学基础教程(第六版).电子工业出版社4谭浩强.C+面向对象程序设计.清华大学出版社5/view/90721a1afc4ffe473368ab1a.html/main.cpp#include #includechengji.h#include#include#includeusing namespace std;class Class:public Resultsprivate:int numb;public:Class( char n30,int num, float ma, float cp, float eng ,int nu):numb(nu)friend Results;void display() coutname30numbermathcppenglishStuName,c.StuName); this-age=c.age; strcpy(this-StuNo,c.StuNo); strcpy(this-sex,c.sex); /承载学生类=号 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成绩统计:endl; cout(7)每个学生的平均成绩endl; cout(8)各科不及格人数endl; cout排名:endl; cout(9)按平均成绩排名endl; cout(10)退出endl; cout选择相关操作请输入相对的括号里的阿拉伯数字及字母!p; if(p=1&p=11) chris1=1; else cout指令错误!请重新输入:endl; while(chris1=0); do switch(p) case 1: /数据的录入 char c; /用于在小项中选择是否继续操作 char name30; int 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 外语成绩: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 Results(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 name30; 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: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 Results(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,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.close(); fin.close(); fstream f(f1.txt,ios:trunc|ios:out); ifstream outf(f2.txt); foutf.rdbuf();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东广州市增城区教育局“粤聚英才粤见未来”招聘广州增城外国语实验中学教师10人模拟试卷附答案详解(典型题)
- 2025广东云浮市新兴县“粤聚英才粤见未来”招聘教育人才11人(广西师范大学专场)模拟试卷及参考答案详解一套
- 2025贵州黔东南州剑河县农村集体经济组织选聘职业经理人(总经理)模拟试卷及答案详解(名校卷)
- 2025贵州安顺市社会科学界联合会招聘公益性岗位人员考前自测高频考点模拟试题及答案详解一套
- 2025劳动合同续签申请书
- 2025农商行个人消费贷款合同
- 2025福建厦门市集美区英村(兑山)幼儿园非在编教职工招聘4人考前自测高频考点模拟试题附答案详解(完整版)
- 2025年个体技术股权转让合同
- 2025贵州省妇幼保健院第十三届贵州人才博览会引才模拟试卷及一套完整答案详解
- 2025呼伦贝尔扎兰屯市社会福利中心护理员招聘考前自测高频考点模拟试题附答案详解(典型题)
- 住房供给调控预案
- 培训行业转介绍
- 文科物理(兰州大学)学习通网课章节测试答案
- 人教版高二数学(上)选择性必修第一册1.2空间向量基本定理【教学设计】
- catia考试图纸题目及答案
- pos机风险管理办法
- 2025年行业机器人边缘计算技术应用与场景分析
- 2025年安徽省公务员录用考试《行测》真题及答案
- 2025年加油站行业需求分析及创新策略研究报告
- 2025中国工业传感器行业市场白皮书
- 手机桌面市场深度解析
评论
0/150
提交评论