![工資信息管理系統(tǒng)C語言設(shè)計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/0330e968-fcbf-4690-b9ac-e5b854608d4c/0330e968-fcbf-4690-b9ac-e5b854608d4c1.gif)
![工資信息管理系統(tǒng)C語言設(shè)計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/0330e968-fcbf-4690-b9ac-e5b854608d4c/0330e968-fcbf-4690-b9ac-e5b854608d4c2.gif)
![工資信息管理系統(tǒng)C語言設(shè)計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/0330e968-fcbf-4690-b9ac-e5b854608d4c/0330e968-fcbf-4690-b9ac-e5b854608d4c3.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C 語言課程實習(xí)報告學(xué)院:工程學(xué)院專業(yè):巖土工程班級:052052-33學(xué)號:20051002623姓 名: 劉恒第一題:工資信息管理系統(tǒng)一'題目要求工資信息管理系統(tǒng)【要求】該系統(tǒng)能夠?qū)崿F(xiàn)工資信息管理系統(tǒng)包括錄入,瀏覽,查詢,統(tǒng)計等功能.其 中錄入功能要求能夠添加新地工資信息到文件;瀏覽功能要求能按照工資卡號,姓名分類瀏覽,提供分屏顯示;有排序功能,排序后按照工資卡號升序或?qū)嵃l(fā)工資 降序輸出;查詢功能要求能夠按照工資卡號 ,姓名查詢;統(tǒng)計功能要求能夠按照 月份累計統(tǒng)計某職工在某時間段實發(fā)工資總金額 (1)文件中一行數(shù)據(jù)對應(yīng)一個職工工資信息;(2)工資信息地數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,一個數(shù)
2、組元素對應(yīng)一條工資單記錄;(3)工資單信息包括工資卡號,姓名月份,應(yīng)發(fā)工資,水費(fèi),電費(fèi),稅金,實發(fā)工資等;(4)實發(fā)工資=應(yīng)發(fā)工資水費(fèi)電費(fèi)稅金,其中稅金計算方法為: 應(yīng)發(fā)工資V 800元,稅金=0; 800元V應(yīng)發(fā)工資V 1400元,稅金=(應(yīng)發(fā)工資800) *5%; 應(yīng)發(fā)工資1400元,稅金=(應(yīng)發(fā)工資1400) *10 % 二 '需求分析根據(jù)題目要求,由于工資信息是以文本文件地方式存放在文件里地 ,所以應(yīng)提 供文件地輸入,輸出等操作;在程序中需要知道職工地工資信息,應(yīng)提供錄入,瀏覽, 查詢,排序,統(tǒng)計等操作功能;另外,還應(yīng)提供鍵盤式選擇菜單實現(xiàn)功能選擇 三'總體設(shè)計通過分析
3、整個系統(tǒng),根據(jù)上面地需求分析,可以將這個系統(tǒng)地設(shè)計分為如下幾個模塊: 工資信息管理系數(shù)據(jù)輸入數(shù)據(jù)添加r數(shù)據(jù)瀏覽r 數(shù)據(jù)查找工資排序工資統(tǒng)計<J _圖一系統(tǒng)功能模塊圖四'詳細(xì)設(shè)計1.主函數(shù)主函數(shù)一般設(shè)計得比較簡潔,只提供輸入,處理和輸出部分地函數(shù)調(diào)用其中各 功能模塊用菜單方式選擇.【流程圖】如下圖所示:圖二主函數(shù)流程圖#in clude<stdio.h>#in clude<stdlib.h>#defi ne N 150void en ter();void stat();void order();void menu();void stat();void men
4、u()int n ,w;system("cls");【程序】do#in clude<math.h>#in clude<alloc.h>search();void add(); void browse()void num_ order();void T_wage_order();void readfiles();int allwage();puts("tt*MENU*nn")puts("tttt1.Enter new data");puts("tttt2.Addition data");put
5、s("tttt3.Browse all");puts("tttt4.Search data");puts("tttt5.order data");puts("tttt6.Stat by mon th");puts("tttt7.Exit");puts("nntt* *n");prin tf("Choice your number(1-7): bb");/* 對選擇地數(shù)字進(jìn)行判斷*/scan f("%d",&n);if(n<
6、 1| n>7) w=1;getchar(); while(w=1);else w=0;switch( n)case 1:e nter();break;case 2:add();break;case 3:browse();break;case 4:search();break;case 5:order();break;case 6:stat();break;case 7:exit(0); /*輸入模塊*/*追加模塊*/*瀏覽模塊*/*查找模塊*/*排序模塊*/*統(tǒng)計模塊*/*退出*/void save(); int load(); void in put(); void prin tf_
7、face(); void printf_on e();void prin tf_back(); int T_wage();/*主函數(shù) */mai n() men u(); 2.各功能模塊設(shè)計輸入模塊【數(shù)據(jù)結(jié)構(gòu)】【分析】看各數(shù)據(jù)信息,工資卡號、姓名是字符型,可以用字符型數(shù)組;工資應(yīng)采 用實型數(shù)據(jù)信息應(yīng)放在文件中struct in fowagechar nu m15;char n ame20;int mon th;int S_wage;int water_rate;int electric_charge;int tax;int T_wage;IMN;/*IMN中每個元組元素對應(yīng)一個職工*/【注意】
8、:N為職工人數(shù),應(yīng)采用宏定義 # define N 150.【流程圖】:圖三輸入模塊流程圖程序:void enter()/*輸入模塊*/int i,n;prin tf("How many in formatio ns(0-%d)?:",N-1);scanf("%d",&n);/*要輸入地記錄個數(shù)*/prin tf("n En ter data nownn ”);for (i=0;i< n;i+)pri ntf("n In put %dth in fo.n",i+1);input(i);/*調(diào)用輸入函數(shù)*/if(
9、i!=O)save(n);/* 調(diào)用保存函數(shù) */prin tf_back();/* 一個任務(wù)結(jié)束時讓用戶選擇是瀏覽還是返回*/.追加模塊需求分析:該模塊地功能是添加新地工資信息,從鍵盤輸入并逐條寫到原來地輸入文件中注意采用追加不是覆蓋地方式 流程圖四追加模塊流程圖程序:void add()/* 追加模塊 */int i,k,n,m;FILE *fp;n=load();printf("How many IMloyees are you want to add(0-%d)?:",N-1-n);scan f("%d", &m);/*輸入要追加地記錄個
10、數(shù)*/k=n+m;for(i=n ;i<k;i+)pri ntf("n In put %dth in fo.n",i-n+1);input(i);/*調(diào)用輸入函數(shù)*/if(fp=fopen("infowage.txt","ab")=NULL)/* 以 ab 方式打開文件,追加保存 */pri ntf("Ca nnot ope n filen");for(i=0;i <n ;i+)if(fwrite(&IMi,sizeof(struct infowage),1,fp)!=1)/* 輸出到文件 */
11、prin tf("file write error'n");fclose(fp);prin tf_back();/* 一個任務(wù)結(jié)束時讓用戶選擇是瀏覽還是返回*/.瀏覽模塊需求分析該模塊地功能是顯示所有職工記錄信息流程圖圖五瀏覽模塊流程圖程序:void browse()int i,k, n;n=load();prin tf_face();for(i=0;i <n ;i+)if(i!=0)&&(i%5=0)printf("nnPass any key to continue ."); getch();puts("nn
12、”);printf_on e(i);prin tf("tThere are %d in fo.n",n);/*瀏覽模塊*/*加載記錄*/*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項目函數(shù) */*目地是分屏顯示*/*調(diào)用顯示一個記錄地函數(shù)*/prin tf("nPass any key to back .");getch();/*按任意鍵*/menu();.查找模塊需求分析:該模塊地功能是根據(jù)輸入地職工姓名或者工資卡號查找對應(yīng)地記錄流程圖查找模塊圖六:查找模塊流程圖程序:search()/*查找模塊*/int k=0; int w1,w2;dopri ntf("nn W
13、hich way do you choose?' n'tl.By name 2.By num bb"); scan f("%d",&w1);if(w1=1) name_search();/* 姓名查找 */else num_search();/* 卡號查找 */if(k!=-1)pri ntf("nnSuccessful.A_A.");prin tf("nnWhat do you want to do?nt1.Search ano ther2.Back bb");scan f("%d&quo
14、t;,&w2); while(w2=1);menu(); name_search()/* 姓名查找 */int i,n ,k,w=1;struct in fowage e;n=load();dok=-1;prin tf("nnEn ter n ame that you want to search! Name:");scanf("%s",);/* 輸入要找地名字 */prin tf_face();/*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項目函數(shù)*/for(i=0;i<n;i+)/* 查找數(shù)據(jù) */if(strcmp(e. name,IMi. nam
15、e)=0)k=i;/*找到記錄*/printf_on e(k); break;/*調(diào)用顯示一個記錄地函數(shù)*/if(k=-1)pri ntf("ninNo exist!"); while(k=-1 &&w=1); num_search()/* 卡號查找 */int i,k ,n, w=1;struct in fowage s;n=load();dok=-1;prin tf("nnEn ter num that you want to search!NO.:");sea nf("%s",s .nu m);prin tf_f
16、aee();for(i=0;i <n ;i+)if(stremp(s. nu m,IMi. nu m)=0)k=i;printf_on e(k);break;if(k=-1)/*輸入要找地號碼*/*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項目函數(shù)*/*查找數(shù)據(jù)*/*找到記錄*/*調(diào)用顯示一個記錄地函數(shù) */printf("ninNo exist!"); while(k=-1 &&w=1);(5) .排序模塊.需求分析:該模塊地功能是將職工按照卡號升序或者實發(fā)工資降序排列輸出【流程圖】:圖七:排序模塊流程圖【程序】:void order()/* 排序模塊 */int k=0;
17、int w1,w2;dopri ntf("nn Which way do you ehoose?n'tl.By num2.By T_wage bb");scan f("%d",&w1);if(w1=1) num_order();/* 按照卡號排序 */else T_wage_order();/*按照實發(fā)工資排序*/if(k!=-1)pri ntf("nnSueeessful.A_A.");prin tf("nnWhat do you want to do?nt1.order ano ther2.Baek bb
18、");scan f("%d",&w2);/*返回菜單函數(shù)*/while(w2=1);menu(); void num_order()I* 卡號排序 */int i,j,k ,n;struct in fowage s;n=load();for(i=0;i< n-1;i+) k=i; for(j=i+1;j<n;j+)/*選擇排序法 */if(IMj.num>IMk.num) k=j;s=IMi; IMi=IMk; IMk=s;prin tf("%11s%-17s%6d%6d%6d%6d%6d%6d",IMi. num,I
19、Mi. name,IMi.mo nth,IMi.S_wage,IMi.water_rate,IMi.electric_charge,IMi.tax,IMi.T_wage);prin tf("%11s%-17s%6d%6d%6d%6d%6d%6d",IMk. nu m,IMk. name,IMk.mo nth,IMk.S_wage,IMk.water_rate,IMk.electric_charge,IMk.tax,IMk.T_wage);save();/*保存函數(shù)*/puts("nn"); void T_wage_order()/* 實發(fā)工資排序 */i
20、nt i,j,k ,n;struct in fowage s;n=load();for(i=0;i< n-1;i+) k=i; for(j=i+1;j<n;j+)/*選擇排序法 */if(IMj.T_wage<IMk.T_wage)k=j;s=IMi; IMi=IMk; IMk=s;prin tf("%11s%-17s%6d%6d%6d%6d%6d%6d",IMk. nu m,IMk. name,IMk.mo nth,IMk.S_wage,IMk.water_rate,IMk.electric_charge,IMk.tax,IMk.T_wage);prin
21、 tf("%11s%-17s%6d%6d%6d%6d%6d%6d",IMi. num,IMi. name,IMi.mo nth,IMi.S_wage,IMi.water_rate,IMi.electric_charge,IMi.tax,IMi.T_wage);save();/*保存函數(shù)*/puts("nn");(6).統(tǒng)計模塊【需求分析】:要求能夠按照月份累計統(tǒng)計某職工在某時間段實發(fā)工資總金額【流程圖】:圖八.統(tǒng)計模塊流程圖【程序】:void stat()/* 統(tǒng)計模塊 */readfiles();/*讀入職工工資信息*/allwage();/* 總金額
22、 */void readfiles()int n; n=load(); /*從文件讀入職工工資信息 */ printf_face(n); int allwage() int i,j,month;int allwage=0; struct infowage s100;FILE *fp;char filename30;printf("Please input T_wage information filename:");scanf("%s",filename); if(fp=fopen("filename","rb")
23、!=NULL) printf("File open error.n");exit(0); i=0;while( !( feof(fp) ) ) fscanf(fp,"%d%s%d%d",&IMi.num,&IM,&IMi.month,&IMi.T_wage);i+; printf("Please input month searched:");scanf("%d",&month);printf("The result searching as follo
24、ws:n");printf("Num Name Month T_wage:n");for(j=0;j<i;j+) if(IMj.month=month) printf("%5d %10s %3d %10dn",IMj.num,IM,IMj.month,IMj.T_wage); allwage+=IMj.T_wage;fclose(fp);getchar();getchar();menu();/* 返回菜單函數(shù) */3. 公共函數(shù)下面是能夠用到地一些公共函數(shù) .保存函數(shù) save(int n)說明:形參 n 控制保存地個數(shù) .程
25、序void save(int n)/* 保存函數(shù) ,保存 n 個記錄 */FILE *fp;int i;if(fp=fopen("S_wage.txt", "wb")=NULL)/* 以輸出打開方式 ,在此之前地記錄被覆蓋 */printf("nCannot open filen");return ;for(i=0;i<n;i+) if(fwrite(&IMi,sizeof(struct infowage),1,fp)!=1)printf("file write errorn");fclose(fp)
26、;加載函數(shù) load()說明 :該函數(shù)可以用來加載所有記錄,并且可以返回所有地記錄地個數(shù).程序int load() /*加載記錄或可以計算記錄個數(shù)地函數(shù) */ FILE*fp;int i;if(fp=fopen("S_wage","rb")=NULL) /* 以輸出打開方式 ,在此之前地記錄被覆蓋 */ printf("nCannot open filen");return NULL;for(i=0;!feof(fp);i+)fread(&IMi,sizeof(struct infowage),1,fp);fclose(fp)
27、;return(i-1);/* 返回記錄個數(shù) */ .卡號輸入函數(shù) num_input(int i,int n)說明:該函數(shù)對輸入考核進(jìn)行判斷,確保輸入卡號惟一.形參i表示第i個職工記錄,形參n表 示總共有 n 個職工記錄 . 程序 :void num_input(int i)int j,w1;dow1=0;printf("NO.:");scanf("%s",IMi.num);for(j=0;IMi.numj!='0'j+)/* 卡號輸入函數(shù) ,作了嚴(yán)格規(guī)定 */if(IMi.numj<'0'|IMi.numj>
28、;'9')/* 判斷卡號是否為數(shù)字 */puts("Input error!Only be made up of (0-9).Please reinput!n"); w1=1;break; while(w1=1);姓名輸入函數(shù) name_input (int i)說明 形參 i 表示第 i 個職工記錄 . 程序 void name_input(int i)int j,w1;dow1=0;printf("Name:");scanf("%s",IM);for(j=0;'a'<=IMi.na
29、mej<='z'j+)/* 判斷姓名是否為字母 */if(j=0)IMj-=32; w1=1;break; if(j!=0&&IMj!='0')IMj+1-=32; w1=1;break;while(w1=1); (5). 求稅率函數(shù) void tax(int i) 說明:形參 i 表示第 i 個職工記錄 程序: void tax(int i)int m;m=IMi.S_wage;if(m<=800) IMi.tax=0;/* 姓名輸入函數(shù) ,作了嚴(yán)格規(guī)定 */* 稅率函數(shù) */* 計算稅率地方法
30、*/else if(800<m<1400) IMi.tax=(m-800)*5/100;else IMi.tax=(m-1400)*10/100;(6) . 求實發(fā)工資 int T_wage(int i)說明:形參 i 表示第 i 個職工記錄 .程序 :return IMi.T_wage; /* 實發(fā)工資計算方法 */(7). 輸入整個記錄函數(shù) input(int i)說明:形參 i 表示第 i 個職工記錄程序 :void input(int i)num_input(i); printf( “Name:”); printf("Mon:"); printf(&qu
31、ot;S_wage:"); printf("Water_rate");/* 輸入一個記錄函數(shù) */* 調(diào)用卡號輸入函數(shù) */ scanf("%s",&IM); scanf("%d",&IMi.month); scanf("%d",&IMi.S_wage);scanf("%d",&IMi.water_rate);printf("electric_charge"); tax(i); T_wage(i); (8).顯示數(shù)據(jù)結(jié)構(gòu)項
32、目函數(shù) void printf_face() printf("ntNO. Namescanf("%d",&IMi.electric_charge);/* 顯示數(shù)據(jù)結(jié)構(gòu)項目 */Mon S_wage water rateElectric chargeTax T_wagen");(9).顯示一個記錄地函數(shù) void printf_one(i)/* 顯示一個記錄地函數(shù) */ printf("%11s%-17s %6d%12.2f %9.2f %9.2f%int T_wage(int i)/* 實發(fā)工資函數(shù) */ IMi.T_wage=IMi.
33、S_wage-IMi.water_rate-IMi.electric_charge-IMi.tax;9.2f %9.2f",IMi.num,IM,IMi.month,IMi.S_wage,IMi.water_rate,IMi.electric_charge,IMi.tax,IMi.T_wage); (10). 個任務(wù)結(jié)束時地選擇瀏覽還是返回地函數(shù)void prin tf_back()/* 一個任務(wù)結(jié)束時地選擇瀏覽還是返回*/int k,w;prin tf("nn tSuccessful.A_Ann ”);printf("What do you want
34、 to do?nnt1.Browset2.Back: bb");scan f("%d",&w);if(w=1)browse();else menu(); 五.上機(jī)操作1. 數(shù)據(jù)源根據(jù)前面所列地數(shù)據(jù)輸入形式(1).主菜單函數(shù)2.編譯,連接和運(yùn)行3結(jié)果:下面是各個模塊地界面圖(2).輸入模塊在主界面出現(xiàn)后輸入1回車看到下圖Choice </our nunber<l-7> ; Il J Hoi> manr infovnations<0-149>?:-|n| x|輸入要輸入地記錄數(shù)然后逐條增加,如下圖:1 .Enter neu
35、deita2. AdditIon data3. Brause all 4Search dta 5order dataS.Stat hy month 7.ExitEntei* dataChoice your nnnber<lm7>:(1 J lloif ndny infornations<0-149)?:2» ” at托a* w; me務(wù) 梵桿 妊疑 X 托msm* atUiiat dn you want to do?5,order dataG.Stat by nonth 7.Exit(3).追加模塊Input 1th info. NO. :1Name-zhan
36、63;an Mon :1S_wa9& =1234Water_rate:12Electi*ic_ciAi!*ge :34(nput Sth info.N0.:2Naras?lisi tlon :2S_wage lJater_i'ate : IS Electi'ic cJiairsfe -231.Browse2.Back: (11. Enter new data2. Addition data3.Srouse all4.Search5order data&.Stat by nonth 7.Exit|Cho ice your nunbei*<l-7>: 1
37、21How manij IMloees ai*e du 問nt to add(0-14?)?:1In nut lth inf-N0,:3Name : uanuuMon :3S_wage:4578 AJtcr_Fate :24 Electriccharge j31SuccessF ul1.Blouse2-Back:(4).瀏覽模塊Uiat do you i?ant to do?Cho ice youp numbei'<l-?> : L3 N0_Tax12 lisie 2 info .Pass any key15689S_wageElectric cbarge211167540
38、7There arwater pate123423244NameMonT_wage zhangsanto back 、- A-A-A - A -A -A-A -A -A -A- A -i - A 7 7 譏譏 J35211 -Enter new data2.Addition data3-Browse all 4.Search data 5.order data6 .Stat by month 7-ExitID(5).查找模塊(6).排序模塊Jnjxl1-Enter new data2 _Add Itinn dat3, Browse all4-Seapch data5«order dat« G _Stat by month ?.ExitCErn ice yout* nuf»ber(l-7> : IS 1Which w戲呼 do you choose?1 HBy nun 2.By Twatie 112 lisi256S9152324454071 zhanHsan112341234211167Successful.What do yom uant to do?1.order another 2.Back LII.實發(fā)工資排序注:這個模塊
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 與業(yè)內(nèi)人士交流的計劃制定方式
- 2025年酒店、廚房設(shè)備用品項目發(fā)展計劃
- 七年級數(shù)學(xué)下冊教學(xué)計劃、單元分析、全冊教案(生本)、總結(jié)
- 七年級下冊《直方圖》課件與練習(xí)
- 河南省三門峽市2024-2025學(xué)年高一上學(xué)期1月期末考試 數(shù)學(xué) 含解析
- 2025年繞線絞線設(shè)備項目合作計劃書
- 構(gòu)建需求實現(xiàn)的進(jìn)度監(jiān)控系統(tǒng)
- 2025年微污染防控設(shè)備項目發(fā)展計劃
- 2025年通信設(shè)備、計算機(jī)及其他電子設(shè)備項目發(fā)展計劃
- 2025年CO2氣體保護(hù)藥芯焊絲項目建議書
- 2025書記員招聘考試題庫及參考答案
- 2024-2025年第二學(xué)期數(shù)學(xué)教研組工作計劃
- 2025輔警招聘公安基礎(chǔ)知識題庫附含參考答案
- 2025年菏澤醫(yī)學(xué)??茖W(xué)校高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 成都四川成都簡陽市簡城街道便民服務(wù)和智慧蓉城運(yùn)行中心招聘綜治巡防隊員10人筆試歷年參考題庫附帶答案詳解
- 2025-2030全球廢棄食用油 (UCO) 轉(zhuǎn)化為可持續(xù)航空燃料 (SAF) 的催化劑行業(yè)調(diào)研及趨勢分析報告
- T-CSUS 69-2024 智慧水務(wù)技術(shù)標(biāo)準(zhǔn)
- 新版高中物理必做實驗?zāi)夸浖捌鞑?(電子版)
- 中國慢性冠脈綜合征患者診斷及管理指南2024版解讀
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗收規(guī)范
- JTGT H21-2011 公路橋梁技術(shù)狀況評定標(biāo)準(zhǔn)
評論
0/150
提交評論