C++課程設(shè)計(jì) 職工工資管理系統(tǒng)(報(bào)告內(nèi)含程序完整清單)_第1頁(yè)
C++課程設(shè)計(jì) 職工工資管理系統(tǒng)(報(bào)告內(nèi)含程序完整清單)_第2頁(yè)
C++課程設(shè)計(jì) 職工工資管理系統(tǒng)(報(bào)告內(nèi)含程序完整清單)_第3頁(yè)
C++課程設(shè)計(jì) 職工工資管理系統(tǒng)(報(bào)告內(nèi)含程序完整清單)_第4頁(yè)
C++課程設(shè)計(jì) 職工工資管理系統(tǒng)(報(bào)告內(nèi)含程序完整清單)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄目錄i1概述11.1程序的基本功能11.2其它功能11.3擴(kuò)展功能12課題的分析22.1會(huì)員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊22.2查詢功能模塊即search函數(shù)模塊22.3職務(wù)信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊模塊422.4循環(huán)控制模塊即while(1)模塊23詳細(xì)設(shè)計(jì)33.1類聲明33.2系統(tǒng)簡(jiǎn)略流程圖43.3會(huì)員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊53.4查詢功能模塊即search函數(shù)模塊63.5職務(wù)信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊73.6循環(huán)控制模塊即while(1)模塊74課程設(shè)計(jì)總結(jié)84.1完成情況8

2、4.2遇到的問(wèn)題及解決8參考文獻(xiàn)11附錄121 概述本課程設(shè)計(jì)是面向?qū)ο蟪绦蛟O(shè)計(jì)課程的后繼教學(xué)環(huán)節(jié),學(xué)好c+語(yǔ)言就必須堅(jiān)持用面向?qū)ο蟮乃季S方式分析問(wèn)題、解決問(wèn)題,最好的方法是仿照教材編寫(xiě)c+實(shí)際應(yīng)用程序。此次課程設(shè)計(jì)的題目及要求:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的工資管理系統(tǒng)。1.1 程序的基本功能系統(tǒng)的主要功能是計(jì)算職工當(dāng)月工資并存檔。公司內(nèi)有5種不同類型的職工:技術(shù)人員、銷(xiāo)售人員、文秘、技術(shù)經(jīng)理和銷(xiāo)售經(jīng)理,他們的工資計(jì)算方式各不相同。1.2 其它功能將工資信息存入salary.txt文件中,工資信息包含雇員編號(hào)、姓名、職務(wù)、月份、月收入。info.txt文件中只存留一些信息及會(huì)員最后進(jìn)入系統(tǒng)時(shí)輸入的數(shù)據(jù),最多

3、含有編號(hào)、姓名、職務(wù)、月份的信息。1.3 擴(kuò)展功能采用了會(huì)員制度,并將登入信息及編號(hào)、密碼存入number.txt文件中。2 課題的分析通過(guò)對(duì)課題的深入分析,我將這個(gè)課題分為以下幾個(gè)模塊,深入詳細(xì)得剖析它們。2.1 會(huì)員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊程序運(yùn)行后,先進(jìn)行會(huì)員選擇判斷。為減少會(huì)員重新注冊(cè),通過(guò)輸入兩次編號(hào)及密碼,增加繁瑣度。同時(shí)在一定的方面上,又方便忘記密碼的會(huì)員。通過(guò)密碼匹配,雇員的工資信息這一隱私得到了很好的保障。2.2 查詢功能模塊即search函數(shù)模塊首先,從info.txt中提取編號(hào),與salary.txt中的編號(hào)進(jìn)行匹配,匹配成功,輸出工資信息,直到

4、文件!indata.eof()=0。.2.3 職務(wù)信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊模塊4從info.txt中提取職務(wù)信息,用switch語(yǔ)句進(jìn)行匹配,據(jù)匹配情況調(diào)用不同的函數(shù)進(jìn)行輸入、處理、顯示并以增加方式記錄到salary.txt中。2.4 循環(huán)控制模塊即while(1)模塊為了更加方便使用,盡量改善系統(tǒng),實(shí)現(xiàn)search函數(shù)及systembody函數(shù)功能,在search函數(shù)及systembody函數(shù)模塊的基礎(chǔ)上加了一些必要的語(yǔ)句,并增加了外層循環(huán)控制。3 詳細(xì)設(shè)計(jì)作為一個(gè)面向?qū)ο蟪绦蛟O(shè)計(jì),我們不得不先從類的聲明開(kāi)始設(shè)計(jì),而后是一個(gè)整體的流程圖做框架。最后在從小的模塊

