1. 程式人生 > >第十一週專案4——教師兼幹部類

第十一週專案4——教師兼幹部類

問題及程式碼:

/* 
 * Copyright (c) 2016,煙臺大學計算機與控制工程學院 
 * All rights reserved. 
 * 檔名稱:main.cpp 
 * 作    者:趙志君 
 * 完成日期:2016年5月15日 
 * 版 本 號:v1.0 
 * 
 * 問題描述:分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)。
 *           要求: 
 *          (1)在兩個基類中都包含姓名、年齡、性別、地址、電話等資料成員。 
 *          (2)在Teacher類中還包含資料成員title(職稱),在Cadre類中還包含資料成員post(職務),在Teacher_Cadre類中還包含資料成員wages(工資)。 
 *          (3)對兩個基類中的姓名、年齡、性別、地址、電話等資料成員用相同的名字,在引用這些資料成員時,指定作用域。 
 *          (4)在類體中宣告成員函式,在類外定義成員函式。 
 *          (5)在派生類Teacher_Cadre的成員函式show中呼叫Teacher類中的display函式,輸出姓名、年齡、性別、職稱、地址、電話,然後再用cout語句輸出職務與工資。
 */ 
#include <iostream>

using namespace std;

class Teacher
{
public:
    Teacher(string nam,int a,string s,string add,string t,string tit);
    void display();
private:
    string name;
    int age;
    string sex;
    string addr;
    string tel;
    string title;
};
Teacher::Teacher(string nam,int a,string s,string add,string t,string tit):
    name(nam),age(a),sex(s),addr(add),tel(t),title(tit){}
void Teacher::display()
{
    cout<<"姓名:"<<name<<endl<<"年齡:"<<age<<endl;
    cout<<"性別:"<<sex<<endl<<"住址:"<<addr<<endl;
    cout<<"電話:"<<tel<<endl<<"職稱:"<<title<<endl;
}
class Cadre
{
public:
    Cadre(string nam,int a,string s,string add,string t,string p);
    void display();
    string getPost(){return post;};
private:
    string name;
    int age;
    string sex;
    string addr;
    string tel;
    string post;
};
Cadre::Cadre(string nam,int a,string s,string add,string t,string p):
    name(nam),age(a),sex(s),addr(add),tel(t),post(p){}
void Cadre::display()
{
    cout<<"姓名:"<<name<<endl<<"年齡:"<<age<<endl;
    cout<<"性別:"<<sex<<endl<<"住址:"<<addr<<endl;
    cout<<"電話:"<<tel<<endl<<"職務:"<<post<<endl;
}
class Teacher_Cadre:public Teacher,Cadre
{
public:
    Teacher_Cadre(string nam,int a,string s,string add,string t,string p,string tit,int w);
    void show();
private:
    int wages;
};
Teacher_Cadre::Teacher_Cadre(string nam,int a,string s,string add,string t,string p,string tit,int w):
    Teacher(nam,a,s,add,t,tit),Cadre(nam,a,s,add,t,p),wages(w){}
void Teacher_Cadre::show()
{
    Teacher::display();
    cout<<"職務:"<<getPost()<<endl;
    cout<<"工資:"<<wages<<endl;
}
int main()
{
    Teacher_Cadre t("zhangsan",35,"G","BeiJing","13666666666","科長","高階",6666);
    t.show();
    return 0;
}

執行結果: