c語(yǔ)言計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)報(bào)告工資信息管理系統(tǒng)_第1頁(yè)
c語(yǔ)言計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)報(bào)告工資信息管理系統(tǒng)_第2頁(yè)
c語(yǔ)言計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)報(bào)告工資信息管理系統(tǒng)_第3頁(yè)
c語(yǔ)言計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)報(bào)告工資信息管理系統(tǒng)_第4頁(yè)
c語(yǔ)言計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)報(bào)告工資信息管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生姓名: 班 學(xué) 號(hào): 班級(jí)序號(hào):055092-01 指導(dǎo)教師: 中國(guó)地質(zhì)大學(xué)一、 題目要求工資信息管理系統(tǒng)【要求】 該系統(tǒng)能夠?qū)崿F(xiàn)工資信息管理。系統(tǒng)包括錄入、瀏覽、查詢、統(tǒng)計(jì)等功能。其中錄入功能要求能夠添加新的工資信息到文件;瀏覽功能要求能按照工資卡號(hào)、姓名分類瀏覽,提供分屏顯示;有排序功能,排序后按照工資卡號(hào)升序或?qū)嵃l(fā)工資降序輸出;查詢功能要求能夠按照工資卡號(hào)、姓名查詢;統(tǒng)計(jì)功能要求能夠按照月份累計(jì)統(tǒng)計(jì)某職工在某時(shí)間段實(shí)發(fā)工資總金額?!咎崾尽?. 文件中一行數(shù)據(jù)對(duì)應(yīng)一個(gè)職工工資信息2. 工資信息的數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,一個(gè)數(shù)組元素對(duì)應(yīng)一條工資單記錄3. 工資

2、單信息包括工資卡號(hào)、姓名、月份、應(yīng)發(fā)工資、水費(fèi)、電費(fèi)、稅金、實(shí)發(fā)工資等4. 實(shí)發(fā)工資=應(yīng)發(fā)工資-水費(fèi)-電費(fèi)-稅金,其中稅金的計(jì)算方法為 a. 應(yīng)發(fā)工資800元,稅金=0 b. 800應(yīng)發(fā)工資1400元,稅金=(應(yīng)發(fā)工資-1400)*10%另: 課程實(shí)習(xí)報(bào)告的參考格式1. 題目編號(hào)2. 寫出系統(tǒng)總設(shè)計(jì)的思路、功能模塊劃分。給出合理的測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果,要求能夠體現(xiàn)程序的正確性和完備性及對(duì)錯(cuò)誤輸入的處理??偨Y(jié)算法或系統(tǒng)的優(yōu)缺點(diǎn),給出算法或系統(tǒng)進(jìn)一步改進(jìn)的設(shè)想。在附錄中給出源代碼,3. 附錄二、 需求分析根據(jù)題目要求,由于工資單信息是存放在文件中,所以應(yīng)提供文件的輸入、輸出等操作;在程序中需要瀏覽學(xué)

3、生的信息,應(yīng)提供錄入、瀏覽、查詢、統(tǒng)計(jì)等操作;另外還應(yīng)提供鍵盤式選擇菜單實(shí)現(xiàn)功能選擇。三、 總體設(shè)計(jì)根據(jù)上面的需求分析,可以將這個(gè)系統(tǒng)的設(shè)計(jì)分為以下幾個(gè)模塊:數(shù)據(jù)輸入,數(shù)據(jù)添加,數(shù)據(jù)瀏覽,數(shù)據(jù)查詢,數(shù)據(jù)統(tǒng)計(jì)。錄入職工工資信息模塊添加職工工資信息模塊瀏覽職工工資信息模塊查詢職工工資信息模塊統(tǒng)計(jì)職工工資信息模塊功能選擇工資信息管理系統(tǒng) 圖一 系統(tǒng)功能模塊圖四、詳細(xì)設(shè)計(jì)1.主函數(shù)主函數(shù)提供輸入、處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方式選擇。流程圖開始顯示一系列功能選擇輸入n,判斷m 是否是1到6?根據(jù)n值調(diào)用各功能模塊函數(shù)結(jié)束n 圖二 主函數(shù)模塊功能流程圖程序main() /*主函數(shù)*/

