版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
浙江理工大學(xué)信息學(xué)院面對對象程序設(shè)計實驗報告實驗名稱:類的多態(tài)性的實現(xiàn) 學(xué)時安排:3實驗類別:設(shè)計性實驗 實驗規(guī)定:1人1組學(xué)號: 姓名: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、實驗?zāi)康?.理解重載運算符的意義。2.掌握使用組員函數(shù)、友員函數(shù)重載運算符的特點。3.掌握重載運算符函數(shù)的調(diào)用辦法。4.掌握動態(tài)聯(lián)編的概念。5.掌握虛函數(shù)和純虛函數(shù)的使用辦法。二、實驗原理介紹設(shè)計性實驗具體原理請見實驗內(nèi)容和環(huán)節(jié)實現(xiàn)對抽象類的繼承,通過operator函數(shù)調(diào)用的形式,實現(xiàn)運算符的重載三、實驗設(shè)備介紹軟件需求:Windows或Linux下的C++編譯器硬件需求:對于硬件方面的規(guī)定,建議配備是PentiumIII450以上的CPU解決器,64MB以上的內(nèi)存,200MB的自由硬盤空間、CD-ROM驅(qū)動器、能支持24位真彩色的顯示卡、彩色顯示屏、打印機。四、實驗內(nèi)容某公司的員工有經(jīng)理Manager、技術(shù)人員Technicist和營銷人員SalesPerson,他們的薪金計算辦法以下:經(jīng)理按月計酬,辦法是:基本工資+獎金;技術(shù)人員按月計酬,辦法是:基本工資;營銷人員按月計酬,辦法是:基本工資+銷售利潤*5%。每類人員都有職工編號、姓名、性別、入職時間、職位、基本工資等數(shù)據(jù);各類人員使用統(tǒng)一接口get_pay()計算各類人員的月薪,重載<<運算符實現(xiàn)員工信息的輸出。另首先,設(shè)計一種統(tǒng)計并輸出該公司員工當(dāng)月薪金狀況的報表類Report,該類提供insert接口向Report類的容器中添加員工信息,并提供print接口用于展示以職位為單位的每個員工的職工編號、姓名、性別、入職時間以及當(dāng)月該員工的薪酬,并統(tǒng)計出該職位員工薪酬的最高值和最低值。為了提供更方便的查找功效,請為Report類重載[]運算符,下標(biāo)值為職位,能根據(jù)職位信息查找出全部符合該職位的員工。在主函數(shù)中對實現(xiàn)的類進行測試,首先,創(chuàng)立各類人員對象,通過Report類的insert接口向報表中添加這些人員信息,然后通過Report類的print接口輸出當(dāng)月員工薪酬狀況報表。五程序清單#include<iostream>#include<vector>#include<string>usingnamespacestd;classDate{public:inty,m,d;Date(intyy=0,intmm=0,intdd=0):y(yy),m(mm),d(dd){}friendistream&operator>>(istream&is,Date&p);friendostream&operator<<(ostream&os,Date&p);};classEmployee{protected:Datedate;stringemployee_number;stringemployee_name;stringemployee_gender;stringemployee_position;doubleemployee_basic_money;doubleprize[13];public:virtualdoublegetpay(intn)=0;Dateget_date(){returndate;}stringget_number(){returnemployee_number;}stringget_name(){returnemployee_name;}stringget_gender(){returnemployee_gender;}stringget_position(){returnemployee_position;}doubleget_basic_money(){returnemployee_basic_money;}virtualvoidput(Dated,stringe_num,stringe_name,stringe_g,stringe_p,doublee_m,doublemoney[13])=0;};classManager:publicEmployee{public:Manager(inta=0,intb=0,intc=0,doubled=-1){Datedate(a,b,c);employee_basic_money=d;for(inti=0;i<13;i++)prize[i]=0;}voidput(Dated,stringe_num,stringe_name,stringe_g,stringe_p,doublee_m,doublemoney[13]);doublegetpay(intn);};classTechnicist:publicEmployee{public:Technicist(intp=-1,inta=0,intb=0,intc=0,intd=-1){Datedate(a,b,c);employee_basic_money=d;}voidput(Dated,stringe_num,stringe_name,stringe_g,stringe_p,doublee_m,doublemoney[13]);doublegetpay(intn);};classSalsePerson:publicEmployee{public:SalsePerson(inta=0,intb=0,intc=0,intd=-1){Datedate(a,b,c);for(inti=0;i<13;i++)prize[i]=0;employee_basic_money=d;}voidput(Dated,stringe_num,stringe_name,stringe_g,stringe_p,doublee_m,doublemoney[13]);doublegetpay(intn);};classRepoter{private:vector<Employee*>v;vector<Employee*>::iteratorit;public:voidadd(Employee*p);voidprint(intn1,intn2);voidprint(intn);voidoperator[](stringpos);};#include"h1.h"istream&operator>>(istream&is,Date&p){is>>p.y>>p.m>>p.d;returnis;}ostream&operator<<ostream&os,Date&p){os<<p.y<<"/"<<p.m<<"/"<<p.d<<endl;returnos;}voidManager::put(Dated,stringe_num,stringe_name,stringe_g,stringe_p,doublee_m,doublemoney[13]){cout<<"M:put"<<endl;date=d;employee_number=e_num;employee_name=e_name;employee_gender=e_g;employee_position=e_p;employee_basic_money=e_m;for(inti=1;i<13;i++)prize[i]=money[i];}doubleManager::getpay(intn){if(employee_basic_money==-1||n>12||n<=0)return-1;returnemployee_basic_money+prize[n];}voidTechnicist::put(Dated,stringe_num,stringe_name,stringe_g,stringe_p,doublee_m,doublemoney[13]){cout<<"T:put"<<endl;date=d;employee_number=e_num;employee_name=e_name;employee_gender=e_g;employee_position=e_p;employee_basic_money=e_m;for(inti=1;i<13;i++)prize[i]=money[i];}doubleTechnicist::getpay(intn){returnemployee_basic_money;}voidSalsePerson::put(Dated,stringe_num,stringe_name,stringe_g,stringe_p,doublee_m,doublemoney[13]){cout<<"S:put"<<endl;date=d;employee_number=e_num;employee_name=e_name;employee_gender=e_g;employee_position=e_p;employee_basic_money=e_m;for(inti=1;i<13;i++)prize[i]=money[i];}doubleSalsePerson::getpay(intn){if(employee_basic_money==-1)return-1;returnemployee_basic_money+prize[n]*0.05;}voidRepoter::add(Employee*p){v.push_back(p);}voidRepoter::print(intn1,intn2){inti=0;for(it=v.begin();it!=v.end();it++,i++){cout<<v[i]->get_number()<<endl;cout<<v[i]->get_name()<<endl;cout<<v[i]->get_gender()<<endl;cout<<v[i]->get_date();cout<<v[i]->get_position()<<endl;doublesum=0;for(intj=n1;j<=n2;j++){sum+=v[i]->getpay(j);}cout<<sum<<endl;}}voidRepoter::print(intn){cout<<v[n]->get_number()<<endl;cout<<v[n]->get_name()<<endl;cout<<v[n]->get_gender()<<endl;cout<<v[n]->get_date();cout<<v[n]->get_position()<<endl;cout<<v[n]->get_basic_money()<<endl;}voidRepoter::operator[](stringpos){inti=0;for(it=v.begin();it!=v.end();it++,i++){if(v[i]->get_position()==pos)print(i);cout<<endl;}}#include"h1.h"intmain(){Datedd;stringnumber;stringname;stringgender;stringposition;doublebasic_money;doublemoney[13];Employee*p;Repoterre;//n為真時表達繼續(xù)輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《FTTH入戶施工》課件
- 《薄膜論壇報告》課件
- 工傷免責(zé)合同
- 鐵路系統(tǒng) 單一采購 合同模板
- 工程內(nèi)部聯(lián)營合同要注意哪些問題
- 《骨科康復(fù)護理》課件
- 2025年南寧b2貨運資格證模擬考試
- 體育園區(qū)施工合同
- 圖書館幕墻安裝施工協(xié)議
- 鋼鐵廠新司機招聘模板
- 2024-2025學(xué)年上學(xué)期廣州初中地理七年級期末模擬卷1
- 八年級地理期末模擬卷(考試版A4)【測試范圍:晉教版八上全冊】
- 隧道爆破施工合同
- 護理亮點工作展示
- 2024年河南省中考物理試題解析版
- 期末綜合試卷(含答案)2024-2025學(xué)年蘇教版數(shù)學(xué)四年級上冊
- 《營銷管理與分析》課件
- 挖機承包土地開挖合同2024年
- 2024個稅內(nèi)部培訓(xùn)
- 辦公樓外立面玻璃更換施工方案
- 出生醫(yī)學(xué)證明警示教育培訓(xùn)
評論
0/150
提交評論