C++公司人員信息管理系統(tǒng)-課程設計報告_第1頁
C++公司人員信息管理系統(tǒng)-課程設計報告_第2頁
C++公司人員信息管理系統(tǒng)-課程設計報告_第3頁
C++公司人員信息管理系統(tǒng)-課程設計報告_第4頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄1 系統(tǒng)需求分析32 總體設計43 詳細設計及實現74 系統(tǒng)調試695 結論736 心得體會747 參考書目75第 2 頁知行合一行勝于言1 系統(tǒng)需求分析1.1 系統(tǒng)設計的目的與意義:現在的公司人員數量及職位種類較多,各樣的人事管理活動也比較頻繁,因此需要設計一個公司人員信息管理系統(tǒng)來對公司員工信息進行管理。1.2 系統(tǒng)功能需求:本系統(tǒng)有五個類:基類 :employee 、派生類:manager、technician、salesman、salesmanager, 儲存經理、技術人員、銷售人員、銷售經理信息。(1) 添加功能程序能夠任意添加上述四類人員的記錄, 可提供選擇界面供用戶選擇所要添

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

3、根據多種參數進行人員的統(tǒng)計。 例如:統(tǒng)計四類人員數量以及總數,統(tǒng)計男、女員工的數量,統(tǒng)計平均工資、最高工資、最低工資等。(7) 保存功能將當前系統(tǒng)中各類人員記錄存入文件中。(8) 讀取功能將保存在文件中的人員信息讀入到當前系統(tǒng)中,以供用戶使用。第 3 頁知行合一行勝于言2 總體設計2.1系統(tǒng)功能分析:系統(tǒng)通過調用函數來實現信息添加、信息查詢、信息顯示、信息修改、信息刪除、以及數據讀取保存文件等功能。add()函數用于錄入信息;search ()函數用來查詢信息; show()函數用來顯示信息; alter ()函數用來修改信息;del ()函數用來刪除信息;stat ()函數用來統(tǒng)計信息rea

4、d ()函數用于將文件中的數據讀取到內存中;save()函數用于將內存中的信息存入文件內;主函數 main()用于調用這些函數。2.2 系統(tǒng)功能模塊劃分與設計:系統(tǒng)定義了 manger 類、 technician類、 salesman 類、salesmanger 類這四個類,定義了 add()、search ()、show()、alter ()、del ()、stat ()、read ()、 save()、 input ()、 output()等函數來實現系統(tǒng)所需功能。2.3系統(tǒng)功能模塊圖:公司人員信息管理系經技銷銷理術售售信人人經息員員理管信信信理息息息管管管理理理經經經經經經技技技技技技銷

5、銷銷銷銷銷銷銷銷銷銷銷理理理理理理術術術術術術售售售售售售售售售售售售信信信信信信人人人人人人人人人人人人經經經經經經息息息息息息員員員員員員員員員員員員理理理理理理添查顯修刪統(tǒng)信信信信信信信信信信信信信信信信信信加詢示改除計息息息息息息息息息息息息息息息息息息添查顯修刪統(tǒng)添查顯修刪統(tǒng)添查顯修刪統(tǒng)加詢示改除計加詢示改除計加詢示改除計第 4 頁知行合一行勝于言2.4類的設計(1)employee 類(抽象類)的設計employeevirtualvoidadd()=0;virtualvoidsearch()=0;virtualvoidshow()=0;virtualvoidalter()=0;vi

6、rtualvoiddel()=0;virtualvoidstat()=0;virtualvoidsave()=0;virtualvoidread()=0;virtualvoidinput()=0;virtualvoidoutput()=0;string number;string name;string sex;圖 3.1 employee 類(2)經理類的設計managervoidadd();void search();void show();void alter();void del();void stat();void save();void read();void input();圖

7、3.2 經理類第 5 頁知行合一行勝于言(3)技術人員類的設計technicianvoid add();void search();void show();void alter();void del();void stat();void save();void read();void input();void output();float work_time;float time_salary;圖 3.3 技術人員類(4)銷售人員類的設計salesmanvoid add();void search();void show();void alter();void del();void stat(

8、);void save();void read();void input();void output();float sale;float rate;圖 3.4 銷售人員類第 6 頁知行合一行勝于言( 5)成績類的設計salesmanagervoid add();void search();void show();void alter();void del();void stat();void save();void read();void input();void output();float sala;圖 3.5 銷售經理類( 6)各個類的關系描述employeemanagersalesm

