工資管理系統(tǒng)C++編程實(shí)驗(yàn)報告_第1頁
工資管理系統(tǒng)C++編程實(shí)驗(yàn)報告_第2頁
工資管理系統(tǒng)C++編程實(shí)驗(yàn)報告_第3頁
工資管理系統(tǒng)C++編程實(shí)驗(yàn)報告_第4頁
工資管理系統(tǒng)C++編程實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)C+程序設(shè)計課程綜合實(shí)習(xí)實(shí)習(xí)題目: 工資管理系統(tǒng) 系 別: 計算機(jī)系 _專 業(yè): 計算機(jī)與科學(xué)班 級: 姓 名: 學(xué) 號: 指導(dǎo)教師: 日 期: 2015年12月27日_目錄 TOC o 1-3 h z u 一、課程實(shí)習(xí)的題目、任務(wù)與要求1.課程實(shí)習(xí)的題目工資管理系統(tǒng)2.課程實(shí)習(xí)內(nèi)容(1)存儲的數(shù)據(jù)包括:員工號,姓名,基本工資,補(bǔ)貼金額,獎勵金額,扣除金額、實(shí)發(fā)工資等)。實(shí)發(fā)工資=基本工資補(bǔ)貼金額獎勵金額-扣除金額。(2)按職工號增加、刪除、修改記錄功能;(3)查詢功能

2、,包括按姓名、職工號查詢;(4)排序功能,按指定的關(guān)鍵字(如職工號、姓名、實(shí)發(fā)工資)排序。3.課程實(shí)習(xí)的要求根據(jù)C+課程所學(xué)的概念、理論和方法,按照C+程序設(shè)計的基本步驟,設(shè)計出一個適當(dāng)規(guī)模的程序來實(shí)現(xiàn)設(shè)計課程內(nèi)容中的全部功能;設(shè)計主控模塊程序,對給出的程序源代碼要給出各部分的詳細(xì)注釋自己根據(jù)能力及需要添加相應(yīng)功能模塊,增強(qiáng)模擬系統(tǒng)功能。包括系統(tǒng)的功能分析、系統(tǒng)的功能模塊設(shè)計、程序流程圖或結(jié)構(gòu)框圖、邏輯結(jié)構(gòu)設(shè)計等。二、系統(tǒng)分析1.需求分析a.能對員工工資信息進(jìn)行錄入。b.能對員工工資信息進(jìn)行增加。c.能對員工工資進(jìn)行刪除。d.能對員工工資進(jìn)行修改。e.能對員工按實(shí)發(fā)工資,姓名,進(jìn)行查詢。f.能

3、輸出員工工資的所有數(shù)據(jù)。g.能對員工工資信息按實(shí)發(fā)工資、員工號進(jìn)行排序。2.系統(tǒng)性能要求a.系統(tǒng)安全、可靠;b.功能齊全;c.操作方便、界面友好;d易于維護(hù)和擴(kuò)充。3.系統(tǒng)的功能分析資料維護(hù):系統(tǒng)維護(hù)包括對員工工資信息的錄入操作及數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)功能:可以對數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)查詢:可以對員工工資信息進(jìn)行查詢。4.系統(tǒng)功能模塊員工查詢系統(tǒng)有:工資信息錄入、增加、刪除、修改,數(shù)據(jù)查詢,排序顯示構(gòu)成。5.模塊框架圖工資管理系統(tǒng)操作查詢排序退出錄入增加刪除修改實(shí)發(fā)工資姓名按實(shí)發(fā)工資排序按員工好排序輸出所有學(xué)生的成績?nèi)?、系統(tǒng)設(shè)計與實(shí)現(xiàn)1.界面設(shè)計程序運(yùn)行后會出現(xiàn)一個簡捷的窗口,便于

