版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)學(xué)與計算機學(xué)院 C+ 實驗報告年級 09數(shù)計 學(xué)號 姓名 劉寶 成績 專業(yè) 數(shù)電 實驗地點 主樓401 指導(dǎo)教師 翟俊海 實驗項目 職工信息表 實驗日期 11年1月1日 一、實驗?zāi)康耐ㄟ^編寫一個處理職工信息的程序,加強對繼承與派生,運算符重載等概念的理解,提升實際操作能力。二、實驗問題描述設(shè)計要求:設(shè)計要求實現(xiàn)如下功能:(1)建立職工信息數(shù)據(jù),包括職工編號、姓名、性別、工資、出生時間、部門、參加工作時間和年齡(必須計算得到)。(2)使用繼承的方法構(gòu)造至少3個類,(即雇員類基類,教師類和工人類派生類)類中使用相應(yīng)的對象放置10個職工信息。(3)編寫同名display(
2、)成員函數(shù),用來輸出數(shù)組的內(nèi)容。(4)按不同類別輸出職工信息,比如按系輸出教師信息。(5)要求對“”和“”運算符進行重載??紤]到輸人職工編號時,也會因不小心引人空格,而且名字中也需要有空格,所以重載“運算符時,需要滿足這個要求。(6)抽取并計算職工的平均年齡。(7)檢索(查找)指定信息。(如按姓名檢索、按年齡檢索)(8)參考界面如下:1增加一位職工(教師、工人)記錄2顯示全部職工(教師、學(xué)生)記錄3計算職工(教師、學(xué)生)的平均年齡4刪除一個職工(教師、學(xué)生)記錄5按系輸出教師信息6按姓名檢索(教師、學(xué)生)職工7結(jié)束程序運行三、實驗步驟1、實驗問題分析(一) 時間類。class Timepubl
3、ic:void display();void set();void age();int getage();private:int year;int month;int day;(二) 職工類(單個職工)。class Laborpublic:void creat();void display();/protected:string num;string name;string sex;float wage;Time birthday;string workp;Time workt;int age;(三) 雇員類(是一個集合類,包含多個人員(對象數(shù)組)以及對多個人員的操作(如添加、刪除、查詢等,是
4、對對象數(shù)組操作的成員函數(shù),應(yīng)設(shè)定為虛函數(shù)),雇員類可考慮設(shè)為抽象基類 。class Employeepublic:void virtual set()num=0; /將num設(shè)置為0void virtual addin(); /增加一個雇員void virtual display(); / /顯示所有雇員void virtual dele(); /刪除一個雇員void virtual search(); /查詢雇員void virtual show(); /按工作部門顯示雇員信息void virtual averageage(); /計算雇員平均年齡protected:int num; /標記
5、員工個數(shù)Labor L10; /;(四) 教師類(雇員類的派生類),對基類的虛函數(shù)重新定義,實現(xiàn)相應(yīng)功能。class Teacher:virtual public Employeepublic:void set()num=0; /將num設(shè)置為0void addin(); /增加教師void display(); /顯示所有教師信息void dele(); /刪除教師void search(); /查詢教師信息void show(); /按系顯示教師信息void averageage(); /計算教師平均年齡void SET(); /讀入文件中的信息;(五) 工人類(雇員類的派生類),對基類的
6、虛函數(shù)重新定義,實現(xiàn)相應(yīng)功能。class Worker:virtual public Employeepublic:void set()num=0; /將num設(shè)置為0void addin(); /增加工人void display(); /顯示所有工人信息void dele(); /刪除工人void search(); /查詢工人信息void show(); /按部門顯示工人信息void averageage(); /計算工人平均年齡void SET(); /讀入文件中的信息;(六) 對>>進行運算符重載,使之能接收空格。istream&operator>>(i
7、stream&ip,string&s)char a12;gets(a);s=a;return ip;四、 實驗結(jié)果(程序)及分析1、實驗主要模塊代碼(一) 函數(shù)功能: Time 類和對Time 類的操作class Timepublic:void display(); /顯示年月日void set(); /設(shè)置void age(); /顯示年齡int getage(); /計算時間差/private:int year;int month;int day;void Time:display() /顯示年月日cout<<year<<"-"&
8、lt;<month<<"-"<<day;void Time:set() /設(shè)置年月日 cout<<"-年:"cin>>year; cout<<"-月:"cin>>month; cout<<"-日:"cin>>day;void Time:age() /顯示時間差cout<<2010-year;int Time:getage() /得到時間差 return (2010-year);(二) 函數(shù)功能: 一個雇
9、員信息的建立和顯示class Laborpublic:void creat(); /輸入相關(guān)信息void display(); /顯示相關(guān)信息/protected:string num;string name;string sex;float wage;Time birthday;string workp;Time workt;int age;void Labor:creat() /輸入信息cout<<"請按照提示操作,請輸入"<<endl;cout<<"工 號:"cin>>num;cout<<
10、"姓 名:"cin>>name;cout<<"性 別:"cin>>sex;cout<<"工作部門:"cin>>workp;cout<<"工 資:"cin>>wage;cout<<"出生日期:"cout<<endl;birthday.set();cout<<"工作時間:"cout<<endl;workt.set();getchar();void L
11、abor:display() /顯示信息cout<<"工 號:"<<num<<endl;cout<<"姓 名:"<<name<<endl;cout<<"性 別:"<<sex<<endl;cout<<"工作部門:"<<workp<<endl;cout<<"月 工 資:"<<wage<<" 元"<
12、<endl;cout<<"出生日期:"birthday.display();cout<<endl;cout<<"工作時間:"workt.display();cout<<endl;cout<<"年 齡:"birthday.age();cout<<endl;cout<<endl;(三) 函數(shù)功能: 對多個雇員的操作class Employee/雇員類public:void virtual set()num=0; /設(shè)0void virtual add
13、in(); /增加雇員void virtual display(); /顯示雇員void virtual dele(); /刪除雇員void virtual search(); /查詢雇員void virtual show(); /按部門顯示雇員void virtual averageage(); /計算平均年齡protected:int num;Labor L10;void Employee:addin() /增加一個員工信息if(num>=10)cout<<"已滿"<<endl;elsecout<<"請輸入相關(guān)信息&q
14、uot;<<endl;L+num.creat();void Employee:display() /顯示所有職工信息if(num<=0)cout<<"無信息,無法顯示"<<endl; else for(int i=1;i<=num;i+) Li.display();void Employee:dele() /按工號刪除信息if(num<=0)cout<<"無信息,無法刪除"<<endl;elsestring n; cout<<"請輸入要刪除的員工工號&qu
15、ot;<<endl; cin>>n;for(int i=1;i<=num;i+)if(Li.num=n) for(int k=i;k<num;k+) Lk=Lk+1; num-; if(i>num)cout<<"無此工號的員工!"<<endl;void Employee:search() /按姓名查詢信息if(num<=0)cout<<"無信息,無法查詢"<<endl;elsestring nam; cout<<"請輸入要查詢的員工姓名&
16、quot;<<endl; cin>>nam;for(int i=1;i<=num;i+)if(L=nam)cout<<"查詢到此員工的信息"<<endl; Li.display();if(i>num)cout<<"無此姓名的員工!"<<endl;void Employee:show() /按部門顯示信息 if(num<=0)cout<<"無信息,無法顯示"<<endl;elsestring wp; cout&l
17、t;<"請輸入工作部門"<<endl; cin>>wp;cout<<"在此工作部門工作的員工信息如下"<<endl;int b=0;for(int i=1;i<=num;i+)if(Li.workp=wp)b=1; Li.display();if(b=0)cout<<"無在此部門工作的員工!"<<endl; void Employee:averageage() /計算平均年齡if(num<1)cout<<"無信息無法計算平均
18、年齡"<<endl;elseint all=0,i;float av; for(i=1;i<=num;i+) all=all+Li.birthday.getage(); av=(all/num); cout<<"平均年齡為"<<av<<"歲"<<endl; (四) 函數(shù)功能: 對教師類的操作class Teacher:virtual public Employeepublic:void set()num=0;void addin();void display();void del
19、e();void search();void show();void averageage();void SET();void Teacher: SET()set(); ifstream ss("d:/1.txt"); for(int j=1;j<4;j+) num+; ss>>Lnum.num; ss>>L; ss>>Lnum.sex; ss>>Lnum.workp; ss>>Lnum.wage; ss>>Lnum.birthday.year; ss>>Lnum.bi
20、rthday.month; ss>>Lnum.birthday.day; ss>>Lnum.workt.year; ss>>Lnum.workt.month; ss>>Lnum.workt.day; void Teacher :addin()if(num>=10)cout<<"教師信息存儲已滿"<<endl;elsecout<<"請輸入相關(guān)教師信息"<<endl;/getchar();L+num.creat();void Teacher:display(
21、) /顯示所有職工信息if(num<=0)cout<<"無教師信息,無法顯示"<<endl; elsecout<<"教師信息如下:"<<endl; for(int i=1;i<=num;i+) Li.display();void Teacher:dele() /按工號刪除信息if(num<=0)cout<<"無教師信息,無法刪除"<<endl;elsestring n; cout<<"請輸入要刪除教師的工號"<
22、;<endl;getchar(); cin>>n;int b=0;for(int i=1;i<=num;i+)if(Li.num=n) b=1; cout<<"刪除的教師信息是:"<<endl; Li.display(); for(int k=i;k<num;k+) Lk=Lk+1; num-; if(b=0)cout<<"無此工號的教師!"<<endl;void Teacher:search() /按姓名查詢信息if(num<=0)cout<<"無
23、教師信息,無法查詢"<<endl;elsestring nam; cout<<"請輸入要查詢的教師姓名"<<endl;getchar(); cin>>nam;int b=0;for(int i=1;i<=num;i+)if(L=nam)b=1;cout<<"查詢到此教師的信息"<<endl; Li.display();if(b=0)cout<<"無此姓名的教師!"<<endl;void Teacher:show(
24、) /按部門顯示信息 if(num<=0)cout<<"無教師信息,無法顯示"<<endl;elsestring wp; cout<<"請輸入教師工作部門"<<endl;getchar(); cin>>wp;cout<<"在此工作部門工作的教師信息如下"<<endl;int b=0;for(int i=1;i<=num;i+)if(Li.workp=wp)b=1; Li.display();if(b=0)cout<<"
25、無在此部門工作的教師!"<<endl; void Teacher:averageage() /計算平均年齡if(num<1)cout<<"無信息,無法計算平均年齡"<<endl;elseint all=0,i;float av; for(i=1;i<=num;i+) all=all+Li.birthday.getage(); av=(all/num); cout<<"教師的平均年齡為"<<av<<"歲"<<endl; (五) 函數(shù)
26、功能: 對工人類的操作class Worker:virtual public Employeepublic:void set()num=0;void addin();void display();void dele();void search();void show();void averageage();void SET();void Worker: SET()set(); ifstream ss("d:/2.txt"); for(int j=1;j<4;j+) num+; ss>>Lnum.num; ss>>L; ss>
27、;>Lnum.sex; ss>>Lnum.workp; ss>>Lnum.wage; ss>>Lnum.birthday.year; ss>>Lnum.birthday.month; ss>>Lnum.birthday.day; ss>>Lnum.workt.year; ss>>Lnum.workt.month; ss>>Lnum.workt.day; void Worker:addin()if(num>=10)cout<<"工人信息存儲已滿"<&l
28、t;endl;elsecout<<"請輸入相關(guān)工人信息"<<endl;L+num.creat();void Worker:display() /顯示所有職工信息if(num<=0)cout<<"無工人信息,無法顯示"<<endl; elsecout<<"工人信息如下:"<<endl; for(int i=1;i<=num;i+) Li.display();void Worker:dele() /按工號刪除信息if(num<=0)cout<&
29、lt;"無工人信息,無法刪除"<<endl;elsestring n; cout<<"請輸入要刪除工人的工號"<<endl;getchar(); cin>>n;for(int i=1;i<=num;i+)if(Li.num=n) cout<<"刪除的工人的信息是:"<<endl; Li.display(); for(int k=i;k<num;k+) Lk=Lk+1; num-; if(i=(num+1)cout<<"無此工號的工
30、人!"<<endl;void Worker:search() /按姓名查詢信息if(num<=0)cout<<"無工人信息,無法查詢"<<endl;elsestring nam; cout<<"請輸入要查詢的工人姓名"<<endl;getchar(); cin>>nam;int b=0;for(int i=1;i<=num;i+)if(L=nam)b=1;cout<<"查詢到此工人的信息"<<endl; L
31、i.display();if(b=0)cout<<"無此姓名的工人!"<<endl;void Worker:show() /按部門顯示信息 if(num<=0)cout<<"無工人信息,無法顯示"<<endl;elsestring wp; cout<<"請輸入工人工作部門"<<endl;getchar(); cin>>wp;cout<<"在此工作部門工作的工人信息如下"<<endl;int b=0;fo
32、r(int i=1;i<=num;i+)if(Li.workp=wp)b=1; Li.display();if(b=0)cout<<"無在此部門工作的工人!"<<endl; void Worker:averageage() /計算平均年齡if(num<1)cout<<"無信息,無法計算平均年齡"<<endl;elseint all=0,i;float av; for(i=1;i<=num;i+) all=all+Li.birthday.getage(); av=(all/num); cou
33、t<<"工人的平均年齡為"<<av<<"歲"<<endl; (六) 函數(shù)功能: 歡迎界面void welcome()cout<<" *"<<endl;cout<<" -"<<endl;cout<<" 歡迎來到河北大學(xué)職工信息系統(tǒng)"<<endl;cout<<endl;cout<<" 1-增加一位職工信息"<<endl;cou
34、t<<" 2-顯示全部職工信息"<<endl;cout<<" 3-計算職工平均年齡"<<endl;cout<<" 4-刪除一個職工信息"<<endl;cout<<" 5-按部門輸出職工信息"<<endl;cout<<" 6-按姓名查詢職工信息"<<endl;cout<<" 7-退出"<<endl;cout<<endl;co
35、ut<<" *請選擇按鍵*"<<endl;2、實驗代碼 #include<iostream>#include<string>#include<fstream>using namespace std;istream&operator>>(istream&ip,string&s)char a12;gets(a);s=a;return ip;class Timepublic:void display();void set();void age();int getage();/priva
36、te:int year;int month;int day;void Time:display()cout<<year<<"-"<<month<<"-"<<day;void Time:set() cout<<"-年:"cin>>year; cout<<"-月:"cin>>month; cout<<"-日:"cin>>day;void Time:age()cout&l
37、t;<2010-year;int Time:getage() return (2010-year);class Laborpublic:void creat();void display();/protected:string num;string name;string sex;float wage;Time birthday;string workp;Time workt;int age;void Labor:creat()cout<<"請按照提示操作,請輸入"<<endl;cout<<"工 號:"cin&g
38、t;>num;cout<<"姓 名:"cin>>name;cout<<"性 別:"cin>>sex;cout<<"工作部門:"cin>>workp;cout<<"工 資:"cin>>wage;cout<<"出生日期:"cout<<endl;birthday.set();cout<<"工作時間:"cout<<endl;workt.
39、set();getchar();void Labor:display()cout<<"工 號:"<<num<<endl;cout<<"姓 名:"<<name<<endl;cout<<"性 別:"<<sex<<endl;cout<<"工作部門:"<<workp<<endl;cout<<"月 工 資:"<<wage<<&q
40、uot; 元"<<endl;cout<<"出生日期:"birthday.display();cout<<endl;cout<<"工作時間:"workt.display();cout<<endl;cout<<"年 齡:"birthday.age();cout<<endl;cout<<endl;class Employee/: protected Laborpublic:void virtual set()num=0;void vir
41、tual addin();void virtual display();void virtual dele();void virtual search();void virtual show();void virtual averageage();protected:int num;Labor L10;void Employee:addin() /增加一個員工信息if(num>=10)cout<<"已滿"<<endl;elsecout<<"請輸入相關(guān)信息"<<endl;L+num.creat();vo
42、id Employee:display() /顯示所有職工信息if(num<=0)cout<<"無信息,無法顯示"<<endl; else for(int i=1;i<=num;i+) Li.display();void Employee:dele() /按工號刪除信息if(num<=0)cout<<"無信息,無法刪除"<<endl;elsestring n; cout<<"請輸入要刪除的員工工號"<<endl; cin>>n;for
43、(int i=1;i<=num;i+)if(Li.num=n) for(int k=i;k<num;k+) Lk=Lk+1; num-; if(i>num)cout<<"無此工號的員工!"<<endl;void Employee:search() /按姓名查詢信息if(num<=0)cout<<"無信息,無法查詢"<<endl;elsestring nam; cout<<"請輸入要查詢的員工姓名"<<endl; cin>>nam
44、;for(int i=1;i<=num;i+)if(L=nam)cout<<"查詢到此員工的信息"<<endl; Li.display();if(i>num)cout<<"無此姓名的員工!"<<endl;void Employee:show() /按部門顯示信息 if(num<=0)cout<<"無信息,無法顯示"<<endl;elsestring wp; cout<<"請輸入工作部門"<<
45、endl; cin>>wp;cout<<"在此工作部門工作的員工信息如下"<<endl;int b=0;for(int i=1;i<=num;i+)if(Li.workp=wp)b=1; Li.display();if(b=0)cout<<"無在此部門工作的員工!"<<endl; void Employee:averageage() /計算平均年齡if(num<1)cout<<"無信息無法計算平均年齡"<<endl;elseint all=
46、0,i;float av; for(i=1;i<=num;i+) all=all+Li.birthday.getage(); av=(all/num); cout<<"平均年齡為"<<av<<"歲"<<endl; class Teacher:virtual public Employeepublic:void set()num=0;void addin();void display();void dele();void search();void show();void averageage();vo
47、id SET();void Teacher: SET()set(); ifstream ss("d:/1.txt"); for(int j=1;j<4;j+) num+; ss>>Lnum.num; ss>>L; ss>>Lnum.sex; ss>>Lnum.workp; ss>>Lnum.wage; ss>>Lnum.birthday.year; ss>>Lnum.birthday.month; ss>>Lnum.birthday.day; ss>&
48、gt;Lnum.workt.year; ss>>Lnum.workt.month; ss>>Lnum.workt.day; void Teacher :addin()if(num>=10)cout<<"教師信息存儲已滿"<<endl;elsecout<<"請輸入相關(guān)教師信息"<<endl;/getchar();L+num.creat();void Teacher:display() /顯示所有職工信息if(num<=0)cout<<"無教師信息,無法
49、顯示"<<endl; elsecout<<"教師信息如下:"<<endl; for(int i=1;i<=num;i+) Li.display();void Teacher:dele() /按工號刪除信息if(num<=0)cout<<"無教師信息,無法刪除"<<endl;elsestring n; cout<<"請輸入要刪除教師的工號"<<endl;getchar(); cin>>n;int b=0;for(int
50、i=1;i<=num;i+)if(Li.num=n) b=1; cout<<"刪除的教師信息是:"<<endl; Li.display(); for(int k=i;k<num;k+) Lk=Lk+1; num-; if(b=0)cout<<"無此工號的教師!"<<endl;void Teacher:search() /按姓名查詢信息if(num<=0)cout<<"無教師信息,無法查詢"<<endl;elsestring nam; cout&l
51、t;<"請輸入要查詢的教師姓名"<<endl;getchar(); cin>>nam;int b=0;for(int i=1;i<=num;i+)if(L=nam)b=1;cout<<"查詢到此教師的信息"<<endl; Li.display();if(b=0)cout<<"無此姓名的教師!"<<endl;void Teacher:show() /按部門顯示信息 if(num<=0)cout<<"無教師信息,無法
52、顯示"<<endl;elsestring wp; cout<<"請輸入教師工作部門"<<endl;getchar(); cin>>wp;cout<<"在此工作部門工作的教師信息如下"<<endl;int b=0;for(int i=1;i<=num;i+)if(Li.workp=wp)b=1; Li.display();if(b=0)cout<<"無在此部門工作的教師!"<<endl; void Teacher:averageage() /計算平均年齡if(num<1)cout<<"無信息,無法計算平均年齡"<<endl;elseint all=0,i;float av; for(i=1;i<=num;i+) all=all+Li.birthday.getage(
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《新生兒氣胸》課件
- 2025年分銷商分潤協(xié)議范例
- 2025年分銷合同的法律適用
- 2025版幼兒托管班信息化管理及數(shù)據(jù)共享協(xié)議3篇
- 二零二五年度林地征用補償協(xié)議6篇
- 2025年度個人創(chuàng)業(yè)項目投資融資協(xié)議4篇
- 臨時雇傭勞務(wù)合作合同(2024年版)版B版
- 2025年信息技術(shù)服務(wù)承諾合同范本2篇
- 二零二五年度簡易版起重機租賃及設(shè)備租賃合同解除協(xié)議
- 二零二五年度2025年食堂廚師食品安全知識與聘用協(xié)議
- 2024年國家工作人員學(xué)法用法考試題庫及參考答案
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 人教版五年級上冊遞等式計算100道及答案
- 2024年新課標全國Ⅰ卷語文高考真題試卷(含答案)
- 湖南省退休人員節(jié)日慰問政策
- 中國的世界遺產(chǎn)知到章節(jié)答案智慧樹2023年遼寧科技大學(xué)
- 道路通行能力手冊第4章-高速公路基本路段
- 傳感器與測試技術(shù)試卷及答案
- 2020年普通高等學(xué)校招生全國統(tǒng)一數(shù)學(xué)考試大綱
- GB/T 679-2002化學(xué)試劑乙醇(95%)
評論
0/150
提交評論