4、int n,w; /*變量n保存選擇菜單數(shù)字,w判斷輸入的數(shù)字是否在功能菜單應(yīng)對(duì)數(shù)字的范圍內(nèi)*/do puts(ttt*主菜單*nn); printf(tttt 1.錄入工資信息: n); printf(tttt 2.添加工資信息: n); printf(tttt 3.瀏覽工資信息: n); printf(tttt 4.查詢工資信息: n); printf(tttt 5.統(tǒng)計(jì)工資信息: n); printf(tttt 6.退出系統(tǒng): n); puts(nnttt*n); printf(選擇(1-6): bb); scanf(%d,&n); if(n6) w=1;getchar(); else

5、w=0; /*對(duì)選擇的數(shù)字作判斷*/while (w=1);switch(n) case 1: enter();break; /*輸入模塊*/ case 2: add();break; /*添加模塊*/ case 3: browse();break; /*瀏覽模塊*/ case 4: search();break; /*查詢模塊*/ case 5: count();break; /*統(tǒng)計(jì)模塊*/ case 6: exit(0);break; /*退出*/ 2各功能模塊設(shè)計(jì)(1)輸入函數(shù)【分析】 單獨(dú)看各數(shù)據(jù)信息,姓名是字符型,可以采用字符型數(shù)組;工資卡號(hào)和月份是整數(shù),采用整型;實(shí)發(fā)工資,水費(fèi),

6、電費(fèi),稅金,應(yīng)發(fā)工資有可能是小數(shù)可采用實(shí)型。數(shù)據(jù)信息存放在文件中,一條記錄對(duì)應(yīng)一個(gè)職工的工資單信息,既符合習(xí)慣也方便信息管理。同時(shí)把職工的工資卡號(hào),姓名,月份,應(yīng)發(fā)工資,水費(fèi),電費(fèi),稅金,實(shí)發(fā)工資作為結(jié)構(gòu)體成員,用結(jié)構(gòu)體數(shù)組存放若干個(gè)職工的工資信息。struct gz開始輸入用戶要輸入工資資料的份數(shù)ni從0到n-1調(diào)用輸入函數(shù)input(i)i!=0保存調(diào)用函數(shù)save(n) int num; char name20; int month; long ys; long ss; long wf; long ef; long tax; gn; /*gn中每個(gè)數(shù)組元素對(duì)應(yīng)一份工資資料*/【流程圖】

7、【程序】enter() int i,n; printf(共輸入多少份工資信息 (0-%d)?:,n-1); 圖三 輸入模塊流程圖 scanf(%d,&n); printf(n 現(xiàn)在開始錄入. nn); for(i=0;in;i+) printf(n第 %d 份工資信息:工資卡號(hào) 姓名 月份 應(yīng)發(fā)工資 水費(fèi) 電費(fèi)n,i+1); input(i); sort(); if(i!=0) save(n); printf_back(); (2)添加模塊【分析】調(diào)用加載函數(shù)n=load();并計(jì)算可以記錄個(gè)數(shù)輸入用戶要追加職工記錄個(gè)數(shù)mk=m+ni從n到k調(diào)用輸入函數(shù)input(i)保存追加的記錄 該模塊的

8、功能是用戶需要增加新的職工工資信息記錄,從鍵盤輸入并逐條寫入到原來的輸入文件中,注意采用追加而不是覆蓋的方式?!玖鞒虉D】 【程序】add() int i,n,m,k;file *fp;n=load();printf(要添加多少份信息?(0-%d):,n-n-1);scanf(%d,&m);k=m+n;for(i=n;ik;i+)printf(n請(qǐng)輸入信息:工資卡號(hào) 姓名 月份 應(yīng)發(fā)工資 水費(fèi) 電費(fèi)n,i-n+1); input(i); 圖四 添加模塊流程圖sort();save(k);printf_back();(3)瀏覽模塊【分析】 該模塊的功能是顯示所有職工工資信息記錄?!玖鞒虉D】顯示職工

9、工資信息記錄按任意鍵顯示下一屏按任意鍵返回主菜單 圖五 瀏覽模塊流程圖【程序】browse() int i,n; n=load(); printf_face(); for(i=0;in;i+) if(i%10=0) printf(nnpass any key to contiune.); getch(); puts(nn); printf_one(i); printf(n); printf(tthere are %d record.n,n); printf(npass any key to back.); getch(); menu(); (4) 查詢模塊【分析】分為兩個(gè)子模塊:安姓名查找模塊