4、用戶查詢數(shù)據(jù)。通過cout語句排列而成。2.功能設(shè)計與實(shí)現(xiàn)應(yīng)用系統(tǒng)主控界面主要包括三大模塊:記錄編輯、記錄查詢、排序。記錄編輯(1)數(shù)據(jù)錄入數(shù)據(jù)錄入是通過cin輸入數(shù)據(jù),然后用文件“工資表.txt”來作以儲存。(2)增加員工數(shù)據(jù)增加員工數(shù)據(jù)是通過cin輸入數(shù)據(jù),然后用文件“工資表.txt”來作以儲存。(3)刪除員工數(shù)據(jù)刪除員工數(shù)據(jù)是通過cin語句輸入要刪除的員工信息,然后使用if語句在“工作表1.txt”中尋找名字判斷是否相等,最后在文件中刪除。(4)修改員工數(shù)據(jù)修改員工數(shù)據(jù)是通過cin語句輸入要修改的員工信息,然后使用if語句在“工作表1.txt”中尋找名字判斷是否相等,再使用cin輸入修改

5、的信息,最后儲存在文件中。如果尋找不到則輸出“對不起,您要修改的學(xué)生不存在!請查證后輸入!”。查詢(1)按員工實(shí)發(fā)工資查詢通過輸入員工實(shí)發(fā)工資,在for循環(huán)語句中用if語句在“工作表1.txt”中尋找實(shí)發(fā)工資是否與輸入的實(shí)發(fā)工資相等,如果相等就輸出該員工信息,如果尋找不到就輸出“對不起!您要查詢的員工不存在!”。(2)按員工姓名查詢通過輸入員工姓名,在for循環(huán)語句中用if語句在“工作表1.txt”中尋找姓名是否與輸入的員工姓名相等,如果相等就輸出該員工的信息,如果尋找不到就輸出“對不起!您要查詢的員工不存在!”。(3)瀏覽所有員工工資信息直接輸出“工作表1.txt”中的數(shù)據(jù)。排序(1)按實(shí)發(fā)

6、工資排序先讓實(shí)發(fā)工資數(shù)組賦給a100,再通過雙重for語句依次將an小的調(diào)到前面,排序完后再通過雙重for循環(huán)輸出排序后的相關(guān)信息。(2)按員工號排序先讓員工號數(shù)組賦給a100,再通過雙重for語句依次將an小的調(diào)到前面,排序完后再通過雙重for循環(huán)輸出排序后的相關(guān)信息。在每個case中都有一個判斷是否繼續(xù)運(yùn)行次case和一個是否進(jìn)行其他操作。在case4/5/6/8/9開頭都有一個判斷語句,判斷系統(tǒng)中是否有數(shù)據(jù),沒有數(shù)據(jù)則結(jié)束此case,有則繼續(xù)執(zhí)行下一條語句。四、運(yùn)行及測試結(jié)果每一個case都能執(zhí)行,但是有些的地方還都不夠完善,例如:刪除數(shù)據(jù)中,本來沒有該員工信息,它也依然顯示刪除成功。五

7、、總結(jié)此次C+程序設(shè)計課程綜合實(shí)習(xí),讓我們學(xué)會了如何用C+編寫一個簡單的應(yīng)用程序。首先要對程序的設(shè)計要求有一個比較明確的認(rèn)識,然后系統(tǒng)分析與系統(tǒng)設(shè)計,最后是代碼設(shè)計與調(diào)試。程序?qū)崿F(xiàn)上,設(shè)計了簡單的查詢界面,將各個功能集中出來按照程序編寫原則,便于查詢。根據(jù)C+課程所學(xué)的概念、理論和方法,按照C+程序設(shè)計的基本步驟,設(shè)計出一個適當(dāng)規(guī)模的程序;進(jìn)一步加深對C+語言的理解和掌握。理論聯(lián)系實(shí)際,加深和鞏固所學(xué)的理論知識,提高實(shí)踐能力和計算機(jī)的綜合運(yùn)用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們在編程,就必須不斷改進(jìn),才能更好提高編程能力。六、參考資料龔靜 李娟芳.C+語言程序

8、設(shè)計.西安:西北工業(yè)大學(xué)出版社,2013.附錄:源程序#include#include#include#include#includeusing namespace std;class Moneystring name;float Wage,Subsidy,Reward,Deduct,SumWage;int number;public:Money();Money(int num,string n,float W,float S,float R,float D);float getSumWage();/實(shí)發(fā)工資friend void main();Money:Money(int num, str

