1、 f) 在职进修教师具有教师与学生的属性和行为,此外,添加进修时间,工作单位属性。 通过实现此系统,让我综合运用所学知识,掌握面向对象设计开发的基本思想和方法和C+的编程思想来完成简单的面向对象的程序设计。让我在已有的知识基础上进一步获取新知识的能力,提高分析问题、解决问题和独立完成程序设计开发的工作能力。 类的实现 编程实现上面类的设计。 主程序中的验证 创建对象,检验类的功能是否能够实现。 总结 1、遇到的困难、解决办法及收获: 各类属性的实现。 利用对象数组即方便又能固定调用哪个属性。在构造函数中定义属性类型,利用对象数组调用。 对象数组中字符串的赋值。 分配(new实现)一个char型
2、变量长度加一的字符串,再利用拷贝函数拷贝原变量并放在name里,如: name=new charstrlen(na)+1;strcpy(name,na); 因为没有给原带参构造函数的形参赋值,主函数中不能声明类的无参对象。 在定义一个无参构造函数,如: person() 在派生类带参构造函数与基类带参构造函数所带参数不同时没有对基类构造函数的参数初始化。 构造函数无法被继承,当派生类带参构造函数与基类带参构造函数所带参数不同时,要在派生类构造函数中对基类构造函数的参数进行初始化,如: worker(int num,char *v,int p,char *na,int a,char *s,cha
3、r *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; cout姓名:pn.nameendl; switch语句总执行完一个case后还继续执行。 加入break语句跳出switch语句。 2、
4、程序中还需要改进的地方。 姓名,年龄,地址等属性限制的实现。 附件:源程序#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)/对象数组 strcpy(name,na); age=a; sex=new charstrlen(s)+1; strcpy(sex,s); addre
5、ss=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)+1;/分配na1长度+1的字符串 strcpy(pn.name,na1);/拷贝字符串 coutendl; cout年龄: char s12; cout性别:(n:男,w:女); cins1; p
6、n+2.sex=new charstrlen(s1)+1; strcpy(pn+2.sex,s1); char ad1128; cout地址: cinad1; pn+3.address=new charstrlen(ad1)+1; strcpy(pn+3.address,ad1); virtual void disp(person p,int n)/有参虚函数,对象数组输出的事现 cout年龄:pn+1.ageendl; cout性别:pn+2.sexendl; cout地址:pn+3.addressendl;class student:public virtual person int nu
7、mber; int mathscore,cscore; float average; student(int nu,int ms,int cs,float av,char *na,int a,char *s,char *ad,char *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.
8、number; void getscore(student st,int i) cout数学成绩: cinsti.mathscore; coutC+成绩: cinsti.cscore; float getaverage(student st,int i)/平均分的实现 void show(student st,int i)sti.numberendl; virtual void show1(student st,int i) sti.show(st,i);sti.mathscoreendl;sti.cscoreendl; sti.getaverage(st,i); cout平均成绩:sti.a
9、verageendl;class worker: float pay; char *value;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) cout职工号: cinwi.number; char v1128; cout职称: cinv1; wi.value=new charstrlen(v1)+1; strcpy(wi.value,v1); cout工资: cinwi.pay; void show
10、(worker w,int i)wi.numberendl; cout职称:wi.valueendl;wi.payendl;class teacher:public virtual worker,public virtual person char *kemu; int chengji; char *office; 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,
11、l) office=new charstrlen(of)+1; strcpy(office,of); kemu=new charstrlen(ke)+1; strcpy(kemu,ke); chengji=ch; teacher() void getmessage(teacher t,int i) char of1128; cout教研室: cinof1; ti.office=new charstrlen(of1)+1; strcpy(ti.office,of1); char ke1128; cout科目: cinke1; ti.kemu=new charstrlen(ke1)+1; strc
12、py(ti.kemu,ke1); cout成绩: cinti.chengji; void show1(teacher t,int i) cout教研室:ti.officeendl; cout科目:ti.kemuendl;ti.chengjiendl;class employee:private: employee(char *of,int num,char *v,int p,char *na,int a,char *s,char *ad,char *l): employee()void getmessage(employee e,int i) ei.office=new charstrlen(
13、of1)+1; strcpy(ei.office,of1); void show1(employee e,int i)ei.officeendl;class jingx:public virtual student,public virtual teacher,public virtual worker,public virtual person int time; char *danwei; 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,ch
14、ar *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,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; char da1128; cout单位属性:
15、cinda1; ji.danwei=new charstrlen(da1)+1; strcpy(ji.danwei,da1); void show2(jingx j,int i) ji.timeendl; 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请
16、依次录入信息endl; switch(i)/录入信息种类选择的实现 case 1: p1.getinf(p,1); cout*endl; p1.disp(p,1); break;/要有break语句否则将执行case2 case 2: st1.getvalue(st,1); st1.show(st,1); case 3: st1.getscore(st,1); st1.show1(st,1); case 4: wo1.getvalue(wo,1); wo1.show(wo,1); case 5: te1.getmessage(te,1); te1.show1(te,1); case 6: em
17、1.getmessage(em,1); em1.show1(em,1); case 7: jx1.getmessage1(jx,1); jx1.show2(jx,1); default : cout输入错误!实训总结报告1开头总结的开头主要用来概述基本情况。包括单位名称、工作性质、主要任务、时代背景、指导思想,以及总结目的、主要内容提示等。2主体这是总结的主要部分,内容包括成绩和做法、经验和教训、今后打算等方面。这部分篇幅大、内容多,要特别注意层次分明、条理清楚。2.1 主体常见结构 主体部分常见的结构形态有三种。要根据实际需要选择好。第一,纵式结构。就是按照事物或实践活动的过程安排内容。第二,横式结构。按事实性质和规律的不同分门别类地依次展开内容,使各层之间呈现相互并列的态势。第三,纵横式结构。安排内容时,即考虑到时间的先后顺序,体现事物的发展过程,又注意内容的逻辑联系,从几个方面总结出经验教训。2.2 主体常见内容(1)工作回顾。要详细地叙述工作任务、完成的步骤、采取的措施和取得的成效、存在的问题。(2)经验教训。应从工作回顾中很自然地归纳提炼出采。结尾结语部分。主要写明的打算,也只需写很短的一段话。写得长了,反而冲淡了主题。总结正文写完以后,应该在正文的右下方(指横行文字),写上总结单位的名称和总结的年月日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1