




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本科生课程设计课程名称C+课程设计课程编号x2-0学号学生姓名所在专业所在班级指导教师成绩教师签字2009年 月 日课程设计时间:2009年10月 10 日 至2008年11月 28日目录:(1)目的与要求(2)系统需求分析与功能设计(3)内容设计(4)功能介绍(5)实验总结附件:程序代码正文一、 目的与要求通过本课程设计的实践,全面总结C+课程学习中的的数据类型、程序结构、数组、函数、指针、结构体等基本概念,掌握其使用方法。掌握面向对象程序设计中有关类、对象、继承、重载、多态性、输入输出流类体系、文件操作的基本概念,初步学会用类与对象这种面向对象的程序设计方法编写应用程序。培养使用面向对象
2、的程序设计方法编写计算机程序的能力。通过设计一个学生成绩管理系统,进一步熟悉C+中类的概念、类的封装的实现方式。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。程序设计是一门实践性很强的课程,必须十分重视实践环节。许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。二、 系统需求分析与功能设计系统需求:学生管理系统要求利用C语言面向过程的编程思想来完成系统的设计,除了要突出C语言的函数特征,以多个函数实现每一个子功能外,还要画出功能模块图;另外,要求我
3、们进行简单界面设计,能够实现友好的交互,熟练掌握C语言对文件的各种操作。 功能设计:1. 学生基本信息及成绩所选科目成绩的录入。 2. 基本信息的查询与修改。 3. 对该班各科成绩进行分析(即求平均成绩); 4. 对所开课程的成绩分析(求最高分和及格人数); 三、 设计内容学生成绩管理系统 本学生成绩管理系统程序是一个具有对学生信息进行录入、添加、删除、根据学号进行学生信息的查询、显示已有学生信息的显示、对学生成绩进行统计(包括最高分,最低分,及格率和需要补考的学生),可以对已有的学生信息进行修改,保存和读取输入的数据等功能。一切功能都可以在运行的软件中运行。四、 系统功能介绍: 通过主函数显
4、示程序的主界面,通过输入的数字不同,函数会进入不同功能的函数继续运行。输入1时,进入学生资料管理的界面! 选择1-5数字选择各个不同的小功能。输入1时,进行学生资料的录入,输入2时,进行学生资料的删除输入3时,进行学生资料的添加输入4时,进行学生资料的修改输入5时,进行学生资料的读取输入0时,可以返回主界面回到主界面后,输入2时,进入学生成绩统计管理功能的界面可以输入0-8任意数字选择各个不同的小功能。输入1时,进行学生成绩总分排名输入2时,进行学生高数分数排名输入3时,进行学生英语分数排名输入4时,进行学生C+分数排名输入5时,显示学生最高总分 输入6时 显示学生最低总分输入7时,进行学生平
5、均分排名输入8时,进行及格率计算输入0时,可以返回主界面回到主界面后,输入3时,进入学生成绩统计管理功能的界面。可以输入0-3的任意数字,选择 各个不同的功能 输入1时,进行按学号查询学生资料的功能输入2时,进行按姓名查询学生资料的功能输入3时,进行按所在班级查询学生资料的功能输入0时,可以返回主界面回到主界面后,输入4时,进入关于系统信息的界面回到主界面后,输入0时,可以退出主界面,结束系统运行五、实验总结附件:(程序代码)#include #include /输入输出文件#include #include /输出格式控制using namespace std; char press;int
6、 choose;int n;class Studentpublic:int num; string name;int bj;char sex;float Math;float English;float Cjj;float sum;float average;Student stud100;/读取资料 void read() char filename20; cout从文件中读取信息!endl; cout请输入文件名:filename; ifstream infile(filename,ios:in|ios:out); /定义输入文件流对象,以输出方式打开用户自定义的磁盘文件 if(!infi
7、le) cerropen error!studi.sexstudi.bj; /从磁盘读取学生的信息 infilestudi.Mathstudi.Englishstudi.Cjj; cout学生的学号:studi.num /向显示器输出学生的信息姓名: 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math 大学英语成绩:studi.English C+成绩:studi.Cjjendl; i+;while(!infile.eof(); /判断是否为文件尾 infile.close();cout读取成功!endl;
8、/保存资料void save() int i;char filename20;for(i=0;in;i+) cout学生的学号:studi.num 姓名: 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math 大学英语成绩:studi.English C+成绩:studi.Cjjendl;cout将记录保存在文件夹!endl;coutfilename; ofstream outfile(filename); if(!outfile)cerropen error!endl; for(i=0;in;i+) outfile studi.num stud
9、 studi.sex studi.bj ; outfilestudi.Math studi.English studi.Cjj; outfile.close();cout保存成功!endl;/输入资料void SR() coutn;for(int a=0;an;a+)cout请输入第a+1个学生资料:endl;cout学号:studa.num;cout姓名:;cout性别:studa.sex;cout班级:studa.bj;cout高数成绩:studa.Math;cout大学英语成绩:studa.English;coutC+成绩:studa.Cjj;studa.
10、sum=studa.Math+studa.English+studa.Cjj;studa.average=(studa.Math+studa.English+studa.Cjj)/3;cout输入成功,学生资料是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/删除资料void SC() dostring SC_name;cout请输入你要删除的学生名字:SC_name;while(!=SC_name&in) i+; /查找判断if(=SC_name) f
11、or(int j=i;jn-1;j+)studi.num=studi+1.num; =studi+1.name; studi.sex=studi+1.sex; studi.bj=studi+1.bj; studi.Math=studi+1.Math; studi.English=studi+1.English; studi.Cjj=studi+1.Cjj;cout删除成功!endl;n=n-1;else if(i=n) coutcant find this nameendl;cout该信息不存在,无法删除!endl; cout(是否继续操作?(y/n)press;while
12、(press=y|press=Y) ;/添加资料void TJ() docout请添加新的学生信息endl;cout新的学生学号:studn.num;cout新学生姓名:;cout新学生性别:studn.sex;cout新学生班级:studn.bj;cout新学生的高数成绩:studn.Math;cout新学生的大学英语成绩:studn.English;cout新学生的C+成绩:studn.Cjj;studn.sum=studn.Math+studn.English+studn.Cjj;studn.average=(studn.Math+studn.English+stud
13、n.Cjj)/3;n+; cout(是否继续操作?(y/n)press;while(press=y|press=Y);cout添加成功,学生资料是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/修改资料void XG() begin:string find_name;int i;cout请输入你要修改的学生名字:find_name;for(i=0;in;i+)if(=find_name) has been found:endl; cout学生的学
14、号:studi.num 姓名: 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math 大学英语成绩:studi.English C+成绩:studi.Cjjendl;break; if(!=find_name) coutcant find this nameendl; cout请重新查找!endl;goto begin;for(int j=0;jn;j+)cout请输入新的信息:endl;cout学号:studj.num;cout姓名:;cout性别:studj.sex;cout班级:studj.bj;co
15、ut高数成绩:studj.Math;cout大学英语成绩:studj.English;coutC+成绩:studj.Cjj; studi.num=studj.num;=;studi.sex=studj.sex; studi.bj=studj.bj;studi.Math=studj.Math;studi.English=studj.English; studi.Cjj=studj.Cjj;break;cout修改成功,是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;b
16、reak;/按总分排名void zf() int m,t;string na;float z,h,e,c,p;char s;for(int j=0;jn-1;j+) /选择法排序for(int i=0;istudi+1.sum) m=studi.num; studi.num=studi+1.num; studi+1.num=m; na=; =studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi
17、+1.bj; studi+1.bj=t; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1
18、.average=p;cout学生按总分排名:endl;cout学号 姓名 性别 班级 总分endl;for(int i=0;in;i+)coutstudi.num studi.sex studi.bj studi.sumendl;coutendl;/按高数分数排名void gs() int g,t;float z,h,e,c,p;string na;char s;for(int j=0;jn-1;j+) for(int i=0;istudi+1.Math) g=studi.num; studi.num=studi+1.num; studi+1.num=g; na=stu
19、; =studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+
20、1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p; cout学生按高数分数排名:endl;cout学号 姓名 性别 班级 高数分数endl;for(int i=0;in;i+)coutstudi.num studi.sex studi.bj studi.Mathendl;coutendl; /按英语分数排名void yy()int g,t;floa
21、t z,h,e,c,p;string na;char s;for(int j=0;jn-1;j+) for(int i=0;istudi+1.English) g=studi.num; studi.num=studi+1.num; studi+1.num=g; na=; =studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.Math;
22、studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p;cout学生按英语分数排名:endl;cout学
23、号 姓名 性别 班级 英语分数endl;for(int i=0;in;i+)coutstudi.num studi.sex studi.bj studi.Englishendl;coutendl; /按C+分数排名void cy()int g,t;float z,h,e,c,p;string na;char s;for(int j=0;jn-1;j+) for(int i=0;istudi+1.Cjj) g=studi.num; studi.num=studi+1.num; studi+1.num=g; na=; =studi+1.
24、name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=stud
25、i.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p;cout学生按C+分数排名:endl;cout学号 姓名 性别 班级 C+分数endl;for(int i=0;in;i+)coutstudi.num studi.sex studi.bj studi.Cjjendl;coutendl;/计算最高总分void max_student() float max;max=stud0.sum;for(int j=
26、0;jmax)max=studj.sum;cout最高总分为:maxendl;/计算最低总分void min_student() float min;min=stud0.sum;for(int j=0;jn;j+)if(studj.summin)min=studj.sum;cout最低总分为:minendl;/按平均分排名void aver() float z,h,e,c,p;int m,b;string na;char s;for(int j=0;jn-1;j+) for(int i=0;istudi+1.average) m=studi.num; studi.num=studi+1.num
27、; studi+1.num=m; na=; =studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; b=studi.bj; studi.bj=studi+1.bj; studi+1.bj=b; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=stud
28、i.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p;cout学生按平均分排名:endl;cout学号 姓名 性别 班级 平均分endl;for(int k=0;kn;k+)coutstudk.num studk.sex studk.bj studk.averageendl;coutendl;/计算及格率v
29、oid jgl() int count1=0;int count2=0;int count3=0;float a,b,c;for(int i=0;i=60) count1+;a=(float)count1/(float)n)*100;for(int j=0;j=60) count2+;b=(float)count2/(float)n)*100;for(int k=0;k=60) count3+;c=(float)count3/(float)n)*100;coutsetiosflags(ios:fixed)三科成绩的及格率分别为:endl;coutsetprecision(2)a%, setpr
30、ecision(2)b%, setprecision(2)c%endl;/按学生学号查找资料void sn() doint find_num;cout请输入你要查询的学号:find_num;int i;for(i=0;in;i+)if(studi.num=find_num) cout学号为studi.num的学生的资料已找到:endl; cout学号:studi.num 姓名: 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math 大学英语成绩:studi.English C+成绩:studi.Cjjendl;break;if(studi.num
31、!=find_num) coutcant find this numendl;cout(是否继续操作?(y/n)press;while(press=y|press=Y) ;/按学生姓名查找资料void sm() dostring find_name;cout请输入你要查询的姓名:find_name;int i;for(i=0;in;i+)if(=find_name) / cout姓名为的学生的资料已找到endl; cout学号:studi.num 姓名: 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math
32、 大学英语成绩:studi.English C+成绩:studi.Cjjendl;break;if(!=find_name) coutcant find this nameendl;cout(是否继续操作?(y/n)press;while(press=y|press=Y) ;/按学生所在班级查找资料void bbj() doint find_bj;cout请输入你要查询的班级:find_bj;int i;for(i=0;in;i+)if(studi.bj=find_bj) cout所在班级为studi.bj的所有学生资料已找到:endl; cout学生的学号:studi.n
33、um 姓名: 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math 大学英语成绩:studi.English C+成绩:studi.Cjjendl;break;if(studi.bj!=find_bj) coutcant find this bjendl;cout(是否继续操作?(y/n)press;while(press=y|press=Y) ;/学生资料管理界面void Fire()while(choose!=0) coutttt*endl; coutttt*endl; coutttt* 学生资料管理 *endl; coutttt* *endl; coutttt* 1.录入学生资料 *endl; coutttt* 2.删除学生资料 *endl; coutttt* 3.添加学生资料 *endl; coutttt* 4.修改学生资料 *endl; coutttt* 5.读取学生资料 *endl; coutttt* 0.返回 *endl; coutttt* *endl; coutttt* 按Enter继续 *endl; coutttt*endl; coutttt*endl; couttt 请输入0-5之间的任意一数字:choose; sw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年并网电力设施检测合同协议
- 低空经济2025年「设备租赁」市场客户需求与偏好分析报告
- 2025湖北恩施州来凤县民族幼儿园第三方派遣人员招聘1人考试模拟试题及答案解析
- 2026四川大学华西口腔医院校园招聘考试参考题库及答案解析
- 2025年低空经济航空维修企业市场布局与战略调整报告
- 2026重庆华中科技大学同济医学院附属协和医院重庆医院应届医药技护岗位招聘考试参考试题及答案解析
- 2025年车路协同通信技术在智慧旅游领域的应用场景拓展与商业模式创新报告
- 2025年区块链技术应用合伙合同
- 2025年空调系统维护合同协议
- 2025年低空经济「绿色金融」无人机物流应用案例分析报告
- 学校食堂家长开放日活动上校长讲话:一起为孩子们的“舌尖安全”把好关
- 中西医结合治疗神经性疼痛的进展
- 园林高级工程师评审个人技术工作总结
- 《山西汾酒公司基于杜邦分析法的企业财务能力分析案例》15000字
- 乒乓球教案体育课件
- 《都市园艺》课程教学大纲
- 奢侈品鉴定知识培训课件
- 2024年03月福建中国工商银行福建分行春季校园招考笔试历年参考题库附带答案详解
- 商务星球版地理八年级下册全册教案
- iso28000-2022供应链安全管理手册程序文件表单一整套
- 金匮要略知到智慧树章节测试课后答案2024年秋浙江中医药大学
评论
0/150
提交评论