




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
浙江理工大學信息學院面對對象程序設計實驗報告實驗名稱:類的多態性的實現 學時安排:3實驗類別:設計性實驗 實驗規定:1人1組學號: 姓名: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、實驗目的1.理解重載運算符的意義。2.掌握使用組員函數、友員函數重載運算符的特點。3.掌握重載運算符函數的調用辦法。4.掌握動態聯編的概念。5.掌握虛函數和純虛函數的使用辦法。二、實驗原理介紹設計性實驗具體原理請見實驗內容和環節實現對抽象類的繼承,通過operator函數調用的形式,實現運算符的重載三、實驗設備介紹軟件需求:Windows或Linux下的C++編譯器硬件需求:對于硬件方面的規定,建議配備是PentiumIII450以上的CPU解決器,64MB以上的內存,200MB的自由硬盤空間、CD-ROM驅動器、能支持24位真彩色的顯示卡、彩色顯示屏、打印機。四、實驗內容某公司的員工有經理Manager、技術人員Technicist和營銷人員SalesPerson,他們的薪金計算辦法以下:經理按月計酬,辦法是:基本工資+獎金;技術人員按月計酬,辦法是:基本工資;營銷人員按月計酬,辦法是:基本工資+銷售利潤*5%。每類人員都有職工編號、姓名、性別、入職時間、職位、基本工資等數據;各類人員使用統一接口get_pay()計算各類人員的月薪,重載<<運算符實現員工信息的輸出。另首先,設計一種統計并輸出該公司員工當月薪金狀況的報表類Report,該類提供insert接口向Report類的容器中添加員工信息,并提供print接口用于展示以職位為單位的每個員工的職工編號、姓名、性別、入職時間以及當月該員工的薪酬,并統計出該職位員工薪酬的最高值和最低值。為了提供更方便的查找功效,請為Report類重載[]運算符,下標值為職位,能根據職位信息查找出全部符合該職位的員工。在主函數中對實現的類進行測試,首先,創立各類人員對象,通過Report類的insert接口向報表中添加這些人員信息,然后通過Report類的print接口輸出當月員工薪酬狀況報表。五程序清單#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為真時表達繼續輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 密切關注2024年紡織機械操作證書考試的動態與發展動向試題及答案
- 宅基地簡單轉讓合同范例
- 二零二五招投標、合同書管理安全職責
- 二零二五版賓館抵押借款合同書
- 借用建筑資質的協議二零二五年
- 動力學應用的機械工程師資格證書考試試題及答案
- 如何高效實施商務禮儀的培訓機制試題及答案
- 設計歷史與Adobe考試的關聯試題及答案
- 紡織機械風向標試題及答案
- 織物壓縮與彈性測試方法考試試題及答案
- 2025年中國煤氣發生爐行業專項深度調研及“2025”發展規劃指
- 福建省廈門市2024-2025學年七年級下學期期中生物試題(原卷版+解析版)
- 高層火災撲救要點及注意事項
- 人教版小學數學一年上冊《減法》說課稿(附反思、板書)課件
- 2024年四川農商銀行招聘筆試真題
- 《建筑基坑工程監測技術標準》(50497-2019)
- GA 1809-2022城市供水系統反恐怖防范要求
- 兒科感染性疾病試題
- 畢業設計---宅樓設計(剪力墻結構)
- 固定管板式換熱器設計說明書
- 鉆孔注水試驗計算EXCEL表格
評論
0/150
提交評論