職工工資管理系統(tǒng)C語言_第1頁
職工工資管理系統(tǒng)C語言_第2頁
職工工資管理系統(tǒng)C語言_第3頁
職工工資管理系統(tǒng)C語言_第4頁
職工工資管理系統(tǒng)C語言_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1、設設計一個工資管理程序存儲的數(shù)據包括:姓名,職工號,所屬部門,基本工資,獎勵工資,補貼項目及金額 和扣款項目及金額。功能:1)加入一個人的記錄2)刪除一個人的記錄3)顯示所有人的記錄4)查詢(包括按人名查詢工資和按工號查詢)5)統(tǒng)計功能(包括統(tǒng)計某一工資范圍的人數(shù)和統(tǒng)計各部門的工資總數(shù))6)修改功能2、設計目的1. 熟悉c語言程序的編輯、編譯鏈接和運行的過程。2. 熟練運用if語句和switch語句以及嵌套應用。3. 學習并掌握C語言定義函數(shù)的基本方法、聲明函數(shù)及調用函數(shù)的方法和過程。4.掌握文件的概念以及文件的定義方法,認識文件打開、關閉、讀、寫等文件基本操作函數(shù)。5. 掌握結構體類型變

2、量、數(shù)組的定義和使用。6. 掌握數(shù)組的定義、引用以及輸入輸出的方法、通過字符數(shù)組存儲字符串,進一步使用字符串。3、設計思路(包括所用的函數(shù))void xmcz();按姓名查找void ghxg();按工號修改void bmcz();按部門查找void xmxg();按姓名修改void del();刪除職工信息void reserve。;/保存職工信息void xmsc();/按姓名刪除void ghsc();/ 按工號刪除1、添加職工信息:添加函數(shù)流程圖定義n=0輸入n按姓名查找終止終止按工號查找輸入錯誤終止4、刪除職工信息:查找函數(shù)流程圖刪除函數(shù)流程圖5、個人工資統(tǒng)計結束個人工資統(tǒng)計流程圖6

3、統(tǒng)計職工工資定義n=0輸入n按工資段統(tǒng)計終止終止按部門統(tǒng)計輸入錯誤終止7、修改職工工資工資統(tǒng)計流程圖修改函數(shù)流程圖4、程序代碼#i nclude #i nclude #include struct workerchar depa30;char n ame30;char ID10;int salary1,salary2,salary3,salary4;int dq(struct worker wo);void show();void bc(struct worker wo);void add();void see();void search();void ghcz();void xmcz();v

4、oid bmcz();void del();void xmsc();void ghsc();void statistics();void statistic();void gzdtj();void bmtj();void modify();void ghxg();void xmxg();void reserve();void back();struct worker wo100; /保存所有的職工信息int Number=0; / 記錄總的職工人數(shù)void main()int choose=0;while(1)show();printf(tt=請選擇: );scanf(%d,&choose);

5、system(cls);switch(choose)case 0:exit(0);/退出break;case 1:add();back();/ 添加職工信息break;case 2:see();back();/ 查看職工信息break;case 3:search();back();/ 查找職工信息break;case 4:del ();back();/ 刪除職工信息break;case 5:statistics ();back();/ 個人工資統(tǒng)計break;case 6:statistic();back();/ 統(tǒng)計職工工資break;case 7:modify();back();/ 修改職

