西安交大C++程序设计第九章作业.doc
《西安交大C++程序设计第九章作业.doc》由会员分享,可在线阅读,更多相关《西安交大C++程序设计第九章作业.doc(24页珍藏版)》请在冰豆网上搜索。
![西安交大C++程序设计第九章作业.doc](https://file1.bdocx.com/fileroot1/2022-10/19/d7f6dc32-4a21-40cd-9f73-157662c9ae89/d7f6dc32-4a21-40cd-9f73-157662c9ae891.gif)
西安交通大学实验报告
课程__计算机程序设计__实验名称__继承__第1页共页
系别__________实验日期2014年5月日
专业班级_____组别_____________实验报告日期2014年月日
姓名_________学号__报告退发(订正、重做)
同组人_________________________________教师审批签字
一、实验目的
熟练继承的用法,进一步训练类的编程,并练习不同继承方式下对基类的成员的访问的控制。
二、实验内容
(一)第一题:
从类Person中派生出一个教师类,新增的属性有:
专业、职称和主讲课程(一门),并为这些属性定义相应的方法。
1.源程序代码:
#include
usingnamespacestd;
classPerson
{
protected:
char*Name;
charSex;
intAge;
public:
Person()
{
Name="csj";
Sex='M';
Age=18;
}
Person(char*name,charsex,intage)
{
Register(name,sex,age);
}
~Person()
{
delete[]Name;
}
voidRegister(char*name,charsex,intage)
{
intm=strlen(name);
Name=newchar[m+1];
strcpy(Name,name);
Sex=sex;;
Age=age;
}
voidprint()
{
cout<<"姓名:
"<"<"< }
};
classTeacher:
publicPerson
{
protected:
char*zhuanye;
char*zhicheng;
char*course;
public:
Teacher();
Teacher(char*,char,int,char*,char*,char*);
voidRegister(char*,char,int,char*,char*,char*);
~Teacher();
voidprint();
};
Teacher:
:
Teacher()
{
Person:
:
Register("罗先觉",'M',61);
strcpy(zhuanye,"电气工程及其自动化");
strcpy(zhicheng,"教授");
strcpy(course,"电路");
}
Teacher:
:
Teacher(char*name,charsex,intage,char*zy,char*zc,char*cor)
{
Register(name,sex,age,zy,zc,cor);
}
voidTeacher:
:
Register(char*name,charsex,intage,char*zy,char*zc,char*cor)
{
Person:
:
Register(name,sex,age);
zhuanye=newchar[strlen(zy)+1];
strcpy(zhuanye,zy);
zhicheng=newchar[strlen(zc)+1];
strcpy(zhicheng,zc);
course=newchar[strlen(cor)+1];
strcpy(course,cor);
}
Teacher:
:
~Teacher()
{
delete[]zhuanye;
delete[]zhicheng;
delete[]course;
}
voidTeacher:
:
print()
{
cout<<"姓名:
"<"<"<"<"<}
intmain()
{
Personperson;
person.Register("csj",'M',18);
person.print();
Teacherteacher("lll",'M',56,"math","jiaoshou","gaoshu");
teacher.print();
teacher.Register("某某",'M',58,"数学","教授","高等数学");
teacher.print();
return0;
}
2.实验结果:
(二)第二题:
第二题:
许多研究生既有学生的属性,又有教师的属性。
试通过多重继承说明一个研究生类。
1.源程序代码:
//许多研究生既有学生的属性,又有教师的属性。
试通过多重继承说明一个研究生类。
#include
usingnamespacestd;
classPerson
{
protected:
charName[10]; //姓名
int Age; //年龄
charSex; //性别
public:
Person()
{
strcpy(Name,"人某某");
Age=34;
Sex='m';
}
Person(char*name,intage,charsex)
{
Registerper(name,age,sex);
}
voidRegisterper(char*name,intage,charsex)//设置数据成员
{
strcpy(Name,name);
Age=age;
Sex=(sex=='m'?
'm':
'f');
}
voidprintper() //输出数据成员
{
cout<<"姓名:
"<"<"< }
};
classStudent:
publicPerson
{
protected:
charClassname[20];
charNumber[20];
charZhuanye[20];
public:
Student()
{
Registerper("学生某某",18,'f');
strcpy(Classname,"钱学森");
strcpy(Number,"2130405000");
strcpy(Zhuanye,"电气");
}
Student(char*name,intage,charsex,char*classname,char*number,char*zhuanye)
{
Registerstu(name,age,sex,classname,number,zhuanye);
}
voidRegisterstu(char*name,intage,charsex,char*classname,char*number,char*zhuanye)
{
Registerper(name,age,sex);
strcpy(Classname,classname);
strcpy(Number,number);
strcpy(Zhuanye,zhuanye);
}
voidprintstu()
{
printper();
cout<<"\t班级:
"<"<"< }
};
classTeacher:
publicPerson
{
protected:
charZhicheng[20];
charKeti[20];
charKecheng[20];
public:
Teacher()
{
Registerper("老师某某",45,'m');
strcpy(Zhicheng,"教授");
strcpy(Keti,"新型计算机开发");
strcpy(Kecheng,"计算机基础");
}
Teacher(char*name,intage,charsex,char*zhicheng,char*keti,char*kecheng)
{
Registertea(name,age,sex,zhicheng,keti,kecheng);
}
voidRegistertea(char*name,intage,charsex,char*zhicheng,char*keti,char*kecheng)
{
Registerper(name,age,sex);
strcpy(Zhicheng,zhicheng);
strcpy(Keti,keti);
strcpy(Kecheng,kecheng);
}
voidprinttea()
{
printper();
cout<<"\t职称:
"<"<"< }
};
classGraduate:
publicStudent,publicTeacher
{
public:
Graduate()
{
Registerstu("研究生某某",23,'f',"电气某班","1130506060","电气");
strcpy(Keti,"电力系统研究");
strcpy(Kecheng,"电路");
}
Graduate(char*name,intage,charsex,char*classname,char*number,char*zhuanye,char*keti,char*kecheng)
{
Registergra(name,age,sex,classname,number,zhuanye,keti,kecheng);
}
voidRegistergra(char*name,intage,charsex,char*classname,char*number,char*zhuanye,char*keti,char*kecheng)
{
Registerstu(name,age,sex,classname,number,zhuanye);
strcpy(Keti,keti);
strcpy(Zhuanye,zhuanye);
}
voidprintgra()
{
printstu();
cout<<"\t课题:
"<"< }
};
intmain()
{
Personperson;
cou