




免费预览已结束,剩余10页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计任务书 题目: C+实现学生成绩统计管理系统 学 号 姓 名 专 业 计算机科学与技术 课 程 C+ 指导教师 职称 讲师 完成时间:20 年 月-20 年 月枣庄学院计算机科学系制2课程设计任务书及成绩评定课程设计的任务和具体要求1、开设本课程的目的是使学生通过小型软件的开发过程,进一步掌握面向对象的程序设计方法,培养学生的创新能力和创新意识。2.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;3.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。指导教师签字: 日期: 指导教师评语成绩: 指导教师签字: 日期: 课程设计所需软件、硬件等1、微型计算机2、Windows xp 3、VC6.0课程设计进度计划起至日期工作内容备注2010年12月1日-2010年12月20日2010年12月20日-2010年12月26日收集资料编写程序参考文献、资料索引序号文献、资料名称编著者出版单位C+程序设计(第二版),谭浩强著,清华大学出版社目 录1 课程设计的目的12 课程设计的要求13 课程设计报告内容1 1 程序设计题目12 程序实现思路13程序模块分析14系统顶级用例图25程序清单24 总结3参考文献 3附录 3I一、课程设计教学目的本课程设计是高级语言程序设计(C+)课程的组成之一,也是它的继续和延伸。采用研究型学习方法,完成一个管理类型的小型软件。开设本课程的目的是使学生通过小型软件的开发过程,进一步掌握面向对象的程序设计方法,培养学生的创新能力和创新意识。二、课程设计的要求1.了解并掌握面向对象程序设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。5.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。6.编写出课程设计说明书。7.学生必须仔细阅读C+语言程序设计课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课程设过程中不断检测自己的计划完成情况。8.课程设计前期安排学习C+编程和面向对象的软件工程的有关知识,以自学和上机实验为主。三.课程设计报告内容1题目内容学生成绩统计管理系统2功能要求:成绩的输入(学号、姓名、英语、数学、C+语言)。成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例)。总成绩统计(学生的总成绩、平均成绩及成绩排名)。成绩的统计结果显示。学生数据的添加、修改、与删除。学生数据的读取与存储。3程序实现思路(技术线路):先创建一个学生元素类,用于存放学生的各种数据。然后创建另一个类,把数据存储,可便进行各种操作。本程序中比较核心的技术就是用到了堆排序,将学生按优先级(高的排前面,低的排后面)的大小进行有序排列。堆排序的时间复杂度较一般排序(如:冒泡,选择等)来得低,可使程序显示数据时效率更高。3程序模块分析:1)添加数据:把用户输入的数据添加到学生类对象数组中,然后再将其入堆,使其有序。2)删除数据:由用户输入要删除的学生的学号,然后将其从学生类对象数组中删除,使数组中的数据仍然有序。3)查找数据:由用户输入要查找的学生的学号,然后调用leo类中关于查找的函数,将查找结果显示在屏幕上。4)显示数据:调用leo类中关于显示数据的函数,把所有的学生数据都显示在屏幕上。5)清除数据:调用leo类中关于清除数据的函数,把所有的学生数据都清空。6)退出程序:若用户输入了数字0,则主函数结束循环,同时程序也就结束了。5程序清单:(见附录)四、总结通过做这个课程设计让我逐步学会了使用面向对象程序设计设计方法及思想来解决实际问题,更深刻的理解了C+这种面向对象程序的设计语言。同时,通过查阅各类技术文献、资料、手册解决了许多设计时遇到的难题,也使我提高了编写技术文献的能力。附录:#include#include#include#include#define Smax 200using namespace std;class student Public:string num;string name;float eng;float math;float clang;/定义c+ float gete()return eng; float getm()return math; float getcl()return clang; string getn()return num; string getna()return name; int rank3; int row;/排名 int sinto(string,string,float,float,float);/输入数据 void sshow();/输出数据 float sall();/ 求和 float save();/求平均 void objrank();/成绩分类 ; void shows()/普通函数 coutsetw(6)排名setw(6)学号setw(10)姓名 setw(6)英语setw(6)数学setw(6)c+ setw(6)总分setw(10)平均分endl; int student:sinto(string a1,string a2,float b1,float b2,float b3 )num=a1;name=a2; eng=b1;math=b2;clang=b3; return 0;void student:sshow()/输出 coutsetw(6)rowsetw(6)numsetw(10)namesetw(6) engsetw(6)mathsetw(6)clangsetw(6)sall() setw(10)setiosflags(ios:fixed)setprecision(1)save()endl; coutsetiosflags(ios:fixed)setprecision(0);float student:sall()/求总分 return eng+math+clang;float student:save()/求平均分return sall()/3;void student:objrank() int n;rank0=(int)eng;rank1=(int)math;rank2=(int)clang;for(int i=0;i3;i+) n=ranki/10; switch(n) case 9:n=1;break; case 8:n=2;break; case 7:n=3;break; case 6:n=4;break; default:n=5; ranki=n;/类student结束/类leo开始class leoprivate:student itemSmax;int size;public:leo();void lsize(int);/设置数组大小void linit();/清空void linsert();/添加void ldelet(string);/删除void lsearch(string);/查找void lchan(string);/修改void lpcent();/成绩分类void lrow();/排序 void obave();/求平均void lview();/显示全部数据void lcin();/从磁盘输出void lcout();/储存到磁盘;leo:leo() student itemSmax; lsize(0); void leo:lsize(int i)size=i;void leo:linit() lsize(0); cout学生数据清除成功endl; cout当前无学生数据。请添加.endl;void leo:ldelet(string a) int k=0;string c; for(int i=0;isize;i+)if(itemi.getn()=a)cout你将要删除的数据如下:endl;shows();itemi.sshow(); coutc;if(c=y|c=Y) itemi=item-size;k=1; if(k!=1)coutn删除失败!endl;else coutn删除成功!Smax)cout超出范围,不能再添加!endl; else coutn请输入学号,姓名,英语,数学,c+成绩:a1a2b1b2b3;for(int i=0;isize;i+) if(itemi.getn()=a1) mn+; cout输入学号与下面的数据重复!endl; shows();/输出重复的学号,姓名,英语,数学,c+成绩 itemi.sshow(); if(!mn) itemsize+.sinto(a1,a2,b1,b2,b3); coutn添加成功!;couta;void leo:lsearch(string a)/查找int N=0;for(int i=0;isize;i+)if(itemi.getn()=a)N+;shows();/输出学号,姓名,英语,数学,c+itemi.sshow();if(!N)cout输入有误或该学生数据不存在endl;void leo:lchan(string a)/修改 if(size=0)cout当前学生数据为空,请添加.endl;else int N=0;for(int i=0;isize;i+)if(itemi.getn()=a) N+;cout你将要修改的数据如下:endl;shows();itemi.sshow(); cout请输入要修改学生的学号,姓名,英语,数学,c+成绩a1a2b1b2b3; itemi.sinto(a1,a2,b1,b2,b3); cout修改成功!endl;if(!N)cout输入的学号有误!1) for(int i=0;isize-1;i+)temb=itemi; for(int j=i+1;jsize;j+)if(itemi.sall()itemj.sall() itemi=itemj;itemj=temb; item0.row=1;for(int i=0;iitemi+1.sall() itemi+1.row=i+2; else itemi+1.row=i+1;/并列排名 else if(size=1) item0.row=1; void leo:lview()/显示if(size=0)cout当前学生数据为空,请添加.endl; else cout共有学生数据size条endlendl; shows(); for(int i=0;isize;i+) itemi.sshow(); void leo:obave()/统计科目 if(size!=0) float sum3=0;for(int i=0;isize;i+)sum0+=itemi.gete(); sum1+=itemi.getm(); sum2+=itemi.getcl();cout英语平均的成绩为:setiosflags(ios:fixed)setprecision(1)sum0/sizen;cout数学平均的成绩为:sum1/sizen;coutc+的平均成绩是:sum2/sizen; coutsetiosflags(ios:fixed)setprecision(0)endl;else cout当前无学生数据,请添加.; void leo:lpcent()/成绩分类 int p3200;float tem=100.0/size;string a3=英语,数学,c+;if(size!=0) for(int i=0;isize;i+) itemi.objrank();p0i=itemi.rank0;p1i=itemi.rank1;p2i=itemi.rank2;for(int k=0;k3;k+) int b5=0; for(int i=0;isize;i+) switch(pki) case 1: b0+;break;case 2: b1+;break;case 3: b2+;break;case 4: b3+;break; case 5: b4+;break; default:break; coutak成绩分类人数: 优b0人 良b1人 中b2人 及b3人 不及b4人endl;coutsetiosflags(ios:fixed)setprecision(1) ak成绩分类比例: 优(float)b0*tem% 良(float)b1*tem% 中(float)b2*tem% 及(float)b3*tem% 不及(float)b4*tem%endlendl; coutsetiosflags(ios:fixed)setprecision(0)endl; void leo:lcin() string a200,b200;float c200,d200,e200;int f200;ifstream infile(ok.txt,ios:in);if(! infile) cerr文件打开失败。endl;for(int i=0;iaibicidieifi; itemsize.sinto(ai,bi,ci,di,ei);size+;if(fi=1) break; infile.close();void leo:lcout()ofstream outfile(ok.txt,ios:out);if(! outfile) cerr文件打开失败。endl;for(int i=0;isize;i+)outfileitemi.num itemi.eng itemi.math itemi.clang size-iendl; outfile.close();void showmenu()cout ;cout|-|endl;cout ;cout|-学生成绩统计管理系统-|endl;cout ;cout|-|endl;cout ;cout| 1.显示:显示所有学生数据(按总分排序)|endl;cout ;cout| 2.查看:查看所有统计结果 |endl;cout ;cout| 3.添加:插入一个学生数据 |endl;cout ;cout| 4.删除:删除一个学生数据 |endl;cout ;cout| 5.查找: 查找指定学生数据 |endl;cout ;cout| 6.修改:修改指定学生数据 |endl;cout ;cout| 7.清空:清除所有学生数据 |endl;cout ;cout| 8.帮助:查看系统注意事项 |endl;cout ;cout| 0.退出:将数据保存到磁盘 |endl;cout ;cout|-|endl;void showtip() coutnt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省普通高中2024-2025学年高一下学期7月期末联考试题 英语 PDF版含解析
- 2025四川高速公路建设开发集团有限公司管理岗位夏季毕业生招聘39人考试模拟试题及答案解析
- 音乐系学生毕业论文
- 朝鲜语专业毕业论文查重
- 衡水法律系毕业论文写作
- 中小学羽毛球检查考核学生对羽毛球基本技术掌握能力教案
- 关于服装毕业论文
- 八年级思想品德下册《热爱集体融入社会》的复习教案
- 2025广东清远市佛冈县城市管理和综合执法局招聘单位自聘人员6人笔试参考题库附答案解析
- 2025年访客住宿质量保证合同
- 2025年春季学期1530学生安全教育记录表
- 《椅旁CADCAM全瓷修复技术指南》
- 电网数字化项目工作量度量规范应用指南(2020版)
- 如何提高医药行业客户服务水平与满意度
- 课件中华民族共同体概论课件专家版8第八讲 共奉中国与中华民族内聚发展
- 无人售货机的食品安全管理制度
- 鼻饲肠内营养腹泻的护理
- 高压氧舱培训
- 中餐分餐课件教学课件
- 2023年北京邮电大学招聘笔试真题
- xx公路与天然气管道交叉方案安全专项评价报告
评论
0/150
提交评论