5、結(jié)構(gòu)著手。class techmanager:public technician, public managerprivate:float gradebonus;int grade;public:techmanager(float x=1000);void setgrade(float x);void countsalary( );圖3.1 類聲明3.1 類聲明圖3.2 職工工資管理系統(tǒng)簡(jiǎn)略流程圖3.2 系統(tǒng)簡(jiǎn)略流程圖開(kāi)始優(yōu)點(diǎn):一個(gè)入口,一個(gè)出口!處理5輸入5輸入4輸入3輸入2輸入1處理4處理3處理2處理1工資記錄在salary.txt職務(wù)代碼分析顯示真10查詢信息選擇?是否會(huì)員否注冊(cè)是輸入編

6、號(hào)及密碼假檢驗(yàn)?真輸入姓名、職務(wù)、月份記錄編碼姓名職務(wù)月份至info.txt從info.txt提取職務(wù)代碼再次輸入假結(jié)束3.3 會(huì)員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊清空info.txt并將編號(hào)存入到info.txt中圖3.3 登入系統(tǒng)模塊詳細(xì)流程圖否是否會(huì)員輸入編號(hào)及密碼打開(kāi)name.txt并輸出編號(hào)及密碼匹配?關(guān)閉name.txt否是以增加方式打開(kāi)name.txt并輸入編號(hào)及密碼關(guān)閉name.txt.輸入編號(hào)及密碼3.4 查詢功能模塊即search函數(shù)模塊10否是輸出info.txt中的職務(wù)信息將info.txt的編號(hào)與salary.txt中的編號(hào)進(jìn)行匹配是否打開(kāi)info.

7、txt!indata.eof() ?圖3.4 查詢功能模塊以默認(rèn)方式打開(kāi)info.txt以默認(rèn)方式打開(kāi)salary.txt從文件info.txt中提取編號(hào)并關(guān)閉文件輸出“以上是你的工資信息!”關(guān)閉salary.txt3.5 職務(wù)信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊圖3.5 systembody函數(shù)模塊以默認(rèn)方式打開(kāi)info.txt提取info.txt中的職務(wù)信息switch語(yǔ)句進(jìn)行職務(wù)匹配調(diào)用不同函數(shù)進(jìn)行數(shù)據(jù)處理及顯示3.6 循環(huán)控制模塊即while(1)模塊圖3.6循環(huán)控制模塊即while(1)模塊102輸入選擇操作查詢功能模塊info及recordinfo調(diào)用syste

8、mbody調(diào)用選擇?結(jié)束4 課程設(shè)計(jì)總結(jié)4.1 完成情況本次面向?qū)ο笳n程設(shè)計(jì)的所有功能基本完成,并且擴(kuò)展功能也成功的實(shí)現(xiàn)!可執(zhí)行文件能正常執(zhí)行指令并運(yùn)行!4.2 遇到的問(wèn)題及解決圖4.2.1錯(cuò)誤error c:users權(quán)desktopmain.o(.data$_vt$8employee+0xc):main.cpp: undefined reference to employee:countsalary(void)錯(cuò)誤:沒(méi)有定義employee類中的countsalary函數(shù)!改正:將原先的“virtual void countsalary();”改為” virtual void counts

9、alary()”圖4.2.2錯(cuò)誤錯(cuò)誤分析:(會(huì)員板塊中)提示:“數(shù)字1表示是!其他鍵表示否!”,但定義的選擇變量為整型。加上我當(dāng)時(shí)輸入字符p。改正:“其他鍵表示否!”改為”數(shù)字0表示否”。輸入時(shí)按提示進(jìn)行輸入即可!圖4.2.3錯(cuò)誤調(diào)試分析:錯(cuò)誤發(fā)生在systemhead靜態(tài)全局函數(shù)內(nèi)的文件輸入循環(huán)模塊中!改正:將以nocreate方式即” ifstream indata(d:number.txt,ios:nocreate); “ 該為默認(rèn)打開(kāi)方式即“ifstream indata(d:number.txt);”。圖4.2.4錯(cuò)誤調(diào)試分析:錯(cuò)誤發(fā)生在調(diào)用systembody靜態(tài)全局函數(shù)前后的wh

10、ile循環(huán)模塊中,很有可能是數(shù)據(jù)存取混亂造成的。改正: systemhead靜態(tài)全局函數(shù)內(nèi)“ofstream outdata(d:info.txt,ios:trunc);”改為先清后在以默認(rèn)方式輸入!且將存取整型編號(hào)的變量類型從字符型改為整型。圖4.2.5錯(cuò)誤錯(cuò)誤:后面莫名其妙的跟著一個(gè)提示語(yǔ)句指令。分析調(diào)試:當(dāng)語(yǔ)句指令是基類info函數(shù)內(nèi)的語(yǔ)句,很有可能是循環(huán)控制出現(xiàn)了一些問(wèn)題。改正:見(jiàn)程序源代碼!參考文獻(xiàn)1 下面給出幾個(gè)參考文獻(xiàn)的格式參考2 匿名,不知道,非常多計(jì)算機(jī)實(shí)用教程北京:xx大學(xué)出版社,2004,1232343 美 donis somethingvisual x# 2008技術(shù)內(nèi)