9、ing n, float W, float S, float R, float D)number=num;name=n;Wage=W;/基本工資Subsidy=S;/補(bǔ)貼工資Reward=R;/獎勵工資Deduct=D;/扣除工資float Money:getSumWage()SumWage=Wage+Subsidy+Reward-Deduct;return SumWage;void main()system(color 0a);cout*endl;cout*endl;cout*endl;cout*-歡迎來到工資管理系統(tǒng)-*endl;cout*-請選擇您需要的操作!-*endl;cout*-操

10、作:-*endl;cout*-(1)數(shù)據(jù)錄入-*endl;cout*-(2)增加員工數(shù)據(jù)-*endl;cout*-(3)刪除員工數(shù)據(jù)-*endl;cout*-(4)修改員工數(shù)據(jù)-*endl;cout*-查詢:-*endl;cout*-(5)按員工號查詢-*endl;cout*-(6)按姓名查詢-*endl;cout*-(7)瀏覽所有學(xué)生的數(shù)據(jù)-*endl;cout*-排序:-*endl;cout*-(8)按實(shí)發(fā)工資排序-*endl;cout*-(9)按員工號排序-*endl;cout*-(0)退出-*endl;cout*endl;cout*endl; coutp;if(p=0&p=9)chri

11、s1=1;elsecout輸入指令無效!請重新輸入:endl;while(chris1=0);doswitch(p) case 1:/錄入員工數(shù)據(jù)char c;/用于判斷是否int number;string name;float Wage,Subsidy,Reward,Deduct,SumWage;docoutnumber;coutname;coutWage;coutSubsidy;coutReward;coutDeduct;SumWage=Wage+Subsidy+Reward-Deduct;fstream outfile,infile;outfile.open(工資表.txt,ios:o

12、ut|ios:app);/用于顯示錄入的數(shù)據(jù)if(!file)cout工資表.txt can not open.n;return;outfile員工號:number 姓名:nameendl基本工資:Wage 補(bǔ)貼工資:Subsidy 獎勵工資:Reward 扣除工資:Deduct 實(shí)發(fā)工資:SumWageendl;outfile.close();infile.open(工資表.txt,ios:in);if(!file)cout工資表.txt can not open.n;return;char ch;while(infile.get(ch)coutch; /?coutendl;infile.c

13、lose();j+;si=new Money(number,name,Wage,Subsidy,Reward,Deduct);i+;cout員工數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎?(y/n)c;chris1=0;doif(c!=y&c!=n)cout輸入的指令無效!請重新輸入!c;elsechris1=1;while(chris1=0);while(c=y);break; case 2:/增加員工工資信息char c;/用于判斷是否int number;string name;float Wage,Subsidy,Reward,Deduct,SumWage; do coutnumber;coutnam

14、e;coutWage;coutSubsidy;coutReward;coutDeduct;SumWage=Wage+Subsidy+Reward-Deduct; fstream outfile,infile; outfile.open(工資表.txt,ios:out|ios:app); if(!file) cout工資表.txt can not open.n; return; outfile員工號:number 姓名:nameendl基本工資:Wage 補(bǔ)貼工資:Subsidy 獎勵工資:Reward 扣除工資:Deduct 實(shí)發(fā)工資:SumWageendl; outfile.close();

15、 infile.open(工資表.txt,ios:in); if(!file) cout工資表.txt can not open.n; return; char h;while(infile.get(h)couth; coutendl; infile.close(); j+; si=new Money(number,name,Wage,Subsidy,Reward,Deduct); i+; cout員工數(shù)據(jù)增加成功,想繼續(xù)錄入嗎(y/n)c; if(c!=y&c!=n) cout輸入的指令無效!請重新輸入!c; while(c=y); break; case 3:/刪除員工資料char c;

16、string xingming,line,str,name; do ifstream fin(工資表.txt); fstream outfile(工資表.txt,ios:trunc|ios:out); /作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) coutxingming; while(!fin.eof() ) getline(fin,line); istringstream stream(line); name = line.substr(0,line.find( ,0);/找到名字,判斷是否相等 if(name != xingming) outfilelineendl; outfile.

17、close(); fin.close(); fstream f(工資表.txt,ios:trunc|ios:out); ifstream outf(工資表.txt); foutf.rdbuf(); outf.close(); f.close();if(name!=xingming)cout該員工數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎?(y/n)c; if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; while(c=y); break; case 4:/修改員工工資數(shù)據(jù)string sname,line,str,name; int n;float W,S,R,D,SW;int flag;cha

18、r c; if(i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; coutname; fstream fin(工資表.txt,ios:in); ofstream outfile(工資表.txt,ios:trunc|ios:out); coutendl; while(!fin.eof() /在文件中查找 getline(fin,line); istringstream stream(line); sname = line.substr(0,line.find( ,0); if(name!=sname) outfilelineendl; else f

19、lag=1; fin.close(); if(flag=1) coutn; coutname; coutW; coutS; coutR; coutD; SW=W+S+R-D; coutendl; outfile員工號:n 姓名:nameendl基本工資:W 補(bǔ)貼工資:S 獎勵工資:R 扣除工資:D 實(shí)發(fā)工資:SWendl; outfile.close(); fstream outf(工資表.txt,ios:trunc|ios:out); fstream inf(工資表.txt,ios:in); outfinf.rdbuf()endl; outf.close(); inf.close(); if

20、(flag=0) cout對不起,您要修改的學(xué)生不存在!請查證后輸入!endl; coutc; coutendl; if(c!=y&c!=n) cout 輸入的指令無效!請重新輸入!endlc; while(c=y);break; case 5:/按員工號查詢int j=0;float num;char c;int flag; if(i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; cout請輸入您要查詢的員工的員工號:num; for(int j=0;jnumber=num) flag=1; cout您要查詢的員工是:(*sj).nameend

21、l; cout該員工的工資信息為:endl;cout員工號:(*sj).number 姓名:(*sj).nameendl基本工資:(*sj).Wage 補(bǔ)貼工資:(*sj).Subsidy 獎勵工資:(*sj).Reward 扣除工資:(*sj).Deduct 實(shí)發(fā)工資:(*sj).SumWageendl; if(flag=0)cout對不起!您要查詢的員工不存在!endl; coutc; if(c!=y&c!=n) cout輸入的指令無效!請重新輸入!c; while(c=y);break; case 6:/按姓名查詢string n;char c;int j=0;int flag; if(

22、i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; cout請輸入要查詢員工的名字: n; for(int j=0;jname=n) flag=1; cout您要查詢的員工是:(*sj).nameendl; cout該生的工資信息是:n員工號:(*sj).numberendl基本工資:(*sj).Wage 補(bǔ)貼工資:(*sj).Subsidy 獎勵工資:(*sj).Reward 扣除工資:(*sj).Deduct 實(shí)發(fā)工資:(*sj).SumWageendl; if(flag=0)cout對不起您要查詢的員工不存在,請查證后再輸入!endl;cou

23、tc;if(c!=y&c!=n)cout輸入的指令無效!請重新輸入:c; while(c=y); break; case 7:/瀏覽所有員工工資信息cout所有員工數(shù)據(jù)如下:endl; ifstream file; file.open(工資表.txt,ios:in); coutfile.rdbuf(); file.close(); break;case 8:/按實(shí)發(fā)工資排序if(i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl; break; int h,g,n;int j=0;float a100,temp; for(g=0;gi;g+)aj=(*sg).getSumWage();j+; for(h=0;hi;h+)for(n=0;nan+1) temp=an;an=an+1;an+1=temp; for(n=1;n=i;n+)for(int j=0;jgetSumWage()=an) cout實(shí)發(fā)工資排第n的員工是:(*sj).name 實(shí)發(fā)工資:(*sj).SumWageendl; break;

溫馨提示

  • 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

提交評論