




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生成绩管理系统-蕲宥-目录一、课程设计目的-P2二、课程设计时间和实施方式-P2三、设计思路-P2学生成绩管理系统系统简介-P2学生成绩管理系统结构图-P5学生成绩管理系统流程图-P6四、附加加功能-P7五、用户使用指南-P7六、编程过程中的问题与解决方法-P11七、实训心得体会-P19附件:c+实训源程序-学生成绩管理系统使用软件:Microsoft visual c+ 6.0中文版使用设备:联想台式机配置:AMD Athlon(tm) 64 Processor3000+ 2.00GHz,512MB内存对几个名词的个人理解:抽象(abstraction):这是形成概念的必要手段,是从许多事物中舍弃个别对象、非本质的特征,抽取共同及本质性的特征的过程(即关注事物的本质特征,而不是具体是细节或具体现实)。对象:现实世界中客观存在的事物。但在c+程序中的对象是由类去生成一个个的具体的对象,从而使对象具有该类的基本属性。比如说:人具有吃饭睡觉等等基本属性,而说到具体的某一个男人的时候,他同样具有人的基本属性(这就是从类中实例化的对象)。派生类:由一个类做为基类,然后定义另外的一个类,再去添加基类的属性。比如说:我们再说说人吧。从人的基本属性中,派生出一个男人的类,那么男人在具有人的基本属性的同时,他同样还具有男人特有的一些属性。这样通过更多的属性就可以更具体地指向某一类男人或者是某一个男人。继承:对一个对象可获得另一个对象的机制,通过继承,低层次的类只须定义它特有的特征,而共享高层次的类中的特征。简单的可以是一种说成共享关系。例如:一个母亲生下一个孩子,她的孩子继承了母亲的血脉,人的特征之外。同时孩子还能够有他自己的属性。继承具有重要的意义,它简化了人们对事物的认识和描述。一、课程设计目的:目的:通过课程设计,使学生掌握面向对象的程序设计技术及开发方法。其中需要掌握的知识点包括:1、类的抽象技术及开发技术;2、类的成员变量的定义,成员方法的定义;3、类之间的继承和派生的关系;3、类对象的使用;4、类对象指针的使用等。二、课程设计时间和实施方式:本次课程设计安排在本学期2010年1月11号至2010年1月22号(共2周)进行。本次课程设计采取分散安排与相对集中结合、个别进行与总体进度检查验收结合的方式进行,在指定的课程设计时间段内,安排一定数量的集中讲解与指导时间,学生灵活安排自己的课余时间进行和完成相关设计,指导教师则在检查总体进度上把握学生的设计进程。三、设计思路:(根据老师的提示)实验名称:学生成绩管理系统简介:该系统的主要功能是为了实现班级学生成绩的管理,用户可以进入程序后先创建班级,然后输入班级成员的信息。该系统会记录和统计用户的录入情况,如该系统在记录用户录入学生信息的同时,会统计班级的人数。同时,该系统还会根据用户输入学生的学号进行判断排序。因此用户可以不按学生的学号顺序进行录入。该系统支持用户另存为其他名字的数据文件。如系统默认把数据保存在myfile.txt文件里面,用户可以选择另存为xxx.txt文件(xxx为用户自定义的名字)。同时改程序还支持打开其他数据文件。如用户在上一次的操作中另存文件为xxx.txt,用户就可以根据系统提示打开名为xxx.txt的文件,并且用户在读入数据后系统会自动对更改过的xxx.txt文件进行保存数据。该系统支持学生信息的修改、删除、查询功能。(欢迎用户使用该系统!)1、 建立一个CPerson类,作为基类,成员变量为: IDNo(身份张号码)、Name(姓名)、Addr(住址)、Tel(电话号码)。其中,IDNo(身份张号码)、Name(姓名)要求在创建对象时输入。并且对象创建之后不能修改;其他两个可以在创建时输入,可以创建后输入,并作修改;2、建立一个CStudent类,继承自CPerson类。成员变量为 :StudNo(学号)、Math(数学成绩)、English(英语成绩)、Average(评价成绩)。其中,StudNo要求在创建对象时输入,并且对象创建之后不能修改;Math(数学成绩),English(英语成绩),可以在创建时输入,可以创建后输入,并作修改;在输入或者修改Math(数学成绩),English(英语成绩)时计算出Average(评价成绩)。3、建立一个CClass类。成员变量为:ClassName(班级名称)、CStudent指针数组,数组大小限定为50。其中,ClassName(班级名称)要求在创建对象时输入,并且对象创建之后不能修改;CStudent指针数组初始化时,每个指针值均为NULL;CClass类的析构函数要完成每个CStudent的释放动作。4、以提示加数字选择的方式来实现一级菜单和二级菜单。1.创建学生信息(输入学生具体信息)2.查看学生信息(查看学生信息)1.创建班级 3.修改学生信息(可以修改地址、成绩和电话)2.读取班级信息4.删除学生信息(根据学号删除学生信息)3.退出程序5.写入文件6.查询学生信息0.退出程序主要代码段:/-CPerson基类 成员:IDNo NameAddrTelclass CPerson public:int IDNo;char Name20;char Addr30;int Tel;/-CStudent 类-继承自CPerson 成员:StudNo MathEnglishAverageclass CStudent:public CPerson public:int StudNo;double Math;double English;double Average;/-CClass类 成员:CClassName CStudentclass CClassprivate:char CClassName20;CStudent* stu50;public:CClass();CClass();void CreateClass();void OutClassName();void NewAStu();void change();void del();学生成绩管理系统结构图班级信息0.退出程序6.查询学生信息5.保存学生信息4.删除学生信息3.修改学生信息2.查看学生信息1.创建学生信息打开文件创建班级学生成绩管理系主程序统学生成绩管理系统流程图学生成绩管理系统打开数据文件创建班级读取文件信息输入文件名称NY另存文件另存为?6.查询学生信息5.保存学生信息退出程序4.删除学生信息3.修改学生信息2.查看学生信息1.添加学生信息 打开myfile.txt文件 创建班级对象主菜单四、附加功能:1.文件的读写功能。2.身份证位数的判断、学号位数的判断。如:当用户输入的身份证号码不足18位或者多余18位的时候。系统程序会自动报错,并提示用户再次输入。3. 用户选择判断。如:当选项是1、2、3.的时候,而用户选择其他字符,系统程序会自动报错,并提示用户再次输入。4.按姓名查询功能。5.打开其他文件,在对文件操作后可以自动保存如:打开Y.txt文件后,系统会读取Y.txt里面的数据,在对数据进行操作之后,系统可以自动保存Y.txt文件。5、 用户使用指南1、第一步创建班级用户的第一步就是创建班级,选择1选项之后就提示“请输入班级名称:”提示用户输入班级名称。2、第二步进入菜单用户可以执行的操作的:1、添加学生信息2、显示学生信息3、修改学生信息4、删除学生信息5、保存学生信息6、查询学生信息0、退出程序3、第三步添加学生信息选择1:用户按提示输入学生的身份证号码(18位)(IDNo)、姓名(Name)、地址、手机号码、学号(12位)、数学成绩、英语成绩。在用户输入的过程中可以判断身份证号码的长度(18位)、学生的学号(12位)。接着可以通过输入的数学成绩和英语成绩计算两门课程的平均分成绩。当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。4、 第四步查看学生信息选择2:用户可以查看创建的班级名称、班级的人数。以及班级的所以成员的信息。如:学号、身份证号码、姓名、地址、手机号码、数学成绩、英语成绩、平均分成绩。当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。5、第五步修改学生信息选择3:用户可以根据提示,选择修改的属性。学生的地址、手机号码、数学成绩、英语成绩。再根据提示,修改其属性。当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。6、第五步删除学生信息选择4:用户根据提示,输入要删除的学生的学号,程序会根据输入的学号查找用户的信息,并且提出该学生的信息,执行删除的操作。当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。7、第六步写入文件选择5:系统程序会默认保存用户输入的信息。当用户选择该选项时,会提示文件已默认保存了!t现在需要另存为?(Y/N),如果用户输入Y或y,程序会提示请输入文件名称:提醒用户输入另存为文件的名字。系统会自动保存。当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。8、第七步读出学生信息选择6:系统程序会提示用户(1、打开上次的文件2、打开其他文件)当用户选择1时,系统程序会自动调出上一次用户操作的数据。当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。当用户选择2时,系统程序会提示用户需要打开的文件(.txt后缀)名如果存在该文件,系统程序会打开文件,并调用里面的数据进行操作。如果没有该文件,系统会自动创建一个空白的文件,但里面的信息为空。9、第八步退出程序当用户选择“0”的时候,程序退出使用,返回到操作系统桌面。六、编程过程中的问题与解决方法(Q-question ; S-solution )Q-1:菜单的循环输出问题!S: 在1月3日开始做程序的时候,看到老师给的那些设计要求,然后一开始就想到要做的就是菜单的循环输出。但在循环的那一块就出了问题。使用的一个selection选择变量在“ciselection;”之后,因为selection0为真,而我是用“while(1)”去判断循环的,就这样进入了无限的死循环。错误程序代码段: while(1)cout-学生信息管理程序-selection;switch(selection).修改后的代码段: while(selection!=0)cout-学生信息管理程序-selection;switch(selection).Q-2:真是的信息,我们的用户是要输入自己的信息的,但他们的信息就可能不仅仅是数字,或者是单纯的8位数。S:对于这个问题,比较简单的方法就是把我们定义的变量给改成“char var;”这种数组类型,从而通过数组的长度去控制用户能输入的最大限度。错误程序代码段:Int StuNo;.修改后的代码段:Char StuNo19;.Q-3:char var;的比较,查询判断学号。S:Char var类型的比较当然不能把我们输入的值作比较,而使用一个头文件#include 然后使用strcmp(str1,str2);作比较;str1str2时,返回正值。str1str;for(i=0;iStudNo=tr).修改后的代码段:char str15; .Cinstr;for(i=0;iStudNo,str)=0).Q-4:身份证、学号位数的判断S:我的思路是判断stutime-IDNo18!=0修改后的代码段:coutstutime-IDNo;/-检验身份证位数while(stutime-IDNo18!=0)coutstutime-IDNo;.学号的判断方法同理。Q-5:指针数组的正确理解!S:在编写程序的时候很多人都不能正确理解什么是指针数组。一开始的时候我也不是很理解,但在问了老师之后,却有点明白。虽然老师只是空空的说了一下,并没有写实际的代码给我看。但欲望的趋势下我上网查看了相关的资料。方才明白了指针数组的含义。对这个程序而言,实际上,指针数组就是一个类的成员,这个成员指向的是另外一个类的成员。并通过指针的方式访问成员变量。下面是比较简化的代码:#include#include#include int time=0;class CPerson public:char Name20;class CStudent:public CPerson public:char StudNo20;class CClassprivate:char CClassName20;CStudent* stu50;public:CClass();CClass();void display();void NewA();CClass:CClass()for(int i=0;i50;i+)stui=new CStudent();CClass:CClass()for(int i=0;i50;i+)deletestui;void CClass:NewA()/创建学生coutstutime-Name;coutstutime-StudNo;time=time+;void CClass:display()for(int i=0;itime;i+)coutNametStudNo endl;void main() CClass ClassRoom;ClassRoom.NewA();ClassRoom.display();Q-6:代码太长,程序窗口的显示。S:经常程序员要面临的问题就是用户使用界面的显示问题,为给用户提供一个舒适的界面。因此我就写了几个函数去制作窗口的界面。void back()coutttt执行成功!endl;system(pause);/任意键继续system(cls);/清除屏幕void back_no()system(pause);/任意键继续system(cls);/清除屏幕void title()system(cls);cout-学生信息管理程序-endl;Q-7:主菜单的循环S:开始在判断主菜单的时候,用的是int去赋值用户的选择选项,但是当用户选择其他字符的时候就会出错,直接跳出程序。因此我就修改了菜单的循环判断程序。把while循环改成for循环。错误的程序代码:while(selection!=0)ClassRoom.writein();cout-学生信息管理程序-endl;cout1、添加学生信息endl2、显示学生信息endl3、修改学生信息endl4、删除学生信息endl5、保存学生信息endl6、查询学生信息endl0、退出程序endlselection;switch(selection)case 1: title();cout1.添加学生信息endl;ClassRoom.NewAStu();time=time+1;break;case 2: title(); cout2.打印学生信息endl;if(time=0)coutnnttt暂时没有记录!endl;back_no();break;elseClassRoom.OutClassName ();break;case 3: title();cout3.修改学生信息endl;ClassRoom.change();break;case 4: title();cout4.删除学生信息endl;ClassRoom.del();break;case 5: title();cout5.保存学生信息endl;ClassRoom.writeino();break;case 6:title();cout6.查询学生信息endl;ClassRoom.find();default: while(selection6) cout错误输入.请重新输入!n;coutselection;system(cls);break;修改后程序代码:for(int o=0;o1000;o+)ClassRoom.writein();cout-学生信息管理程序-endl;cout1、添加学生信息endl2、显示学生信息endl3、修改学生信息endl4、删除学生信息endl5、保存学生信息endl6、查询学生信息endl0、退出程序endlselection;if(strcmp(selection,1)=0)title();cout1.添加学生信息endl;ClassRoom.NewAStu();time=time+1;else if(strcmp(selection,2)=0)title(); cout2.打印学生信息endl;if(time=0)coutnnttt暂时没有记录!endl;back_no();elseClassRoom.OutClassName ();else if(strcmp(selection,3)=0)title();cout3.修改学生信息endl;ClassRoom.change();else if(strcmp(selection,4)=0)title();cout4.删除学生信息endl;ClassRoom.del();else if(strcmp(selection,5)=0)title();cout5.保存学生信息endl;ClassRoom.writeino();else if(strcmp(selection,6)=0)title();cout6.查询学生信息endl;ClassRoom.find();else if(strcmp(selection,0)=0)exit(0);elsesystem(cls);cout请在06中选择:n;Q-8:用户输入数据后,并没有按一定的顺序排列,如学号排列顺序不正确,影响用户的查看。S:解决的办法就是使用按学号排序,当用户录入学生信息时,系统根据学号的先后对所有的学生进行一次按学号的排序:添加的代码段:for(int change=0;changetime;change+)fenshu=change;for(int j=change;jStudNo,stufenshu-StudNo)Addr);strcpy(stufenshu-Addr,stuchange-Addr);strcpy(stuchange-Addr,temp); /*地址*/strcpy(temp,stufenshu-StudNo);strcpy(stufenshu-StudNo,stuchange-StudNo);strcpy(stuchange-StudNo,temp); /*身份证*/strcpy(temp,stufenshu-Name);strcpy(stufenshu-Name,stuchange-Name);strcpy(stuchange-Name,temp); /*姓名*/strcpy
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论