石油大學小型工資管理系統C++_第1頁
石油大學小型工資管理系統C++_第2頁
石油大學小型工資管理系統C++_第3頁
石油大學小型工資管理系統C++_第4頁
石油大學小型工資管理系統C++_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、中國石油大學(華東)信息與控制工程學院程序設計實習報告小型公司工資管理系統設計專業班級:學號:姓名: 實習時間: 2015年7月1目錄一、 實習內容1二、 設計思路4三、 程序調試過程中典型問題及解決方法5四、 程序使用說明6五、 總結及心得體會22一、實習內容設計一個簡單的小型公司管理系統,。了解系統開發的需求設計、類層次設計、模版分析、模塊組裝與整體調試的過程;熟悉程序設計的方法。1.題目:小型公司工資管理系統的設計 類的結構              

2、;   先創建了一個Employer基類.然后派生出四個類: Manager、Technician、Salesman、Salemanager。分別對經理、技術員、銷售員、銷售經理的數據進行輸入。然后選用了一個switch的多分枝選擇結構,依次據菜單的選擇條件執行數據的輸入、數據統計、數據打印、數據備份和退出等。數據的備份要用到fstream類,用來支持對磁盤文件的輸入輸出。對于switch,結束循環用到exit函數。此函數的參數為任意整數。運行程序后,根據菜單欄的提示選擇操作。輸入“1”回車后,進入職工基本數據輸入欄,在這里,要將所有的技術員、銷售員、銷售經理、經

3、理的職工號、姓名、性別、工作時間等信息輸入程序中。職工的數據輸入完成后自動跳轉到菜單欄,選擇“2”回車后進入到數據統計界面,程序會自動對你輸入的各銷售經理下屬銷售員的銷售額及銷售額之和進行統計,并對銷售經理按工資進行排序。數據統計完成后,選擇“3”,程序會對你輸入的職工基本信息進行打印,打印結果顯示在控制臺下。在菜單欄中繼續選擇“4”后,程序將對所有的員工信息進行打印并保存到文件中。最后選擇“5”,根據提示是否退出本程序,輸入“Y”,結束程序執行;輸入“N”,返回主菜單繼續進行程序。2.設計說明與基本要求: (1)公司主要有4類人員: 經理、技術員、銷售員、銷售經理。要求存儲這些人的職工號、姓

4、名、性別、年齡、月工資等信息; (2) 工資的計算方法: 經理:固定月薪為8000元; 技術員:工作時間×工資(100元/小時); 銷售員:銷售額×4%提成; 銷售經理:底薪(5000元)+下屬銷售員銷售額總額×0.5%; (3) 員工基本數據的輸入: 要求每類人員不能少于4人,其中銷售員需要8名,每名銷售經理手下有名銷售員。3. 實現的基本功能:數據輸入、數據統計、數據打印、數據備份、退出。(應用程序中要有菜單,用于選擇各項功能)4.菜單說明 數據輸入要通過鍵盤; 統計是統計銷售經理下屬銷售員的銷售額及銷售額之和,銷售經理按工資冒泡排序; 數據打印是以表格形式在

5、屏幕上輸出; 數據備份是將所有的員工信息保存到文件; 退出:結束程序運行。二、設計思路從給出的運行結果看主函數是一個選擇結構,在這里我采用switch結構,根據學過的c+知識合理的定義類及其對象在類中聲明公有函數,來完成對保護數據成員的調用,留作接口,輸出數據。 根據運行結果菜單來看知道有5個功能,要分為5個函數來一一實現所需功能,所以在整個系統就要分為5大塊來完成。三、程序調試過程中典型問題及解決方法在編寫整個程序的第一部分內容數據輸入函數時,完成的較快,但是類數組的定義并沒有定義為全局數組,雖然把第一天的任務完成了,但是這樣的定義給第二天的統計函數的書寫造成的極大地不便。結果第二天我又重新

6、修改了第一天的程序,把類數組定義為了全局數組,方便后面程序的調用。在編寫打印函數時,遇到了很多難題,像如何把保護類的成員函數給調用出來,剛開始想到是指針的方法,但是經過嘗試,可是實現,但是會讓程序顯得十分冗雜,后來和同學討論,發現了一種更為簡便的方法,在public里面定義一個return函數,通過這個函數可以訪問protected里面的成員函數,這樣就可以在類外用這些數據。在編寫主函數時采用的switch結構,但這個結構只能使用一次,于是我想到了for循環語句,考慮到在輸入選擇操作時,可能有輸錯誤的行為,所以把這個函數能夠循環的最大次數規定到了20次。編寫可控各類人員函數時,想要用數組,但是

