1. 程式人生 > >第十二週實驗指導--任務2--分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)...

第十二週實驗指導--任務2--分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)...

/* (程式頭部註釋開始)
* 程式的版權和版本宣告部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 檔名稱:分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)

* 作 者: 雷恆鑫
* 完成日期: 2012 年 04 月 29 日
* 版 本 號: V1.0
* 對任務及求解方法的描述部分
* 輸入描述:1)在兩個基類中都包含姓名、年齡、性別、地址、電話等資料成員。

(2)在Teacher類中還包含資料成員title(職稱),在Cadre類中還包 含資料成員post(職務),在Teacher_Cadre類中還包含 資料成員 wages(工資)。

(3)對兩個基類中的姓名、年齡、性別、地址、電話 等資料成員用相同的名字,在引用這些資料成員時,指定作用域。

(4)在類體中宣告成員函式,在類外定義成員函式。

(5)在派生類Teacher_Cadre的成員函式show中呼叫Teacher類中的display函式,輸出姓名、年齡、性別、職稱、地址、電話,然後再用 cout語句輸出職務與工資。

* 問題描述:
* 程式輸出:

* 程式頭部的註釋結束

*/

#include<iostream>   
#include<string>
#include <iomanip>
using namespace std;

class Teacher
{
public: 
	Teacher(string nam,int Age,int Sex,char *Department, int phone,string title1);
	~Teacher( );
	void display();
protected: 
	string name;
	int m_nAge;  
	int m_nSex;//0:women,1:man  
	char *m_szDepartment;  
	int m_phone; 
	string title;
};
Teacher::Teacher(string nam,int Age,int Sex,char *Department,int phone,string title1)
{
	name=nam;
	m_nAge=Age;
	m_nSex=Sex;
	int i;
	m_szDepartment=new char[30];
	for(i=0;i<30;++i)
    m_szDepartment[i]=*(Department+i);  //此處的處理是個重點,處理不好,會在程式中植入非常嚴重且隱蔽性極強的"定時"  
    //strcpy(m_szDepartment,Department);  
	m_phone=phone;
	title=title1;
}

Teacher::~Teacher()  
{  
    delete [] m_szDepartment;   
}  
void Teacher::display()
{
	cout << setiosflags(ios :: left) << setw(5)  <<name<< setw(5) <<m_nAge << setw(5)<<((m_nSex==0)?"women":"man")<<setw(8)<<m_szDepartment<<setw(5)<<title<<setw(5)<<m_phone;  
}  
class Cadre
{
public: 
	Cadre(string nam,int Age,int Sex,char *Department,int phone,string post1) ;
	~Cadre( ); 
protected: 
	string name;
	int m_nAge;  
	int m_nSex;//0:women,1:man  
	char *m_szDepartment;  
	int m_phone; 
	string post;
};
Cadre::Cadre(string nam,int Age,int Sex,char *Department,int phone,string post1)
{
	name=nam;
	m_nAge=Age;
	m_nSex=Sex;
	int i;
	m_szDepartment=new char[30];
	for(i=0;i<30;++i)
    m_szDepartment[i]=*(Department+i);   
	m_phone=phone; 
	post=post1;
}
Cadre::~Cadre()  
{  
    delete [] m_szDepartment;    
}    
class Teacher_Cadre:public Teacher,public Cadre
{
public: 
	Teacher_Cadre(string nam,int Age,int Sex,char *Department,int phone,string title1,string post1,float wages1) ;
	//~Teacher_Cadre( ); 
	void show();
	friend ostream & operator<<(ostream &,const Teacher_Cadre &);//過載運算子"<<" 
protected: 
	/*string name;
	int m_nAge;  
	int m_nSex;//0:women,1:man  
	char *m_szDepartment;  
	int m_phone; */
	float wages;
};
Teacher_Cadre::Teacher_Cadre(string nam,int Age,int Sex,char *Department,int phone,string title1,string post1,float wages1):Teacher(nam,Age,Sex,Department,phone,title1),Cadre(nam,Age,Sex,Department,phone,post1),wages(wages1){}
/*Teacher_Cadre::~Teacher_Cadre()  
{  
    delete [] m_szDepartment;   
}*/
void Teacher_Cadre::show()
{
	display();
}
ostream & operator<<(ostream &output,const Teacher_Cadre &p)  
{  
	output<<"    工資為:";
    output<<setw(5)<<p.wages<<"  ";  
	output<<"職務為:";
    output<<p.title<<endl;  
    return output;  
}

int main( )
{
    string name,title1,post1;
	char department[10]; 
	int sex,age;
    int phone;  
    float wages;  
	cout<<"input Teacher_Cadre's name,Age,sex(0:women,1:man),department,phone,title,post,wages:\n";  
    cin>>name>>age>>sex>>department>>phone>>title1>>post1>>wages;  
    Teacher_Cadre Teacher_Cadre1(name,age,sex,department,phone,title1,post1,wages);  
    Teacher_Cadre1.show(); 
	cout<<Teacher_Cadre1;
	system("PAUSE");
	return 0;
}

執行結果:


相關推薦

實驗指導--任務2--分別定義Teacher(教師)Cadre幹部採用多重繼承方式派生出新Teacher_Cadre教師幹部

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生  * All rights reserved. * 檔名稱:分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派

實驗指導--任務2--分別定義Teacher(教師)Cadre幹部採用多重繼承方式派生出新Teacher_Cadre教師幹部...

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱:分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出