10、和按卡號(hào)查詢模塊【流程圖】開始顯示一系列功能選擇輸入n,判斷m 是否是0到4?根據(jù)n值調(diào)用各功能模塊函數(shù)結(jié)束n【程序】search() int n; while(1) printf(n1. 按照卡號(hào)查詢: n ); printf(n2. 按照姓名查詢: n ); printf(n0. 返回主菜單: n);scanf(%d,&n);switch(n) case 1:search_num();break; case 2:search_name();break; case 0:menu();break; (4)按姓名查找模塊【分析】 該模塊的功能是根據(jù)輸入的職工姓名查找對(duì)應(yīng)的工資信息記錄?!玖鞒虉D】

11、 圖六 按姓名查找模塊流程圖【程序】search_name() int i,n,k,w1=1;struct gz s;n=load(); do k=-1; printf(nnenter name that you want to search! name); scanf(%s,); printf_face(); for(i=0;in;i+) if(strcmp(,)=0) k=i; printf_one(k); if(k=-1) printf(nnno exist!please); printf(nnare you again?nt 1).again 2)

12、no and back bb ); scanf(%d,&w1); while(k=-1&w1=1); menu();(5)按工資卡號(hào)查找模塊【分析】 該模塊的功能是根據(jù)輸入的職工工資卡號(hào)查找對(duì)應(yīng)的工資信息記錄?!玖鞒虉D】 圖七 按工資卡號(hào)查找模塊流程圖【程序】search_num() int i,n,k,w1=1;struct gz s;n=load(); do k=-1; printf(nnenter number that you want to search! number); scanf(%d,&s.num); printf_face(); for(i=0;in;i+) if(s.nu

13、m=gi.num) k=i; printf_one(k); if(k=-1) printf(nnno exist!please); printf(nnare you again?nt 1).again 2)no and back bb ); scanf(%d,&w1); while(k=-1&w1=1); menu();(6)統(tǒng)計(jì)模塊【分析】該模塊的功能是根據(jù)用戶輸入的職工姓名和所統(tǒng)計(jì)的月份來計(jì)算得出某個(gè)時(shí)間段的工資總額?!玖鞒虉D】輸入職工姓名輸入起始月份輸入結(jié)束月份統(tǒng)計(jì)得出結(jié)果圖八 統(tǒng)計(jì)模塊流程圖【程序】count()int i,j,k,n,sum=0;char name20;n=load(

14、);printf(nenter the enployers name: tt);scanf(%s,name);printf(nenter the first month to count! month: tt);scanf(%d,&j);printf(nenter the last month to count! month: tt);scanf(%d,&k);for(i=0;i=j&gi.month=k)printf_one(i); sum=sum+gi.ss;printf(nthe result of count: sum=%dn,sum);menu(); 3公共函數(shù)(1)排序函數(shù)sort

15、()【程序】sort() int i,j,n; struct gz t;n=load();for(i=0;in;i+)for(j=i+1;jgj.num)t=gi;gi=gj;gj=t;(2)輸入函數(shù)input (int i)【程序】input (int i) scanf(%d%s%d%ld%ld%ld,&gi.num,,&gi.month,&gi.ys,&gi.wf,&gi.ef); tax(i); (3)保存函數(shù)save(int n)【程序】save(int n) file *fp; int i; if(fp=fopen(salary.txt,w)=null) printf(

16、ncannot open filen); return null; for(i=0;in;i+) if(gi.num!=0) if(fwrite(&gi,sizeof(struct gz),1,fp)!=1) printf(file write errorn); fclose(fp); (4)稅金計(jì)算函數(shù)tax( int i)【程序】tax( int i) if(gi.ys800) gi.tax=0; else if(800gi.ys&gi.ys1400) gi.tax=(gi.ys-800)*5/100); else gi.tax=(gi.ys-1400)*5/100); gi.ss=gi.

17、ys-gi.wf-gi.ef-gi.tax;(5)加載函數(shù)load()【程序】 load() file *fp; int i; if(fp=fopen(salary.txt,r)=null) printf(ncannot open filen); return null; for(i=0;!feof(fp);i+) fread(&gi,sizeof(struct gz),1,fp); fclose(fp); return(i-1); (6)顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目的函數(shù)printf_face() printf_face() printf(n num name month ys wf ef ss tax n); (7)顯示一個(gè)記錄的函數(shù)printf_one(int i) printf(%5d%10s%5d%10ld%10ld%10ld%10ld%10ld,gi.num,,gi.month, gi.ys,gi.wf,gi.ef,gi.ss,gi.tax);(8)一個(gè)任務(wù)結(jié)束時(shí)的選擇瀏覽還是返回的函數(shù)printf_back() int k,w; printf(nntsuccessful.nn); printf(what do you want to do?nnt 1).browse all now 2).back; bb)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論