小型公司工資管理系統(tǒng)報告C++_第1頁
小型公司工資管理系統(tǒng)報告C++_第2頁
小型公司工資管理系統(tǒng)報告C++_第3頁
小型公司工資管理系統(tǒng)報告C++_第4頁
小型公司工資管理系統(tǒng)報告C++_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中國石油大學(xué)(華東)信息與控制工程學(xué)院程序設(shè)計實習(xí)報告小型公司工資管理系統(tǒng)的設(shè)計與實現(xiàn)專業(yè)班級:電氣工程及其自動化12級1班學(xué)號:12053117姓名:XXXXX起止日期:2013.7.222013.7.27指導(dǎo)老師:齊玉娟2013年7月27日目錄一、 實習(xí)內(nèi)容二、 設(shè)計思路三、 調(diào)試分析四、 程序清單五、 測試結(jié)果六、 實習(xí)總結(jié)及心得體會七、 程序的使用及相關(guān)說明一、實習(xí)內(nèi)容1.1、課程設(shè)計的目的 此次課程設(shè)計的目的是以程序設(shè)計語言(C/C+)為基礎(chǔ),針對具有一定難度的綜合性題目,進(jìn)行分析、編程、調(diào)試和運(yùn)行,進(jìn)一步掌握面向?qū)ο蠛兔嫦蜻^程程序設(shè)計的基本方法和編程技巧,鞏固所學(xué)理論知識,使理論與

2、實踐相結(jié)合,提高分析問題、解決問題的能力。通過設(shè)計一個簡單的小型公司工資管理系統(tǒng),進(jìn)一步熟悉C+中類的概念、類的封裝、繼承和多態(tài)的實現(xiàn)方式。了解系統(tǒng)開發(fā)的需要分析,類層次設(shè)計,模塊分析,編碼測試,模塊組裝與整體調(diào)試的全過程,逐步熟悉程序設(shè)計的方法,并養(yǎng)成良好的編程習(xí)慣。1.2、設(shè)計題目及要求1 題目:小型公司工資關(guān)系系統(tǒng)設(shè)計2 設(shè)計說明與要求 (1) 公司主要有4類人員:經(jīng)理、技術(shù)員、銷售員、銷售經(jīng)理。要求儲存這些人的職工號姓名、月工資、年齡、性別等信息。 (2) 工資的計算方法A、經(jīng)理:固定月薪為8000元;B、技術(shù)員:工作時間×小時工資(100元每小時);C、銷售員:銷售額

3、15;4%提成;D、銷售經(jīng)理:底薪(5000元)+所轄部門銷售額總額×0.5%;(3) 類的層次結(jié)構(gòu)大體如下:雇員類 技術(shù)員類銷售員類經(jīng)理類銷售經(jīng)理類 (4) 輸入員工基本數(shù)據(jù),要求每類人員不能少于4人,銷售員工不少于8人,員工信息輸出格式參考運(yùn)行效果。 (5) 實現(xiàn)功能 應(yīng)用程序中要有菜單,用于選擇各種功能,其中 數(shù)據(jù)輸入:輸入各種數(shù)據(jù); 數(shù)據(jù)統(tǒng)計:統(tǒng)計各種銷售經(jīng)理下屬銷售員的銷售額及限售額之和;銷售經(jīng)理按工資進(jìn)行的冒泡排序; 數(shù)據(jù)打?。捍蛴「黝悊T工的數(shù)據(jù)信息; 數(shù)據(jù)備份:把各類員工的數(shù)據(jù)星系寫入文件中保存; 推出本系統(tǒng); (6) 菜單說明 數(shù)據(jù)錄入指通過鍵盤輸入各類員工的各項數(shù)據(jù)

4、; 數(shù)據(jù)統(tǒng)計指統(tǒng)計各銷售經(jīng)理下屬銷售員的銷售額及銷售額之和;銷售經(jīng)理按工資進(jìn)行冒泡法排序; 數(shù)據(jù)打印指按照表格的格式在屏幕上輸出個員工的信息; 數(shù)據(jù)備份指將所有員工的信息保存到文件; 退出:結(jié)束程序的運(yùn)行。 (7) 注意一個銷售經(jīng)理管轄多個銷售員。 (8) 其他功能可以自己擴(kuò)充(擴(kuò)充的功能若比較合理可適當(dāng)加分)。 (9) 要求在控制臺下完成(顯示內(nèi)容都在黑屏下顯示)。二、設(shè)計思路1、整體考慮程序應(yīng)該實現(xiàn)的功能,有數(shù)據(jù)輸入,數(shù)據(jù)統(tǒng)計,數(shù)據(jù)打印,數(shù)據(jù)備份和退出系統(tǒng)5個。2、首先定義一個employee的雇員基類,然后由此派生出technician,manager,seller,四個分別為技術(shù)員類,

