c語言課程設(shè)計報告 職工工資管理系統(tǒng)

上傳人:shi****01 文檔編號:139087327 上傳時間:2022-08-22 格式:DOCX 頁數(shù):30 大?。?64.96KB
收藏 版權(quán)申訴 舉報 下載
c語言課程設(shè)計報告 職工工資管理系統(tǒng)_第1頁
第1頁 / 共30頁
c語言課程設(shè)計報告 職工工資管理系統(tǒng)_第2頁
第2頁 / 共30頁
c語言課程設(shè)計報告 職工工資管理系統(tǒng)_第3頁
第3頁 / 共30頁

本資源只提供3頁預(yù)覽,全部文檔請下載后查看!喜歡就下載吧,查找使用更方便

15 積分

下載資源

資源描述:

《c語言課程設(shè)計報告 職工工資管理系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《c語言課程設(shè)計報告 職工工資管理系統(tǒng)(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、課程設(shè)計報告課程設(shè)計報告題目:職工工資管理系統(tǒng)設(shè)計者:專業(yè)班級:_學(xué)號:指導(dǎo)教師:所屬院系:2011年6月29日設(shè)計需求說明一、職工工資管理系統(tǒng)功能設(shè)計要求1. 輸入記錄:將每一個職工的姓名、ID號以及基本工資、職務(wù)工資、崗位津貼、醫(yī)療保險、公積金的數(shù)據(jù)作為一個記錄。該軟件能建立一個新的數(shù)據(jù)文件或給已建立好的數(shù)據(jù)文件增加記錄。2. 顯示記錄:根據(jù)用戶提供的記錄或者根據(jù)職工姓名顯示一個或幾個職工的各項工資和平均工資。3. 修改記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行修改并在修改前后對記錄內(nèi)容進行顯示。4查找記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行查找并在查找前后對記錄內(nèi)容進行顯示。5.刪除記錄:

2、可刪除數(shù)據(jù)文件中的任一記錄。6恢復(fù)記錄:能恢復(fù)被刪除的任一記錄。7.統(tǒng)計:(A)計算各項工資平均工資及總工資,(B)統(tǒng)計符合指定條件(如職工工資前三項之和在2000元以上、20001500元、15001000元)以內(nèi)的工資職工人數(shù)及占總職工人數(shù)的百分比O(C)按字符表格形式打印全部職工工資信息表及平均工資(包括各項總的平均工資)。8保存數(shù)據(jù)文件功能。9打開數(shù)據(jù)文件功能。經(jīng)過逐層逐塊、不斷細化、求精過程,編寫程序并進行測試、驗證,可以逐個模塊地分開調(diào)試,并通過文件包含或用工程文件的形式進行逐步聯(lián)合調(diào)試。程序運行結(jié)果如下表所示(記錄個數(shù)至少8個)。7二模塊設(shè)計分析系統(tǒng)功能模塊圖工作程序分析 輸入:

3、輸入職工工資資料通過結(jié)構(gòu)體的數(shù)組來進行操作,先頭定義數(shù)組em,先輸入需要輸入的職工人數(shù)m,然后進入循環(huán),每次循環(huán)將各項輸入結(jié)構(gòu)體數(shù)組對應(yīng)項的對應(yīng)成員中,當(dāng)循環(huán)次數(shù)等于人數(shù)時,完成全部員工的資料輸入,退出循環(huán)。同時將數(shù)據(jù)儲存在ckerk_list文件中并自動保存至磁盤。注:如首次使用,尚未輸入數(shù)據(jù),請先輸入數(shù)據(jù)。輸入的數(shù)據(jù)將自動保存。再次選擇輸入功能時原數(shù)據(jù)將被覆蓋。 保存:將輸入的資料存入磁盤讀取文件clerk_list,若文件不存在,打印“打開失敗并退出。若存在,則通過循環(huán)語句將輸入到結(jié)構(gòu)體數(shù)組的數(shù)據(jù)逐個輸入磁盤。 讀?。鹤x取磁盤中的資料打開文件clerk_list,若文件不存在,打印“打開

4、失敗”并退出。若存在,讀取文件中的數(shù)據(jù),并返回職工人數(shù)。 顯示:顯示職工工資資料先通過讀取函數(shù)的返回值確定職工人數(shù)m,再通過循環(huán)將員工工資資料逐個打印,當(dāng)循環(huán)次數(shù)達到m時退出循環(huán)。其中總工資由程序計算,總工資=基本工資+職務(wù)工資+津貼-醫(yī)療保險-公積金 刪除:刪除某員工的資料打印員工資料并提示輸入要刪除職工的姓名,輸入后若該職工不存在則打印“查無此人”;若存在,則顯示該職工資料并詢問是否確定刪除。若確定,則刪除。刪除時,通過對比輸入的姓名與資料中的姓名做對比從而確定要刪除的項i,從第i項開始,將后一項的各成員的值賦給前一項各對應(yīng)的成員,完成對第i項的刪除。 添加:添加新的員工資料而不覆蓋原有資

5、料打印原有職工資料,詢問要添加的職工人數(shù)并詢問是否確定添加。逐個逐項輸入員工信息,之后程序計算其總工資。完成后顯示“添加成功”,打印新的員工資料并自動保存。添加的方法為:定義一個相同類型的結(jié)構(gòu)體數(shù)組,將原有項復(fù)制后增添新的項,并保存新的數(shù)組。 查找:按ID好查詢與按姓名查找員工資料根據(jù)提示輸入要查詢的ID號或姓名,程序通過循環(huán)語句將輸入的數(shù)字與以保存的結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)對比,若相同,則打印“已找到”及該員工的資料;當(dāng)循環(huán)次數(shù)等于人數(shù)時結(jié)束循環(huán),若至結(jié)束循環(huán)時也沒有找到相同的,則打印“查無此人”。 修改:修改特定員工的特定資料打印員工信息并提示輸入要修改資料的職工姓名。按提示確定要修改,確定要修

