公司管理系統-C++的面向對象程序設計實例_第1頁
公司管理系統-C++的面向對象程序設計實例_第2頁
公司管理系統-C++的面向對象程序設計實例_第3頁
公司管理系統-C++的面向對象程序設計實例_第4頁
公司管理系統-C++的面向對象程序設計實例_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上基于C+的面向對象程序設計實例 公司人員信息管理系統1、問題描述某公司需要存儲雇員的編號、姓名、性別、所在部門,級別,并進行工資的計算。其中,雇員分為經理、技術人員、銷售人員和銷售經理。四類人員的月薪計算方法如下:經理拿固定月薪;技術人員按小時領取月薪;銷售人員按其當月銷售額的提成領取工資;銷售經理既拿固定月薪也領取銷售提成。設計一程序能夠對公司人員進行管理,應用到繼承、抽象類、虛函數、虛基類、多態和文件的輸入/輸出等內容。2、功能要求(1)基本功能1) 添加功能:程序能夠任意添加上述四類人員的記錄,可提供選擇界面供用戶選擇所要添加的人員類別,要求員工的編號要唯一,如

2、果添加了重復編號的記錄時,則提示數據添加重復并取消添加。2) 查詢功能:可根據編號、姓名等信息對已添加的記錄進行查詢,如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息;3) 顯示功能:可顯示當前系統中所有記錄,每條記錄占據一行。4) 編輯功能:可根據查詢結果對相應的記錄進行修改,修改時注意編號的唯一性。5)刪除功能:主要實現對已添加的人員記錄進行刪除。如果當前系統中沒有相應的人員記錄,則提示“記錄為空!”并返回操作;否則,輸入要刪除的人員的編號或姓名,根據所輸入的信息刪除該人員記錄,如果沒有找到該人員信息,則提示相應的記錄不存。6) 統計功能:能根據多種參數進行人員的統計。例如,

3、統計四類人員數量以及總數,或者統計男、女員工的數量,或者統計平均工資、最高工資、最低工資等信息。7)保存功能:可將當前系統中各類人員記錄存入文件中,存入方式任意。8)讀取功能:可將保存在文件中的人員信息讀入到當前系統中,供用戶進行使用。(2)擴展功能在完成以上基本功能的基礎上,可自行進行擴展或完善,例如: 1) 添加人員記錄時,考慮各種數據的有效性。2)組合查詢功能的實現。3)可按人員的某些信息進行排序,例如按工資進行排序等。4)對文件的讀寫使用二進制信息。3、問題的解決方案根據系統功能要求,可以將問題解決分為以下步驟: 1)應用系統分析,建立該系統的功能模塊框圖以及界面的組織和設計;2)分析

4、系統中的各個實體及它們之間的關系; 3)根據問題描述,設計系統的類層次; 4)完成類層次中各個類的描述; 5)完成類中各個成員函數的定義; 6)完成系統的應用模塊; 7)功能調試; 8)完成系統總結報告。程序代碼:#include<iostream>#include<string>#include <fstream>#include <iomanip>const tmax=20;using namespace std;class Personprotected:int num;string name;string position;char se

5、x;int level;public: Person(int n=0,string nam=" ",char s='f',string p=" ",int l=0) num=n;name=nam;sex=s;position=p;level=l;int getnum()return num;string getname()return name; virtual void input()cout<<"編號(int):"cin>>num;cout<<"姓名(string):&

6、quot; cin>>name;cout<<"性別(m/男,f/女):" cin>>sex;cout<<"所在部門(string):" cin>>position;cout<<"級別(int):"cin>>level;virtual void output() cout<<"編號:"<<setw(1)<<num;cout<<" 姓名: "<<setw(5

7、)<<name;cout<<" 性別: "<<setw(1)<<sex; cout<<" 所在部門:"<<setw(4)<<position; cout<<" 級別: "<<setw(2)<<level<<"級"class Technologist:virtual public Personprotected: int hour;public:Technologist(int n=0,

8、string nam=" ",char s='f',string p=" ",int l=0,int h=0):Person(n,nam,s,p,l)hour=h;void input()cout<<"請輸入技術人員的信息:"<<endl;Person:input();cout<<"工作時間(int):"cin>>hour;void output()Person:output();cout<<" 工資: "<<

9、;setw(4)<<hour*200<<endl;class Technologist_manaTechnologist ttmax; int top; public:Technologist_mana()top=0; void add();void show();void search();void search_num();void search_name();void edit();void edit_num();void edit_name();void Delete();void Delete_num();void Delete_name();void tot

