资源描述
课程设计任务书题目:c+十实现学生成绩统计管理系统课程设计任务书及成绩评定课程设计的任务和具体要求1、开设本课程的冃的是使学生通过小型软件的开发过程,进一步掌握面向对象的程 序设计方法,培养学生的创新能力和创新意识。2提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 3训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的 科学的工作方法和作风。指导教师签字:日期:指导教师评语成绩:指导教师签字:日期:课程设计所需软件、硬件等1、微型计算机2、WindOWS XP3、VC6.0课程设计进度计划起至日期工作内容2010年12 月 1 日-2010 年12月20日2010年12月 20 R-2010 年12月26 H收集资料?z编写程序I参考文献、资料索引序号y VV4z舖 0 (/编著者/ C CLC+十程序设计(第二版),谭浩强著,清华大学出版社31课程设计的目的12课程设计的要求13课程设计报告内容11 程序设计题目12 程序实现思路13 程序模块分析14 系统顶级用例图25 程序清单24总结3参考文献3附录3一、课程设计教学目的本课程设计是高级语言程序设计9+)课程的组成之一,也是它的继续和延伸。采用 研究型学习方法,完成一个管理类型的小型软件。开设本课程的目的是使学生通过小型软件的 开发过程,进一步掌握面向对象的程序设计方法,培养学生的创新能力和创新意识。二、课程设计的要求1了解并掌握面向对象程序设计方法,貝备初步的独立分析和设计能力; 2初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基木方法和技能; 3提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工 作方法和作风。5设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。 6编写出课程设计说明书。7.学生必须仔细阅读C+十语言程序设计课程设计方案,认真主动完成课设的要求。有问题 及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好 课设的时间计划,并在课程设过程中不断检测自己的计划完成情况。&课程设计前期安排学习C+十编程和面向对象的软件工程的有关知识,以自学和上机实验为 主。三课程设计报告内容1题目内容学生成绩统计管理系统2功能要求: 成绩的输入(学号、姓名、英语、数学、。+语言)。 成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数 及其所占比例)。 总成绩统计(学生的总成绩、平均成绩及成绩排名)。 成绩的统计结果显示。 学生数据的添加、修改、与删除。 学生数据的读取与存储。3程序实现思路(技术线路):先创建一个学生元素类,用于存放学生的各种数据。然后创建另一个类,把数据存储, 可便进行各种操作。木程序中比较核心的技术就是用到了堆排序,将学生按优先级(高的排 前面,低的排后面)的大小进行有序排列。堆排序的时间复杂度较一般排序(如:冒泡,选 择等)来得低,可使程序显示数据时效率更高。3程序模块分析:1)添加数据:把用户输入的数据添加到学生类对象数组屮,然后再将其入堆,使其有序。2)删除数据:由用户输入要删除的学生的学号,然后将其从学生类对象数组中删除,使数组中的数据仍然有序。3) 查找数据:由用户输入要查找的学生的学号,然后调用验0类中关于查找的函数,将查找结果显 示在屏幕上。4) 显示数据:调用8。类中关于显示数据的函数,把所有的学生数据都显示在屏幕上。5) 清除数据:调用1。0类中关于清除数据的函数,把所有的学牛数据都清空。6) 退出程序:若用户输入了数字0,则主函数结束循环,同时程序也就结束了。5程序清单:(见附录)四、总结通过做这个课程设计让我逐步学会了使用面向对象程序设计设计方法及思想来解决 实际问题,更深刻的理解FC+这种面向对象程序的设计语言。同时,通过查阅各类技术文 献、资料、手册解决了许多设计时遇到的难题,也使我提高了编写技术文献的能力。附录:.#include#include#include#include#define SmaX 200USing namespace std;CIaSS StUdentPublic: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(string5string5oat9float5float);/输入数据 VOid sshow();/输出数据 float sall();/ 求和 float save();/求平均VOid objrank();/成绩分类;VOid shows()/普通函数coutsetw(6)排 名 setw(6)n 学 号,setw(10)姓 名 setw(6)英语 setw(6)数学 setw(6),c+ setw(6) 总分 setw(lO) 平均分 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;rankO=(int)eng;rankl=(int)math;3rank2=(int)clang; for(int i=0;i3;i+) n=ranki/10; switch(n)CaSe 9:n=l;break;CaSe 8:n=2;break;CaSe 7:n=3;break;CaSe 6:n=4;break; default:n=5; rank 订=口;类StUdent结束类IeO开始CIaSS IeOprivate:StUdent itemSmax; int size;public:leo();VOid lsize(int);/设置数组大小VOid Iinit();/清 空VOid Iinsert();/添加!VOid Idelet(String);/删除VOid lsearch(string);查找VOid Ichan(String);/修改VOid Ipcent();/成绩分类VOid Irow();/排序VOid obave();/求平均VOid Iview();/显示全部数据VOid Icin();/从磁盘输出VOid Icout();/储存到磁盘 ;leo:leo() StUdent itemSmax;Isize(O);VOid leo:lsize(int i)size=i; VOid leo:linit() Isize(O);cout学生数据清除成功yendl;cout当前无学生数据。请添加.endl;VOid leo:ldelet(string a)int k=O;string c;for(int i=O;isize;i+)if(itemi.getn()=a)cout你将要删除的数据如下:,fendl;shows();itemi.sshow();coutc;if(c=ny,c=nY) itemi=item-size;k=l;if(k! = l)coutn 删除失败!endl;else coutn 删除成功! Smax)cout超出范围,不能再添加!endl;elsecoutn请输入学号,姓名,英语,数学,c+十成绩 ,a 1 a2b 1 b2b3;for(int i=O;isize;i+)if(item i. getn()=al)mn+;cout输入学号与下面的数据重复!endl;shows();/输出重复的学号,姓名,英语,数学,c+十成绩 itemi.sshow();if(!mn) itemsize+.sinto(al9a29b 1 ,b2,b3);coutn 添加成功!;couta;VOid leo:lsearch(string 玄)查找int N=O;for(int i=O;isize;i+)if(item i. getn()=a)N+;shows();/输出学号,姓名,英语,数学,c+itemi.sshow(); if(!N)cout输入有误或该学生数据不存在t,endl; 1 W W *fc yVOid leo:lchan(string 玄)修改 if(size=0)cout当前学生数据为空,请添加.nendl;elseint N=0;/ WC y、cCfor(int i=O;isize;i+)if(itemi.getn()=a)N+;cout你将要修改的数据如下:endl;shows();itemi.sshow();cout请输入要修改学生的学号,姓名,英语,数学,。+成绩“a 1 a2b 1 b2b3;itemi.sinto(al9a29bl5b25b3); cout修改成功!endl; if(!N)cout输入的学号有误!l)for(int i=O;isize-l;i+) temb=itemi;for(int j=i+l;jsize;j+) if(itemi.sall()itemj.sall() itemi=itemj;itemj=temb; item0.row=l;for(int i=O;iitemi+ l.sall()itemi+ l.row=i+2;else itemi+l.row=i+l;并列排名else if(size=l) item0.row=l;VOid leo:lview()/SzTif(size=0)cout当前学生数据为空,请添加.endl; else cout 共有学生数据” size 条” endlendl; shows();for(int i=O;isize;i+) itemi.sshow();IJ S、厂 Ncms QC y yy yy e Ct CZ C U L CZ CJVOid leo:obave()/统计科目 if(size!=O)float sum3 = 0;for(int i=O;isize;i+)sumO+=itemi.gete();sum l+=itemi.getm(); sum2+=itemi.getcl(); coutff英语平均的成绩为:”setiosflags(iosfixed)setprecision(l)sum0sizetn,; cout数学平均的成绩为 ,sumlsizetn,; coutc+Btl 平均成绩是 ,sum2sizetn,; coutsetiosflags(ios:fixed)setprecision(O)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+)item i.o bjrank();p0i=itemi.rank0;pli=itemi.rankl;p2i=itemi.rank2;for(int k=O;k3;k+) int b5=0;for(int i=O;isize;i+)switch(pki)CaSe 1: bO+;break;CaSe 2: bl+;break;CaSe 3: b2+;break;CaSe 4: b3+;break;CaSe 5: b4+;break; default:break; coutak成绩分类人数: 优 yb0vv人 良 yb 1 b2 nb3 R b4endl; coutsetiosflags(ios:fixed)setprecision( 1)ak成绩分类比例: 优 yWoat)b0*temv% 良 (float)bl*tem% 中(float)b2*tem% 及”(float)b3*tem% 不及 (float)b4*tem%endlendl; coutsetiosflags(ios:fixed)setprecision(0)endl;VOid leo:lcin() String a200,b200;float c2009d2009e200;int f200;ifstream infile(nok.txtH?ios:in);if(! infile) cerr文件打开失败。endl;for(int i=0;ifi; itemsize.sinto(ai,bi,ci,di?e i );size+;if(fi=l) break;infile.close();VOid leo:lcout()ofstream outfile(Hok.txt!ios:out);if(! OUtfiIe) cerr文件打开失败。yendl;for(int i=O;isize;i+)outfileitemi.num itemi.name itemi.eng itemi.math itemi.clangn size-iendl;outfile.close();VOid ShOWmenUOcoutcoutH5|endl;coutH5cout一学生成绩统计管理系统|endl;coutM,coutendl;cout9cout1显示:显示所有学生数据(按总分排序)endl;cout,,cout2查看:查看所有统计结果uendl;coutt 9cout3添加:插入一个学生数据uendl;coutH.9cout4删除:删除一个学生数据endl;cout5cout5查找:查找指定学生数据V endl;coutH.?cout6修改:修改指定学生数据endl;coutH.9cout7清空:清除所有学生数据,endl;coutH?cout8帮助:查看系统注意事项endl;cout“,11coutn cout0退出:将数据保存到磁盘M.,endl;coutendl;VOid ShOWtiPocoutntt操作完成endl;couttt选择08继续endl;int main()IeO IeO 1;String c=ns,a; system(cls);/清 屛 showmenu();cout正在打开文件,请稍后.endl;leol.lcin();coutc;while(c! = O)system(cls);showmenu();if(c= 1) cout你选择了 1,学生数据显示如下:endlendl; IeO 1.1 row();/排序IeO 1vicw();if(c=2) cout你选择了 2,统计结果如下:ycndl; IeO Lobave();/各科平均成绩, IeoLlpcent();/各科分类情况if(c=3n) cout你选择了 3 , IeO l.li nsert();请输出要删除的学号endl;if(c=4) couta;IeOl .ldelet(a);if(c=5) cout你选择了 5 ,请输出要查找的学号,a;IeO 1.1 search(a);if(c=6) cout你选择了 6,请输出要修改的学号,a;IeO 1.1 chan(a);if(c=7) cout你选择了 7,全部数据将要清空”endl; cout你确定清空吗?输入丫确定,口退出”a;if(a=,y,a=,Y) IeO l.linit(); if(c=8) coutl.本系统最多可以容纳200个学生数据.endl; cout2.选择相应的数字输入,不同数据间留空隔, 输完后按回车键.y endl;cout3.注意操作完后将数据保存. HcniS QCshowtip();cinc;system(nclsH);leo 1 .lcout();cout谢谢您的使用!endl;return 0;
展开阅读全文