多態(tài)性實(shí)驗(yàn)報(bào)告_第1頁(yè)
多態(tài)性實(shí)驗(yàn)報(bào)告_第2頁(yè)
多態(tài)性實(shí)驗(yàn)報(bào)告_第3頁(yè)
多態(tài)性實(shí)驗(yàn)報(bào)告_第4頁(yè)
多態(tài)性實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

浙江理工大學(xué)信息學(xué)院面對(duì)對(duì)象程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:類的多態(tài)性的實(shí)現(xiàn) 學(xué)時(shí)安排:3實(shí)驗(yàn)類別:設(shè)計(jì)性實(shí)驗(yàn) 實(shí)驗(yàn)規(guī)定:1人1組學(xué)號(hào): 姓名: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、實(shí)驗(yàn)?zāi)康?.理解重載運(yùn)算符的意義。2.掌握使用組員函數(shù)、友員函數(shù)重載運(yùn)算符的特點(diǎn)。3.掌握重載運(yùn)算符函數(shù)的調(diào)用辦法。4.掌握動(dòng)態(tài)聯(lián)編的概念。5.掌握虛函數(shù)和純虛函數(shù)的使用辦法。二、實(shí)驗(yàn)原理介紹設(shè)計(jì)性實(shí)驗(yàn)具體原理請(qǐng)見(jiàn)實(shí)驗(yàn)內(nèi)容和環(huán)節(jié)實(shí)現(xiàn)對(duì)抽象類的繼承,通過(guò)operator函數(shù)調(diào)用的形式,實(shí)現(xiàn)運(yùn)算符的重載三、實(shí)驗(yàn)設(shè)備介紹軟件需求:Windows或Linux下的C++編譯器硬件需求:對(duì)于硬件方面的規(guī)定,建議配備是PentiumIII450以上的CPU解決器,64MB以上的內(nèi)存,200MB的自由硬盤空間、CD-ROM驅(qū)動(dòng)器、能支持24位真彩色的顯示卡、彩色顯示屏、打印機(jī)。四、實(shí)驗(yàn)內(nèi)容某公司的員工有經(jīng)理Manager、技術(shù)人員Technicist和營(yíng)銷人員SalesPerson,他們的薪金計(jì)算辦法以下:經(jīng)理按月計(jì)酬,辦法是:基本工資+獎(jiǎng)金;技術(shù)人員按月計(jì)酬,辦法是:基本工資;營(yíng)銷人員按月計(jì)酬,辦法是:基本工資+銷售利潤(rùn)*5%。每類人員都有職工編號(hào)、姓名、性別、入職時(shí)間、職位、基本工資等數(shù)據(jù);各類人員使用統(tǒng)一接口get_pay()計(jì)算各類人員的月薪,重載<<運(yùn)算符實(shí)現(xiàn)員工信息的輸出。另首先,設(shè)計(jì)一種統(tǒng)計(jì)并輸出該公司員工當(dāng)月薪金狀況的報(bào)表類Report,該類提供insert接口向Report類的容器中添加員工信息,并提供print接口用于展示以職位為單位的每個(gè)員工的職工編號(hào)、姓名、性別、入職時(shí)間以及當(dāng)月該員工的薪酬,并統(tǒng)計(jì)出該職位員工薪酬的最高值和最低值。為了提供更方便的查找功效,請(qǐng)為Report類重載[]運(yùn)算符,下標(biāo)值為職位,能根據(jù)職位信息查找出全部符合該職位的員工。在主函數(shù)中對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試,首先,創(chuàng)立各類人員對(duì)象,通過(guò)Report類的insert接口向報(bào)表中添加這些人員信息,然后通過(guò)Report類的print接口輸出當(dāng)月員工薪酬?duì)顩r報(bào)表。五程序清單#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為真時(shí)表達(dá)繼續(xù)輸入

溫馨提示

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

評(píng)論

0/150

提交評(píng)論