《面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告-小型公司工資管理系統(tǒng)》_第1頁
《面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告-小型公司工資管理系統(tǒng)》_第2頁
《面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告-小型公司工資管理系統(tǒng)》_第3頁
《面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告-小型公司工資管理系統(tǒng)》_第4頁
《面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告-小型公司工資管理系統(tǒng)》_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、題目:小型公司工資管理系統(tǒng)院系:專業(yè)班級:學(xué)號:學(xué)生姓名:小組成員:2021年9月7日一、 引言此題對程序有如下要求:(1)公司主要有4類人員:經(jīng)理、技術(shù)員、銷售員、銷售經(jīng)理。要求存儲這些人的職工號、姓名、月工資、崗位、年齡、性別等信息。 (2)工資的計算方法: A.經(jīng)理:固定月薪為8000; B.技術(shù)員:工作時間*小時工資100元每小時; C.銷售員:銷售額*4%提成; D.銷售經(jīng)理:底薪5000+所轄部門銷售額總額*0.5%; (3)輸入數(shù)據(jù)要求每類人員不能少于4人,并按以下格式輸出: 職工號姓名性別年齡崗位工資排名 及某部門經(jīng)理所轄部門各售貨員的業(yè)績及自己的工資表: 4菜單要求:要有一個

2、菜單,用于選擇各項功能,其中 1數(shù)據(jù)錄入:輸入各種數(shù)據(jù); 2數(shù)據(jù)統(tǒng)計:各銷售經(jīng)理的工資計算及最終按工資進(jìn)行的冒泡排序; 3數(shù)據(jù)打?。捍蛴∩鲜霰砀瘢?4數(shù)據(jù)備份:把相關(guān)數(shù)據(jù)寫入文件; 5) 退出:推出本系統(tǒng);二、 系統(tǒng)功能介紹:充分利用了類的繼承與派生的知識,先定義了一個雇員類Employee,由雇員類公有派生出技術(shù)員類Tech,銷售員類Seller,經(jīng)理類Manager,由銷售員類Seller,經(jīng)理類Manager公有派生出銷售經(jīng)理類XManager。把基類都定義為虛基類。通過基類去寫的派生類就可以調(diào)基類的公有成員。利用for循環(huán)把經(jīng)理數(shù)據(jù),技術(shù)員數(shù)據(jù),銷售員數(shù)據(jù),銷售經(jīng)理數(shù)據(jù)輸入,利用冒泡排

3、序法把各銷售經(jīng)理的資按升序排列。利用switch進(jìn)行選擇系統(tǒng)進(jìn)行的工作。在主菜單中進(jìn)行調(diào)用各函數(shù),從而實現(xiàn)系統(tǒng)各功能的運(yùn)行。 三、 模塊設(shè)計:主函數(shù)進(jìn)入主顯示界面按照提示進(jìn)行選擇數(shù)據(jù)查詢數(shù)據(jù)備份 退出系統(tǒng)數(shù)據(jù)輸入數(shù)據(jù)統(tǒng)計數(shù)據(jù)打印 返回上一級經(jīng)理數(shù)據(jù)輸入技術(shù)員數(shù)據(jù)輸入銷售員數(shù)據(jù)輸入銷售經(jīng)理數(shù)據(jù)輸入結(jié)束程序四、 各個成員函數(shù)間關(guān)聯(lián):void data_input(); 進(jìn)行數(shù)據(jù)輸入操作void statistics(); /進(jìn)行數(shù)據(jù)統(tǒng)計操作void data_print(); 進(jìn)行數(shù)據(jù)打印操作void data_find(); 進(jìn)行數(shù)據(jù)查詢操作void data_save(); 進(jìn)行數(shù)據(jù)備份操作o

