实训总结报告Word格式.docx
《实训总结报告Word格式.docx》由会员分享,可在线阅读,更多相关《实训总结报告Word格式.docx(7页珍藏版)》请在冰豆网上搜索。
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].属性名实现属性的各种行为,如:
cin>
>
p[n+1].age;
cout ⑦switch语句总执行完一个case后还继续执行。
加入break语句跳出switch语句。
2、程序中还需要改进的地方。
姓名,年龄,地址等属性限制的实现。
附件:
源程序
#include
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>
na1;
p[n].name=newchar[strlen(na1)+1];
//分配na1长度+1的字符串
strcpy(p[n].name,na1);
//拷贝字符串
s1;
p[n+2].sex=newchar[strlen(s1)+1];
strcpy(p[n+2].sex,s1);
ad1;
p[n+3].address=newchar[strlen(ad1)+1];
strcpy(p[n+3].address,ad1);
st[i].number;
st[i].mathscore;
st[i].cscore;
w[i].number;
v1;
w[i].value=newchar[strlen(v1)+1];
strcpy(w[i].value,v1);
w[i].pay;
of1;
t[i].office=newchar[strlen(of1)+1];
strcpy(t[i].office,of1);
ke1;
t[i].kemu=newchar[strlen(ke1)+1];
strcpy(t[i].kemu,ke1);
t[i].chengji;
e[i].office=newchar[strlen(of1)+1];
strcpy(e[i].office,of1);
j[i].time;
da1;
j[i].danwei=newchar[strlen(da1)+1];
strcpy(j[i].danwei,da1);
i;
cout<
<
"
请依次录入信息"
endl;
switch(i){//录入信息种类选择的实现
case1:
{
p[1].getinf(p,1);
*************************************"
p[1].disp(p,1);
break;
}//要有break语句否则将执行case2
case2:
st[1].getvalue(st,1);
st[1].show(st,1);
case3:
st[1].getscore(st,1);
st[1].show1(st,1);
case4:
wo[1].getvalue(wo,1);
wo[1].show(wo,1);
case5:
te[1].getmessage(te,1);
te[1].show1(te,1);
case6:
em[1].getmessage(em,1);
em[1].show1(em,1);
case7:
jx[1].getmessage1(jx,1);
jx[1].show2(jx,1);
default:
输入错误!