7、數組必須有初始值,考慮到用戶是一家小型公司,就把初始值定為30,方便用戶使用。在編寫打印備份函數時,由于各類成員姓名長度不一,無法使表格對齊,翻看了課本,學到了一種控制字符長度的變量setw,不論其后的數據占多大的空間,其長度是固定值。四、程序使用說明#include<iostream>#include<string>#include<iomanip>/控制輸出量長度的頭文件#include<fstream>/輸入輸出流頭文件using namespace std;void datainput();void chose();void statis

8、tics();void print();void backup();int n,i;int a,b,c,d;class Employee/基類雇員類protected:int num,salary;int age;string name;char sex;public:void display();int return_num()/return num;string return_name()/return name;char return_sex()/return sex;int return_age()/return age;int return_salary()/return salar

9、y;void Employee:display()/基類成員函數cout<<"姓名:"cin>>name;cout<<"性別(男士填m/女士填w):"cin>>sex;cout<<"年齡:"cin>>age;class Technician:public Employee/定義技術員類,繼承方式為共有繼承protected: double worktime;public: void Technician_out()cout<<"技術員編號:&

10、quot;cin>>num;/輸入技術員編號display();/輸入年齡性別姓名 cout<<"工作時間:"cin>>worktime;salary=100*worktime;Technician t30;/技術員class Manager:public Employee/定義經理類,繼承方式為共有繼承public: void Manager_out()cout<<"經理編號:"cin>>num;/輸入經理編號display();/輸入年齡性別姓名salary=8000;Manager m30

11、;/經理class Salesman:public Employee/定義銷售員類,繼承方式為共有繼承protected: double amount; int belong_manager_num;public: void Salesman_out()cout<<"銷售員編號:"cin>>num;/輸入銷售員編號display();/輸入年齡性別姓名cout<<"銷售額:" cin>>amount;/輸入銷售額salary=amount*0.04;cout<<"所屬經理編號:&quo

12、t;cin>>belong_manager_num;/輸入所屬經理編號int fun1() /return belong_manager_num;string fun2() /return name;int fun3() /return amount;Salesman s30;/銷售員class SalesManager:public Employee/定義銷售經理類,繼承方式為共有繼承protected:int saleroom;public: void SalesManager_out()cout<<"銷售經理編號:"cin>>num

13、;/輸入銷售經理編號display();/輸入年齡性別姓名void SalesManager_salary_calculate(int n)/銷售經理工資計算salary=n*0.005+5000;saleroom=n;int return_salary()return salary;int return_saleroom()return saleroom;SalesManager sm30;/銷售經理void main()/主函數for(i=0;i<20;i+)chose();switch (n)case 1:datainput();break;case 2:statistics();

14、break;case 3:print();break;case 4:backup();break;case 5:exit(0);break;default :cout<<"您輸入的數字錯誤!"<<endl;void chose()cout<<" 小型公司工資管理系統"<<endl;cout<<""<<endl;cout<<" 請選擇您所需的操作 "<<endl;cout<<" 數據輸入:1,并按回車

15、鍵 "<<endl;cout<<" 數據統計:2,并按回車鍵 "<<endl;cout<<" 數據打?。?,并按回車鍵 "<<endl;cout<<" 數據備份:4,并按回車鍵 "<<endl;cout<<" 退出系統:5,并按回車鍵 "<<endl;cout<<""<<endl;cout<<"請選擇您的操作!"cin>

16、;>n;void datainput()/數據輸入函數int i;cout<<"請輸入各個職位函數"<<endl;cout<<"技術員:"cin>>a;cout<<"經理:"cin>>b;cout<<"銷售員:"cin>>c;cout<<"銷售經理:"cin>>d;cout<<""<<endl;for(i=0;i<a;i+

17、)ti.Technician_out();cout<<""<<endl;for(i=0;i<b;i+)mi.Manager_out();cout<<""<<endl;for(i=0;i<c;i+)si.Salesman_out();cout<<""<<endl;for(i=0;i<d;i+)smi.SalesManager_out();cout<<""<<endl;void order()/冒泡排序函數