10、al();void save();void read();void Technologist_mana:add()if(top>=tmax) cout<<"空間已滿,不能添加!"<<endl;return;Technologist te;cout<<"請輸入添加人員信息:"<<endl;te.input();ttop=te;for(int i=0;i<top;i+)if(te.getnum()=ti.getnum()cout<<"該編號已存在,添加失敗!"<

11、<endl;return ;cout<<"添加成功!"<<endl;cout<<endl;top+;void Technologist_mana:show()if(top=0)cout<<"沒有信息!"<<endl;return;for(int i=0;i<top;i+)ti.output();cout<<endl;void Technologist_mana:search_num() int y1; cout<<"請輸入要查詢技術人員的編號:&qu

12、ot; cin>>y1; for(int i=0;i<top;i+) if(ti.getnum()=y1)cout<<"oooooooooooo找到這個技術人員了,其信息為:oooooo"<<endl; ti.output(); return; cout<<"該技術人員不存在!"<<endl;void Technologist_mana:search_name()string s1;cout<<"請輸入要查詢的技術人員姓名:"cin>>s1; f

13、or(int i=0;i<top;i+) if(ti.getname()=s1) cout<<"oooooooooooo找到這個技術人員了,其信息為:oooooo"<<endl; ti.output(); return; cout<<"該技術人員不存在!"<<endl;void Technologist_mana:search()if(top=0)cout<<"沒有技術人員信息!"<<endl;return ;int choice;docout<<

14、;" ooooo查找ooooo"<<endl;cout<<"| |"<<endl;cout<<"| 1 : 按編號 2 :按姓名 0 :退出 |"<<endl;cout<<"| |"<<endl;cout<<"oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"<<endl;cout<<"請輸入您的

15、選擇:"cin>>choice;switch(choice) case 1:search_num();break;case 2:search_name();break;case 0:cout<<"您已安全退出."<<endl;break;default:cout<<"沒有此選項,請重選."<<endl;break;while(choice!=0);void Technologist_mana:edit_num() int x1; cout<<"請輸入要編輯的技術人

16、員的編號:" cin>>x1; for(int i=0;i<top;i+) if(ti.getnum()=x1) ti.output();cout<<endl;cout<<"請重新輸入技術人員信息:"ti.input();cout<<"修改成功!"<<endl;ti.output(); return; cout<<"該技術人員不存在!"<<endl;void Technologist_mana:edit_name()string h1;

17、cout<<"請輸入要編輯的技術人員的姓名:"cin>>h1; for(int i=0;i<top;i+) if(ti.getname()=h1)ti.output();cout<<endl;cout<<"請重新輸入技術人員信息:"ti.input();cout<<"修改成功!"<<endl;ti.output(); return ; cout<<"該經理不存在!"<<endl;void Technologist_

18、mana:edit()if (top=0) cout<<"沒有技術人員信息!"<<endl;return;int choice;docout<<" ooooo編輯ooooo"<<endl;cout<<"| |"<<endl;cout<<"| 1 : 按編號 2 : 按姓名 0 :退出 |"<<endl;cout<<"| |"<<endl;cout<<"oo

19、oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"<<endl;cout<<"請輸入您的選擇:"cin>>choice;switch(choice)case 1:edit_num();break;case 2:edit_name();break;case 0:cout<<"您已安全退出."<<endl;break;default:cout<<"沒有此選項,請重選."<<end

20、l;break;while(choice!=0);void Technologist_mana: Delete_num() char c1;int f1;cout<<"請輸入要刪除的技術人員編號:"cin>>f1;for(int i=0;i<top;i+)if(ti.getnum()=f1)ti.output();break; if(i>=top) cout<<"無此技術人員!" return ; cout<<"是否刪除此項(是:y/Y,否:n/N):"cin>>

21、c1;if(c1='y'|c1='Y')for(int k=i;k<top-1;k+)tk=tk+1;cout<<"刪除成功!"<<endl;top-;return ;elsecout<<"沒有刪除該技術人員!"<<endl;void Technologist_mana: Delete_name() char c3;string r;cout<<"請輸入要刪除的技術人員姓名:"cin>>r;for(int i=0;i<t

22、op;i+)if(ti.getname()=r)ti.output();break; if(i>=top) cout<<"無此技術人員!" return ; cout<<"是否刪除此項(是:y/Y,否:n/N):"cin>>c3;if(c3='y'|c3='Y')for(int k=i;k<top-1;k+)tk=tk+1;cout<<"刪除成功!"<<endl;top-;return ;elsecout<<"

23、沒有刪除該技術人員!"<<endl;void Technologist_mana: Delete()if (top=0) cout<<"沒有技術人員信息!"<<endl;return;int choice;docout<<" ooooo刪除ooooo"<<endl;cout<<"| |"<<endl;cout<<"| 1 : 按編號 2 : 按姓名 0 :退出 |"<<endl;cout<&l

24、t;"| |"<<endl;cout<<"oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"<<endl;cout<<"請輸入您的選擇:"cin>>choice;switch(choice)case 1:Delete_num();break;case 2:Delete_name();break;case 0:cout<<"您已安全退出."<<endl;break

25、;default:cout<<"沒有此選項,請重選."<<endl;break;while(choice!=0);void Technologist_mana:total()cout<<"技術人員總人數為:"<<top<<" 人"<<endl;void Technologist_mana:save()ofstream out("h:技術人員管理.txt",ios:out|ios:binary);if (!out)cerr<<&quo

26、t; 打開失敗!"<<endl;return;for (int i=0;i<top;i+)out.write(char*)&ti,sizeof(ti);cout<<"保存成功!"<<endl;cout<<endl;out.close();void Technologist_mana:read()ifstream in("h:技術人員管理.txt",ios:in|ios:binary);if (!in)cerr<<"打開失敗!"<<endl;

27、return ;int i=0; while(in.read(char*)&ti,sizeof(ti)i+;cout<<"讀取成功!"<<endl;in.close();void TechnologistMenu()Technologist_mana tee;int choice;while(choice!=0)cout<< " ooooo技術人員ooooo "<<endl;cout<<"ooooooooooooooooooooooooooooooooooooooooooooo

28、oooooooooooooooooooooooooooooo"<<endl;cout<<"| |"<<endl;cout<<"| 1.添加 2.查找 3.修改 4.統計 5.刪除 6.顯示 7.保存 8.讀取 0.返回 |"<<endl;cout<<"| |"<<endl;cout<<"oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

29、ooooooo"<<endl;cout<<"輸入您操作的選項:"cin>>choice; switch(choice)case 1:tee.add();break;case 2:tee.search();break;case 3:tee.edit();break;case 4:tee.total();break;case 5:tee.Delete();break;case 6:tee.show();break;case 7:tee.save();break; case 8:tee.read();break;case 0:cout<<"退出成功!&qu

溫馨提示

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

評論

0/150

提交評論