(补)第十二周实验报告(2)

来源:互联网 发布:ios版狂野飙车同步数据 编辑:程序博客网 时间:2024/05/20 21:44

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:                              
* 作    者:     王      琦                                
* 完成日期:   2012      年   5    月    7    日
* 版 本 号:          
 
* 对任务及求解方法的描述部分 : 
* 输入描述:
 
* 问题描述:(教材P394习题9)分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求: 
(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 
(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。 
(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。 
(4)在类体中声明成员函数,在类外定义成员函数。 
(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。。
* 程序输出: 
* 程序头部的注释结束

程序代码:

#include <iostream>   #include <string>   using namespace std;  class Teacher  {  public:      Teacher(string nam,int ag,char s,string add,string t,string tit);      void display();  protected:      string name;      int age;      char sex;      string addr;      string tel;      string title;  };    Teacher::Teacher(string nam,int ag,char s,string add,string t,string tit):name(nam),age(ag),sex(s),addr(add),tel(t),title(tit){}    void Teacher::display()  {      cout<<"name:"<<name<<endl;      cout<<"age:"<<age<<endl;      cout<<"sex:"<<sex<<endl;      cout<<"addr:"<<addr<<endl;      cout<<"tel:"<<tel<<endl;      cout<<"title:"<<title<<endl;  }  class Cadre  {  public :      Cadre(string nam,int ag,char s,string add,string t,string p);      void display();  protected:      string name;      int age;      char sex;      string addr;      string tel;      string post;  };  Cadre::Cadre(string nam,int ag,char s,string add,string t,string p):name(nam),age(ag),sex(s),addr(add),tel(t),post(p){}    void Cadre::display()  {      cout<<"name:"<<name<<endl;      cout<<"age:"<<age<<endl;      cout<<"sex:"<<sex<<endl;      cout<<"addr:"<<addr<<endl;      cout<<"tel:"<<tel<<endl;      cout<<"post:"<<post<<endl;  }  class Person:public Teacher,public Cadre  {  public:      Person(string nam,int ag,char s,string add,string t,string tit,string p,float w);      void show();  private:      float wage;  };  Person::Person(string nam,int ag,char s,string add,string t,string tit,string p,float w):Teacher(nam,ag,s,add,t,tit),Cadre(nam,ag,s,add,t,p),wage(w){}  void Person::show()  {      Teacher::display();      cout<<"post:"<<Cadre::post<<endl;      cout<<"wage:"<<wage<<endl;  }  void main()  {      Person p1("wang-li",23,'m',"Beijing","123456","","teacher",2500);      p1.show();      system("pause"); } 


运行结果:

name:wang-li
age:23
sex:m
addr:Beijing
tel:123456
title:
post:teacher
wage:2500
请按任意键继续. . .