5、經(jīng)理類,銷售員類;再由manager派生出銷售經(jīng)理類sellmanager。每個類中的數(shù)據(jù)成員都是protected型的,所有的繼承都是公有繼承,基類中定義有數(shù)據(jù)輸入函數(shù)。3、程序里定義了四個對象數(shù)組,technician te4;manager ma4;seller se8;sellmanager sm4,中的數(shù)據(jù)代表各類成員人數(shù)。4、整個程序由主函數(shù)的一個while循環(huán)控制,根據(jù)輸入的操作選項通過一個switch語句判斷該進(jìn)行什么操作,每一個case后面對應(yīng)一個函數(shù),每個函數(shù)對應(yīng)一個操作,1對應(yīng)數(shù)據(jù)輸入,2對應(yīng)數(shù)據(jù)統(tǒng)計,3對應(yīng)數(shù)據(jù)打印,4對應(yīng)數(shù)據(jù)備份,5對應(yīng)退出系統(tǒng)。5、數(shù)據(jù)統(tǒng)計、打印以及

6、備份都以表格形式輸出。表格通過制表符進(jìn)行設(shè)計。表頭表尾表中、菜單還有分隔符均單獨(dú)定義成void 型的函數(shù)。6、主函數(shù)中用到了兩個switch語句,switch(a)控制數(shù)據(jù)的輸入、數(shù)據(jù)統(tǒng)計、數(shù)據(jù)打印、數(shù)據(jù)備份和退出系統(tǒng),而switch(b)定義在switch(a)中a=1的情況下,用于對雇員的數(shù)據(jù)進(jìn)行輸入。7、在進(jìn)行銷售經(jīng)理的數(shù)據(jù)輸出時,考慮其與銷售員之間所屬關(guān)系,排序時通過if語句先判斷所屬關(guān)系,再進(jìn)行冒泡法排序,這是要用到雙重循環(huán)。8、考慮各種數(shù)據(jù)類型還有所需的C+內(nèi)的函數(shù),要引用<iostream> <string> <fstream> <iom

7、anip>這四個頭文件。<fstream>用于數(shù)據(jù)備份,用backup進(jìn)行數(shù)據(jù)的輸出。<iomanip>用其setw()設(shè)置輸出數(shù)據(jù)的寬度,便于表格的制作;三、程序調(diào)試由于該程序比較大,所以我在編寫的過程中難免會出現(xiàn)很多錯誤,通過我的努力終于還是克服了重重困難,獲得了想要的結(jié)果。在無數(shù)次的失敗后我獲得了很多經(jīng)驗,同時也讓我對C+有了更家深入的了解。下面就我在編寫程序過程中遇到的錯誤及調(diào)試分析過程來加以說明。在定義類的過程中給成員數(shù)據(jù)賦初值十分重要,在編寫程序時我將employee類編成了這樣class employee /雇員基類protected:string

8、name;int num;int age;char sex;double wage; 結(jié)果在編譯的過程中遇到了很多錯誤其中前幾個錯誤如下:C:UsersyangkaiDesktopC+e.cpp(19) : error C2628: 'employee' followed by 'void' is illegal (did you forget a ''?)C:UsersyangkaiDesktopC+e.cpp(22) : error C2065: 'name' : undeclared identifierC:Usersyan

9、gkaiDesktopC+e.cpp(24) : error C2065: 'sex' : undeclared identifier大致上就是說name、sex、age、num、和wage未定義,經(jīng)過思考我發(fā)現(xiàn)是這四個成員數(shù)據(jù)未賦初值,因此我在類中又加上了:public:employee()name="0" num=0;age=0;sex='0' wage=0;經(jīng)此修改后,前面的錯誤果然沒有了,由此我得出對成員數(shù)據(jù)賦初值是類定義的過程中必不可少的環(huán)節(jié)。在排序的過程中我也犯了一個致命的錯誤,那就是將冒泡法和選擇法弄混淆了。具體的程序如下:fo

