C,,实验报告九
VC++程序设计实验报告
实验九题目:继承与派生 专
业
学
生
姓
名
班
级
学
号
指
导
教
师
指
导
单
位
日
期
教师评教师评语
教师签名:
年
月
日
成绩评定成绩评定
备
注
一、实验目得
1、 理解类得继承概念,能够定义与使用类得继承关系 2.掌握派生类得声明与定义方法 3、 掌握公有、私有与保护派生得访问特性 二、实验内容
1. 设计一个大学得类系统,学校有学生、老师、职员,每种人员都有自己得特性,她们之间又有相同得地方。利用继承机制定义这个系统中得各个类及类上得必须操作。
2. 假定车可分为货车、客车又可分为轿车、面包车与公共汽车。请设计相应得类层次结构并加以实现. 三、实验结果及其结果分析
1、(1)源程序:
#include <iostream、h> #include 〈string、h〉 class Person{ protected:
char m_strName[10];
;xeSn_m tniﻩ ;egAn_mﻩ tniﻩpublic:
Person(char *name,int age,char sex){
;)eman ,emaNrts_m(ypcrtsﻩ
;)
1:0?’m’==xes( =xeSn_mﻩ
m_nAge = age;
}
{)eman* rahc(emaNtes diovﻩ
strcpy(m_strName, name);
}
void setSex(int sex){
;)
1:0?'m"==xes( =xeSn_mﻩ }
{)ega tni(egAtes diovﻩ
;ega = egAn_mﻩ }
char * getName(){
;emaNrts_m nruterﻩ }ﻩ int getAge(){
return m_nAge;
}ﻩ {)(xeSteg tniﻩ
;xeSn_m nruterﻩ }
{)(eMwohS diovﻩ ;ldne<〈emaNrts_m〈<":名
姓
"<<tuocﻩﻩ dne〈<)"女”:”男”?0==xeSn_m(〈<":别
性
”<<tuocﻩ
l;
;ldne〈〈egAn_m<<”:龄
年
"〈<tuocﻩ } }; class Teacher :
public Person{
;]02[tpeDrts_m rahcﻩ int
m_fSalary; public:
tni,tped* rahc,xes rahc,ega tni,eman* rahc(rehcaeTﻩsalary) :
{)xes,ega,eman(nosrePﻩﻩ
strcpy(m_strDept, dept);
;yralas = yralaSf_mﻩ }
void ShowMe()
{
;)(eMwohS::nosrePﻩﻩ
;ldne<<tpeDrts_m<〈":位单作工
"<〈tuocﻩ
cout<<"
月
薪:"<<m_fSalary<<endl;
}ﻩ {)yralas tni(yralaStes diovﻩ
;yralas = yralaSf_mﻩ }ﻩ {)(yralaSteg tniﻩ
return m_fSalary;
} }; class Student :
public Person{
char m_strID[12];
char m_strClass[12]; public:
Student(char *name,int age,char sex,char *ID,char *Class)
:
{)xes,ega,eman(nosrePﻩ
;)DI ,DIrts_m(ypcrtsﻩ
strcpy(m_strClass, Class);
}ﻩ void ShowMe(){
;ldne<〈DIrts_m<<":号
学
"<〈tuocﻩﻩ
;)(eMwohS::nosrePﻩ
;"n\”<<ssalCrts_m〈<”:级
班
"<<tuocﻩ }
void setID(char * ID){
strcpy(m_strID, ID);
}
void setClass(char *Class){
strcpy(m_strClass, Class);
}ﻩ {)(DIteg *rahcﻩ ;DIrts_m nruterﻩﻩ }
{)(ssalCteg *rahcﻩ ;ssalCrts_m nruterﻩﻩ }ﻩ}; class Employee:public Person{
;yralaSf_m
tniﻩpublic:
)yralas tni,xes rahc,ega tni,eman* rahc(eeyolpmEﻩ
:Person(name,age,sex){
;yralas = yralaSf_mﻩ }
void setSalary(int salary){
;yralas = yralaSf_mﻩ }ﻩ int getSalary(){
;yralaSf_m nruterﻩ }ﻩ {)(eMwohS diovﻩ
Person::ShowMe();
;”n\"〈<yralaSf_m〈〈":资
工
"<〈tuocﻩ }ﻩ}; void main(){ Teacher teacher1("周明",38,"m’,”计算机系”,3800);
Student std1("王芳",20,'f',"03016003",”计算机 03");
Employee emPloyee1("李鑫",25,"f’,2000); teacher1、ShowMe();
;ldne<<”---—-----—---———----"<<tuocﻩ std1、ShowMe();
cout〈<”-—----———--—-—--———-”〈<endl;
;)(eMwohS、1eeyolPmeﻩteacher1、setAge(40);
teacher1、setSalary(4500);
;)12(egAtes、1dtsﻩ ;)62(egAtes、1eeyolPmeﻩ ;)0002(yralaStes、1eeyolPmeﻩcout<<”-—-——--—-————-—-----”<〈endl;
cout<〈”修改各类人员得属性后:"<<endl;
;)(eMwohS、1rehcaetﻩ cout<<"——-—---—-—-—-———-—--”〈〈endl;
std1、ShowMe(); cout〈<”———-—-——---—--—--——-"<<endl;
emPloyee1、ShowMe(); } (2)实验结果:
2、(1)源程序: #include<iostream、h> class vehicle
ﻩ // 定义基类 vehicle {
public:
//
员成数函有公ﻩﻩ
vehicle(int in_wheels,float in_weight); // 给数据成员初始化
int
get_wheels();
// 获取车轮数
float get_weight();
// 获取汽车重量
void setWeels(int wls);
void setWeight(float wt);
void display(){
cout〈<”车轮数:"< 〈wheels 〈<" 汽车重量:"〈<weight< 〈endl;
} private:
//
ﻩ
员成据数有私ﻩ
int wheels;
// 车轮数
float weight;
// 表示汽车承重 }; vehicle::vehicle(int in_wheels,float in_weight){
wheels = in_wheels;
;thgiew_ni = thgiewﻩ} float vehicle::get_weight(){
;thgiew nruterﻩ} int vehicle::get_wheels(){
;sleehw nruterﻩ
} void vehicle::setWeels(int wls){
wheels = wls; } void vehicle::setWeight(float wt){
;tw = thgiewﻩ} class truck:public vehicle
// 定义货车类 truck { private:
// 新增私有数据成员
float weight_load;
// 承重 public:
// 新增公有成员函数
truck(int wheel,float wt,float wl):vehicle(wheel,wt){
weight_load = wl;
}
float getLoads(){
return weight_load;
}
void display(){
vehicle::display();
;ldne〈<daol_thgiew〈<"重承车汽”<〈tuocﻩ
}
}; //车与客车,客车又可分为轿车、面包车与公共汽车 class car:public vehicle // rac 类车客义定ﻩﻩ{
int passenger_load; //
数客载示表,员成据数有私增新ﻩpublic: //
ﻩﻩ ﻩ
数函员成有公增新ﻩni(elcihev:)4=elpoep tni,thgiew_ni taolf,sleehw_ni tni(racﻩ_wheels,in_weight)
{ﻩ
passenger_load = people;
}
{)(sregnessaPteg tniﻩ ;daol_regnessap nruterﻩﻩ }ﻩ {)elpoep tni(sregnessaPtes diovﻩ
;elpoep = daol_regnessapﻩ }
{)(yalpsid diovﻩ
;)(yalpsid::elcihevﻩ
;ldne<<daol_regnessap〈<":数客载"〈<tuocﻩ }ﻩ}; void main(){
;)000001,004,8(1kcurt kcurtﻩ//
车货ﻩ car car1(4,20); //ﻩ ﻩ车客ﻩ car saloon_car(4,10,5);
// 车轿ﻩ car microbus(6,10,18); //ﻩ
车包面ﻩ ;)03,02,6(sub racﻩ//ﻩ
车汽共公ﻩﻩ // 息信关相示显ﻩ truck1、display();
;ldne<<”——---—-—--——-—--—---—"〈〈tuocﻩ ;)(yalpsid、1racﻩ cout<<"—--——-——---————--—-——"〈<endl;
;)(yalpsid、rac_noolasﻩ cout<<"—------——-----—-——---"<〈endl;
;)(yalpsid、suborcimﻩ ;ldne〈<"—-—---—---—-----—-—--”<<tuocﻩ ;)(yalpsid、subﻩ} (2)实验结果:
四、实验收获 与体会
通过本次试验,我加深了对继承与派生得进一步理解。此次实验编写了有关类得继承与派生得两道程序,我更加了解了类得继承概念.此次试验题目感觉有点难度,我自己编写得时候不就是那么顺利,总就是出错.后来在网上搜了相关得题目研究了别人得方法,在自己得程序中找出了错误,修改了相关得继承调用,最终正确地调试出了程序.