實驗三多態(tài)性實驗報告.doc_第1頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

浙江理工大學信息學院 實驗指導書 實驗名稱:類的多態(tài)性的實現(xiàn) 學時安排:3 實驗類別:設(shè)計性實驗 實驗要求:1 人 1 組 學號: 姓名: 一、實驗目的 1.理解重載運算符的意義。 2.掌握使用成員函數(shù)、友員函數(shù)重載運算符的特點。 3.掌握重載運算符函數(shù)的調(diào)用方法。 4.掌握動態(tài)聯(lián)編的概念。 5.掌握虛函數(shù)和純虛函數(shù)的使用方法。 二、實驗原理介紹 設(shè)計性實驗 具體原理請見實驗內(nèi)容和步驟 實現(xiàn)對抽象類的繼承,通過 operator 函數(shù)調(diào)用的形式,實現(xiàn)運算符的重載 三、實驗設(shè)備介紹 軟件需求: windows 或 linux 下的 c+編譯器 硬件需求: 對于硬件方面的要求,建議配置是 Pentium III 450 以上的 CPU 處理器,64MB 以上的內(nèi)存,200MB 的自由硬盤空間、CD-ROM 驅(qū)動器、能支 持 24 位真彩色的顯示卡、彩色顯示器、打印機。 四、實驗內(nèi)容 某公司的員工有經(jīng)理 Manager、技術(shù)人員 Technicist 和營銷人員 SalsePerson,他們的薪金計算方法如下: 經(jīng)理按月計酬,方法是:基本工資+獎金;技術(shù)人員按月計酬,方法是:基 本工資;營銷人員按月計酬,方法是:基本工資+銷售利潤*5%。 每類人員都有職工編號、姓名、性別、入職時間、職位、基本工資等數(shù)據(jù); 各類人員使用統(tǒng)一接口 get_pay()計算各類人員的月薪,重載 int main() coutmonth; Report re; re.insert(new Technicist(“0001“,“王華“,“男“,CDate(2,4,2011),“技術(shù) “,9000); re.insert(new Technicist(“0002“,“李明“,“女“,CDate(4,10,2009),“技 術(shù)“,10000); map bonus; bonus1 = 1000; bonus2 = 2000; bonus3 = 3000; re.insert(new Manager(“0003“,“朱黎明“,“男“,CDate(11,8,2001),“經(jīng)理 “,12000,bonus); bonus1 = 500; bonus2 = 1500; bonus3 = 2000; re.insert(new Manager(“0004“,“劉改云“,“男“,CDate(8,7,2003),“經(jīng)理 “,10000,bonus); map sales; sales1 = 200000; sales2 = 100000; sales3 = 500000; re.insert(new SalesPerson(“0005“,“李志武“,“男“,CDate(10,11,2007), “銷售“,5000,sales); re.print(month); return 0; /class.h #ifndef CLASS_H_INCLUDED #define CLASS_H_INCLUDED #include #include #include #include #include #include #include“date.h“ using namespace std; class Employee protected: string name; string ID; string sex; string job; CDate date; double basicmoney; public: Employee(string ID,string name,string sex,CDate date,string job,double basicmoney); string getjob()return job; string getname()return name; string getID()return ID; string getsex()return sex; double getbasicmoney()return basicmoney; CDate getdate()return date; virtual double getpay(int m)=0; ; class Report private: list members; list operator(string job); double min_pay(list emp_list ,int month); double max_pay(list emp_list ,int month); void print(list emp_list ,int month); public: Report(); void insert(Employee* p); void print(int n); ; class Manager:public Employee private: map price; public: Manager(string ID,string name,string sex,CDate date,string job,double basicmoney,map price):Employee( ID,name,sex,date,job,basicmoney) this-price=price; double getpay(int m); ; class Technicist:public Employee public: Technicist(string ID,string name,string sex,CDate date,string job,double basicmoney):Employee(ID,name,sex,date,job,basicmoney) double getpay(int m); ; class SalesPerson:public Employee private: map sales; public: SalesPerson(string ID,string name,string sex,CDate date,string job,double basicmoney,map sales):Employee(ID,name,sex,date,job,basicmoney) this-sales=sales; double getpay(int m); ; #endif /fuctions.cpp #include “class.h“ #include #include using namespace std; Employee:Employee(string ID,string name,string sex,CDate date,string job,double basicmoney) this-ID= ID; this-name = name; this-sex = sex; this-date = date; this-basicmoney = basicmoney; this-job = job; double Manager:getpay(int m) return pricem+basicmoney; list Report:operator(string job) list cp; list:iterator it; for(it=members.begin();it!=members.end();it+) if(*it)-getjob()=job) cp.push_back(*it); return cp; void Report:print(int month) cout emp_ls; emp_ls = (*this)“經(jīng)理“; print(emp_ls,month); cout emp_list, int month) vector pay; list:iterator it; for(it = emp_list.begin(); it != emp_list.end(); it +) pay.push_back(*it)-getpay(month); return *min_element(pay.begin(), pay.end() ; double Report:max_pay(list emp_list, int month) vector pay; list:iterator it; for(it = emp_list.begin(); it != emp_list.end(); it +) pay.push_back(*it)-getpay(month); return *max_element(pay.begin(), pay.end() ; void Report:print(list emp_list,int month) list:iterator it; for(it = emp_list.begin();it != emp_list.end();it +) coutgetID()getname()getsex()getdate().format(“ddd“)getbasicmoney()getpay(month) :iterator it; for(it = members.begin(); it != members.end(); it +) delete *it; double Technicist:getpay(int m) return basicmoney; double SalesPerson:getpay(int m) return basicmoney + salesm * 0.05; /date.h /增加友元

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論