11、幕北京:yyy大學(xué)出版社,2007,56784 johns smith, james nothing. programming in c+ or anything and something. http:/www.world.ic.ac.uk/lab/cplusplus/nothing/index.html 20075 anonymous. something to say. 20076 面向?qū)ο蟪绦蛟O(shè)計(jì) ,鄭莉,清華大學(xué)出版社, 7 面向?qū)ο蟪绦蛟O(shè)計(jì)c+語(yǔ)言,朱戰(zhàn)立等編 西安電子科技大學(xué)出版社8 面向?qū)ο蟪绦蛟O(shè)計(jì)-visual c+,劉斌等編, 清華大學(xué)出版社 9 面向?qū)ο蟪绦蛟O(shè)計(jì)-c+語(yǔ)言

12、描述, richard johnsonbaugh(美)等著,蔡宇輝等譯,機(jī)械工業(yè)出版社, 2003附錄本系統(tǒng)有三個(gè)源程序文件構(gòu)成,分別為system.h, system.cpp及main.cpp。同時(shí)含有三個(gè)系統(tǒng)文件,分別為info.txt, name.txt及salary.txt,且全部存放在d盤(pán)根目錄下,請(qǐng)勿隨意移動(dòng)或修改系統(tǒng)文件。當(dāng)會(huì)員正式進(jìn)入系統(tǒng), info.txt是先清空后用來(lái)存儲(chǔ)會(huì)員輸入的信息,最多含有編號(hào)、姓名、職務(wù)及月份。當(dāng)僅會(huì)員注冊(cè)時(shí),會(huì)將編碼及密碼存儲(chǔ)到name.txt中。當(dāng)僅會(huì)員登入的編號(hào)及密碼進(jìn)行匹配時(shí),會(huì)打開(kāi)輸入文件name.txt,提取編號(hào)及密碼,進(jìn)行匹配。當(dāng)僅當(dāng)輸

13、入工資數(shù)據(jù)時(shí),會(huì)將工資、編號(hào)、姓名、職務(wù)、月份存儲(chǔ)到salary.txt中。當(dāng)僅當(dāng)查詢工資信息時(shí),會(huì)打開(kāi)salary.txt,提取編號(hào)、姓名、職務(wù)、月份及工資。該系統(tǒng)是一個(gè)只適合5種及5種職務(wù)的工資管理系統(tǒng)。并將職務(wù)分為技術(shù)人員、銷(xiāo)售人員、文秘、技術(shù)經(jīng)理和銷(xiāo)售經(jīng)理,其代號(hào)分別為1,2,3,4,5。雇員編號(hào)以整型變量存儲(chǔ),編號(hào)所取范圍在-65536至65535之內(nèi)(包括邊界值),首位數(shù)字表示相應(yīng)的職務(wù)代碼。該系統(tǒng)能力有限,請(qǐng)根據(jù)指示嚴(yán)格輸入相應(yīng)字符!程序清單main 函數(shù)#include system.cpp#include cstringstatic void systemhead();sta

14、tic void systembody(); static void technician();static void salesman();static void secretary();static void techmanager();static void salesmanager();using namespace std;void main()systemhead(); /調(diào)用systemhead靜態(tài)全局函數(shù) coutnn1: 查詢工資;coutnn2: 輸入工資數(shù)據(jù);coutnn0: 退出系統(tǒng)!nn;coutxuanze; if(xuanze=1) employee a; cou

15、tendlendl; a.search(); coutnn輸入工資數(shù)據(jù)請(qǐng)按數(shù)字2,退出系統(tǒng)請(qǐng)按數(shù)字0!nn; /查詢工資信息 if(xuanze=2) employee a; (); a.recordinfo(); /輸入處理工資數(shù)據(jù)并暫時(shí)記錄 systembody(); /調(diào)用systembody靜態(tài)全局函數(shù) coutnn查詢工資請(qǐng)按數(shù)字1,退出系統(tǒng)請(qǐng)按數(shù)字0!nn; if(xuanze=0)exit(0); static void salesmanager()salesmanager a5;float sum;coutsum;a5.setsalesnum(sum);a5.cou

16、ntsalary();a5.recordsalary();static void techmanager()techmanager a4;int gra;coutgra;a4.setgrade(gra);a4.countsalary();a4.recordsalary();static void secretary()secretary a3;float bon;coutbon;a3.setbonus(bon);a3.countsalary();a3.recordsalary();static void salesman()salesman a2;float sum;coutsum;a2.se

