《实训总结报告.doc》由会员分享,可在线阅读,更多相关《实训总结报告.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实训总结报告实训总结报告-面向对象程序设计 实训的目的与系统概述 1、目的: (1)掌握面向对象设计开发的基本思想和方法,培养学生在已有的知识基础上进一步获取新知识的能力,提高分析问题和解决问题的能力。 (2)进一步巩固面向对象程序设计课程中所学到的知识,熟练掌握C+语言程序设计,加强对VC+编程环境的使用能力,掌握VC+编程环境中的调试功能,增强实际编程能力。 (3)培养和提高逻辑思维、抽象思维和统筹规划能力,培养独立完成程序设计开发的工作能力。为今后从事专业性软件开发工作打下基础。 2、 功能 通过将不同类型的人员设计成相应的类,完成的学校人员的管理。 3、 系统概述 学校的人员包括学生、
2、职工;职工又分为教师和行政人员;在职进修教师又具备学生和教师的属性和行为。 a) 人员具有姓名、年龄、性别、地址和人员类别等属性,有显示属性的功能和设置属性的功能。 b) 学生具有人员的属性和行为,此外,添加学号、成绩属性。具有的行为有:设置属性的函数:让用户能够通过键盘的输入设置除了成绩之外的基本属性;录入成绩:输入学生的各门成绩;显示:显示基本属性和他的平均成绩。 c) 职工具有人员的属性和行为,此外,添加职工号、职称和工资属性。 d) 教师具有职工的属性和行为,此外,添加教研室、教授的课程属性。具有的行为有:设置属性的函数:让用户能够通过键盘的输入设置除了课程信息之外的基本属性;录入课程
3、:输入教师所教的各门成绩;显示:显示基本属性。 e) 行政人员具有职工的属性和行为,此外,添加办公室属性。 f) 在职进修教师具有教师与学生的属性和行为,此外,添加进修时间,工作单位属性。 通过实现此系统,让我综合运用所学知识,掌握面向对象设计开发的基本思想和方法和C+的编程思想来完成简单的面向对象的程序设计。让我在已有的知识基础上进一步获取新知识的能力,提高分析问题、解决问题和独立完成程序设计开发的工作能力。为今后从事专业性软件开发工作打下基础。 类的实现 编程实现上面类的设计。 主程序中的验证 创建对象,检验类的功能是否能够实现。 总结 1、遇到的困难、解决办法及收获: 各类属性的实现。
4、利用对象数组即方便又能固定调用哪个属性。在构造函数中定义属性类型,利用对象数组调用。 对象数组中字符串的赋值。 分配(new实现)一个char型变量长度加一的字符串,再利用拷贝函数拷贝原变量并放在name里,如: name=new charstrlen(na)+1;strcpy(name,na); 因为没有给原带参构造函数的形参赋值,主函数中不能声明类的无参对象。 在定义一个无参构造函数,如: person() 在派生类带参构造函数与基类带参构造函数所带参数不同时没有对基类构造函数的参数初始化。 构造函数无法被继承,当派生类带参构造函数与基类带参构造函数所带参数不同时,要在派生类构造函数中对基
5、类构造函数的参数进行初始化,如: worker(int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):person(na,a,s,ad,l) 平均分的实现。 利用对象数组正确调用分数属性再利用返回值为float的成员函数实现平均分,如: float getaverage(student st,int i) int a=sti.mathscore; int b=sti.cscore; return sti.average=(a+b)/2; 正确输入和调用属性。 利用pn.属性名实现属性的各种行为,如: cinpn+1.age
6、; cout姓名:pn.nameendl; switch语句总执行完一个case后还继续执行。 加入break语句跳出switch语句。 2、 程序中还需要改进的地方。 姓名,年龄,地址等属性限制的实现。 附件:源程序#include iostream.h#include stringusing namespace std;class personprotected: char *name; int age; char *sex; char *address; char *lb;public: person(char *na,int a,char *s,char *ad,char *l)/对象
7、数组 name=new charstrlen(na)+1; strcpy(name,na); age=a; sex=new charstrlen(s)+1; strcpy(sex,s); address=new charstrlen(ad)+1; strcpy(address,ad); lb=new charstrlen(l)+1; strcpy(lb,l); person()/无参构造函数,方便声明无参对象 virtual void getinf(person p,int n) char na1128; cout姓名:; cinna1; pn.name=new charstrlen(na1)
8、+1;/分配na1长度+1的字符串 strcpy(pn.name,na1);/拷贝字符串 coutendl; cout年龄:; cinpn+1.age; coutendl; char s12; cout性别:(n:男,w:女); cins1; pn+2.sex=new charstrlen(s1)+1; strcpy(pn+2.sex,s1); coutendl; char ad1128; cout地址:; cinad1; pn+3.address=new charstrlen(ad1)+1; strcpy(pn+3.address,ad1); coutendl; virtual void d
9、isp(person p,int n)/有参虚函数,对象数组输出的事现 cout姓名:pn.nameendl; cout年龄:pn+1.ageendl; cout性别:pn+2.sexendl; cout地址:pn+3.addressendl;class student:public virtual personprotected: int number; int mathscore,cscore; float average;public: student(int nu,int ms,int cs,float av,char *na,int a,char *s,char *ad,char *
10、l):person(na,a,s,ad,l)/构造函数无法被继承,在派生类构造函数带参数与基类构造函数所带参数不同时要先对基类构造函数初始化 number=nu;mathscore=ms;cscore=cs;average=av; student() virtual void getvalue(student st,int i) cout学号:; cinsti.number; coutendl; void getscore(student st,int i) cout数学成绩:; cinsti.mathscore; coutendl; coutC+成绩:; cinsti.cscore; cou
11、tendl; float getaverage(student st,int i)/平均分的实现 int a=sti.mathscore; int b=sti.cscore; return sti.average=(a+b)/2; void show(student st,int i) cout学号:sti.numberendl; virtual void show1(student st,int i) sti.show(st,i); cout数学成绩:sti.mathscoreendl; coutC+成绩:sti.cscoreendl; sti.getaverage(st,i); cout平
12、均成绩:sti.averageendl; ;class worker:public virtual personprotected: int number; float pay; char *value;public: worker(int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):person(na,a,s,ad,l) number=num; value=new charstrlen(v)+1; strcpy(value,v); pay=p; worker() void getvalue(worker w,int i
13、) cout职工号:; cinwi.number; coutendl; char v1128; cout职称:; cinv1; wi.value=new charstrlen(v1)+1; strcpy(wi.value,v1); coutendl; cout工资:; cinwi.pay; coutendl; void show(worker w,int i) cout职工号:wi.numberendl; cout职称:wi.valueendl; cout工资:wi.payendl; ;class teacher:public virtual worker,public virtual per
14、sonprotected: char *kemu; int chengji; char *office;public: teacher(char *of,char *ke,int ch,int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):worker(num,v,p,na,a,s,ad,l),person(na,a,s,ad,l) office=new charstrlen(of)+1; strcpy(office,of); kemu=new charstrlen(ke)+1; strcpy(kemu,ke); chen
15、gji=ch; teacher() void getmessage(teacher t,int i) char of1128; cout教研室:; cinof1; ti.office=new charstrlen(of1)+1; strcpy(ti.office,of1); coutendl; char ke1128; cout科目:; cinke1; ti.kemu=new charstrlen(ke1)+1; strcpy(ti.kemu,ke1); coutendl; cout成绩:; cinti.chengji; coutendl; void show1(teacher t,int i
16、) cout教研室:ti.officeendl; cout科目:ti.kemuendl; cout成绩:ti.chengjiendl; ;class employee:public virtual worker,public virtual personprivate: char *office;public: employee(char *of,int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):worker(num,v,p,na,a,s,ad,l),person(na,a,s,ad,l) office=new cha
17、rstrlen(of)+1; strcpy(office,of); employee()void getmessage(employee e,int i) char of1128; cout教研室:; cinof1; ei.office=new charstrlen(of1)+1; strcpy(ei.office,of1); coutendl; void show1(employee e,int i) cout教研室:ei.officeendl; ;class jingx:public virtual student,public virtual teacher,public virtual
18、 worker,public virtual personprivate: int time; char *danwei;public: jingx(int ti,char *da,int nu,int ms,int cs,float av,char *of,char *ke,int ch,int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):student(nu,ms,cs,av,na,a,s,ad,l),teacher(of,ke,ch,num,v,p,na,a,s,ad,l),worker(num,v,p,na,a,
19、s,ad,l),person(na,a,s,ad,l) time=ti; danwei=new charstrlen(da)+1; strcpy(danwei,da); jingx() void getmessage1(jingx j,int i) cout进修时间:; cinji.time; coutendl; char da1128; cout单位属性:; cinda1; ji.danwei=new charstrlen(da1)+1; strcpy(ji.danwei,da1); coutendl; void show2(jingx j,int i) cout进修时间:ji.timeen
20、dl; cout单位属性:ji.danweiendl; ;int i;person p1; student st1; worker wo1; teacher te1; employee em1; jingx jx1;void main() cout请选择人员类别:endl; cout1、普通人 2、学生 3、学生及成绩 4、员工 5、教师 6、行政人员 7、在职进修教师endl; cini; cout请依次录入信息endl; switch(i)/录入信息种类选择的实现 case 1: p1.getinf(p,1); cout*endl; p1.disp(p,1); break;/要有break
21、语句否则将执行case2 case 2: st1.getvalue(st,1); p1.getinf(p,1); cout*endl; st1.show(st,1); p1.disp(p,1); break; case 3: st1.getvalue(st,1); p1.getinf(p,1); st1.getscore(st,1); cout*endl; st1.show1(st,1); p1.disp(p,1); break; case 4: wo1.getvalue(wo,1); p1.getinf(p,1); cout*endl; wo1.show(wo,1); p1.disp(p,1
22、); break; case 5: te1.getmessage(te,1); p1.getinf(p,1); wo1.getvalue(wo,1); cout*endl; te1.show1(te,1); p1.disp(p,1); wo1.show(wo,1); break; case 6: em1.getmessage(em,1); p1.getinf(p,1); wo1.getvalue(wo,1); cout*endl; em1.show1(em,1); p1.disp(p,1); wo1.show(wo,1); break; case 7: jx1.getmessage1(jx,1
23、); te1.getmessage(te,1); st1.getvalue(st,1); wo1.getvalue(wo,1); p1.getinf(p,1); st1.getscore(st,1); cout*endl; jx1.show2(jx,1); p1.disp(p,1); te1.show1(te,1); wo1.show(wo,1); st1.show1(st,1); break; default : cout输入错误!endl;实训总结报告1开头总结的开头主要用来概述基本情况。包括单位名称、工作性质、主要任务、时代背景、指导思想,以及总结目的、主要内容提示等。2主体这是总结的主
24、要部分,内容包括成绩和做法、经验和教训、今后打算等方面。这部分篇幅大、内容多,要特别注意层次分明、条理清楚。2.1 主体常见结构 主体部分常见的结构形态有三种。要根据实际需要选择好。第一,纵式结构。就是按照事物或实践活动的过程安排内容。第二,横式结构。按事实性质和规律的不同分门别类地依次展开内容,使各层之间呈现相互并列的态势。第三,纵横式结构。安排内容时,即考虑到时间的先后顺序,体现事物的发展过程,又注意内容的逻辑联系,从几个方面总结出经验教训。2.2 主体常见内容(1)工作回顾。要详细地叙述工作任务、完成的步骤、采取的措施和取得的成效、存在的问题。(2)经验教训。应从工作回顾中很自然地归纳提炼出采。结尾结语部分。主要写明的打算,也只需写很短的一段话。写得长了,反而冲淡了主题。总结正文写完以后,应该在正文的右下方(指横行文字),写上总结单位的名称和总结的年月日