实训总结报告doc.docx
- 文档编号:5779527
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:13
- 大小:18.54KB
实训总结报告doc.docx
《实训总结报告doc.docx》由会员分享,可在线阅读,更多相关《实训总结报告doc.docx(13页珍藏版)》请在冰豆网上搜索。
实训总结报告doc
实训总结报告
实训总结报告----《面向对象程序设计》
实训的目的与系统概述
1、目的:
(1)掌握面向对象设计开发的基本思想和方法,培养学生在已有的知识基础上进一步获取新知识的能力,提高分析问题和解决问题的能力。
(2)进一步巩固《面向对象程序设计》课程中所学到的知识,熟练掌握C++语言程序设计,加强对VC++编程环境的使用能力,掌握VC++编程环境中的调试功能,增强实际编程能力。
(3)培养和提高逻辑思维、抽象思维和统筹规划能力,培养独立完成程序设计开发的工作能力。
为今后从事专业性软件开发工作打下基础。
2、功能通过将不同类型的人员设计成相应的类,完成的学校人员的管理。
3、系统概述
学校的人员包括学生、职工;职工又分为教师和行政人员;在职进修教师又具备学生和教师的属性和行为。
a)人员具有姓名、年龄、性别、地址和人员类别等属性,有显示属性的功能和设置属性的功能。
b)学生具有人员的属性和行为,此外,添加学号、成绩属性。
具有的行为有:
设置属性的函数:
让用户能够通过键盘的输入设置除了成绩之外的基本属性;录入成绩:
输入学生的各门成绩;显示:
显示基本属性和他的平均成绩。
c)职工具有人员的属性和行为,此外,添加职工号、职称和工资属性。
d)教师具有职工的属性和行为,此外,添加教研室、教授的课程属性。
具有的行为有:
设置属性的函数:
让用户能够通过键盘的输入设置除了课程信息之外的基本属性;录入课程:
输入教师所教的各门成绩;显示:
显示基本属性。
e)行政人员具有职工的属性和行为,此外,添加办公室属性。
f)在职进修教师具有教师与学生的属性和行为,此外,添加进修时间,工作单位属性。
通过实现此系统,让我综合运用所学知识,掌握面向对象设计开发的基本思想和方法和C++的编程思想来完成简单的面向对象的程序设计。
让我在已有的知识基础上进一步获取新知识的能力,提高分析问题、解决问题和独立完成程序设计开发的工作能力。
为今后从事专业性软件开发工作打下基础。
类的实现
编程实现上面类的设计。
主程序中的验证
创建对象,检验类的功能是否能够实现。
总结
1、遇到的困难、解决办法及收获:
①各类属性的实现。
利用对象数组即方便又能固定调用哪个属性。
在构造函数中定义属性类型,利用对象数组调用。
②对象数组中字符串的赋值。
分配(new实现)一个char型变量长度加一的字符串,再利用拷贝函数拷贝原变量并放在name里,如:
name=newchar[strlen(na)+1];strcpy(name,na);
③因为没有给原带参构造函数的形参赋值,主函数中不能声明类的无参对象。
在定义一个无参构造函数,如:
person(){}
④在派生类带参构造函数与基类带参构造函数所带参数不同时没有对基类构造函数的参数初始化。
构造函数无法被继承,当派生类带参构造函数与基类带参构造函数所带参数不同时,要在派生类构造函数中对基类构造函数的参数进行初始化,如:
worker(intnum,char*v,intp,char*na,inta,char*s,char*ad,char*l):
person(na,a,s,ad,l){}
⑤平均分的实现。
利用对象数组正确调用分数属性再利用返回值为float的成员函数实现平均分,如:
floatgetaverage(studentst[],inti){
inta=st[i].mathscore;
intb=st[i].cscore;
returnst[i].average=(a+b)/2;}
⑥正确输入和调用属性。
利用p[n].属性名实现属性的各种行为,如:
cinp[n+1].age;
cout姓名:
p[n].nameendl;
⑦switch语句总执行完一个case后还继续执行。
加入break语句跳出switch语句。
2、程序中还需要改进的地方。
姓名,年龄,地址等属性限制的实现。
附件:
源程序
#includeiostream.h
#includestring
usingnamespacestd;
classperson{
protected:
char*name;
intage;
char*sex;
char*address;
char*lb;
public:
person(char*na,inta,char*s,char*ad,char*l){//对象数组
name=newchar[strlen(na)+1];
strcpy(name,na);
age=a;
sex=newchar[strlen(s)+1];
strcpy(sex,s);
address=newchar[strlen(ad)+1];
strcpy(address,ad);
lb=newchar[strlen(l)+1];
strcpy(lb,l);}
person(){}//无参构造函数,方便声明无参对象
virtualvoidgetinf(personp[],intn){
charna1[128];
cout姓名:
;
cinna1;
p[n].name=newchar[strlen(na1)+1];//分配na1长度+1的字符串
strcpy(p[n].name,na1);//拷贝字符串
coutendl;
cout年龄:
;
cinp[n+1].age;
coutendl;
chars1[2];
cout性别:
(n:
男,w:
女);
cins1;
p[n+2].sex=newchar[strlen(s1)+1];
strcpy(p[n+2].sex,s1);
coutendl;
charad1[128];
cout地址:
;
cinad1;
p[n+3].address=newchar[strlen(ad1)+1];
strcpy(p[n+3].address,ad1);
coutendl;
}
virtualvoiddisp(personp[],intn){//有参虚函数,对象数组输出的事现
cout姓名:
p[n].nameendl;
cout年龄:
p[n+1].ageendl;
cout性别:
p[n+2].sexendl;
cout地址:
p[n+3].addressendl;}
};
classstudent:
publicvirtualperson
{
protected:
intnumber;
intmathscore,cscore;
floataverage;
public:
student(intnu,intms,intcs,floatav,char*na,inta,char*s,char*ad,char*l):
person(na,a,s,ad,l){//构造函数无法被继承,在派生类构造函数带参数与基类构造函数所带参数不同时要先对基类构造函数初始化
number=nu;mathscore=ms;cscore=cs;average=av;}
student(){}
virtualvoidgetvalue(studentst[],inti){
cout学号:
;
cinst[i].number;
coutendl;}
voidgetscore(studentst[],inti){
cout数学成绩:
;
cinst[i].mathscore;
coutendl;
coutC++成绩:
;
cinst[i].cscore;
coutendl;}
floatgetaverage(studentst[],inti){//平均分的实现
inta=st[i].mathscore;
intb=st[i].cscore;
returnst[i].average=(a+b)/2;}
voidshow(studentst[],inti){
cout学号:
st[i].numberendl;
}
virtualvoidshow1(studentst[],inti){
st[i].show(st,i);
cout数学成绩:
st[i].mathscoreendl;
coutC++成绩:
st[i].cscoreendl;
st[i].getaverage(st,i);
cout平均成绩:
st[i].averageendl;
}
};
classworker:
publicvirtualperson
{
protected:
intnumber;
floatpay;
char*value;
public:
worker(intnum,char*v,intp,char*na,inta,char*s,char*ad,char*l):
person(na,a,s,ad,l){
number=num;
value=newchar[strlen(v)+1];
strcpy(value,v);
pay=p;}
worker(){}
voidgetvalue(workerw[],inti){
cout职工号:
;
cinw[i].number;
coutendl;
charv1[128];
cout职称:
;
cinv1;
w[i].value=newchar[strlen(v1)+1];
strcpy(w[i].value,v1);
coutendl;
cout工资:
;
cinw[i].pay;
coutendl;
}
voidshow(workerw[],inti){
cout职工号:
w[i].numberendl;
cout职称:
w[i].valueendl;
cout工资:
w[i].payendl;
}
};
classteacher:
publicvirtualworker,publicvirtualperson{
protected:
char*kemu;
intchengji;
char*office;
public:
teacher(char*of,char*ke,intch,intnum,char*v,intp,char*na,inta,char*s,char*ad,char*l):
worker(num,v,p,na,a,s,ad,l),person(na,a,s,ad,l){
office=newchar[strlen(of)+1];
strcpy(office,of);
kemu=newchar[strlen(ke)+1];
strcpy(kemu,ke);
chengji=ch;}
teacher(){}
voidgetmessage(teachert[],inti){
charof1[128];
cout教研室:
;
cinof1;
t[i].office=newchar[strlen(of1)+1];
strcpy(t[i].office,of1);
coutendl;
charke1[128];
cout科目:
;
cinke1;
t[i].kemu=newchar[strlen(ke1)+1];
strcpy(t[i].kemu,ke1);
coutendl;
cout成绩:
;
cint[i].chengji;
coutendl;
}
voidshow1(teachert[],inti){
cout教研室:
t[i].officeendl;
cout科目:
t[i].kemuendl;
cout成绩:
t[i].chengjiendl;
}
};
classemployee:
publicvirtualworker,publicvirtualperson{
private:
char*office;
public:
employee(char*of,intnum,char*v,intp,char*na,inta,char*s,char*ad,char*l):
worker(num,v,p,na,a,s,ad,l),person(na,a,s,ad,l){
office=newchar[strlen(of)+1];
strcpy(office,of);
}
employee(){}
voidgetmessage(employeee[],inti){
charof1[128];
cout教研室:
;
cinof1;
e[i].office=newchar[strlen(of1)+1];
strcpy(e[i].office,of1);
coutendl;
}
voidshow1(employeee[],inti){
cout教研室:
e[i].officeendl;
}
};
classjingx:
publicvirtualstudent,publicvirtualteacher,publicvirtualworker,publicvirtualperson{
private:
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*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=newchar[strlen(da)+1];
strcpy(danwei,da);}
jingx(){}
voidgetmessage1(jingxj[],inti){
cout进修时间:
;
cinj[i].time;
coutendl;
charda1[128];
cout单位属性:
;
cinda1;
j[i].danwei=newchar[strlen(da1)+1];
strcpy(j[i].danwei,da1);
coutendl;
}
voidshow2(jingxj[],inti){
cout进修时间:
j[i].timeendl;
cout单位属性:
j[i].danweiendl;
}
};
inti;
personp[1];studentst[1];workerwo[1];teacherte[1];employeeem[1];jingxjx[1];
voidmain(){
cout请选择人员类别:
endl;
cout1、普通人2、学生3、学生及成绩4、员工5、教师6、行政人员7、在职进修教师endl;
cini;
cout请依次录入信息endl;
switch(i){//录入信息种类选择的实现
case1:
{
p[1].getinf(p,1);
cout*************************************endl;
p[1].disp(p,1);
break;}//要有break语句否则将执行case2
case2:
{
st[1].getvalue(st,1);
p[1].getinf(p,1);
cout*************************************endl;
st[1].show(st,1);
p[1].disp(p,1);
break;}
case3:
{
st[1].getvalue(st,1);
p[1].getinf(p,1);
st[1].getscore(st,1);
cout*************************************endl;
st[1].show1(st,1);
p[1].disp(p,1);
break;}
case4:
{
wo[1].getvalue(wo,1);
p[1].getinf(p,1);
cout*************************************endl;
wo[1].show(wo,1);
p[1].disp(p,1);
break;}
case5:
{
te[1].getmessage(te,1);
p[1].getinf(p,1);
wo[1].getvalue(wo,1);
cout*************************************endl;
te[1].show1(te,1);
p[1].disp(p,1);
wo[1].show(wo,1);
break;}
case6:
{
em[1].getmessage(em,1);
p[1].getinf(p,1);
wo[1].getvalue(wo,1);
cout*************************************endl;
em[1].show1(em,1);
p[1].disp(p,1);
wo[1].show(wo,1);
break;}
case7:
{
jx[1].getmessage1(jx,1);
te[1].getmessage(te,1);
st[1].getvalue(st,1);
wo[1].getvalue(wo,1);
p[1].getinf(p,1);
st[1].getscore(st,1);
cout*************************************endl;
jx[1].show2(jx,1);
p[1].disp(p,1);
te[1].show1(te,1);
wo[1].show(wo,1);
st[1].show1(st,1);
break;}
default:
cout输入错误!
endl;
}
}
《实训总结报告》
1.开头
总结的开头主要用来概述基本情况。
包括单位名称、工作性质、主要
任务、时代背景、指导思想,以及总结目的、主要内容提示等。
2.主体
这是总结的主要部分,内容包括成绩和做法、经验和教训、今后打算
等方面。
这部分篇幅大、内容多,要特别注意层次分明、条理清楚。
2.1主体常见结构
主体部分常见的结构形态有三种。
要根据实际需要选择好。
第一,纵式结构。
就是按照事物或实践活动的过程安排内容。
第二,横式结构。
按事实性质和规律的不同分门别类地依次展开内容,
使各层之间呈现相互并列的态势。
第三,纵横式结构。
安排内容时,即考虑到时间的先后顺序,体现事
物的发展过程,又注意内容的逻辑联系,从几个方面总结出经验教训。
2.2主体常见内容
(1)工作回顾。
要详细地叙述工作任务、完成的步骤、采取的措施和取得的成效、存在的问题。
(2)经验教训。
应从工作回顾中很自然地归纳提炼出采。
结尾
结语部分。
主要写明的打算,也只需写很短的一段话。
写得长了,反而冲淡了主题。
总结正文写完以后,应该在正文的右下方(指横行文字),写上总结单位的名称和总结的年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 总结报告 doc