6、改的項目,輸入要修改成的結(jié)果并將該結(jié)果賦給對應(yīng)項的對應(yīng)成員,完成對特定職工特定項目的修改。 統(tǒng)計通過循環(huán)對結(jié)構(gòu)體數(shù)組中的每一項經(jīng)行統(tǒng)計,計算工資總額為,將工資總額除以人數(shù)計算出平均工資。根據(jù)每名職工的資料計算基本工資、職務(wù)工資、津貼之和在1000-1500圓1500-2000圓2000圓以上的員工占總員工的百分比。三源程序代碼(附各部分解釋)#include#include#include#include#defineN100structclerkintnum;/ID號charname20;/姓名intjbgz;/基本工資intzwgz;/職務(wù)工資intjt;/津貼intyb;/醫(yī)療保險int

7、gjj;/公積金/inttotal;/總工資em100;voidmenu();voidinput();voidsave(int);voiddisplay();voiddel();voidadd();voidsearch();voidsearch_num();voidsearch_name();voidmodify();voidsta();voidstart();/*定義各函數(shù)*/voidstart()/開始界面system(cls);清屏system(color1E);/設(shè)置文字顏色為黃色背景色藍色printf(nnnnnn);printf(ItT#J*#J*#J*#J*#J*#J*#J*#J

8、*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*printf(ItT#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*歡迎使用工資管理系統(tǒng)11Apri

9、ntf(*);11#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*printf(tttt制作:n);printf(tttt2011年6月nnnn);printf(ttt*按任意鍵進入*n);voidmenu()/菜單界面syst

10、em(cls);system(color1F);printf(*菜單*nn);printf(輸入nn);printf(顯示nn);printf(查找nn);printf(刪除nn);printf(添加nn);printf(修改nn);printf(統(tǒng)計nn);printf(退出nn);printf(說明:*如首次使用尚未輸入數(shù)據(jù)請先輸入數(shù)據(jù)n*輸入的數(shù)據(jù)將自動保存n*再次選擇輸入功能時原數(shù)據(jù)將被覆蓋nn);voidinput()/*錄入函數(shù)*/inti,m;system(cls);printf(職工人數(shù)(l-100):n);scanf(%d,&m);for(i=0;im;i+)printf(請

11、輸入職工號:);scanf(%d,&emi.num);printf(請輸入姓名:);scanf(%s,&emi.name);getchar();printf(請輸入基本工資:);scanf(%d,&emi.jbgz);printf(“請輸入職務(wù)工資:);scanf(%d,&emi.zwgz);printf(請輸入津貼:);scanf(%d,&emi.jt);printf(“請輸入醫(yī)療保險:);scanf(%d,&emi.yb);printf(請輸入公積金:“);scanf(%d,&emi.gjj);emi.total=(emi.jbgz)+(emi.zwgz)+(emi.jt)-(emi.yb

12、)-(emi.gjj);計算總工資printf(n);計算總工資printf(n創(chuàng)建完畢!n);save(m);/保存職工人數(shù)mvoidsave(intm)/*保存文件函數(shù)*/inti;FILE*fp;聲明fp是指針,用來指向FILE類型的對象if(fp=fopen(clerk_list,wb)=NULL)/打開職工列表文件為空printf(打開失敗n);exit(0);for(i=0;im;i+)/*將內(nèi)存中職工的信息輸出到磁盤文件中去*/訐(fwrite(&emi,sizeof(structclerk),l,fp)!=l)寫入數(shù)據(jù)塊&emi:是要輸出數(shù)據(jù)的地址sizeof(structcl

13、erk):獲取一個單體的長度1:數(shù)據(jù)項的個數(shù)fp:目標文件指針printf(“文件讀寫錯誤n);10fclose(fp);/緩沖區(qū)內(nèi)最后剩余的數(shù)據(jù)輸出到磁盤文件中,并釋放文件指針和有關(guān)的緩沖區(qū)intload()/*導(dǎo)入函數(shù)int型*/FILE*fp;inti=0;if(fp=fopen(clerk_list,rb)=NULL)printf(cannotopenfilen);exit(0);elsedofread(&emi,sizeof(structclerk),1,fp);/讀取i+;while(feof(fp)=0);/檢測流上的文件結(jié)束符fclose(fp);return(i-l);/返回

14、人數(shù)voiddisplay()/*瀏覽函數(shù)*/inti,sum=0;intm=load();system(cls);總工資%-8dprintf(“職工號姓名基本工資職務(wù)工資津貼醫(yī)療保險公積金n);for(i=0;i=1&t=3)button=1;break;else16button=0;printf(輸入錯誤);while(button=0);回到查詢選擇項while(button=1)switch(t)/選擇查詢方式casel:printf(按工號查詢n);search_num();break;case2:printf(按姓名查詢n);search_name();break;case3:ma

15、in();break;default:break;voidsearch_num()/按職工號查詢inta;inti,t;intm=load();printf(請輸入要查找的職工號:n);scanf(%d,&a);for(i=0;im;i+)if(a=emi.num)總工資%-8dprintf(“職工號姓名基本工資職務(wù)工資津貼醫(yī)療保險公積金n);printf(n%-6d%-6s%-8d%-8d%-8d%-8d%-8d,emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total);break;if(i=m)printf(n對

16、不起,查無此人n);printf(n);printf(返回查詢函數(shù)請按1,繼續(xù)查詢職工號請按2n);scanf(%d,&t);switch(t)case1:search();break;case2:break;default:break;voidsearch_name()charname30;inti,t;intm=load();printf(請輸入姓名:n);scanf(%s,name);for(i=0;im;i+)if(strcmp(emi.name,name)=0)printf(n已找到,其記錄為:n);printf(職工號姓名基本工資職務(wù)工資津貼醫(yī)療保險公積金總工資n);printf(

17、n%-6d%-6s%-8d%-8d%-8d%-8d%-8d%-8d,emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total);if(i=m)printf(nn);printf(n);printf(返回查詢菜單請按1,繼續(xù)查詢姓名請按2n);scanf(%d,&t);switch(t)case1:search();break;case2:break;default:break;voidmodify()/*修改函數(shù)*/intnum;charname20;intjbgz;intzwgz;intjt;intyb;intgjj

18、;intb,c,i,n,t,button;intm=load();system(cls);printf(n原來的職工信息:n);display();printf(n);printf(請輸入要修改的職工的姓名:n);scanf(%s,name);for(button=1,i=0;button&i8|cl)printf(n選擇錯誤,請重新選擇!n);button=0;if(button=l)printf(n查無此人n);doswitch(c)/*因為當(dāng)找到第i個職工時,for語句后i自加了1,所以下面的應(yīng)該把改后的信息賦值給第i-l個人*/case1:printf(職工號改為:);scanf(%d

19、,&num);emi-1.num=num;break;case2:printf(姓名改為:);scanf(%s,name);strcpy(emi-1.name,name);break;case3:printf(基本工資改為:);getchar();scanf(%d,&jbgz);emi-1.jbgz=jbgz;emi-1.total=(emi-1.jbgz+emi-1.zwgz+emi-1.jt-emi-1.yb-30emi-1.gjj);break;case4:printf(職務(wù)工資改為:);scanf(%d,&zwgz);emi-1.zwgz=zwgz;emi-1.gjj);emi-1.g

20、jj);emi-1.gjj);emi-1.total=(emi-1.jbgz+emi-1.zwgz+emi-1.jt-break;case5:printf(津貼改為:);scanf(%d,&jt);emi-1.jt=jt;emi-1.total=(emi-1.jbgz+emi-1.zwgz+emi-1.jt-break;case6:printf(醫(yī)療保險改為:)scanf(%d,&yb);emi-1.yb=yb;emi-1.total=(emi-1.jbgz+emi-1.zwgz+emi-1.jt-break;case7:printf(公積金改為:);scanf(%d,&gjj);emi-1.

21、gjj=gjj;emi-1.total=(emi-1.jbgz+emi-1.zwgz+emi-1.jt-emi-1.yb-emi-1.yb-emi-1.yb-emi-1.yb-emi-1.gjj);break;case8:modify();break;printf(n);printf(nn確定修改請按1;重新修改請按2:n);scanf(%d,&b);while(b=2);printf(n修改后的所有職工信息:n);printf(n);save(m);display();printf(n按1繼續(xù)修改,不再修改請按0n);scanf(%d,&t);switch(t)case1:modify();

22、break;case0:break;default:break;voidsta()統(tǒng)計函數(shù)inti;intsum=0;inta=0,b=0,c=0;intm=load();system(cls);清屏函數(shù)for(i=0;im;i+)/*m為輸入部分的職工人數(shù)*/sum+=emi.total;if(emi.total)=1000)a+;if(emi.total1500&emi.total2000)c+;printf(nn工資總額為:dn,sum);printf(“平均工資為:%dn,sum/m);printf(n基本工資、職務(wù)工資、津貼之和n);printf(在1000-1500圓的員工占總員工

23、的百分之dn,a*100/m);printf(在1500-2000圓的員工占總員工的百分之dn,b*100/m);printf(在2000圓以上的員工占總員工的百分之dn,c*100/m);printf(nn按任意鍵繼續(xù));getch();menu();voidmain()/主函數(shù)intn,button;chara;start();getch();menu();doprintf(功能選擇(l-8):n);scanf(%d,&n);if(n=l&n=7)button=l;break;elsebutton=0;printf(您輸入有誤,請重新選擇!);while(button=0);while(b

24、utton=l)switch(n)casel:input();break;case2:display();break;case3:search();break;case4:del();break;case5:add();break;case6:modify();break;case7:sta();break;case8:exit(0);break;default:break;getchar();printf(n);printf(“按任意鍵繼續(xù)n);getch();system(cls);/*清屏*/menu();/*調(diào)用菜單函數(shù)*/printf(功能選擇(l-8):n);scanf(%d,&n

25、);printf(n);運行結(jié)果及截圖歡迎畫面菜單*運+柔單*帰塗洌:豫邀溯耀逡沁1輸?shù)漪d濃遴渺淪魏孰沙液液:迸淨(jìng)2.顯示遽漆滲燿逾塗癱潑沁3.查找殘邈殘腕奚裁疥瓏愛.蠻兇澎抿4刪除遊邈妙淨(jìng)卷塗渺識汐Q:址淨(jìng)5添仙瘩塗沁鑒渝沁瞬護澤6修改竭逸決:耀瀝沁邈加沁7統(tǒng)計鼻第邈迫粹遐遽濁話遐戈溢泮s退出說明:*如首次便用尚未輸?shù)鋽?shù)拐請先輸瓜數(shù)據(jù)否則使用其他功能時系統(tǒng)講自動退出癖俞;的數(shù)據(jù)將自動保存犒次選癢$俞盤勸能旳煤數(shù)據(jù)將被覆蓋功能選擇(l-8i:輸入功能iHA(i-ioQk醫(yī)輸知D號:1淸輸認姓名:込清輸人基本工資:1200諸輸?shù)渎殑?wù)工230清輸人津貼:0請諭兀醫(yī)療保險:田請輸廣公積金:1891青

