已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1341班 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1熟悉、掌握C+语言基本知识11.2培养使用计算机解决实际问题的能力11.3提高学生成绩管理效率1第2章 系统实现思路22.1功能分析22.2 设计思想22.3系统功能模块3第3章 系统详细设计43.1 主要流程图43.2构造学生信息结构体储存学生信息43.3系统功能函数类的设计53.4主函数设计12第4章 系统调试运行154.1 程序调试界面15参考文献18附 录19第1章 系统设计目的1.1熟悉、掌握C+语言基本知识 全面熟悉、掌握C+语言基本知识,掌握程序设计中的顺序、分支、循环三种结构及数组、函数等方法。1.2培养使用计算机解决实际问题的能力 把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后的专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。1.3提高学生成绩管理效率作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例如,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发学生成绩管理系统很有必要。第2章 系统实现思路2.1功能分析(1)增加学生记录(2)查询学生记录(3)修改学生记录(4)学生记录排序(5)统计信息(6)打开文件(7)保存记录(8)显示记录(9)退出系统2.2 设计思想这里提供一种综合解决方案,使其更加接近使用程序。设计一个菜单,通过菜单选择功能实现相应的操作。设计思想如下:(1) 系统以菜单方式工作;(2) 学生成绩录入功能;(3) 学生成绩查询功能;(4) 学生成绩修改功能;(5) 添加新的学生功能;(6) 学生成绩注销功能;(7) 学生成绩排名功能;(8) 分析系统中的各个实体之间的关系及其属性和行为;(9) 根据功能描述,设计系统的类层次;(10) 完成类层次中各个类的描述(包括属性和方法);(11) 完成类中各个成员函数的定义;(12) 完成系统的应用模块;(13) 功能调试;2.3系统功能模块此次设计的系统的主要功能就是对各个学生的各个学科成绩进行录入、修改、删除以及求平均分、求总分等操作。在班级为单位的操作中,可以查询学生在班级的排名,以及班级的各个学科的不及格人数、以便对教学质量的评估。故系统模块包括。1. 主程序模块 本程序各个模块功能均用函数实现,主程序主要用来实现数据的初始化,定义变量,调用函数等,实现对程序的整体控制。2信息录入模块 录入学生的成绩信息。3信息查询模块 输入学号,姓名,查询学生哥们课程的成绩及总成绩。4信息删除模块 通过学号直接删除该学生的成绩信息。5信息修改模块 修改学生成绩信息。6信息排序模块 根据成绩高低排序。第3章 系统详细设计3.1 主要流程图程序应有其各个流程的步骤,简化为图的模式更加清晰,明了。更有利于理解系统的设计过程。图3-1程序流程图3.2构造学生信息结构体储存学生信息 学生信息包括:姓名,学号,数学,英语,数学,物理,总分,平均分等信息。构造代码如下:struct student /声明一个名为student的结构体类型 string name; /姓名 string number; /学号 double maths; /数学 double english; /英语 double physical; /物理 double average; /均分;3.3系统功能函数类的设计把该系统要实现的功能封装在此类中,方便增加和修改。在本系统中设计了四个函数分别实现学生成绩的录入,查询,输出,修改,删除,求总分和平均分。其代码如下:class SYSTEM /声明类systempublic: SYSTEM()n=0; /构造函数 void add();/添加 void show();/显示 void search();/查询 void change();/修改 void delet();/删除 void sort();/排序 void Max();/最高分 void Min();/最低分 private: Student stu1000;/定义一个结构体类型student的变量stu int n; ;各功能函数代码如下:(1) 学生信息输入函数add()void SYSTEM:add()/添加 cout学号:endl; cinstun.number;cout姓名:endl; ; cout数学:endl; cinstun.maths; cout英语:endl; cinstun.english; cout物理:endl; cinstun.physical; stun.total= stun.maths+ stun.english+ stun.physical; stun.average=stun.total/3 n+;/学生人数增加一个 (2)学生成绩查询函数search() void SYSTEM:search()/查询 cout请选择查询方式:endl; cout1.按学号查询endl; cout2.按姓名查询endl;int c,i;cinc;switch (c)case 1:/按照学号查询string num;cout请输入要查询的学号:endl; cinnum;for(i=0;in;i+) if(stui.number=num) cout学号 姓名 数学 英语 物理 总分 平均分endl; coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl; break;if(stui.number!=num) cout未找到该学生信息!endl; break;case 2:/按照学号查询string name1; cout请输入要查询的姓名:endl;cinname1; for(i=0;in;i+) if(=name1) cout学号 姓名 数学 英语 物理 总分 平均分endl;coutstui.number stui.maths stui.english stui.physical stui.total stui.averageendl; break;(3)学生成绩输出函数show()void SYSTEM:show()/输出 cout学号 姓名 数学 英语 物理 总分 平均分endl; for(int i=0;in;i+) coutstui.number stui.maths stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl; void SYSTEM:change() /修改 string num; int i; cout请输入要修改的学生学号:endl;cinnum; for(i=0;in;i+) if(stui.number=num) cout该学号的学生信息如下:endl; cout学号 姓名 数学 英语 物理 总分 平均分endl; coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl; cout请输入新的学生信息:endl;cout学号:endl; cinstui.number; stun.number=stui.number; cout姓名:endl; ; =; cout数学:endl; cinstui.maths; stun.maths =stui.maths; cout英语:endl; cinstui.english;cout物理:endl;cinstui.physical;stun.physical=stui.physical;stui.total= stui.maths+ stui.english+stui.physical;stui.average=stui.total/4; breakif(stui.number!=num) cout无此学生信息!endl; void SYSTEM:delet() /删除 string num; cout请输入要删除学生的学号,然后按回车确认:endl; cinnum; for(int i=0;in;i+) if(stui.number=num) for(int j=i;jn-1;j+) stuj=stuj+1;/用后一个学生信息覆盖前一个学生信息n-; /学生人数减少一个 cout已成功删除该学生信息!endl;break;(4)排序函数sort()void SYSTEM:sort() /排序 cout请选择排序方式:endl; cout1.按学生总分排序endl; cout2.按学生平均分排序endl; cout3.返回endl; int k; cink; switch (k) case 1:/按学生总分排序 Student p; for(int i=0;in;i+) for(int j=0;jn-i;j+) if(stuj.totalstuj+1.total) p=stuj; stuj=stuj+1; stuj+1=p; cout学号 姓名 数学 英语 物理 总分endl; for(int m=0;mn;m+) coutstum.number stum.maths stum.english stu m.physical stum.totalendl; break; case 2:/按学生平均分排序 Student p;/定义一个Student类型的变量p for(int i=0;in;i+) for(int j=0;jn-i;j+) if(stuj.averagestuj+1.average) p=stuj; stuj=stuj+1; stuj+1=p; cout学号 姓名 数学 英语 物理 平均分endl; for(int m=0;mn;m+) coutstum.number stum.maths stum.english stum.physical stum.averageendl; break; case 3:return;/返回 3.4主函数设计先用循坏语句实现不断重复,通过多重选择语句调用功能函数类中的相应函数实现学生成绩管理系统的各项功能需求。其代码如下: void main() SYSTEM person; int b; do cout*endl; cout 1.输入学生成绩 5.删除学生成绩endl; cout 2.查询学生成绩 6.学生成绩排序endl; cout 3.输出学生成绩endl;cout 4.修改学生成绩endl;cout 0.退出学生成绩管理系统endl; cout*endl; cout请请根据你的需要选择(08):; cinb; switch(b) case 1: cout请依次输入该学生的相关信息:endl; person.add(); break; case 2: person.search(); break; case 3: person.show(); case 4: person.change(); break; case 5: person.delet(); break; case 6: person.sort(); case 0: cout谢谢使用本系统!endl; while(b10) 第4章 系统调试运行4.1 程序调试界面系统登录界面样式图4-1系统登录界面图4-2 学生登录界面图4-3增加学生界面 课程设计体会通过这次大作业的练习,让我明白要设计好一个程序需要有耐心和细心,在程序编写和调试过程中常常会出现错误,这时我要保持冷静不烦躁的心态,不断修改和完善程序。另外,也让我认清了自己的编程能力,我现在基本还是什么都不会,还没能理解面对对象程序设计的思想,只是懂一点点C+语法而已。所以,我还得加强学习和练习,踏踏实实提高我的程序设计能力。参考文献1谭浩强. C+面向对象程序设计 (第二版).清华大学出版社2谭浩强. C+面向对象程序设计题解与上机指导.清华大学出版社3朱福喜.Java语言程序设计(第二版).科学出版社4陈国君等.Java程序设计基础(第二版).清华大学出版社5Deitel.Java大学基础教程(第六版).电子工业出版社6Y.DanielLiang.Java语言程序设计基础篇(第六版).机械工业出版社 附 录#includeiostream #includestring #includefstream#includesstream#includeiomanipusing 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, 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; 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成绩统计:endl; cout(8)每个学生的平均成绩endl; cout(9)各科不及格人数endl; cout排名:endl; cout(10)按总分查询排名endl; cout(11)退出endl; cout选择相关操作请输入相对的括号里的阿拉伯数字及字母!endl; int p=0; /全局变量,用于选择菜单时的输入 char w;/全局变量,用于在大项中选择是否继续操作 Tstu *s100; /类定义的指针将所录入的数据按类中的形式分别存储 ofstream *file100; int i=0; /全局变量,用于做每个录入数据的下标 int j=0; int chris1=0; /用于判断dowhile语句 do /判断输入是否正确 cinp; if(p=1p=11) 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请输入姓名:endl; cinname; cout请输入学号:endl; cinnumber; cout请输入数学成绩:endl; cinmath; cout请输入C+成绩:endl; cincpp; cout请输入英语成绩:endl; cinenglish; 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 Tstu(name, number,math, cpp, english); i+; cout数据录入成功,想继续录入吗(y/n)endl; cinc; chris1=0; do if(c!=yc!=n) cout指令错误!请重新输入!endl; cinc; else chris1=1; while(chris1=0); while(c=y); /重复输入 break; case 2: /增加学生数据 char name20; int number; float math,cpp,english; char c; do cout请输入您要增加的学生的姓名:endl; cinname; cout请输入你要增加的学生的学号:endl; cinnumber; cout请输入数学成绩:endl; cinmath; cout请输入C+成绩:endl; cincpp; cout请输入英语成绩:endl; cinenglish; 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 Tstu(name,number, math, cpp, english); i+; cout数据录入成功,想继续录入吗(y/n)endl; cinc; if(c!=yc!=n) cout指令错误!请重新输入!endl; cinc; 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请输入您要删除的学生的姓名:endl; cinxingming; 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)endl; cinc; if(c!=yc!=n) cout指令错误!请重新输入!endl; cinc; 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; cout请输入您要修改的学生的姓名:; cinname; 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) cout请输入修改学生姓名及其新学号,数学,c+和英语成绩:;cinnamenumacomeng;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; cout想继续修改吗(y/n):; cinc; coutendl; if(c!=yc!=n) cout 指令错误!请重新输入!endl ;cinc; 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请输入您要查询的学生的总成绩:endl; cinSUM; for(int j=0;ji;j+) if(sj-getsum()=SUM) flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息为:endl;cout 学号:(*sj).number 数学分数:(*sj).math c+分数:(*sj).cpp 英语分数(*sj).englishendl; if(flag=0)cout对不起!您要查询的学生不存在!endl;cout是否继续查?(y/n):;cinc;if(c!=yc!=n)cout指令错误!请重新输入!endl; cinc; ; 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请输入要查询的名字: endl; cinn; 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;cout您想继续查询吗?(y/n):;cinc;if(c!=yc!=n)cout指令错误!请重新输入:endl;cinc; while(c=y); break; case 7:/输出所有学生数据 cout所有学生数据如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油漆材料买卖合同范本
- 淘宝运营员工合同范本
- 玻璃采购硅砂合同范本
- 焦煤港口平仓合同范本
- 瓷砖美缝工程合同范本
- 黑龙江建筑职业技术学院学生寝室楼脚手架施工方案试卷教案(2025-2026学年)
- 七年级数学下册第四章三角形教案新版北师大版(2025-2026学年)
- 儿童常用呼吸道疾病雾化吸入治疗专家共识教案(2025-2026学年)
- 闽教版六下英语Myvillage公开课教案知识点梳理(2025-2026学年)
- 高中英语第二单元阅读Languagepoints牛津版必修教案(2025-2026学年)
- 2025年陕西省水务集团有限公司招聘笔试参考题库含答案解析
- 上海市某中学2024-2025学年七年级数学上学期期中检测试卷(含答案)
- 【MOOC】航天、人文与艺术-南京航空航天大学 中国大学慕课MOOC答案
- 2024年初级招标采购从业人员《招标采购专业实务》考前必刷必练题库600题(含真题、必会题)
- 英语口语直通车(浙江理工大学)知到智慧树章节答案
- 部编版四年级上册语文全册分课时看拼音写词语(含参考答案)
- 车位租赁合同协议书模板5篇
- CJT156-2001 沟槽式管接头
- 【盒马鲜生冷供应链物流成本现状、问题及优化建议探析11000字(论文)】
- 硫酸镁:产科临床的安全应用
- 挤压缺陷鉴别与原因分析及改善措施培训教材
评论
0/150
提交评论