4、fstream對C+程序設(shè)計實習(xí).txt進(jìn)行操作void save_new();保存新增加的聯(lián)系人ofstream對C+程序設(shè)計實習(xí).txt進(jìn)行操作void menu(); 顯示主菜單四、結(jié)果顯示圖:五、程序清單:#include#include#include#include#includeusing namespace std;/常變量供修改用:const int n1=2,n2=2,n3=4,n4=2; /*定義公司各類職工人數(shù)方便修改 (n1:技術(shù)員人數(shù);n2:經(jīng)理人數(shù);n3:銷售員人數(shù);n4:銷售經(jīng)理人數(shù) */const double m_salary=8000; /經(jīng)理固定月工資c

5、onst double hourpay=100; /技術(shù)員小時工資const double basicpay=5000; /銷售經(jīng)理的底薪const double s_proportion=4.0/100; /銷售員的工資提成比例const double sm_proportion=0.5/100; /銷售經(jīng)理的提成比例/聲明局部:void menu(); /主菜單void menu2(); /數(shù)據(jù)輸入二級菜單void menu3(); /數(shù)據(jù)打印二級菜單void data_input(); /數(shù)據(jù)輸入函數(shù)void data_print(); /數(shù)據(jù)打印void charthead1(); /

6、制作表頭1函數(shù),統(tǒng)計銷售額void charthead2(); /制作表頭2函數(shù),數(shù)據(jù)打印void chartend(); /制作表尾 void statistics(); /數(shù)據(jù)統(tǒng)計double sm_salary(); /銷售經(jīng)理工資計算void sm_print(); /銷售經(jīng)理打印數(shù)據(jù)void data_find(); /數(shù)據(jù)查詢void data_save(); /數(shù)據(jù)備份ofstream outfile; /翻開磁盤文件流對象string f_name; /全局變量查詢用/定義類:class Employee /雇員類基類public: void input() /數(shù)據(jù)輸入函數(shù) c

7、outnum; coutname; coutsex; coutage; void print() /打印數(shù)據(jù)函數(shù) coutendl; coutsetw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay endl; void find() /查詢函數(shù) if(f_name=name) charthead2(); print(); chartend(); coutendl; void save() /備份數(shù)據(jù)函數(shù) outfileendl; outfilesetw(6)num setw(8)name setw(6)sex setw(6) age s

8、etw(7)pay endl; protected: int num; /職工號 string name; /職工姓名 char sex; /職工性別 int age; /職工年齡 double pay; /職工工資;class Technician:public Employee /技術(shù)員類公有繼承 public: void input() cout技術(shù)員的; Employee:input(); coutworktime; void print() pay=worktime*hourpay; Employee:print(); void find() Employee:find(); voi

9、d save() pay=worktime*hourpay; Employee:save(); protected: double worktime; /工作時間小時;class Manager:public Employee /經(jīng)理類public: void input() cout經(jīng)理的; Employee:input(); void print() pay=m_salary; Employee:print(); void find() Employee:find(); void save() pay=m_salary; Employee:save(); ;class Sell_manag

10、er:public Employee /銷售經(jīng)理類public: void input() cout銷售經(jīng)理的; Employee:input(); int sm_number() /調(diào)用銷售經(jīng)理職工號 return num; string sm_name() /調(diào)用銷售經(jīng)理姓名 return name; void print() coutendl; coutsetw(6)num setw(8)name setw(6)sex setw(6) age ; void save() outfileendl; outfilesetw(6)num setw(8)name setw(6)sex setw(

11、6) age ; ;class Seller:public Employee /銷售員類public: Seller() sold_amount=0; /構(gòu)造函數(shù),銷售額初始化為0 void input() cout銷售員的; Employee:input(); coutsold_amount; coutnu; void grade() /銷售員業(yè)績輸出 coutendl; coutsetw(6)num setw(8)name setw(7)sold_amount endl; void print() pay=sold_amount*s_proportion; coutendl; coutse

12、tw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay setw(13)nu endl; int s_number() /調(diào)用銷售員所屬銷售經(jīng)理職工號 return nu; double amount() /調(diào)用銷售員銷售額 return sold_amount; void find() if(f_name=name) coutendl; cout 職 工 號 姓 名 性 別 年 齡 工 資 所屬部門經(jīng)理編號 endl; print(); cout; void save() pay=sold_amount*s_proportion; out