9、antechniciansalesmanager3 詳細設計及實現3.1 employee 類( 抽象類 ) 的實現#include<string>using namespace std;class employeepublic:employee(void);第 7 頁知行合一行勝于言employee(void);virtual void add()=0;virtual void search()=0;virtual void show()=0;virtual void alter()=0;virtual void del()=0;virtual void stat()=0;vir

10、tual void save()=0;virtual void read()=0;virtual void input()=0;virtual void output()=0;protected:string number;string name;string sex;string department;string rank;float salary;3.2 經理類的實現manager.h#include "employee.h"class manager :virtual public employeepublic:manager(void);manager(void)

11、;void add();void search();void show();void alter();void del();void stat();void save();第 8 頁知行合一行勝于言void read();void input();void output();manager.cpp#include "StdAfx.h"#include "manager.h"#include<iostream>#include<fstream>#include<string>#include<iomanip>

12、using namespace std;const int MAX=100;manager MMAX;int static top1=0;manager:manager(void)manager:manager(void)void manager:input()cout<<"輸入編號: "<<endl;cin>>number;cout<<"輸入姓名: "<<endl;cin>>name;cout<<"輸入性別: "<<endl;cin>

13、;>sex;cout<<"輸入部門: "<<endl;cin>>department;cout<<"輸入級別: "<<endl;cin>>rank;cout<<"輸入固定月薪: "<<endl;cin>>salary;void manager:output() cout<<number<<"t"<<name<<"t"<<se

14、x<<"t"<<department<<"t"<<rank<<"t "<<salary<<endl;void manager:read()第 9 頁知行合一行勝于言top1=0;system("cls");ifstream inflie(" 經理 .txt",ios:in);if(!inflie)cout<<"打開失?。?"<<endl;return;int i=0;w

15、hile(inflie>>Mi.number>>M>>Mi.sex>>Mi.department>>Mi.rank>>Mi.salary)i+;top1=i;inflie.close();void manager:save()ofstream outflie("經理 .txt",ios:out);if(!outflie)cout<<"打開失?。?"<<endl;return;int i;for(i=0;i<top1;i+)outflie<