10、r(int i=0;i<4;i+) for(int j=i+1;j<4;j+)if(smi.show_wage()<smj.show_wage()sellmanager g;g=smi;smi=smj;smj=g;在編寫的過程中我將i寫成了j,雖然在編譯的過程中沒有出現(xiàn)什么錯誤,但是在運(yùn)行時發(fā)現(xiàn)得到的結(jié)果卻并不是安公子由少到多的排序,顯然是不符合要求的,由于沒有錯誤提示,找起錯誤來相對麻煩了許多,在查找過C+課本上關(guān)于選擇和排序后我才發(fā)現(xiàn)原來是自己在編譯的過程中將兩種方法混合起來了,弄清楚原因后我很容易就將錯誤改正了過來,再次編譯后發(fā)現(xiàn)顯示的結(jié)果符合要求了。經(jīng)過這一次的分析和

11、調(diào)試我對選擇法和冒泡法有了更加深刻了解。在編寫程序備份的過程中我也犯了個原則上的錯誤,那就是在使用ofstream 和backup前未加上應(yīng)有的頭文件,結(jié)果在編譯時出現(xiàn)了不少錯誤,其中第一個錯誤是:C:UsersyangkaiDesktopC+e.cpp(349) : error C2079: 'backup' uses undefined class 'basic_ofstream<char,struct std:char_traits<char> >'從這里我找到了錯誤的原因,再加上頭文件#include<fstream>

12、再經(jīng)過編譯后頓時發(fā)現(xiàn)原來的錯誤全都消失不見了。四、程序清單#include <iostream>#include <string>#include <iomanip>#include <fstream>using namespace std;int i,j,a,b,sum;class employee /雇員基類protected:string name;int num;int age;char sex;double wage;public:employee()name="0"num=0;age=0;sex='0

13、9;wage=0;void set()cout<<"其姓名:"cin>>name;cout<<"性別(M/W):"cin>>sex;cout<<"年齡:"cin>>age;int show_num()return num;string show_name()return name;char show_sex()return sex;int show_age()return age;double show_wage()return wage;class techni

14、cian:public employee /技術(shù)員派生類protected:int workhour;public:void set()cout<<"技術(shù)員的編號:"cin>>num;employee:set();cout<<"工作時間:"cin>>workhour;cout<<endl;wage=100*workhour;technician te4;class manager:public employee /經(jīng)理派生類public:void set()cout<<"經(jīng)

15、理的編號:"cin>>num;employee:set();cout<<endl;int manager_wage()return 8000;manager ma4;class seller:public employee /銷售員派生類protected:double amount;int belong_to_num;public:void set()cout<<"銷售員的編號:"cin>>num;employee:set();cout<<"銷售額:"cin>>amoun

16、t;cout<<"所屬銷售經(jīng)理的編號:"cin>>belong_to_num;wage=amount*0.04;cout<<endl;int show_belong_to_num()return belong_to_num;double show_amount()return amount;void tongjishuju()cout<<""<<setw(12)<<num<<""<<setw(12)<<name<<&

17、quot;"<<setw(12)<<amount<<""<<endl;seller se8;class sellmanager:public employee /銷售經(jīng)理派生類protected:int sum_amount;public:void set()cout<<"銷售經(jīng)理的編號:"cin>>num;employee:set();cout<<endl;for (int i=0;i<4;i+)if (num=sei.show_belong_to_nu

18、m()sum_amount=sum_amount+sei.show_amount();wage=5000+sum_amount*0.005;void tongjishuju()cout<<"職工號為 "<<num<<" 銷售經(jīng)理 "<<name<<" 下屬銷售員的業(yè)績?yōu)椋?quot;<<endl;cout<<""<<endl;cout<<""<<setw(12)<<"

19、;職工號"<<""<<setw(12)<<"姓名"<<""<<setw(12)<<"銷售額 "<<""<<endl;sellmanager sm4;void line()cout<<"-"<<endl<<endl;void shurute() /輸入技術(shù)員循環(huán) for(i=0;i<4;i+)tei.set();line();voi

20、d shuruma() /輸入經(jīng)理循環(huán) for(i=0;i<4;i+)mai.set();line();void shuruse() /輸入銷售員循環(huán) for(j=0;j<8;j+)sej.set();line();void shurusm() /輸入銷售經(jīng)理循環(huán) for(i=0;i<4;i+)smi.set();line();void mulu()cout<<" 小型公司工資管理系統(tǒng) "<<endl; cout<<""<<endl;cout<<" 請選擇您所需的操作

21、 "<<endl; cout<<" 數(shù)據(jù)輸入:1,并按回車鍵 "<<endl;cout<<" 數(shù)據(jù)統(tǒng)計:2,并按回車鍵 "<<endl;cout<<" 數(shù)據(jù)打印:3,并按回車鍵 "<<endl;cout<<" 數(shù)據(jù)備份:4,并按回車鍵 "<<endl;cout<<" 退出系統(tǒng):5,并按回車鍵 "<<endl; cout<<""

22、;<<endl;cout<<"請選擇一個操作:"cin>>a;cout<<endl;void cijimulu()cout<<" 小型公司工資管理系統(tǒng) "<<endl; cout<<""<<endl;cout<<" 請選擇您所需的操作 "<<endl; cout<<"技術(shù)員數(shù)據(jù)輸入: 1,并按回車鍵 "<<endl;cout<<"經(jīng)

23、理數(shù)據(jù)輸入: 2,并按回車鍵 "<<endl;cout<<"銷售員數(shù)據(jù)輸入: 3,并按回車鍵 "<<endl;cout<<"銷售經(jīng)理數(shù)據(jù)輸入:4,并按回車鍵 "<<endl;cout<<"返回上一級: 5,并按回車鍵 "<<endl; cout<<""<<endl;cout<<"請選擇一個操作:"cin>>b;cout<<endl;void b

24、iaotou() /統(tǒng)計時的表格結(jié)構(gòu)cout<<""<<endl; cout<<""<<setw(12)<<"職工號"<<""<<setw(12)<<"姓名"<<""<<setw(12)<<"性別"<<""<<setw(12)<<"年齡"<<

25、;""<<setw(12)<<"工資"<<""<<endl;void biaozhong()cout<<""<<endl;void biaowei()cout<<""<<endl; void tongjishuju()int a,b,sum;for(a=0;a<4;a+)sum=0;sma.tongjishuju();for(b=0;b<8;b+)if(seb.show_belong_to

26、_num()=sma.show_num()cout<<""<<endl;seb.tongjishuju();sum=sum+seb.show_amount();cout<<""<<endl;cout<<""<<setw(8)<<"銷售額總計: "<<" "<<setw(21)<<sum<<" "<<endl;cout<<&

27、quot;"<<endl;cout<<"銷售經(jīng)理按工資排序為:"<<endl;biaotou();for(int i=0;i<4;i+) for(int j=i+1;j<4;j+)if(smi.show_wage()<smj.show_wage()sellmanager g;g=smi;smi=smj;smj=g;for (int k=0;k<4;k+)biaozhong();cout<<""<<setw(12)<<smk.show_num()<

28、;<""<<setw(12)<<smk.show_name()<<""<<setw(12)<<smk.show_sex()<<""<<setw(12)<<smk.show_age()<<""<<setw(12)<<smk.show_wage()<<""<<endl;biaowei();void displaying()int k;cou

29、t<<"請等待."<<endl<<endl;cout<<"職工基本情況一覽表如下"<<endl<<endl;cout<<"技術(shù)員"<<endl<<endl;biaotou();for(k=0;k<4;k+)biaozhong();cout<<""<<setw(12)<<tek.show_num()<<""<<setw(12)

30、<<tek.show_name()<<""<<setw(12)<<tek.show_sex()<<""<<setw(12)<<tek.show_age()<<""<<setw(12)<<tek.show_wage()<<""<<endl; biaowei();line();cout<<"經(jīng)理"<<endl<<endl;

31、biaotou();for(k=0;k<4;k+)biaozhong();cout<<""<<setw(12)<<mak.show_num()<<""<<setw(12)<<mak.show_name()<<""<<setw(12)<<mak.show_sex()<<""<<setw(12)<<mak.show_age()<<""<

32、;<setw(12)<<mak.manager_wage()<<""<<endl; biaowei();line();cout<<"銷售經(jīng)理"<<endl<<endl;biaotou();for(k=0;k<4;k+)biaozhong();cout<<""<<setw(12)<<smk.show_num()<<""<<setw(12)<<smk.show_na

33、me()<<""<<setw(12)<<smk.show_sex()<<""<<setw(12)<<smk.show_age()<<""<<setw(12)<<smk.show_wage()<<""<<endl; biaowei();line();cout<<"銷售員"<<endl<<endl;cout<<"

34、"<<endl;cout<<""<<setw(8)<<"職工號"<<""<<setw(8)<<"姓名"<<""<<setw(8)<<"性別"<<""<<setw(8)<<"年齡"<<""<<setw(8)<<"

35、;工資"<<""<<setw(20)<<"所屬部門經(jīng)理"<<""<<endl;for(k=0;k<8;k+)cout<<""<<endl; cout<<""<<setw(8)<<sek.show_num()<<""<<setw(8)<<sek.show_name()<<""&

36、lt;<setw(8)<<sek.show_sex()<<""<<setw(8)<<sek.show_age()<<""<<setw(8)<<sek.show_wage()<<""<<setw(20)<<sek.show_belong_to_num()<<""<<endl;cout<<""<<endl<<endl

37、; cout<<"-"<<endl<<endl;void copy()ofstream backup("qt.txt");int k;cout<<"請等待."<<endl<<endl;backup<<"職工基本情況一覽表如下"<<endl<<endl;backup<<"技術(shù)員"<<endl<<endl;backup<<""

38、<<endl; backup<<""<<setw(12)<<"職工號"<<""<<setw(12)<<"姓名"<<""<<setw(12)<<"性別"<<""<<setw(12)<<"年齡"<<""<<setw(12)<<&qu

39、ot;工資"<<""<<endl;for(k=0;k<4;k+)backup<<""<<endl;backup<<""<<setw(12)<<tek.show_num()<<""<<setw(12)<<tek.show_name()<<""<<setw(12)<<tek.show_sex()<<"&quo

40、t;<<setw(12)<<tek.show_age()<<""<<setw(12)<<tek.show_wage()<<""<<endl; backup<<""<<endl; backup<<"經(jīng)理"<<endl<<endl;backup<<""<<endl; backup<<""<<

41、setw(12)<<"職工號"<<""<<setw(12)<<"姓名"<<""<<setw(12)<<"性別"<<""<<setw(12)<<"年齡"<<""<<setw(12)<<"工資"<<""<<endl;for(

42、k=0;k<4;k+)backup<<""<<endl;backup<<""<<setw(12)<<mak.show_num()<<""<<setw(12)<<mak.show_name()<<""<<setw(12)<<mak.show_sex()<<""<<setw(12)<<mak.show_age()<<

43、""<<setw(12)<<mak.manager_wage()<<""<<endl; backup<<""<<endl; backup<<"銷售經(jīng)理"<<endl<<endl;backup<<""<<endl; backup<<""<<setw(12)<<"職工號"<<&quo

44、t;"<<setw(12)<<"姓名"<<""<<setw(12)<<"性別"<<""<<setw(12)<<"年齡"<<""<<setw(12)<<"工資"<<""<<endl;for(k=0;k<4;k+)backup<<""<

45、;<endl;backup<<""<<setw(12)<<smk.show_num()<<""<<setw(12)<<smk.show_name()<<""<<setw(12)<<smk.show_sex()<<""<<setw(12)<<smk.show_age()<<""<<setw(12)<<smk.sho

46、w_wage()<<""<<endl; backup<<""<<endl; backup<<"銷售員"<<endl<<endl;backup<<""<<endl;backup<<""<<setw(8)<<"職工號"<<""<<setw(8)<<"姓名"<

47、<""<<setw(8)<<"性別"<<""<<setw(8)<<"年齡"<<""<<setw(8)<<"工資"<<""<<setw(20)<<"所屬部門經(jīng)理"<<""<<endl;for(k=0;k<8;k+)backup<<"

48、"<<endl; backup<<""<<setw(8)<<sek.show_num()<<""<<setw(8)<<sek.show_name()<<""<<setw(8)<<sek.show_sex()<<""<<setw(8)<<sek.show_age()<<""<<setw(8)<<se

49、k.show_wage()<<""<<setw(20)<<sek.show_belong_to_num()<<""<<endl;backup<<""<<endl<<endl; int main()while (a!=5)mulu();line();switch(a)case 1: while (b!=5)cijimulu();line();switch(b)case 1:shurute();continue;case 2:shuruma();continue;case 3:shuruse();continue;case 4:

溫馨提示

  • 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

提交評論