26、輸茄E號:2諸輸人姓容:bbb淸輸入基本工資:.2500請輸入職務(wù)工資:旳。青輸臭津貼:400請輸衣醫(yī)療保險:57請輸闞公積金:600-諳輸XjD號:脊顯示功能D運1凰;.宙總丄員1aaa12OQ25005913911S22t.t.t.25OQSOO400-57600SO43.5:ccc17OQ00-C:a.170:0機工平均工資再:1S75慘任意鍵繼續(xù)統(tǒng)計功能工資總額為:WS0.2平対工資為:-2160呈本工資、職務(wù)工資、津貼之印1000-150&:1的員工占總員工的百疔立側(cè)150Q-2000圓的員工占總員工的百井之如P2000圓嘆上的員工占總員工的百分之40按任賁鍵繼續(xù),刪除功能as基本工

27、資一職芬工資se醫(yī)療保險公積金總工資1aaa12002302bbb2500S003ccc17000識工平均工資対:1975安姓名刪除:jbb比人原始記錄為:口號姓窖基本工資職務(wù)工資2bbb2E00800涌定刪除請按4不刪除請按o05918911824005760030430001700津貼醫(yī)療保險公積金總工資400576003043添加功能修改功能it輸真婪修改的職工的姓名::idd比人原始記錄為:!D號姓名基本工資職務(wù)工資津貼醫(yī)療保險公積金總工資4ddd1400345.34565734510SS涌罡按1;不修改請按01尊要進行修改的選項1.1D號2姓名3基本工資4職箸工資氐津貼&醫(yī)療保險人公