13、fileendl; outfilesetw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay setw(13)nu endl; protected: double sold_amount; /銷售額 int nu; /所屬銷售經(jīng)理職工號;/定義全局對象數(shù)組 Technician tn1; /技術(shù)員 Manager mn2; /經(jīng)理 Seller sn3; /銷售員 Sell_manager smn4; /銷售經(jīng)理下屬假設(shè)干銷售員/主函數(shù)局部:int main() char n; menu(); for(int i=0;in; switch(

14、n) case1: /數(shù)據(jù)輸入 coutendl您所選操作為數(shù)據(jù)輸入,請繼續(xù)-endlendl; data_input(); coutendl; menu(); break; case2: /數(shù)據(jù)統(tǒng)計 coutendl您所選操作為數(shù)據(jù)統(tǒng)計,請繼續(xù)-endlendl; statistics(); coutendl銷售經(jīng)理按工資排序為:nendl; sm_print(); coutendl; menu(); break; case3: /數(shù)據(jù)打印 coutendl您所選操作為數(shù)據(jù)打印,請繼續(xù)-endlendl; couta數(shù)據(jù)打印中,請等待nnendl; cout職工根本情況一覽表如下:nendl

15、; data_print(); coutendlendl; couta-數(shù)據(jù)打印完畢-nnendl; menu(); break; case4: /數(shù)據(jù)查詢 coutendl您所選操作為數(shù)據(jù)查詢,請繼續(xù)-endlendl; coutf_name; coutendl-正在查詢,請等待-endlendl; cout您查詢的信息如下:endlendl; data_find(); coutendlendl; menu(); break; case5: /數(shù)據(jù)備份 outfile.open(C+程序設(shè)計實習(xí).txt,ios:out); /翻開磁盤文件流對象 coutendl您所選操作為數(shù)據(jù)備份,請繼續(xù)-

16、endlendl; outfile職工根本情況一覽表如下:nendl; data_save(); outfile.close(); coutendlendl; couta-數(shù)據(jù)備份完成,請繼續(xù)-endlendl; menu(); break; case0: /退出系統(tǒng) coutendl您所選操作為退出系統(tǒng),請確認(rèn)-endlendl; cout 是( y ) n; if(n=y) coutn-請按任意鍵退出系統(tǒng)-endl; exit(0); coutendl; else menu(); break; default: coutendl-出錯!請重新選擇操作! nendl; menu(); bre

17、ak; return 0;/自定義函數(shù)局部:void menu() /菜單函數(shù) cout 小型公司工資管理系統(tǒng) endl; coutendl; cout 請選擇您所需的操作 endl; cout 數(shù)據(jù)輸入:1,并按回車鍵; endl; cout 數(shù)據(jù)統(tǒng)計:2,并按回車鍵; endl; cout 數(shù)據(jù)打?。?,并按回車鍵; endl; cout 數(shù)據(jù)查詢:4,并按回車鍵; endl; cout 數(shù)據(jù)備份:5,并按回車鍵; endl; cout 退出系統(tǒng):0,并按回車鍵; endl; coutendl; cout 請選擇一個操作:;void menu2() /數(shù)據(jù)輸入二級菜單函數(shù) cout 小型公

18、司工資管理系統(tǒng) endl; coutendl; cout 請選擇您所需的操作 endl; cout 經(jīng)理數(shù)據(jù)輸入 :1,并按回車鍵; endl; cout 技術(shù)員數(shù)據(jù)輸入 :2,并按回車鍵; endl; cout 銷售員數(shù)據(jù)輸入 :3,并按回車鍵; endl; cout 銷售經(jīng)理數(shù)據(jù)輸入:4,并按回車鍵; endl; cout 返回上一級 :5,并按回車鍵; endl; coutendl; cout 請選擇一個操作:;void menu3() /數(shù)據(jù)打印二級菜單函數(shù) cout 小型公司工資管理系統(tǒng) endl; coutendl; cout 請選擇您所需的操作 endl; cout 經(jīng)理數(shù)據(jù)打印

19、 :1,并按回車鍵; endl; cout 技術(shù)員數(shù)據(jù)打印 :2,并按回車鍵; endl; cout 銷售員數(shù)據(jù)打印 :3,并按回車鍵; endl; cout 銷售經(jīng)理數(shù)據(jù)打?。?,并按回車鍵; endl; cout 返回上一級 :5,并按回車鍵; endl; coutendl; cout 請選擇一個操作:;void data_input() /數(shù)據(jù)輸入函數(shù) char p;int i; menu2(); for(int j=0;jp; if(p=5) break; else switch(p) case1: for(i=0;in2;i+) mi.input(); coutendl-endl;m

20、enu2();break; case2: for(i=0;in1;i+) ti.input(); coutendl-endl;menu2();break; case3: for(i=0;in3;i+) si.input(); coutendl-endl;menu2();break; case4: for(i=0;in4;i+) smi.input(); coutendl-endl;menu2();break; void charthead1() /制表頭1數(shù)據(jù)統(tǒng)計用 coutendl; cout職 工 號 姓 名 銷 售 額 endl;void charthead2() /制表頭2數(shù)據(jù)打印及銷

21、售經(jīng)理數(shù)據(jù)統(tǒng)計用 coutendl; cout 職 工 號 姓 名 性 別 年 齡 工 資 endl;void chartend() /制表尾數(shù)據(jù)打印及銷售經(jīng)理數(shù)據(jù)統(tǒng)計用 cout; void statistics() /數(shù)據(jù)統(tǒng)計函數(shù) int i,j; for(i=0;in4;i+) double sum=0; coutendl職工號為 smi.sm_number() 銷售經(jīng)理 smi.sm_name() 下屬銷售員的業(yè)績?yōu)?endlendl; charthead1(); for(j=0;jn3;j+) if(sj.s_number()=smi.sm_number() sum=sum+sj.a

22、mount(); sj.grade(); coutendl; cout銷售額總計setw(12)sum endl; coutendl; double salaryn4;double sm_salary() /銷售經(jīng)理工資計算及排序 int i,j;double a ;Sell_manager b; for(int k=0;kn4;k+) salaryk=0; for(i=0;in4;i+) double sum=0; for(j=0;jn3;j+) if(sj.s_number()=smi.sm_number() sum=sum+sj.amount(); salaryi=sum*sm_prop

23、ortion+basicpay; for( j=0;jn4-1;j+) for( i=0;in4-1-j;i+) if(salaryisalaryi+1) a=salaryi+1;salaryi+1=salaryi;salaryi=a; b=smi+1;smi+1=smi;smi=b; return 0;void sm_print() sm_salary(); charthead2(); for(int i=0;in4;i+) smi.print(); coutsetw(7)salaryi endl; chartend(); coutendl;void data_print() /數(shù)據(jù)打印 c

24、har p;int i,j; menu2(); for(j=0;jp; if(p=5) break; else switch(p) case1: coutendl經(jīng)理endl; /經(jīng)理信息 charthead2(); for(i=0;in2;i+) mi.print(); chartend(); coutendlendl-endl; menu3();break; case2: coutendl技術(shù)員endl; /技術(shù)員信息 charthead2(); for(i=0;in1;i+) ti.print(); chartend(); coutendlendl-endl; menu3();break

25、; case3: coutendl銷售員endl; /銷售員信息 coutendl; cout 職 工 號 姓 名 性 別 年 齡 工 資 所屬部門經(jīng)理編號 endl; for(i=0;in3;i+) si.print(); cout; coutendlendl-nendl; menu3();break; case4: coutendl銷售經(jīng)理endl; /銷售經(jīng)理信息 sm_salary(); sm_print(); coutendlendl-endlendl; menu3();break; void data_find() /數(shù)據(jù)查詢函數(shù) for(int i=0;in1;i+) ti.find(); for(i=0;in2;i+) mi.find(); for(i=0;in3;i+) si.find(); for(i=0;in4;i+) if(f_name=smi.sm_name() c

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論