18、SalesManager p;for(int y=0;y<d-1;y+)for(int z=1;z<d;z+)if(smy.return_saleroom()<smz.return_saleroom()p=smz;smz=smy;smy=p;void statistics()/統計函數for(int x=0;x<d;x+)int sum=0;int j;cout<<"職工號為"<<smx.return_num()<<"銷售經理"<<smx.return_name()<<&

19、quot;下屬銷售員的業績為:"<<endl;cout<<""<<endl;cout<<" 職工號 姓名 銷售額 "<<endl;for(j=0;j<c;j+)if(smx.return_num()=sj.fun1()cout<<""<<endl;sum=sum+sj.fun3();cout<<""<<setw(14)<<sj.return_num()<<"&

20、quot;<<setw(14)<<sj.return_name()<<""<<setw(14)<<sj.fun3()<<""<<endl;smx.SalesManager_salary_calculate(sum);cout<<""<<endl;cout<<""<<setw(14)<<"銷售額總計"<<""<<

21、setw(30)<<sum<<""<<endl;cout<<""<<endl;cout<<"銷售經理按工資排序為:"<<endl;cout<<""<<endl;cout<<" 職工號 姓名 性別 年齡 工資 "<<endl;order();for(int i=0;i<d;i+)cout<<""<<endl;cout&

22、lt;<""<<setw(12)<<smi.return_num()<<""<<setw(12)<<smi.return_name()<<""<<setw(12)<<smi.return_sex()<<""<<setw(12)<<smi.return_age()<<""<<setw(12)<<smi.return_salar

23、y()<<""<<endl;cout<<""<<endl;/打印函數void print()int i,j,k;cout<<"請等待"<<endl;cout<<"職工基本情況一覽表如下"<<endl;cout<<"技術員"<<endl;/技術員cout<<""<<endl;cout<<" 職工號 姓名 性別 年齡

24、 工資 "<<endl;for(i=0;i<a;i+)cout<<""<<endl;cout<<""<<setw(10)<<ti.return_num()<<""<<setw(10)<<ti.return_name()<<""<<setw(10)<<ti.return_sex()<<""<<setw(10)<

25、<ti.return_age()<<""<<setw(10)<<ti.return_salary()<<""<<endl;cout<<""<<endl;cout<<""<<endl;cout<<"經理"<<endl;/經理cout<<""<<endl;cout<<" 職工號 姓名 性別 年齡 工

26、資 "<<endl;for(i=0;i<b;i+)cout<<""<<endl;cout<<""<<setw(10)<<mi.return_num()<<""<<setw(10)<<mi.return_name()<<""<<setw(10)<<mi.return_sex()<<""<<setw(10)<&l

27、t;mi.return_age()<<""<<setw(10)<<mi.return_salary()<<""<<endl;cout<<""<<endl;cout<<""<<endl;cout<<"銷售經理"<<endl;/銷售經理cout<<""<<endl;cout<<" 職工號 姓名 性別 年齡

28、 工資 "<<endl;for(k=0;k<d;k+)int sum=0;for(j=0;j<c;j+)if(smk.return_num()=sj.fun1()sum=sum+sj.fun3();smk.SalesManager_salary_calculate(sum);cout<<""<<endl;cout<<""<<setw(10)<<smk.return_num()<<""<<setw(10)<<

29、smk.return_name()<<""<<setw(10)<<smk.return_sex()<<""<<setw(10)<<smk.return_age()<<""<<setw(10)<<smk.return_salary()<<""<<endl;cout<<""<<endl;cout<<""<&l

30、t;endl;cout<<"銷售員"<<endl;/銷售員cout<<""<<endl;cout<<" 職工號 姓名 性別 年齡 工資 所屬經理編號 "<<endl;for(i=0;i<c;i+)cout<<""<<endl;cout<<""<<setw(10)<<si.return_num()<<""<<setw(

31、10)<<si.return_name()<<""<<setw(10)<<si.return_sex()<<""<<setw(10)<<si.return_age()<<""<<setw(10)<<si.return_salary()<<""<<setw(14)<<si.fun1()<<""<<endl;cout<

32、;<""<<endl;cout<<""<<endl;void backup()/備份函數ofstream putout;/建立輸出文件流對象putout.open("職員基本信息備份.txt");/使文件流與txt文件建立關聯putout<<"職工基本情況一覽表如下"<<endl;putout<<"技術員"<<endl;/技術員putout<<""<<endl;p

33、utout<<" 職工號 姓名 性別 年齡 工資 "<<endl;for(i=0;i<a;i+)putout<<""<<endl;putout<<""<<setw(10)<<ti.return_num()<<""<<setw(10)<<ti.return_name()<<""<<setw(10)<<ti.return_sex()<

34、<""<<setw(10)<<ti.return_age()<<""<<setw(10)<<ti.return_salary()<<""<<endl;putout<<""<<endl;putout<<""<<endl;putout<<"經理"<<endl;/經理putout<<""&l

35、t;<endl;putout<<" 職工號 姓名 性別 年齡 工資 "<<endl;for(i=0;i<b;i+)putout<<""<<endl;putout<<""<<setw(10)<<mi.return_num()<<""<<setw(10)<<mi.return_name()<<""<<setw(10)<<mi.retu

36、rn_sex()<<""<<setw(10)<<mi.return_age()<<""<<setw(10)<<mi.return_salary()<<""<<endl;putout<<""<<endl;putout<<""<<endl;putout<<"銷售經理"<<endl;/銷售經理putout<<""<<endl;putout<<" 職工號 姓名 性別 年齡 工資 "<<endl;for(int k=0;k<d;k+)int sum=0;for(int j=0;j<c;j+)if(smk.return_num()=sj.fun1()sum=sum+sj.fun3();smk.SalesManager_salary_calculate(sum);putout<<""<<endl;putout<<"&quo

溫馨提示

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

評論

0/150

提交評論