已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*实践教学*兰州理工大学计算机与通信学院2011年秋季学期 面向对象 课程设计题 目:高校学生综合测评管理系统的设计与实现 专业班级: 10级计算机科学与技术4班 姓 名: 李应辉 学 号: 10240411 指导教师: 朱红蕾 成绩: 目录摘 要- 1 -一、C+的介绍和应用:- 1 -二、高校学生综合测评管理系统与C+的联系:- 1 -三、 系统实现方案:- 2 -绪 论- 3 -第一章 系统程序设计思路- 4 -1、系统功能设计:- 4 -2、类设计:- 5 -3、输入输出的设计:- 5 -4、选择菜单设计:- 6 -第二章 程序的运行结果- 7 -总结和体会- 15 -总结自己的不足:- 15 -体会:- 15 -参考文献- 16 -摘 要计算机飞速发展的今天,计算机的应用已在社会的各个领域深入开来,无论是在商业,工业还是政府部门都早已普及,如今就连教育行业也把计算机应用到各个方面的工作中,本次c+课设就是把计算机应用到学校学生信息管理中的范例。一、C+的介绍和应用:C+语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C+以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C+完美地体现了面向对象的各种特性。 随着若干独立开发的C+实现产品的出现和广泛应用,正式的C+标准化工作在1990年启动。1998年正式发布了C+语言的国际标准C+,1998,对于要解决实际问题的程序员而言,C+使程序设计变得更有乐趣。C+是一门通用目的的程序设计语言,它: 1.是一个更好的C; 2. 支持数据抽象;3. 3.支持面向对象程序设计; 4.支持范型程序设计。对范型程序设计的支持在C+设计的后期才被作为一个明确、独立的目标来实现。而C+一直被应用于应用软件和系统软件的行列中,其中本系统的研发就是一个案例;正式这样,程序员一直把范型程序设计以及支持它的语言特性划归在“数据抽象”的大标题之下。二、学生综合测评管理系统与C+的联系: 首先,我们了解学生综合测评管理系统都以学生为中心展开的,而对于学生的各种数据包含他的姓名、学号、性别、名族以及各科综合测评等,如果只是面向过程编程这样就不利于数据的调用,那么数据与数据之间也会产生混乱,因为学生毕竟不只是一个。对于面临这样的难题,我想封装就是再好不过的办法了,因此创建类也是避免不了的,也就是将学生的各种数据打包成一个整体,这个整体也就叫做类,在通过学生类去创建对象,这也就将数据整体化,简单化,界面化,从而减少了数据的复杂,也方便了数据之间的调用,减少了数据的累赘,使程序简洁明了,结构清晰了。C+恰好符合了这种编程的思想,因为C+语言是一种优秀的面向对象程序设计语言,这也是这次课设的主要目的-熟悉并掌握面向对象程序设计的一些套路和思想。三、 系统实现方案:第一步:分析题目,建立类并派生出它的子类,画出类图。 第二步:画出流程,根据流程图编写程序清单 第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法)。 第四步:及时整理资料,撰写课程设计报告中有关这个题目的内容。 【关键词】 学生综合测评管理 c+ 面向对象 类 绪 论本系统是一个学生课程和综合测评管理系统,它是高校教务管理系统中的一个子系统。主要用户是学生、教师和管理员。系统方便了学生选课和查分。方便了教师的教学管理和学生综合测评的录入。更为重要的是,系统方便了学校的教务管理。学生课程及综合测评管理系统的产生大大减少了人力上的不便,让整个数据管理更加科学合理。学生管理是高校管理的重要组成部分,对于学校和政府教育管理单位来说都至关重要,所以学生管理系统应该能够为用户提供充足的信息和快捷的查询手段。但是一直以来高校都使用人工的方式管理学生学籍、档案、综合测评等,这种管理方式效率低、保密性差,不利于查找更新和维护。使用计算机对学生信息进行管理,能够极大地提高学生管理的效率,节约教育经费,这也是适应学校信息化建设发展趋势的重要因素。本系统主要通过c+程序设计,用学生所有的数据如(姓名、性别、学号、语文综合测评,数学综合测评,英语综合测评,物理综合测评,历史综合测评以及个人总综合测评,平均综合测评)和一些成员函数如(类构造函数stu()、输出函数print()、获取平均分函数getaver()以及获取总分函数getsum() 等函数)创建一个student类。然后用类创建对象,将班级的所用数据信息都赋值到这些对象上,然后分别对这些对象进行各种处理,也就是调用各种函数如:修改函数change()、查找函数search()、删除函数delete_stu()、以及各种排序函数paixu()、界面输入函数Condactor() 等各种函数来实现各种数据操作,达到数据管理的目的。 第一章 系统程序设计思路1、系统功能设计:系统功能结构图:读取数据修改密码初始化程序 主程序各科中优秀和不及格的同学各科的平均分和低于平均分的同学查找删除修改统计输入显示退出输入密码 界面函数fasle采单程序密码.txt学生数据.txt比较 读取数据 ture存入数据存入数据读取数据读取数据 储存数据数据成员Char name20; Char sex10; Num,Math,Chinese,English,Phisical,History,AverageSum; Stu类成员函数get_eng()get_chin() get_math()getsum() getaver() 友元函数Condactor(); Search(int a,stu *t50,char n20);Search(int a,stu *t50);Change(int a,stu *t50);Delete_stu(int a,stu *t50);2、类设计: 类的结构图为:3、输入输出的设计: 、界面设计 程序运行后会出现一个简捷的窗口,便于用户查询数据。主要包含了当前的记录学生人数、以及提示执行功能的相应数字和字母;界面设计的主要特点就是简洁,清楚,漂亮。 、功能设计通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和综合测评的输入,以及判断密码的正确性和修改密码时判断两次输入是或相同,1、 当系统里没有数据输出时,就会输出“管理系统中没有录入数据或者数据已经被删除!”,然后就会提示“请按任意继续.”2、 我还设置了各科综合测评当中如果没有大于90分或没有不及格的同学的时候,就输出“英语没有高于90分的”,如果有的这句话就不输出,输出高于90分的学生的个人信息。3、 由于在窗口中,要进行界面切换,为了能够即使返回主菜单,我就用了程序“system(cls)”来刷新屏幕。4、选择菜单设计: 操作: 综合测评名词 ; (0)数据输入 (6)按总分查询排名 (1)删除人员 (7)按语文查询排名 (2)修改数据 (8)按数学查询排名 查询 (9)按英语查询排名 (3)按学号查询 系统操作 (4)按姓名查询 (e)退出系统 (5)输出全班的数据 各科平均分: (h)语文优和差的学生 (d)语文平均分: (i)数学优和差的学生 (f)数学平均分: (j)英语优和差的学生 (g)英语平均分: (c)修改密码 第二章 程序的运行结果1、输入密码的界面如图所示,当输入密码错误的时候就会提醒你“你的密码不正确,请重新输入:”,然后直到你输正确为止或者退出界面。2、当进入系统后,整个界面的设计就如图所示,包括当前记录的人数,以及提示你相关操作的数字。3、首先时“0”操作,也就是输入界面,它会提示你输入相应的数据信息,如姓名,学号等等,当要结束一个学生的数据输入的时候,就会提醒你时候继续输入,如果是“y”的话就继续出现相应的数据输入提示,如果是“n”的话就跳出界面,返回到菜单界面,如果时其他的数字,就会提示“指令错误,请继续输入!”3、当返回界面以后,此时界面会输出当前已录人员总数为。4、然后选中删除功能选项(1),进入以后输入你要删除人的名字,再回车一下,会出现“要继续删除吗?”提示,表明那个数据已经成功被删除。输入“n”后,返回列表以后就会发现当前的记录人数为(1)了。5、返回菜单后,你选中“5”功能选项时,你会浏览到所有的数据,此时你会发现系统中只有一个数据,如图所示:6、再进入修改的功能菜单,界面如图所示,然后根据提示修改你要的数据,同样的道理,当一个人的数据输完以后,就会提示“数据修改成功!想继续修改吗(y/n)”输入“n”就返回主界面。 然后再进入浏览选项时,查看学生数据,此时会输出修改人的数据,界面如图所示:7、 选择“3”,进入查询功能,按照学生学号查询,如果你输入的学号在系统里根本就不存在的话,就会提示“对不起!你要查询的学生不存在!”然后会让你选择是否继续查询,当你查询的学号存在时,就会输出该学生的所用信息,如第二个图所示,按学生姓名查询与其类似。8、 进入“语文优和差的学生”的功能选项,如果没有优秀和不及格的学生就出现图1的画面,如果有的就会出现向查询英语时已样的界面,如图2:9、 为了能够判断排序功能实现成功与否,我又添加了一个学生数据,然后在进入数学排名选项菜单中,则出现了如下的界面,其中前面的序号就是数学的排名。同理,我还设计了英语,总分,语文排序的输出界面,其中英语的输出界面如图所示:10、进入科目平均分的选项,即输入“6”字符,就会出现以下的界面,然后按任意键就能返回协助界面了,其中其它的科目平均分的界面与其类似。11、学生修改密码选项,也是本系统的一大特色,首先判断输入的两次密码是否相同,如果不相同就出现如图1的界面,相同的话就修改成功,然后就在程序中将该密码存储到密码文件中。在下次登入时,再用原密码登入,就会出现图2的情形,在输入修改后的密码后就登入了系统了,说明了系统修改密码成功; 本功能实现主要用了第九章的fstream outfile;和fstream infile来实现文件的读取与保存,此程序执行后在磁盘中会产生的两个文件如图所示:总结和体会总结自己的不足:1、本程序基本完成了题目要求的功能。但是由于显示的限制,在按科目排序中只给出了数学,英语,语文的排名情况,程序可通过改进,增加科目数。 2、 程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。 3、程序只能实现数据的保存,要能实现数据的读取就更完美了,同时也想将输出函数的输出格式改一下,特别的难点就是选择输出点的控制,就是选择性的输出学生数据,实现数据的查询。体会:此次c+课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序。了解了要编写一个简单程序的基本步骤,首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,要设计了简单清晰的查询界面,将各个功能集中出来按照程序编写原则,便于用户查询自己要的操作。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;虽然是一个简单的应用程序编程,但对于仅刚学完C+基础的我,还是有一点难,俗话说的好“世上无难事,只要肯攀登”,我就凭着这样的信念从无头绪-着手编程-查资料学新的程序-最后调试,我就一步步的坚持着,努力着。虽然我们编写程序的过程是有点辛苦,但最后的成功也让我快乐,让我兴奋,同时也让我进一步的加深了对C+语言的理解和掌握。参考文献 1 c+语言基础教程(第2版) 吕凤翥2 Visual c+程序设计试验与编程实践 刘维富3 4 /5谭浩强编,C+面向对象程序设计,清华大学出版社,2005年7月出版附录:源代码#include /输入输出头文件 #include /字符串处理头文件 #include /用getch()函数的头文件 #include /用exit()的头文件 #include /文件处理头文件 /定义学生类 class stu char name20; char sex10; double num,math,chinese,english,phisical,history,average,sum; public: stu() stu( char n20,char s10,double nu,double ma,double chin,double eng,double ph,double hi) strcpy(name,n); strcpy(sex,s); num=nu; math=ma; chinese=chin; english=eng; phisical=ph; history=hi; double get_eng() return english; double get_chin() return chinese; double get_math() return math; double getsum() sum=chinese+english+math+phisical+history; return sum; double getaver() average=getsum()/5; return average; void print() cout 姓名是: nameendl; cout 性别是: sexendl; cout 学号: numendl; cout 数学综合测评:mathendl; cout 语文综合测评:chineseendl; cout 英语综合测评:englishendl; cout 物理综合测评:phisicalendl; cout 历史综合测评:historyendl; cout 总综合测评: getsum()endl; cout 平均综合测评:getaver()endl; friend void Condactor(); friend void search(int a,stu *t50,char n20); friend void search(int a,stu *t50); friend void change(int a,stu *t50); friend void delete_stu(int a,stu *t50);/密码修改函数void remima()char a20;char b20;couta;coutb;do if(strcmp(a,b)cout密码两次输入的不同,请再次输入:b;else break;while(1);fstream outfile; outfile.open(e:密码.txt,ios:out); if(!outfile) cout密码文件不能打开!n; abort(); outfileaendl;outfile.close();system(cls); /刷新屏幕 void warn() char c1; cout请按任意继续.endl; /等待键盘输入 c1=getch(); system(cls); /刷新屏幕 /void english_avr(int a,stu *t50,int flag1)if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; warn();else for(int k=0;kget_eng()90)cout英语有高于90分的有:endl;continue; for(k=0;kget_eng()90) tk-print();flag1=1; if(flag1=0) cout英语没有高于90分的!endl; for(int p=0;pget_eng()60) cout英语不及格的有:endl; continue; for(p=0;pget_eng()print();flag1=1; if(flag1=0) cout英语没有不及格的!endl; warn();void math_avr(int a,stu *t50,int flag1)if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; warn();else for(int k=0;kget_math()90)cout数学有高于90分的有:endl;continue; for(k=0;kget_math()90) tk-print();flag1=1; if(flag1=0) cout 数学没有高于90分的!endl; for(int p=0;pget_math()60) cout数学不及格的有:endl; continue; for(p=0;pget_math()print();flag1=1; if(flag1=0) cout英语没有不及格的!endl; warn();void chin_avr(int a,stu *t50,int flag1)if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; warn();else for(int k=0;kget_chin()90)cout语文有高于90分的有:endl;continue; for(k=0;kget_chin()90) tk-print();flag1=1; if(flag1=0) cout 语文没有高于90分的!endl; for(int p=0;pget_chin()60) cout语文不及格的有:endl; continue; for(p=0;pget_chin()print();flag1=1; if(flag1=0) cout语文没有不及格的!endl; warn();void eng_pass(int a,stu *t50) if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; else double english_sum=0; for(int k=0;kget_eng(); cout全班的英语平均分为:english_sum/aendl;double eng_aver=english_sum/a;for(k=0;kget_eng()eng_aver)cout低于数学平均分的有:print();warn();/void math_pass(int a,stu *t50) if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; else double math_sum=0; for(int k=0;kget_math(); cout全班的数学平均分为:math_sum/aendl;double math_aver=math_sum/a;for(k=0;kget_math()math_aver)cout低于数学平均分的有:print();warn();void chin_pass(int a,stu *t50) if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; else double chin_sum=0; for(int k=0;kget_chin(); cout全班的数学平均分为:chin_sum/aendl;double chin_aver=chin_sum/a;for(k=0;kget_chin()chin_aver)cout低于数学平均分的有:print();warn();void eng_paixu(int a,stu *t50) if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; else int p;stu b; cout本系统所以学生英语排名如下:endl; for(int x=0;xa-1;x+) p=x; for(int y=x+1;yget_eng()get_eng() p=y; if(p!=x) b=*tp; *tp=*tx; *tx=b; for(int k=0;ka;k+) coutk+1print(); warn(); void math_paixu(int a,stu *t50) if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; else int p;stu b; cout本系统所以学生数学排名如下:endl; for(int x=0;xa-1;x+) p=x; for(int y=x+1;yget_math()get_math() p=y; if(p!=x) b=*tp; *tp=*tx; *tx=b; for(int k=0;ka;k+) coutk+1print(); warn(); void chin_paixu(int a,stu *t50) if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; else int p;stu b; cout本系统所以学生数学排名如下:endl; for(int x=0;xa-1;x+) p=x; for(int y=x+1;yget_chin()get_chin() p=y; if(p!=x) b=*tp; *tp=*tx; *tx=b; for(int k=0;ka;k+) coutk+1print(); warn(); void sum_paixu(int a,stu *t50) if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; else int p;stu b; cout本系统所以学生数学排名如下:endl; for(int x=0;xa-1;x+) p=x; for(int y=x+1;ygetsum()getsum() p=y; if(p!=x) b=*tp; *tp=*tx; *tx=b; for(int k=0;ka;k+) coutk+1print(); warn(); void scan(int a,stu *t50) if(a=0) cout管理系统中没有录入数据或者数据已经被删除!endl; else cout本系统所有学生数据如下:endl; for(int k=0;ka;k+) coutk+1print(); warn(); void search(int a,stu *t50,char n20) int j=0; char w20; do int flag=0; cout请输入你要查询的学生姓名n; for(int j=0;jprint(); if(flag=0) cout对不起!您要查询的学生不存在!endl; cout您想继续查询吗?(y/n)w; do if (!strcmp(w,y) break; else if(!strcmp(w,n) flag=1;break; cout指令错误!请重新输入!w; while (1); if(flag=1) flag =0; break; while(1); void search(int a,stu *t50) double n; int j=0; char w20; do int flag=0; cout请输入你要查询的学生学号n; for(int j=0;jprint(); if(flag=0) cout对不起!您要查询的学生不存在!endl; cout您想继续查询吗?(y/n)w; do if (!strcmp(w,y) break; else if(!strcmp(w,n) flag=1;break; cout指令错误!请重新输入!w; while (1); if(flag=1) flag =0; break; while(1); void change(int a,stu *t50) char name20,w20;char sex10; double num, mat,chin,eng,ph,hi;bool flag2=0,flag=0; do cout请输入您要修改的学生的姓名:name; for(int h=0;hname)=0) flag2=1; cout请输入新的 学号:num; cout请输入新的 性别:sex; cout请输入新的 数学综合测评:mat; cout请输入新的 语文综合测评:chin; cout请输入新的 外语综合测评:eng; cout请输入新的 物理综合测评:ph; cout请输入新的 历史综合测评:hi; strcpy(th-sex,sex); th-num=num; th-chinese=chin; th-math=mat; th-english=eng; th-phisical=ph; th-history=hi; cout数据修改成功!; if(flag2=0) cout您要修改的学生本来就不存在!请检查重新输入!endl;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Ko-143-Standard-生命科学试剂-MCE
- 2026年漯河消防进军训测试题及答案
- 2026年南亚印度测试题及答案
- 2026年物业消防主管测试题及答案
- 2026年急救自救知识测试题及答案
- 2026年哈佛耶鲁入门测试题及答案
- 2026年excel办公测试题及答案
- 2026年脑部智力测试题及答案
- 口腔诊所年度工作总结(五篇)
- 肝癌肺转移诊治共识2026
- T/GIEHA 053-2022健康照明LED产品技术要求
- T/CECS 10353-2024内墙用艺术装饰涂料
- 第十二讲民族危亡与民族意识觉醒(1840-1919)-中华民族共同体概论专家大讲堂课件
- 瓦斯日分析制度
- 《铁道概论》期末考试复习题库(含答案)
- 硬笔书法全套课件教学课件教学
- 朋辈心理辅导训练课程-助人自助
- 人教版初中体育与健康八年级全一册 第十一章 民族民间体育-背篓绣球 教案
- DBJ51∕T 219.9-2023 四川省物业服务标准 第9分册:居家养老服务标准
- 营销全渠道营销
- NBT11500-2024太阳能和生物质能互补户用供暖系统技术规范
评论
0/150
提交评论