实训总结报告.docx
实训总结报告实训总结报告一一?面向对象程序设计?实训的目的与系统概述1、目的:(1)掌握面向对象设计开发的根本思想和方法,培养学生在已有的知识根底上进一步猎取新知识的能力,提高分析问题和解决问题的能力。(2)进一步稳固?面向对象程序设计?课程中所学到的知识,熟练掌握C+语言程序设计,加强对VC+编程环境的使用能力,掌握VC+编程环境中的调试功能,增强实际编程能力。(3)培养和提高逻辑思维、抽象思维和统筹规划能力,培养独立完成程序设计开发的工作能力。为今后从事专业性软件开发工作打下根底。2、功能通过将不同类型的人员设计成相应的类,完成的学校人员的治理。3、系统概述学校的人员包括学生、职工;职工又分为教师和行政人员;在职进修教师又具备学生和教师的属性和行为。a)人员具有姓名、年龄、性别、地址和人员类别等属性,有显示属性的功能和设置属性的功能。b)学生具有人员的属性和行为,此外,添加学号、成绩属性。具有的行为有:设置属性的函数:让用户能够通过键盘的输入设置除了成绩之外的根本属性;录入成绩:输入学生的各门成绩;显示:显示根本属性和他的平均成绩。C)职工具有人员的属性和行为,此外,添加职工号、职称和工资属性。d)教师具有职工的属性和行为,此外,添加教研室、教授的课程属性。具有的行为有:设置属性的函数:让用户能够通过键盘的输入设置除了课程信息之外的根本属性;录入课程:输入教师所教的各门成绩;显示:显示根本属性。e)行政人员具有职工的属性和行为,此外,添加办公室属性。f)在职进修教师具有教师与学生的属性和行为,止匕外,添加进修时间,工作单位属性。通过实现此系统,让我综合运用所学知识,掌握面向对象设计开发的根本思想和方法和C+的编程思想来完成简单的面向对象的程序设计。让我在已有的知识根底上进一步猎取新知识的能力,提高分析问题、解决问题和独立完成程序设计开发的工作能力。为今后从事专业性软件开发工作打下根底。类的实现编程实现上面类的设计。主程序中的验证创立对象,检验类的功能是否能够实现。总结1、遇到的困难、解决方法及收获:各类属性的实现。利用对象数组即方便又能固定调用哪个属性。在构造函数中定义属性类型,利用对象数组调用。对象数组中字符串的赋值。分配(new实现)一个char型变量长度加一的字符串,再利用拷贝函数拷贝原变量并放在name里,如:name=newcharstrlen(na)+1;strcpy(name,na);因为没有给原带参构造函数的形参赋值,主函数中不能声明类的无参对象。在定义一个无参构造函数,如:person()在派生类带参构造函数与基类带参构造函数所带参数不同时没有对基类构造函数的参数初始化。构造函数无法被继承,当派生类带参构造函数与基类带参构造函数所带参数不同时,要在派生类构造函数中对基类构造函数的参数进行初始化,如:worker(intnum,char*v,intp,char*na,inta,char*s,char*ad,char*1):person(na,a,s,ad,1)(平均分的实现。利用对象数组正确调用分数属性再利用返回值为float的成员函数实现平均分,如:floatgetaverage(studentst,inti)inta=sti.mathscore;intb=sti.cscore;returnsti.average=(a+b)2;正确输入和调用属性。利用pn.属性名实现属性的各种行为,如:cin;pn+l.age;CoUt;姓名:;<name<&11;endl;SWitCh语句总执行完一个case后还继续执行。参加break语句跳出switch语句。2、程序中还需要改良的地方。姓名,年龄,地址等属性限制的实现。附件:源程序ttinclude<iostream.h;#include<Stringjusingnamespacestd;classpersonprotected:char*name;intage;char*sex;char*address;char*lb;PUblic:person(char*na,inta,char*s,char*ad,char*1)对象数组name=newcharstrlen(na)+1;strcpy(name,na);age=a;sex=newcharEstrlen(s)+l;strcpy(sex,s);address=newcharEstrlen(ad)+1;strcpy(address,ad);lb=newcharstrlen(l)+l;strcpy(lb,1);person()无参构造函数,方便声明无参对象virtualvoidgetinf(personp,intn)charnal128;cout<<姓名:;cin;nal;pn.name=newcharEstrlen(nal)+l;/分配nal长度+1的字符串strcpy(pn.name,nal);/拷贝字符串cout<<endl;COUt<<年龄:;cin;pn+l.age;cout<<endl;charsl2;CoUt<<性别:(n:男,w:女);cin;si;pEn+2.sex=newcharstrlen(s1)+1;strcpy(pn+2.sex,si);cout<<endl;charadlE128;cout<<地址cin;adl;pn+3.address=newcharstrIen(adl)+1;strcpy(pn+3.address,adl);cout<<endl;virtualvoiddisp(personp,intn)有参虚函数,对象数组输出的事现cout<<姓名:;<<pn.name<<endl;cout<<年龄:;<<pn+l.age<<endl;cout<<性别:;<<pn+2.sex<<endl;cout<<地址:;pn+3.address<<endl;classStudentipublicvirtualpersonprotected:intnumber;intmathscore,cscore;floataverage;public:student(intnu,intms,intcs,floatav,char*na,inta,char*s,char*ad,char*1):person(na,a,s,ad,1)构造函数无法被继承,在派生类构造函数带参数与基类构造函数所带参数不同时要先对基类构造函数初始化number=nu;mathscore=ms;cscore=cs;average=av;student()virtualvoidgetvalue(studentst,inti)CoUt;<学号:;cin;number;cout<<endl;voidgetscore(studentst,inti)CoUt<<数学成绩:;cin;mathscore;cout<<endl;cout<<C+成绩:;cin;cscore;cout<<endl;floatgetaverage(studentst,inti)/平均分的实现inta=stEi.mathscore;intb=sti.cscore;returnsti.average=(a+b)/2;voidshow(studentst,inti)CoUt<<学号:;<<sti.number<<endl;virtualvoidshowl(studentst,inti)sti.show(st,i);CoUt<<数学成绩:;<<sti.mathscore<&11;endl;cout<<C+成绩:;<<sti.cscore<<endl;sti.getaverage(st,i);cout<<平均成绩:;<<sti.average<<endl;classworker:publicvirtualpersonprotected:intnumber;floatpay;char*value;public:worker(intnum,char*v,intp,char*na,inta,char*s,chard,char*1):person(na,a,s,ad,1)number=num;value=newcharstrlen(v)+1;strcpy(value,v);pay=p;worker()voidgetvalue(workerw,inti)cout<<IR工号:;cin;wi.number;cout<<endl;charvl128;cout<<职称:;cin;vl;wi.value=newcharEstrlen(vl)+1;strcpy(wEi.value,vl);cout<<endl;COUt;工资:;cin;wi.pay;cout<<endl;voidshow(workerw,inti)cout<<职工号:;<<wi.number<<endl;cout<<职称:;<<wi.value<<endl;cout<<工资:;<pay<<endl;classteacher:publicvirtualworker,publicvirtualpersonprotected:char*kemu;intchengji;char*office;PUbIic:teacher(char*of,char*ke,intch,intnum,char*v,intp,char*na,inta,char*s,char*ad,char*1):worker(num,v,p,na,a,s,ad,1),person(na,a,s,ad,1)office=newcharstrlen(of)÷l;strcpy(office,of);kemu=newcharstrlen(ke)+1;strcpy(kemu,ke);chengji=ch;teacher()voidgetmessage(teachert,inti)charof1128;cout<<教研室:;cin;ofl;ti.office=newcharEstrien(of1)+1;strcpy(ti.office,ofl);cout<<endl;charkelE128;cout<<科目:;cin;kel;ti.kemu=newcharstrlen(kel)+1;strcpy(ti.kemu,kel);cout<<endl;cout<<成绩:;cin;chengji;cout<<endl;voidshowl(teachert,inti)cout<<教研室:;<<ti.office<<endl;cout<<科目:;<<ti.kemu<<endl;cout<<成绩:;<<ti.chengji<<endl;classemployee:publicvirtualworker,publicvirtualpersonprivate:char*office;public:employee(char*of,intnum,char*v,intp,char*na,inta,char*s,char*ad,char*1):worker(num,v,p,na,a,s,ad,1),person(na,a,s,ad,1)office=newcharEstrlen(of)+1;strcpy(office,of);employee()voidgetmessage(employeee,inti)charof1128;cout<<教研室:;cin;of1;ei.office=newcharEstrien(of1)+1;strcpy(ei.office,ofl);cout<<endl;voidshowl(employeee,int1) cout<<教研室:;<office<<endl;classjingx:publicvirtualstudent,publicvirtualteacher,publicvirtualworker,publicvirtualpersonprivate:inttime;char*danwei;public:jingx(intti,char*da,intnu,intms,intcs,floatav,char*of,char*ke,intch,intnum,char*v,intp,char*na,inta,char*s,char*ad,char*1):student(nu,ms,cs,av,na,a,s,ad,1),teacher(of,ke,ch,num,v,p,na,a,s,ad,1),worker(num,v,p,na,a,s,ad,1),person(na,a,s,ad,1)time=ti;danwei=newcharstrlen(da)+1;strcpy(danwei,da);jingx()voidgetmessagel(jingxj,inti)cout<<进修时间:;cin;ji.time;cout<<endl;chardal128;cout<<单位属性:;cin;dal;ji.danwei=newcharstrlen(dal)+1;strcpy(ji.danwei,dal);cout<&11;endl;voidshow2(jingxj,inti)cout<<进修时间:;<<ji.time<<endl;cout<<单位属性:;<<ji.danwei<<endl;inti;personpl;studentst1;workerwol;teachertel;employeeeml;jingxjxl;voidmain()cout<<选择人员类别:;<<endl;cout<<1>普通人2、学生3、学生及成绩4、员工5、教师6、行政人员7、在职进修教师;政人Ciri;i;CoUt<<依次录入信息;<<endl;switch(i)/录入信息种类选择的实现case1:pl.getinf(p,1);cout<;&1t;*;<<endl;pl.disp(p,1);break;要有break语句否那么将执行case2case2:stl.getvalue(st,1);pl.getinf(p,1);cout<;<*;<<endl;stl.show(st,1);pl.disp(p,1);break;case3: st1.getvalue(st,1);pl.getinf(p,1);st1.getscore(st,1);cout<;<*;<<endl;st1.showl(st,1);pl.disp(p,1);break;case4: wol.getvalue(wo,1);pl.getinf(p,1);cout<;&1t;*;<<endl;wo1.show(wo,1);pl.disp(p,1);break;case5: tel.getmessage(te,1);pl.getinf(p,1);wol.getvalue(wo,1);cout<;&1t;*;<<endl;tel.showl(te,1);pl.disp(p,1);wol.show(wo,1);break;case6:eml.getmessage(em,1);pl.getinf(p,1);wo1.getvalue(wo,1);cout<;&1t;*;&1t;&1t;endl;eml.showl(em,1);pl.disp(p,1);wo1.show(wo,1);break;case7:jxl.getmessage1(jx,1);tel.getmessage(te,1);st1.getvalue(st,1);wol.getvalue(wo,1);pl.getinf(p,1);stl.getscore(st,1);cout<;<*;<<endl;jxl.show2(jx,1);pl.disp(p,1);tel.showl(te,1);wol.show(wo,1);st1.showl(st,1);break;default:CoUt<<输入错误!&qu77保存,!