17、tsalesnum(sum);a2.countsalary();a2.recordsalary();static void technician()technician a1;float hour;couthour;a1.sethour(hour);a1.countsalary();a1.recordsalary();static void systembody()ifstream indata(info.txt);if(indata=null) exit(0);int num;char na25;int sta;indatanumnasta; /職務(wù)代號(hào)分別為1,2,3,4,5 switch

18、(sta)case 1:technician();break;case 2:salesman();break;case 3:secretary();break; case 4:techmanager();break; case 5:salesmanager();break;default:cout職務(wù)代號(hào)錯(cuò)誤!n請(qǐng)重新輸入!;static void systemhead()char x,y=y;int num;char secret6;while(y) coutx; if(x) coutnum; coutsecret; /輸入編號(hào)及密碼 ifstream indata(number.txt);

19、 if(indata=null) coutnum1; while(!indata.eof() indatasecret1;if(num=num1)&(strcmp(secret,secret1)=0)y=0; /改變判斷變量的值,停止外層循環(huán) break; /終止內(nèi)層循環(huán) indatanum1; indata.close(); / 檢驗(yàn) 登入信息 else coutnum; coutsecret; /注冊(cè)輸入編號(hào)及密碼ofstream outdata(number.txt,ios:app);outdatanumtsecrett;outdata.close(); /將編號(hào)及密碼保存到number

20、.txt中coutendlendl; ofstream outdata(info.txt,ios:trunc); outdata.close(); /清空文件內(nèi)容 ofstream outdata1(info.txt);outdata1numt;outdata.close(); /輸入編號(hào)至info.txt system.cpp#include #include #include system.husing namespace std;void employee:info()char na25;int sta,mon;coutnastamon;name=na;status=sta;month=

21、mon; /存儲(chǔ)姓名、職務(wù)、月份 void employee:search()int num;ifstream indata0(info.txt);if(indata0=null) exit(0);indata0num;indata0.close(); /從文件info.txt中提取編號(hào) int num1;char na125;int sta1;int mon1;float sal;int mon0;ifstream indata(salary.txt);if(indata=null) exit(0);while(!indata.eof()indatanum1na1sta1mon1sal;if

22、(num=num1)coutnum1tna1tsta1tmon1tsaln; /依次輸出該雇員的工資信息 if(indata.eof() coutnn以上是你的工資信息!nn; indata.close();void employee:recordinfo()ofstream outdata(info.txt,ios:app);outdatanametstatustnumbernamestatusmonth;indata.close(); /依次輸出該雇員的工資信息 int num1;char na125;int sta1;int mon1;float sal;ifstream indata1

23、(salary.txt);if(indata1=null) exit(0);while(!indata1.eof()indata1num1na1sta1mon1sal;if(month!=mon1)coutnum1tna1tsta1tmon1tsaln;else exit(0); /依次輸出該雇員的工資信息 coutnumbertnametstatustmonthtsalary; /顯示工資信息ofstream outdata(salary.txt,ios:app);outdatannumbertnametstatustmonthtsalary;outdata.close(); void te

24、chnician:sethour(float x)workhour=x;technician:technician(float x)hoursalary=x;void technician:countsalary()salary=workhour*hoursalary;void salesman:setsalesnum(float x) salesnum=x;salesman:salesman(float x)getrate=x;void salesman:countsalary( )salary=salesnum*getrate;void secretary:setbonus(float x

25、) bonus=x;secretary:secretary(float x)fixedsalary=x;void secretary:countsalary( )salary=fixedsalary+bonus;manager:manager(float x)fixedsalary=x;void techmanager:setgrade(int x)grade=x;techmanager:techmanager(float x)gradebonus=x;void techmanager:countsalary()salary=fixedsalary+grade*gradebonus;sales

26、manager:salesmanager(float x)getrate=x;void salesmanager:countsalary()salary=fixedsalary+salesnum*getrate;void technician:sethour(float x)workhour=x;technician:technician(float x)hoursalary=x;void technician:countsalary()salary=workhour*hoursalary;void salesman:setsalesnum(float x) salesnum=x;salesm

27、an:salesman(float x)getrate=x;void salesman:countsalary( )salary=salesnum*getrate;void secretary:setbonus(float x) bonus=x;secretary:secretary(float x)fixedsalary=x;void secretary:countsalary( )salary=fixedsalary+bonus;manager:manager(float x)fixedsalary=x;void techmanager:setgrade(int x)grade=x;techmanager:techmanager(float x)gradebonus=x;void techmanager:countsalary()salary=fixedsalary+grade*gradebonus;salesmanager:salesmanager(float x)getrate=x;void salesmanager:countsalary()salary=fixedsalary+salesnum*getrate;system.hclass employeeprotected:int number; char name25; int status;in

溫馨提示

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

評(píng)論

0/150

提交評(píng)論