請賀老師幫我看看這個亂碼問題【任務2分別定義Teacher(教師)Cadre幹部採用多重繼承方式派生出新Teacher_Cadre

【任務2】(教材P394習題9)分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)。要求: (1)在兩個基類中都包含姓名、年齡、性別、地址、電話等資料成員。 (2)在Teacher類中還包

任務 分別定義Teacher(教師)Cadre幹部採用多重繼承方式派生出Teacher_Cadre

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱:第十二週任務二 分別定義Teacher(教師)類和Cadre(幹部)類, 採用多重繼承方

在程式中定義一個基Person這個基派生出Teacher教師Leader(領導)採用繼承方式派生出Teacher_Leader。並且滿足以下要求:

#include using namespace std; #include #include class Person { public: Person(char* name, int age, char *gender, char * address, long phone); void show(v

專案3 - 圖遍歷演算法實現2

/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年11月23日 * 版本號:VC6.0 * 問題描述:廣度優先遍歷——BFS * 輸入描述:無 * 程式輸出:圖的

201711671203《Java程式設計》學習報告2

上一份學習報告寫完之後,拖了兩天緩了緩。 -------------------------------------------------------------------------------------------------------------------------------

Java實驗作業

實驗十一   集合 實驗時間 2018-11-8 1、實驗目的與要求 (1) 掌握Vetor、Stack、Hashtable三個類的用途及常用API; Vector類類似長度可變的陣列,其中只能存放物件,其中的元素通過下標進行訪問。 Vetor類關鍵

201771010135 楊蓉慶《面對物件程式設計java學習總結

1、實驗目的與要求 (1) 掌握Java GUI中框架建立及屬性設定中常用類的API; (2) 掌握Java GUI中2D圖形繪製常用類的API; (3) 瞭解Java GUI中2D圖形中字型與顏色的設定方法; (4) 瞭解Java

徐思201771010132《面向物件程式設計Java學習總結

一、理論知識部分 Java的抽象視窗工具箱(Abstract Window Toolkit, AWT)包含在java.awt包中,它提供了許多用來設計GUI的元件類和容器類。 大部分AWT元件都有其Swing的等價元件,Swing元件的名字一般是在AWT元件名前面新增一個字母“J”。 通常把由Compo

王穎奇 20171010129《面向物件程式設計java學習總結

實驗十二  圖形程式設計 理論: 10.1 AWT與Swing簡介 10.2 框架的建立10.3 圖形程式設計10.4 顯示影象 (具體學習總結在最後) 實驗: 實驗時間 2018-11-14 1、實驗目的與要求 (1) 掌握Java GUI中

專案3 - 圖遍歷演算法實現1

/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年11月23日 * 版本號:VC6.0 * 問題描述:實現圖遍歷演算法,輸出圖結構的深度優先(DFS)遍歷序列

專案2 - 操作用鄰接表儲存的圖

/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年11月20日 * 版本號:VC6.0 * 問題描述:操作用鄰接表儲存的圖 * 輸入描述:無 * 程式輸出:(1)

201771010125王瑜《面向物件程式設計Java學習總結

                            第十二週學習總結 一 . 理論部分 1.概述:使用者介面,使用者與計算機系統(各種程式)互動的介面            圖形使用者介面,

201772020113李清華《面向物件程式設計java學習總結

1、實驗目的與要求 (1) 掌握Java GUI中框架建立及屬性設定中常用類的API; (2) 掌握Java GUI中2D圖形繪製常用類的API; (3) 瞭解Java GUI中2D圖形中字型與顏色的設定方法; (4) 瞭解Java GUI中2D影象的載入方法。 2、實驗內容和步驟 實驗1: 匯入

201771010109 焦旭超《面向物件程式設計java學習總結

1、實驗目的與要求 (1) 掌握Java GUI中框架建立及屬性設定中常用類的API; (2) 掌握Java GUI中2D圖形繪製常用類的API; (3) 瞭解Java GUI中2D圖形中字型與顏色的設定方法; (4) 瞭解Java GUI中2D影象的載入方法。 2、實驗內容和步驟 實驗

201771010110孔維瀅《面向物件程式設計java學習總結

理論知識部分 1.Java的抽象視窗工具箱(AbstractWindow Toolkit,AWT)包含在java.awt包中,它提供了許 多用來設計GUI的元件類和容器類。 2.Swing使用者介面庫是非基於對等體的GUI工具箱。Swing類庫被放在javax.swing包裡。 3.大部分AWT元件都有

201771010112羅鬆《面向物件程式設計java學習總結

一、實驗目的與要求 (1) 掌握Java GUI中框架建立及屬性設定中常用類的API; (2) 掌握Java GUI中2D圖形繪製常用類的API; (3) 瞭解Java GUI中2D圖形中字型與顏色的設定方法; (4) 瞭解Java

201771010128王玉蘭《面向物件程式設計Java學習總結

第一部分:理論知識 1.AWT與Swing簡介 (1)Swing使用者介面庫是非基於對等體的GUI工具箱。 Swing具有更豐富並且更方便的使用者介面元素集合。 Swing對底層平臺的依賴很少,因此與平臺相關的bug很少。 Swing會帶來交叉平臺上的統一視覺體驗。 Swing類庫被放在javax

李曉菁201771010114《面向物件程式設計java學習總結

一:理論部分 1.(1) 使用者介面(User Interface)使用者與計算機系統(各種程式)互動的介面 (2)圖形使用者介面(Graphical User Interface)以圖形方式呈現的使用者介面 2.AWT:Java 的抽象視窗工具箱( Abstract WindowToolkit, AW