16、;<Mi.number<<"t"<<M<<"t"<<Mi.sex<<"t"<<Mi.department<<"t"<<Mi.rank<<"t"<<Mi.salary<<endl;cout<<"保存成功! "<<endl;outflie.close();void manager:add()system(&q

17、uot;cls");read();if(top1>=MAX)第10頁知行合一行勝于言cout<<"人員已滿 "<<endl;return;cout<<"輸入要添加的編號: "<<endl;string n;cin>>n;for(int i=0;i<top1;i+)if(n=Mi.number)cout<<"該編號的人員已存在 "<<endl;return;manager m;cout<<"請再次輸入新添加人員

18、的信息"<<endl;m.input();cout<<"是否確認添加?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Mtop1=m;top1=top1+1;save();elsecout<<"放棄添加 "<<endl;return;void manager:search()system("cls");read();if(top1=0)cout<<"當前系統(tǒng)沒有儲存記錄!"<<endl;r

19、eturn;int choice;cout<<"請選擇查找方式: 1、按編號查找 2、按姓名查找 0、退出 "<<endl; cin>>choice;第 11頁知行合一行勝于言switch(choice)case 1:cout<<"請輸入要查找的編號:"<<endl;string num;cin>>num;for(int i=0;i<top1;i+)if(Mi.number=num)cout<<" 編號 "<<"t"

20、;<<" 姓名 "<<"t"<<" 性別 "<<"t"<<" 部門 "<<"t"<<" 級別 "<<"t"<<" 月薪 "<<endl;Mi.output();return;cout<<"查無此人! "<<endl;break;case 2:cout<

21、;<"請輸入要查找的姓名 "<<endl;string name;cin>>name;for(int i=0;i<top1;i+)if(M=name)cout<<" 編號 "<<"t"<<" 姓名 "<<"t"<<" 性別 "<<"t"<<" 部門 "<<"t"<<

22、;" 級別 "<<"t"<<" 月薪 "<<endl;Mi.output();cout<<"查無此人! "<<endl;break;case 0:break;default:cout<<" 輸 入 錯 誤 ! 請 輸 入 03 的 數 字 "<<endl;system("pause");search();break;void manager:show()第12頁知行合一行勝于言system(&

23、quot;cls");read();if(top1=0)cout<<"無數據! "<<endl;return;cout<<" 編號 "<<"t"<<" 姓名 "<<"t"<<" 性別 "<<"t"<<" 部門 "<<"t"<<" 級別 "<<&q

24、uot;t"<<" 月薪 "<<endl;for(int i=0;i<top1;i+)Mi.output();void manager:alter()system("cls");read();if(top1=0)cout<<"當前系統(tǒng)沒有儲存記錄 "<<endl;return;string num;cout<<"請輸入要修改的經理編號:"<<endl;cin>>num;for(int i=0;i<top1;i+

25、)if(Mi.number=num)cout<<"編號 "<<"t"<<" 姓名 "<<"t"<<" 性別 "<<"t"<<" 部門 "<<"t"<<" 級別 "<<"t"<<" 月薪 "<<endl;Mi.output();cout&

26、lt;<"請選擇修改范圍: 1、全部修改2、修改編號3、修改姓名4、修改性別 "<<endl;cout<<"5、修改部門6、修改級別7、修改月薪"<<endl;cout<<"0、退出修改 "<<endl;int choice;cin>>choice;switch(choice)case 1:第13頁知行合一行勝于言cout<<"輸入修改后的編號: "<<endl;string n;cin>>n;for(

27、int j=0;j<top1;j+)if(n=Mj.number)cout<<"該編號的人員已存在 "<<endl;return;cout<<"輸入修改后的姓名: "<<endl;string na;cin>>na;cout<<"輸入修改后的性別: "<<endl;string s;cin>>s;cout<<"輸入修改后的部門: "<<endl;string d;cin>>d;c

28、out<<"輸入修改后的級別: "<<endl;string r;cin>>r;cout<<"輸入修改后的月薪: "<<endl;float sa;cin>>sa;cout<<"是否確認修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Mi.number=n;M=na;Mi.sex=s;Mi.department=d;Mi.rank=r;Mi.salary=sa;elsecout<&l

29、t;"放棄修改 "<<endl;return;save();break;第14頁知行合一行勝于言case 2:cout<<"請輸入修改后的編號 "<<endl;string n;cin>>n;for(int i=0;i<top1;i+)if(n=Mi.number)cout<<"該編號的人員已存在 "<<endl;return;cout<<"是否確認修改?1、是2、否 "<<endl;int a;cin>&g

30、t;a;if(a=1)Mi.number=n;elsecout<<"放棄修改 "<<endl;return;save();break;case 3:cout<<"請輸入修改后的姓名 "<<endl;string na;cin>>na;M=na;cout<<"是否確認修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)M=na;elsecout<<"放棄修改 "&

31、lt;<endl;return;save();break;case 4:第15頁知行合一行勝于言cout<<"請輸入修改后的性別 "<<endl;string s;cin>>s;Mi.sex=s;cout<<"是否確認修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Mi.sex=s;elsecout<<"放棄修改 "<<endl;return;save();break;case 5:cout<<

32、"請輸入修改后的部門 "<<endl;string d;cin>>d;Mi.department=d;cout<<"是否確認修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Mi.department=d;elsecout<<"放棄修改 "<<endl;return;save();break;case 6:cout<<"請輸入修改后級別 "<<endl;string r;cin>

33、;>r;Mi.rank=r;cout<<"是否確認修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)第16頁知行合一行勝于言Mi.rank=r;elsecout<<"放棄修改 "<<endl;return;save();break;case 7:cout<<"請輸入修改后的月薪 "<<endl;float sa;cin>>sa;Mi.salary=sa;cout<<"是否確認修改?1、是

34、2、否 "<<endl;int a;cin>>a;if(a=1)Mi.salary=sa;elsecout<<"放棄修改 "<<endl;return;save();break;case 0:cout<<"退出修改 "<<endl;return;break;default:cout<<" 無 此 選 項 ! 請 輸 入 07 的 數 字 "<<endl;system("pause");break;cout<

35、;<"修改完成 "<<endl;return;cout<<"查無此人 "<<endl;void manager:del()system("cls");read();if(top1=0)cout<<"當前系統(tǒng)沒有儲存記錄 "<<endl;第17頁知行合一行勝于言return;int choice;cout<<"請刪除查找方式: 1、按編號刪除2、按姓名刪除0、退出 "<<endl;cin>>cho

36、ice;switch(choice)case 1:cout<<"請輸入所要刪除人員的編號:"<<endl;string num;cin>>num;for(int i=0;i<top1;i+)if(Mi.number=num)cout<<" 編號 "<<"t"<<" 姓名 "<<"t"<<" 性別 "<<"t"<<" 部門

37、"<<"t"<<" 級別 "<<"t"<<" 月薪 "<<endl;Mi.output();cout<<"是否確認刪除?1、是2、否 "<<endl;int choice;cin>>choice;switch(choice)case 1:for(int j=i;j<top1;j+)Mj=Mj+1;cout<<"刪除成功! "<<endl;to

38、p1=top1-1;save();break;case 2:return;default:cout<<"沒有此選項! "<<endl;return;cout<<"無此人 !"<<endl;system("pause");del();break;case 2:cout<<"請輸入所要刪除人員的姓名:"<<endl;string name;cin>>name;for(int i=0;i<top1;i+)第18頁知行合一行勝于言if

39、(M=name)cout<<" 編號 "<<"t"<<" 姓名 "<<"t"<<" 性別 "<<"t"<<" 部門 "<<"t"<<" 級別 "<<"t"<<" 月薪 "<<endl;Mi.output();cout<

40、<"是否確認刪除?1、是2、否 "<<endl;int choice;cin>>choice;switch(choice)case 1:for(int j=i;j<top1;j+)Mj=Mj+1;cout<<"刪除成功! "<<endl;top1=top1-1;save();break;case 2:return;default:cout<<"沒有此選項! "<<endl;return;cout<<"無此人 !"<

41、<endl;break;case 0:break;default:cout<<" 輸 入 錯 誤 ! 請 輸 入 03 的 數 字 "<<endl;system("pause");del();break;save();void manager:stat()system("cls");read();int choice;cout<<"1、人數統(tǒng)計 2、性別統(tǒng)計 3、平均工資 4、最高工資 5、最低工資 0、退出 "<<endl;cout<<"

42、 請輸入所要執(zhí)行的編號:"<<endl;cin>>choice;switch(choice)case 1:cout<<"經理的人數為: "<<top1<<endl;system("pause");stat();break;第19頁知行合一行勝于言case 2:int a=0,b=0;string Y=" 男"string X=" 女"for(int i=0;i<top1;i+)if(Mi.sex=Y)a+;if(Mi.sex=X)b+;co

43、ut<<" 男性人數: "<<a<<endl;cout<<"女性人數: "<<b<<endl;system("pause");stat();break;case 3:float ave_salary=0;float all_salary=0;for(int i=0;i<top1;i+)all_salary=Mi.salary+all_salary;ave_salary=all_salary/top1;cout<<"平均工資: "

44、;<<ave_salary;system("pause");stat();break;case 4:float max_salary=0;for(int i=0;i<top1-1;i+)if(Mi.salary>Mi+1.salary)max_salary=Mi.salary;Mi+1.salary=max_salary;elsemax_salary=Mi+1.salary;cout<<"最高工資: "<<max_salary;system("pause");stat();break;c

45、ase 5:第20頁知行合一行勝于言float min_salary=0;for(int i=0;i<top1-1;i+)if(Mi.salary<Mi+1.salary)min_salary=Mi.salary;Mi+1.salary=min_salary;elsemin_salary=Mi+1.salary;cout<<"最低工資: "<<min_salary;system("pause");stat();break;case 0:break;default: cout<<" 無 此 選 項

46、! 請 輸 入 05 的 數 字 "<<endl;system("pause");stat();break;3.3 技術人員類的實現technician.h#include "employee.h"class technician :public employeepublic:technician(void);technician(void);void add();void search();void show();void alter();void del();void stat();void save();void read()

47、;void input();void output();protected:float work_time;float time_salary;第21頁知行合一行勝于言technician.cpp#include "StdAfx.h"#include "technician.h"#include<iostream>#include<fstream>#include<string>#include<iomanip>using namespace std;const int MAX=100;technician

48、 TMAX;int static top2=0;technician:technician(void)technician:technician(void)void technician:input()cout<<"請輸入輸入編號: "<<endl;cin>>number;cout<<"請輸入輸入姓名: "<<endl;cin>>name;cout<<"請輸入輸入性別: "<<endl;cin>>sex;cout<<

49、"請輸入輸入部門: "<<endl;cin>>department;cout<<"請輸入輸入級別: "<<endl;cin>>rank;cout<<"請輸入輸入工時: "<<endl;cin>>work_time;cout<<"請輸入輸入時薪: "<<endl;cin>>time_salary;salary=time_salary*work_time;void technician:o

50、utput() cout<<number<<"t"<<name<<"t"<<sex<<"t"<<department<<"t"<<rank<<"t" <<work_time<<"t"<<time_salary<<"t"<<salary<<endl;void techn

51、ician:read()第22頁知行合一行勝于言top2=0;system("cls");ifstream inflie(" 技術人員 .txt",ios:in);if(!inflie)cout<<"打開失??! "<<endl;return;int i=0;while(inflie>>Ti.number>>T>>Ti.sex>>Ti.department>>Ti.rank>>Ti.work_time>>Ti.time

52、_salary>>Ti.salary)i+;top2=i;inflie.close();void technician:save()ofstream outflie("技術人員 .txt",ios:out);if(!outflie)cout<<"打開失?。?"<<endl;return;int i;for(i=0;i<top2;i+)outflie<<Ti.number<<"t"<<T<<"t"<<Ti

53、.sex<<"t"<<Ti.departmen t<<"t"<<Ti.rank<<"t"<<Ti.work_time<<"t"<<Ti.time_salary<<"t"<<Ti.sala ry<<endl;cout<<"保存成功! "<<endl;outflie.close();void technician:add()s

54、ystem("cls");read();if(top2>=MAX)第23頁知行合一行勝于言cout<<"人員已滿 "<<endl;return;cout<<"輸入要添加的編號: "<<endl;string n;cin>>n;for(int i=0;i<top2;i+)if(n=Ti.number)cout<<"該編號的人員已存在 "<<endl;return;technician t;cout<<"

55、;請再次輸入新添加人員的信息"<<endl;t.input();cout<<"是否確認添加?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Ttop2=t;top2=top2+1;save();elsecout<<"放棄添加 "<<endl;return;void technician:search()system("cls");read();if(top2=0)cout<<"當前系統(tǒng)沒有儲存記錄!"

56、<<endl;return;int choice;cout<<"請選擇查找方式: 1、按編號查找2、按姓名查找0、退出 "<<endl;cin>>choice;switch(choice)第24頁知行合一行勝于言case 1:cout<<"請輸入要查找的編號:"<<endl;string num;cin>>num;for(int i=0;i<top2;i+)if(Ti.number=num)cout<<" 編號 "<<&q

57、uot;t"<<" 姓名 "<<"t"<<" 性別 "<<"t"<<" 部門 "<<"t"<<" 級別 "<<"t"<<" 工時 "<<"t"<<" 時薪 "<<"t"<<" 月薪 &

58、quot;<<endl;Ti.output();return;cout<<"查無此人! "<<endl;break;case 2:cout<<"請輸入要查找的姓名 "<<endl;string name;cin>>name;for(int i=0;i<top2;i+)if(T=name)cout<<" 編號 "<<"t"<<" 姓名 "<<"t&qu

59、ot;<<" 性別 "<<"t"<<" 部門 "<<"t"<<" 級別 "<<"t"<<" 工時 "<<"t"<<" 時薪 "<<"t"<<" 月薪 "<<endl;Ti.output();return;cout<<&quo

60、t;查無此人! "<<endl;break;case 0:break;default:cout<<" 輸 入 錯 誤 ! 請 輸 入 03 的 數 字 "<<endl;system("pause");search();break;void technician:show()第25頁知行合一行勝于言system("cls");read();if(top2=0)cout<<"無數據! "<<endl;return;cout<<"

61、 編號 "<<"t"<<" 姓名 "<<"t"<<" 性別 "<<"t"<<" 部門 "<<"t"<<" 級別 "<<"t"<<" 工時 "<<"t"<<" 時薪 "<<"t"<<" 月薪 "<<endl;for(int i=0;i<top2;i+)Ti.output();void technician:alter()system("cls");read();if(top2=0)cout<<"當前系統(tǒng)沒有儲存記錄 "<<endl;return;string num;cout<<"請輸入要修改的技術人員編號:"<<endl;c

溫馨提示

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

評論

0/150

提交評論