版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)報(bào)告</p><p><b> 學(xué)生姓名: </b></p><p><b> 班 學(xué) 號(hào): </b></p><p><b> 班級(jí)序號(hào): </b></p><p><b> 指導(dǎo)教師: </b>
2、</p><p><b> 題目要求</b></p><p><b> 工資信息管理系統(tǒng)</b></p><p><b> 【要求】</b></p><p> 該系統(tǒng)能夠?qū)崿F(xiàn)工資信息管理。系統(tǒng)包括錄入、瀏覽、查詢、統(tǒng)計(jì)等功能。其中錄入功能要求能夠添加新的工資信息到文件;
3、瀏覽功能要求能按照工資卡號(hào)、姓名分類瀏覽,提供分屏顯示;有排序功能,排序后按照工資卡號(hào)升序或?qū)嵃l(fā)工資降序輸出;查詢功能要求能夠按照工資卡號(hào)、姓名查詢;統(tǒng)計(jì)功能要求能夠按照月份累計(jì)統(tǒng)計(jì)某職工在某時(shí)間段實(shí)發(fā)工資總金額。</p><p><b> 【提示】</b></p><p> 文件中一行數(shù)據(jù)對(duì)應(yīng)一個(gè)職工工資信息</p><p> 工資信息
4、的數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,一個(gè)數(shù)組元素對(duì)應(yīng)一條工資單記錄</p><p> 工資單信息包括工資卡號(hào)、姓名、月份、應(yīng)發(fā)工資、水費(fèi)、電費(fèi)、稅金、實(shí)發(fā)工資等</p><p> 實(shí)發(fā)工資=應(yīng)發(fā)工資-水費(fèi)-電費(fèi)-稅金,其中稅金的計(jì)算方法為</p><p> a. 應(yīng)發(fā)工資<800元,稅金=0</p><p> b. 800<應(yīng)發(fā)
5、工資<1400元,稅金=(應(yīng)發(fā)工資-800)*5%</p><p> c. 應(yīng)發(fā)工資>1400元,稅金=(應(yīng)發(fā)工資-1400)*10%</p><p> 另: 課程實(shí)習(xí)報(bào)告的參考格式</p><p><b> 題目編號(hào)</b></p><p> 寫出系統(tǒng)總設(shè)計(jì)的思路、功能模塊劃分。給出合理的測(cè)試數(shù)
6、據(jù)及運(yùn)行結(jié)果,要求能夠體現(xiàn)程序的正確性和完備性及對(duì)錯(cuò)誤輸入的處理??偨Y(jié)算法或系統(tǒng)的優(yōu)缺點(diǎn),給出算法或系統(tǒng)進(jìn)一步改進(jìn)的設(shè)想。在附錄中給出源代碼,</p><p><b> 附錄</b></p><p><b> 需求分析</b></p><p> 根據(jù)題目要求,由于工資單信息是存放在文件中,所以應(yīng)提供文件的輸入、輸出等
7、操作;在程序中需要瀏覽學(xué)生的信息,應(yīng)提供錄入、瀏覽、查詢、統(tǒng)計(jì)等操作;另外還應(yīng)提供鍵盤式選擇菜單實(shí)現(xiàn)功能選擇。</p><p><b> 三、 總體設(shè)計(jì)</b></p><p> 根據(jù)上面的需求分析,可以將這個(gè)系統(tǒng)的設(shè)計(jì)分為以下幾個(gè)模塊:數(shù)據(jù)輸入,數(shù)據(jù)添加,數(shù)據(jù)瀏覽,數(shù)據(jù)查詢,數(shù)據(jù)統(tǒng)計(jì)。</p><p> 圖一 系統(tǒng)功能模塊圖<
8、/p><p><b> 四、詳細(xì)設(shè)計(jì)</b></p><p><b> 1.主函數(shù)</b></p><p> 主函數(shù)提供輸入、處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方式選擇。</p><p><b> [流程圖]</b></p><p>
9、圖二 主函數(shù)模塊功能流程圖</p><p><b> [程序]</b></p><p> main() /********************主函數(shù)**********************/</p><p><b> { </b></p><p> int n,w;
10、 /*變量n保存選擇菜單數(shù)字,w判斷輸入的數(shù)字是否在功能菜單應(yīng)對(duì)數(shù)字的范圍內(nèi)*/</p><p> do{ puts("\t\t\t******************主菜單***************\n\n");</p><p> printf("\t\t\t\t 1.錄入工資信息: \n");</p><p>
11、; printf("\t\t\t\t 2.添加工資信息: \n");</p><p> printf("\t\t\t\t 3.瀏覽工資信息: \n");</p><p> printf("\t\t\t\t 4.查詢工資信息: \n");</p><p> printf("\t\t\t\t
12、5.統(tǒng)計(jì)工資信息: \n");</p><p> printf("\t\t\t\t 6.退出系統(tǒng): \n");</p><p> puts("\n\n\t\t\t***************************************\n");</p><p> printf("選擇(1-6):
13、[ ]\b\b");</p><p> scanf("%d",&n);</p><p> if(n<1||n>6) {w=1;getchar();}</p><p> else w=0;} /*對(duì)選擇的數(shù)字作判斷*/</p><p> while (w==1);</p>
14、;<p><b> switch(n)</b></p><p> { case 1: enter();break; /*輸入模塊*/</p><p> case 2: add();break; /*添加模塊*/</p><p> case 3: browse();break; /*瀏覽模塊*/</p&g
15、t;<p> case 4: search();break; /*查詢模塊*/</p><p> case 5: count();break; /*統(tǒng)計(jì)模塊*/</p><p> case 6: exit(0);break; /*退出*/</p><p><b> } </b></p><
16、p><b> }</b></p><p><b> 2.各功能模塊設(shè)計(jì)</b></p><p><b> (1)輸入函數(shù)</b></p><p><b> 【分析】</b></p><p> 單獨(dú)看各數(shù)據(jù)信息,姓名是字符型,可以采用字符型數(shù)
17、組;工資卡號(hào)和月份是整數(shù),采用整型;實(shí)發(fā)工資,水費(fèi),電費(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è)職工的工資信息。</p><p> struct gz</p><p> { int num;<
18、;/p><p> char name[20];</p><p> int month;</p><p><b> long ys;</b></p><p><b> long ss;</b></p><p><b> long wf;</b>
19、</p><p><b> long ef;</b></p><p> long tax;</p><p> } g[N]; /*g[N]中每個(gè)數(shù)組元素對(duì)應(yīng)一份工資資料*/</p><p><b> 【流程圖】</b></p><p><b> 【
20、程序】</b></p><p><b> enter()</b></p><p> { int i,n;</p><p> printf("共輸入多少份工資信息 (0-%d)?:",N-1); 圖三 輸入模塊流程圖</p><p> scanf("%
21、d",&n);</p><p> printf("\n 現(xiàn)在開(kāi)始錄入... \n\n");</p><p> for(i=0;i<n;i++)</p><p> {printf("\n第 %d 份工資信息:工資卡號(hào) 姓名 月份 應(yīng)發(fā)工資 水費(fèi) 電費(fèi)\n",i+1);</p><
22、;p> input(i);}</p><p><b> sort();</b></p><p> if(i!=0) save(n);</p><p> printf_back();</p><p><b> }</b></p><p><b> ?。?/p>
23、2)添加模塊</b></p><p><b> 【分析】</b></p><p> 該模塊的功能是用戶需要增加新的職工工資信息記錄,從鍵盤輸入并逐條寫入到原來(lái)的輸入文件中,注意采用追加而不是覆蓋的方式。</p><p><b> 【流程圖】</b></p><p><b>
24、; 【程序】</b></p><p><b> add()</b></p><p> { int i,n,m,k;</p><p><b> FILE *fp;</b></p><p><b> n=load();</b></p><p
25、> printf("要添加多少份信息?(0-%d):",N-n-1);</p><p> scanf("%d",&m);</p><p><b> k=m+n;</b></p><p> for(i=n;i<k;i++)</p><p> {print
26、f("\n請(qǐng)輸入信息:工資卡號(hào) 姓名 月份 應(yīng)發(fā)工資 水費(fèi) 電費(fèi)\n",i-n+1);</p><p><b> input(i);</b></p><p> } 圖四 添加模塊流程圖</p><p><b>
27、 sort();</b></p><p><b> save(k);</b></p><p> printf_back();</p><p><b> }</b></p><p><b> ?。?)瀏覽模塊</b></p><p>&
28、lt;b> 【分析】</b></p><p> 該模塊的功能是顯示所有職工工資信息記錄。</p><p><b> 【流程圖】</b></p><p> 圖五 瀏覽模塊流程圖</p><p><b> 【程序】</b></p><p><b&
29、gt; browse()</b></p><p> { int i,n;</p><p><b> n=load();</b></p><p> printf_face();</p><p> for(i=0;i<n;i++)</p><p> { if(i%10==
30、0) {printf("\n\n按任意鍵以繼續(xù)...");</p><p> getch(); puts("\n\n");}</p><p> printf_one(i); printf("\n");</p><p><b> }</b></p><p>
31、; printf("\t總共有 %d份工資信息.\n",n);</p><p> printf("\n按任意鍵以返回...");</p><p><b> getch();</b></p><p><b> menu();</b></p><p>&l
32、t;b> }</b></p><p><b> 查詢模塊</b></p><p> 【分析】分為兩個(gè)子模塊:安姓名查找模塊和按卡號(hào)查詢模塊</p><p><b> 【流程圖】</b></p><p><b> 【程序】</b></p>
33、<p><b> search()</b></p><p><b> { </b></p><p><b> int n; </b></p><p><b> while(1) </b></p><p><b> { <
34、;/b></p><p> printf("\n1. 按照卡號(hào)查詢: \n "); </p><p> printf("\n2. 按照姓名查詢: \n "); </p><p> printf("\n0. 返回主菜單: \n");</p>
35、;<p> scanf("%d",&n);</p><p> switch(n) </p><p><b> { </b></p><p> case 1:search_num();break; </p><p> case 2:search_name();break;
36、 </p><p> case 0:menu();break; </p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><p> ?。?)按姓名查找模塊</p>
37、<p><b> 【分析】</b></p><p> 該模塊的功能是根據(jù)輸入的職工姓名查找對(duì)應(yīng)的工資信息記錄。</p><p><b> 【流程圖】</b></p><p><b> 【程序】</b></p><p> search_name()</
38、p><p> { int i,n,k,w1=1;</p><p> struct gz s;</p><p><b> n=load();</b></p><p><b> do</b></p><p><b> { k=-1;</b><
39、/p><p> printf("\n\n輸入你要查詢的職工姓名. 姓名:");</p><p> scanf("%s",s.name);</p><p> printf_face();</p><p> for(i=0;i<n;i++)</p><p> if(st
40、rcmp(s.name,g[i].name)==0)</p><p> {k=i; printf_one(k);}</p><p><b> if(k==-1)</b></p><p> {printf("\n\n信息不存在!");</p><p> printf("\n\n重試?
41、\n\t 1).重試 2)不,返回[ ]\b\b ");</p><p> scanf("%d",&w1);}</p><p> }while(k==-1&&w1==1);</p><p><b> menu();</b></p><p><b>
42、}</b></p><p> ?。?)按工資卡號(hào)查找模塊</p><p><b> 【分析】</b></p><p> 該模塊的功能是根據(jù)輸入的職工工資卡號(hào)查找對(duì)應(yīng)的工資信息記錄。</p><p><b> 【流程圖】</b></p><p><b&g
43、t; 【程序】</b></p><p> search_num()</p><p> { int i,n,k,w1=1;</p><p> struct gz s;</p><p><b> n=load();</b></p><p><b> do</b&
44、gt;</p><p><b> { k=-1;</b></p><p> printf("\n\n輸入要查詢的職工工資卡號(hào). 卡號(hào)");</p><p> scanf("%d",&s.num);</p><p> printf_face();</p>
45、;<p> for(i=0;i<n;i++)</p><p> if(s.num==g[i].num)</p><p> {k=i; printf_one(k);}</p><p><b> if(k==-1)</b></p><p> {printf("\n\n結(jié)果不存在!&q
46、uot;);</p><p> printf("\n\n重試?\n\t 1). 重試 2) 不,返回 [ ]\b\b ");</p><p> scanf("%d",&w1);}</p><p> }while(k==-1&&w1==1);</p><p><b>
47、; menu();</b></p><p><b> }</b></p><p><b> ?。?)統(tǒng)計(jì)模塊</b></p><p><b> 【分析】</b></p><p> 該模塊的功能是根據(jù)用戶輸入的職工姓名和所統(tǒng)計(jì)的月份來(lái)計(jì)算得出某個(gè)時(shí)間段的工資總
48、額。</p><p><b> 【流程圖】</b></p><p> 圖八 統(tǒng)計(jì)模塊流程圖</p><p><b> 【程序】</b></p><p><b> count()</b></p><p> {int i,j,k,n,sum=0;
49、</p><p> char name[20];</p><p><b> n=load();</b></p><p> printf("\n輸入職工姓名: [ ]\t\t");</p><p> scanf("%s",name);</p><p&g
50、t; printf("\n輸入統(tǒng)計(jì)的起始月份 月份: [ ]\t\t");</p><p> scanf("%d",&j);</p><p> printf("\n輸入統(tǒng)計(jì)的結(jié)束月份 月份: [ ]\t\t");</p><p> scanf("%d",&k
51、);</p><p> for(i=0;i<n;i++)</p><p> if(strcmp(name,g[i].name)==0&&g[i].month>=j&&g[i].month<=k)</p><p> {printf_one(i);</p><p> sum=sum+g[i
52、].ss;}</p><p> printf("\n統(tǒng)計(jì)結(jié)果: 總工資為%d\n",sum);</p><p><b> menu();</b></p><p><b> }</b></p><p><b> 3.公共函數(shù)</b></p>
53、;<p> ?。?)排序函數(shù)sort()</p><p><b> 【程序】</b></p><p><b> sort()</b></p><p><b> {</b></p><p> int i,j,n;</p><p>
54、struct gz t;</p><p><b> n=load();</b></p><p> for(i=0;i<n;i++)</p><p> for(j=i+1;j<n+1;j++)</p><p> if(g[i].num>g[j].num)</p><p>&
55、lt;b> {t=g[i];</b></p><p> g[i]=g[j];</p><p><b> g[j]=t;}</b></p><p><b> }</b></p><p> ?。?)輸入函數(shù)input (int i)</p><p>&l
56、t;b> 【程序】</b></p><p> input (int i)</p><p> { scanf("%d%s%d%ld%ld%ld",&g[i].num,g[i].name,&g[i].month,&g[i].ys,&g[i].wf,&g[i].ef);</p><p>&
57、lt;b> tax(i);</b></p><p><b> }</b></p><p> ?。?)保存函數(shù)save(int n)</p><p><b> 【程序】</b></p><p> save(int n)</p><p> { FILE
58、 *fp;</p><p><b> int i;</b></p><p> if((fp=fopen("salary.txt","w"))==NULL)</p><p> { printf("\n打開(kāi)文件失敗!\n");</p><p> return
59、 NULL;}</p><p> for(i=0;i<n;i++)</p><p> if(g[i].num!=0)</p><p> if(fwrite(&g[i],sizeof(struct gz),1,fp)!=1)</p><p> printf("文件寫入錯(cuò)誤!\n");</p>
60、<p> fclose(fp);</p><p><b> }</b></p><p> ?。?)稅金計(jì)算函數(shù)tax( int i)</p><p><b> 【程序】</b></p><p> tax( int i)</p><p><b>
61、 {</b></p><p> if(g[i].ys<800) g[i].tax=0;</p><p> else if(800<g[i].ys&&g[i].ys<1400) g[i].tax=((g[i].ys-800)*5/100);</p><p> else g[
62、i].tax=((g[i].ys-1400)*5/100);</p><p> g[i].ss=g[i].ys-g[i].wf-g[i].ef-g[i].tax;</p><p><b> }</b></p><p> (5)加載函數(shù)load()</p><p><b> 【程序】</b>&
63、lt;/p><p><b> load()</b></p><p> { FILE *fp;</p><p><b> int i;</b></p><p> if((fp=fopen("salary.txt","r"))==NULL)</p>
64、<p> {printf("\n打開(kāi)文件失敗!\n");</p><p> return NULL;}</p><p> for(i=0;!feof(fp);i++)</p><p> fread(&g[i],sizeof(struct gz),1,fp);</p><p> fclose(
65、fp);</p><p> return(i-1);</p><p><b> }</b></p><p> ?。?)顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目的函數(shù)printf_face()</p><p> printf_face()</p><p> { printf("\n 工資卡號(hào) 姓名
66、月份 應(yīng)得工資 水費(fèi) 電費(fèi) 實(shí)發(fā)工資 稅金 \n");}</p><p> (7)顯示一個(gè)記錄的函數(shù)</p><p> printf_one(int i)</p><p> { printf("%5d%10s%5d%10ld%10ld%10ld%10ld%10ld",g[i].num,g[i].name
67、,g[i].month,</p><p> g[i].ys,g[i].wf,g[i].ef,g[i].ss,g[i].tax);}</p><p> ?。?)一個(gè)任務(wù)結(jié)束時(shí)的選擇瀏覽還是返回的函數(shù)</p><p> printf_back()</p><p> { int k,w;</p><p> print
68、f("\n\n\t成功完成!!\n\n");</p><p> printf("接下來(lái)需要做什么?\n\n\t 1). 瀏覽全部 2).返回; [ ]\b\b");</p><p> scanf("%d",&w);</p><p> else menu();</p><p&
69、gt; if(w==1) browse();</p><p><b> }</b></p><p><b> 五、上機(jī)操作</b></p><p><b> 1.?dāng)?shù)據(jù)源</b></p><p> 2.編譯、連接和運(yùn)行</p><p><b
70、> 3.結(jié)果</b></p><p> 下面是各個(gè)模塊的界面圖</p><p><b> 主菜單函數(shù)</b></p><p><b> 輸入模塊</b></p><p> 在主界面出現(xiàn)后輸入1回車看到下圖</p><p><b> 添加
71、模塊</b></p><p><b> 瀏覽模塊</b></p><p><b> 查找模塊</b></p><p><b> 按工資卡號(hào)查找模塊</b></p><p> (7)按照姓名查找模塊</p><p><b>
72、 統(tǒng)計(jì)模塊</b></p><p><b> 六、總結(jié)</b></p><p><b> ?。?)學(xué)到的知識(shí):</b></p><p> 通過(guò)該實(shí)例的學(xué)習(xí),可以進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法,初步掌握開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法,學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的的基本方法,學(xué)會(huì)利用流程圖表示算法,進(jìn)一步
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)-工資信息管理系統(tǒng)
- 工資信息管理系統(tǒng)課程設(shè)計(jì)
- 管理信息系統(tǒng)課程設(shè)計(jì)---企業(yè)工資信息管理系統(tǒng)
- 數(shù)據(jù)庫(kù)系統(tǒng)課程設(shè)計(jì)---工資信息管理系統(tǒng)
- 數(shù)據(jù)庫(kù)系統(tǒng)課程設(shè)計(jì)--工資信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--職工信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--- 學(xué)生信息管理系統(tǒng)
- 職工信息管理系統(tǒng)c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)
- 教師信息管理系統(tǒng)(c語(yǔ)言課程設(shè)計(jì))
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)-c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)——歌曲信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)職工信息管理系統(tǒng)
- c語(yǔ)言課程信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告課程信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論