6、工信息 break;case 8:reserve();back();/ 保存數(shù)據 break;default: break;fflush(stdin); system(cls);int dq(struct worker wo)FILE *fp=NULL;int i=0;fp=fopen(C:/worker.dat,rb);while(fread(&woi,sizeof(struct worker),1,fp) i+;fclose(fp);return i;printf(n);printf(t* * printf(t*prin tf(tAAAAAAAAAAAAAAA1void show()職工工

7、資管理系統(tǒng) *nn); *nn);prin tf(tAAAAAAAAAAAAAAA2 printf(tAAAAAAAAAAAAAAA3 printf(tAAAAAAAAAAAAAAA4 printf(tAAAAAAAAAAAAAAA5 printf(tAAAAAAAAAAAAAAA6 printf(tAAAAAAAAAAAAAAA7 printf(tAAAAAAAAAAAAAAA8 printf(tAAAAAAAAAAAAAAA0 printf(t*添加職工信息 AAAAAAAAAAAAAAAAAn); 查看職工信息 AAAAAAAAAAAAAAAAAn); 查找職工信息 AAAAAAAAAA

8、AAAAAAAn); 刪除職工信息 AAAAAAAAAAAAAAAAAn); 個人工資統(tǒng)計 AAAAAAAAAAAAAAAAAn); 統(tǒng)計職工工資 AAAAAAAAAAAAAAAAAAn); 修改職工信息 AAAAAAAAAAAAAAAAAn); 保存數(shù) 據 AAAAAAAAAAAAAAAAAn); 退出系 統(tǒng) AAAAAAAAAAAAAAAAAnn);*n);void bc(struct worker *wo)FILE *fp=NULL; fp=fopen(C:/worker.dat,ab+); fwrite(wo,sizeof(struct worker),1,fp);fclose(fp)

9、;/ 添加職工信息void add()int numberTemp=0;int i=0;struct worker temp;printf( 請輸入要添加職工個數(shù): ); scanf(%d,&numberTemp);for(i=0;inumberTemp;i+)printf(輸入第c個職工信息n,i+1);printf( 姓名: );scanf(%s,);printf( 工號: );scanf(%s,temp.ID);printf( 所屬部門 :);scanf(%s,temp.depa);printf( 基本工資: );scanf(%d,&temp.salary1);prin

10、tf( 獎勵工資: );scanf(%d,&temp.salary2);printf( 補貼項目即金額: );scanf(%d,&temp.salary3);printf( 扣除項目即金額 :);scanf(%d, &temp.salary4);woNumber+=temp; / 寫入到數(shù)組bc(&temp); / 寫入到文件printf( 添加成功 n);/ 查看職工信息void see()int i=0;printf( 以下是全部職工 n);printf(t姓名t工號t所屬部門t基本工資t獎勵工資t補貼項目及金額t 扣款項目及金額 t 總工資 n);while(iNumber)printf

11、(t%st%st%st%dtt%dtt%dtt%dtt%dn,,woi.ID,woi.depa,woi.salary1,woi.salary2,woi.salary3,woi.salary4 ,woi.salary1+woi.salary2+woi.salary3-woi.salary4);i+;/ 查找職工信息void search()int n=0;printf(1按姓名查找 n);printf(2按工號查找 n);printf(3按部門查找 n);scanf(%d,&n);switch(n)case 1: xmcz();break;case 2: ghcz();break

12、;case 3: bmcz();break;default: printf( 輸入錯誤 !n);break;void xmcz()/ 按姓名查找char name30;int i=0;printf( 請輸入要查找職工姓名 :);scanf(%s,name);system(cls);printf(t姓名t工號t所屬部門t基本工資t獎勵工資t補貼項目及金額t 扣款項目及金額 t 總工資 n);for (i=0;iNumber;i+)if (strcmp(name,)=0)printf(t%st%st%st%dtt%dtt%dtt%dtt%dn,,woi.ID,woi

13、.depa,woi.salary1,woi.salary2,woi.salary3,woi.salary4 ,woi.salary1+woi.salary2+woi.salary3-woi.salary4);void ghcz()/ 按工號查找char id10;int i=0;printf( 請輸入要查找工號 :);scanf(%s,id);system(cls);printf(t姓名t工號t所屬部門t基本工資t獎勵工資t補貼項目及金額t 扣款項目及金額 t 總工資 n);for (i=0;iNumber;i+)if (strcmp(id,woi.ID)=0)printf(t%st%st%s

14、t%dtt%dtt%dtt%dtt%dn,,woi.ID,woi.depa,woi.salary1,woi.salary2,woi.salary3,woi.salary4 ,woi.salary1+woi.salary2+woi.salary3-woi.salary4);void bmcz()/ 按部門查找char depa30;int i=0;printf( 請輸入要查詢的部門名稱 :);scanf(%s,depa);system(cls);printf(t姓名t工號t所屬部門t基本工資t獎勵工資t補貼項目及金額t 扣款項目及金額 t 總工資 n);for (i=0;iNum

15、ber;i+)if (strcmp(depa,woi.depa)=0)printf(t%st%st%st%dtt%dtt%dtt%dtt%dn,,woi.ID,woi.depa,woi.salary1,woi.salary2,woi.salary3,woi.salary4 ,woi.salary1+woi.salary2+woi.salary3-woi.salary4);/ 刪除職工信息void del()int n=0;printf(1按姓名刪除 n);printf(2按工號刪除 n);scanf(%d,&n);switch(n)case 1: xmsc(); break;c

16、ase 2: ghsc(); break; void xmsc()/ 按姓名刪除FILE *fp=NULL; char name30; int i=0; int j=0;printf( 請輸入要刪除的職工姓名: ); scanf(%s,name);for(i=0;iNumber;i+)if (strcmp(name,)=0)for (j=i;jNumber-1;j+)woj=woj+1;Number-;/ 將剩余數(shù)據寫入文件 擦除以前的數(shù)據 fp=fopen(C:/worker.dat,wb);for (i=0;iNumber;i+)fwrite(&woi,sizeof(str

17、uct worker),1,fp); fclose(fp); printf( 刪除成功 ;n);void ghsc()/ 按工號刪除FILE *fp=NULL; char id60; int i=0; int j=0; printf( 請輸入要刪除的職工工號: ); scanf(%s,id);for(i=0;iNumber;i+)if (strcmp(id,woi.ID)=0)for (j=i;jNumber-1;j+)woj=woj+1;Number-;/ 將剩余數(shù)據寫入文件 擦除以前的數(shù)據fp=fopen(C:/worker.dat,wb);for (i=0;iNumber;i+)fwri

18、te(&woi,sizeof(struct worker),1,fp);fclose(fp);printf( 刪除成功 ;n);/ 個人工資統(tǒng)計void statistics()int i=0;double sum100; for(i=0;iNumber;i+)sumi=woi.salary1+woi.salary2+woi.salary3-woi.salary4;printf(%s 的總工資為: %fn,,sumi);void statistic()/ 統(tǒng)計職工工資int n=0;printf(1 按工資段統(tǒng)計 n);printf(2 按部門統(tǒng)計 n);scanf(%d,&n

19、);switch(n)case 1: gzdtj();break;case 2: bmtj();break;default: printf(輸入錯誤 !n);break;void gzdtj()/ 按工資段統(tǒng)計int sa1,sa2;int i=0;int n,m;int sl20=0,0;double sum100;printf( 請輸入要查詢的工資段 :); scanf(%d-%d,&sa1,&sa2);system(cls);for(i=0;iNumber;i+)sumi=woi.salary1+woi.salary2+woi.salary3-woi.salary4;for(i=0;i9

20、) n=10;switch(n)case 0:sl0+;break;case 1:sl1+;break;case 2:sl2+;break;case 3:sl3+;break;case 4:sl4+;break;case 5:sl5+;break;case 6:sl6+;break;case 7:sl7+;break;case 8:sl8+;break;case 9:sl9+;break;case 10:sl10+;break;m=sa1/1000;switch(m) case 0:printf( case 1:printf( case 2:printf( case 3:printf( cas

21、e 4:printf( case 5:printf( case 6:printf( case 7:printf( case 8:printf( case 9:printf(工資在 1000 以下的人數(shù)為 %dn,sl0);break;工資在 1000到2000之間的人數(shù)為 %dn,sl1);break; 工資在 2000到3000之間的人數(shù)為 %dn,sl2);break; 工資在 3000到4000之間的人數(shù)為 %dn,sl3);break; 工資在 4000到5000之間的人數(shù)為 %dn,sl4);break; 工資在 5000到6000之間的人數(shù)為 %dn,sl5);break; 工資在

22、 6000到7000之間的人數(shù)為 %dn,sl6);break; 工資在 7000到8000之間的人數(shù)為 %dn,sl7);break; 工資在 8000到9000之間的人數(shù)為 %dn,sl8);break; 工資在 9000到10000之間的人數(shù)為 %dn,sl9);break;case 10:printf( 工資在 10000 以上的人數(shù)為 %dn,sl10);break;void bmtj()/ 按部門統(tǒng)計char depa30;float sum=0;int i=0;printf( 請輸入要查詢的部門名稱 :); scanf(%s,depa);system(cls);printf(t姓

23、名t工號t所屬部門t基本工資t獎勵工資t補貼項目及金額t 扣款項目及金額 t 總工資 n);for (i=0;iNumber;i+)if (strcmp(depa,woi.depa)=0)printf(t%st%st%st%dtt%dtt%dtt%dtt%dn,,woi.ID,woi.depa,woi.salary1,woi.salary2,woi.salary3,woi.salary4 ,woi.salary1+woi.salary2+woi.salary3-woi.salary4);sum=sum+woi.salary1+woi.salary2+woi.salary3-wo

24、i.salary4;printf( 該部門的總工資為: %fn,sum);/ 修改職工信息void modify()int mode=0;printf( 請選擇修改查找方式 n);printf(1按姓名查找修改 n);printf(2按工號查找修改 n);scanf(%d,&mode);switch(mode)case 1: xmxg();break;case 2: ghxg();break;default: printf( 輸入錯誤 !n);break;void xmxg()/ 按姓名修改FILE *fp=NULL;char name30;int i=0;printf( 請輸入要修改的職工姓

25、名: ); scanf(%s,name);for (i=0;iNumber;i+)if (strcmp(name,);elsebreak;printf(t姓名t工號t所屬部門t基本工資t獎勵工資t補貼項目及金額t 扣款項目及金額 t 總工資 n);printf(t%st%st%st%dtt%dtt%dtt%dtt%dn,,woi.ID,woi.depa,woi.salary1,woi.salary2,woi.salary3,woi.salary4 ,woi.salary1+woi.salary2+woi.salary3-woi.salary4);printf(

26、請重新輸入該職工信息 );printf( 姓名: );scanf(%s, );printf( 工號: );scanf(%s,woi.ID);printf( 所屬部門: );scanf(%s,woi.depa);printf( 基本工資: );scanf(%d,woi.salary1);printf( 獎勵工資: );scanf(%d,woi.salary2);printf( 補貼項目即金額: );scanf(%d, woi.salary3);printf( 扣款項目及金額 :);scanf(%d, woi.salary4);/ 信息修改后重新更新文件里面的數(shù)據 以保持數(shù)據一致性

27、 fp=fopen(C:/worker.dat,wb);for (i=0;iNumber;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);void ghxg()/ 按工號修改FILE *fp=NULL;char id30;int i=0;printf( 請輸入要修改的職工工號: ); scanf(%s,id);for (i=0;iNumber;i+)if (strcmp(id,woi.ID);elsebreak;printf(t姓名t工號t所屬部門t基本工資t獎勵工資t補貼項目及金額t 扣款項目及金額 t 總工資 n);printf(

28、t%st%st%st%dtt%dtt%dtt%dtt%dn,,woi.ID,woi.depa,woi.salary1,woi.salary2,woi.salary3,woi.salary4 ,woi.salary1+woi.salary2+woi.salary3-woi.salary4);printf( 請重新輸入該職工信息 );printf( 姓名: );scanf(%s, );printf( 工號: );scanf(%s,woi.ID);printf( 所屬部門 :);scanf(%s,woi.depa);printf( 基本工資: );scanf(%d,w

29、oi.salary1);printf( 獎勵工資: );scanf(%d,woi.salary2);printf( 補貼項目即金額: );scanf(%d, woi.salary3);printf( 扣款項目及金額 :);scanf(%d, woi.salary4);/ 信息修改后重新更新文件里面的數(shù)據 以保持數(shù)據一致性 fp=fopen(C:/worker.dat,wb);for (i=0;i 修改成功 n);/ 保存數(shù)據void reserve()printf(t= 程序在運行時已自動保存 n);void back()按 Enter 鍵返回主菜單 n); printf(t=5. 、運行結果*職工工資管理系統(tǒng)*AAAAAAAAAAAAAAA1添加職工信息 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2查看職工信息 AAAAAAAAAAAAAAAAAAAAAAAAAA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論