28、積金盼返回上層iS選擇序號1-出2妊名改対:遇確定修政請按1;重新修改請按2:心得體會通過這兩周的c語言課程設(shè)計,我加深了對c語言程序設(shè)計的理解,使自己的操作更加熟練,發(fā)現(xiàn)了自己的不足,為自己今后的繼續(xù)學(xué)習(xí)指明了方向。在這次課程設(shè)計中,我鞏固所了學(xué)過的知識,能用匯編語言熟練地運用順序、選擇、循環(huán)三大結(jié)構(gòu),進一步掌握結(jié)構(gòu)體數(shù)組的使用,文件函數(shù)的使用,掌握了子程序的定義及調(diào)用。并在調(diào)試過程中不斷發(fā)現(xiàn)與改正錯誤,完善算法,改進用戶體驗等等。調(diào)試索然繁瑣而艱苦,但極大的促進了我編程能力的提高。由于自己目前能力有限,該程序還有諸多不足,感謝指正。感謝老師的悉心教導(dǎo)與細致的幫助。雖然C語言的課程與課程設(shè)計都已結(jié)束,但通過這次課程設(shè)計我也發(fā)現(xiàn)了差距,并將在未來努力學(xué)習(xí),積極實踐,使自己能真正的掌握運用c語言。參考文獻

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!