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

下載本文檔

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

文檔簡介

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

2、量、數(shù)組的定義和使用。6 .掌握數(shù)組的定義、引用以及輸入輸出的方法、通過字符數(shù)組存儲字符串,進一步使用字符 用。void xmxg();/ 按姓名修改void reserve();/保存職工信息3、設計思路(包括所用的函數(shù))1工工§添查查刪個統(tǒng)修保退加看找除1K1程序】改存出職v)id show();職職工vod :statistic齦/工費統(tǒng)計工v)id addjp信息工資void :statisticQ®加用口言息信v)id see(g/信息信統(tǒng)vod ,jzdtj(,信按二二資段":計息v)id s陰息h():/雙工生偈息計voidbmtj(),息按部門統(tǒng)計

3、void ghcz(); 按工號查找void modify(); 修改職工信息void xmcz();按姓名查找void ghxg();按工號修改void bmcz();/按部門查找void del();/刪除職工信息void xmsc();/按姓名刪除void ghsc();/ 按工號刪除1、添加職工信息:> 按姓名A 按姓名開始添加函數(shù)流程圖2、查看職工信息:4、刪除職工信息:查找函數(shù)流程圖輸入錯誤終止開rA刪除函數(shù)流程圖5、個人工資統(tǒng)計J結束個人工資統(tǒng)計流程圖 6、統(tǒng)計職工工資7、修改職工工資工資統(tǒng)計流程圖輸入錯誤終止修改函數(shù)流程圖4、程序代碼struct workerchar d

4、epa30;char name30;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();void bmcz();void del();void xmsc();void ghsc();void statistics。;void statistic();void gzdtj();void bmtj();void m

5、odify();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);system("cls");switch(choose)case 0:exit(0);/ 退出break;case 1:add();ba

6、ck();/ 添加職工信息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();/ 修改職工信息break;case 8:reserve(); back();/保存數(shù)據(jù) break;default: break;)ffl

7、ush(stdin);system("cls");)int dq(struct worker wo)(FILE *fp=NULL;int i=0;while(fread(&woi,sizeof(struct worker),1,fp) i+;fclose(fp);return i;)void show()(printf("n");printf("t*printf("t*職工工資管理系統(tǒng)*nn");printf("t printf("t printf("t printf("t p

8、rintf("t printf("t printf("t printf("t printf("tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA123456780添加職工信息 AAAAAAAAAAAAAAAAA'n"); 查看職工信息 AAAAAAAAAAAAAAAAAn”); 查找職工信息 AAAAAAAA

9、AAAAAAAAAn"); 刪除職工信息 AAAAAAAAAAAAAAAAAn"); 個人工資統(tǒng)計 AAAAAAAAAAAAAAAAAn"); 統(tǒng)計職工工資 AAAAAAAAAAAAAAAAAAn"); 修改職工信息 AAAAAAAAAAAAAAAAAn");保存數(shù)據(jù) AAAAAAAAAAAAAAAAAn"); 退出系統(tǒng) AAAAAAAAAAAAAAAAAnn");printf("t* *n");)void bc(struct worker *wo)(FILE *fp=NULL;fwrite(wo,siz

10、eof(struct worker),1,fp);fclose(fp);)/添加職工信息 void add() (int numberTemp=0;int i=0;struct worker temp;printf(" 請輸入要添加職工個數(shù): ");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i+)printf("輸入第階職工信息n",i+1);printf("姓名:");printf("工號:");printf(" 所屬部門

11、 :");printf("基本工資:");printf("獎勵工資:");printf(" 補貼項目即金額: ");printf(" 扣除項目即金額:");woNumber+=temp; / 寫入到數(shù)組bc(&temp); / 寫入到文件printf(" 添加成功 n");/ 查看職工信息void see()int i=0;printf(" 以下是全部職工 n");printf("t 姓名 t 工號 t 所屬部門 t 基本工資 t 獎勵工資 t 補

12、貼項目及金額t 扣款項目及金額t 總工資 n");while(i<Number)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);i+;/ 查找職工信息void search()int n=0;printf("1按姓名查找n");printf("2按工號查找

13、n");printf("3按部門查找n");scanf("%d",&n);switch(n)case 1: xmcz();break;case 2: ghcz();break;case 3: bmcz();break;default: printf(" 輸入錯誤 !n");break;void xmcz()/ 按姓名查找char name30;int i=0;printf(" 請輸入要查找職工姓名 :");scanf("%s",name);system("cls&qu

14、ot;);printf("t 姓名 t 工號 t 所屬部門 t 基本工資 t 獎勵工資 t 補貼項目及金額t 扣款項目及金額t 總工資 n");for (i=0;i<Number;i+)if (strcmp(name,)=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.sa

15、lary4);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;i<Number;i+)if (strcmp(id,woi.ID)=0)printf("t%st%st%st%dtt%dtt%dtt%dtt%dn",woi

16、.name,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

17、扣款項目及金額t 總工資 n");for (i=0;i<Number;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")

18、;printf("2按工號刪除n");scanf("%d",&n);switch(n)case 1: xmsc();break;case 2: ghsc();break;void xmsc()/ 按姓名刪除FILE *fp=NULL;char name30;int i=0;int j=0;printf(" 請輸入要刪除的職工姓名: ");scanf("%s",name);for(i=0;i<Number;i+)if (strcmp(name,)=0)for (j=i;j<Numb

19、er-1;j+)woj=woj+1;Number-;/ 將剩余數(shù)據(jù)寫入文件 擦除以前的數(shù)據(jù)for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf(" 刪除成功 ;n");void ghsc()/ 按工號刪除FILE *fp=NULL;char id60;int i=0 fwrite(&woi,sizeof(struct worker),1,fp);int j=0 printf("請輸入要刪除的職工工號: ");scanf("

20、;%s",id);for(i=0;i<Number;i+)if (strcmp(id,woi.ID)=0)for (j=i;j<Number-1;j+)woj=woj+1;Number-;/ 將剩余數(shù)據(jù)寫入文件 擦除以前的數(shù)據(jù)for (i=0;i<Number;i+) fclose(fp);printf(" 刪除成功 ;n");/ 個人工資統(tǒng)計void statistics()int i=0;double sum100;for(i=0;i<Number;i+)sumi=woi.salary1+woi.salary2+woi.salary3-

21、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);switch(n)case 1: gzdtj();break;case 2: bmtj();break;default: printf(" 輸入錯誤 !n");break;void gzdtj()/ 按工資段統(tǒng)計int

22、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;i<Number;i+)sumi=woi.salary1+woi.salary2+woi.salary3-woi.salary4;for(i=0;i<Number;i+) n=sumi/1000;if (n>9) n=10;switch(n)case 0:sl0+

23、;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(" 工資在 1000 以下的人數(shù)為 %dn",sl0);break;case 1:printf("工資在1000到2000

24、之間的人數(shù)為%dn",sl1);break;case 2:printf("工資在2000到3000之間的人數(shù)為%dn",sl2);break;case 3:printf("工資在3000到4000之間的人數(shù)為%dn",sl3);break;case 4:printf("工資在4000到5000 之間的人數(shù)為%dn",sl4);break;case 5:printf("工資在5000到6000 之間的人數(shù)為%dn",sl5);break;case 6:printf("工資在6000到7000之間的

25、人數(shù)為%dn",sl6);break;case 7:printf("工資在7000到8000之間的人數(shù)為%dn",sl7);break;case 8:printf("工資在8000到9000 之間的人數(shù)為%dn",sl8);break;case 9:printf(" 工資在 9000到 10000之間的人數(shù)為 %dn",sl9);break;case 10:printf(" 工資在 10000 以上的人數(shù)為 %dn",sl10);break;void bmtj()/ 按部門統(tǒng)計char depa30;fl

26、oat sum=0;int i=0;printf(" 請輸入要查詢的部門名稱 :");scanf("%s",depa);system("cls");printf("t 姓名 t 工號 t 所屬部門 t 基本工資 t 獎勵工資 t 補貼項目及金額t 扣款項目及金額t 總工資 n");for (i=0;i<Number;i+)if (strcmp(depa,woi.depa)=0)printf("t%st%st%st%dtt%dtt%dtt%dtt%dn",,woi. ID,w

27、oi.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-woi.salary4;printf(" 該部門的總工資為: %fn",sum);/ 修改職工信息void modify()int mode=0;printf(" 請選擇修改查找方式n");printf("1按姓名查找修改n");print

28、f("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(" 請輸入要修改的職工姓名: ");scanf("%s",name);for (i=0;i<Number;i+)if (str

29、cmp(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(" 請重新輸入該

30、職工信息 ");printf("姓名:");scanf("%s", );printf("工號:");scanf("%s",woi.ID);printf(" 所屬部門: ");scanf("%s",woi.depa);printf("基本工資:");scanf("%d",woi.salary1);printf("獎勵工資:");scanf("%d",woi.salary2)

31、;printf(" 補貼項目即金額: ");scanf("%d", woi.salary3);printf(" 扣款項目及金額:");scanf("%d", woi.salary4);/ 信息修改后重新更新文件里面的數(shù)據(jù) 以保持數(shù)據(jù)一致性for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);void ghxg()/ 按工號修改FILE *fp=NULL;char id30;int i=0;printf("

32、; 請輸入要修改的職工工號: ");scanf("%s",id);for (i=0;i<Number;i+)if (strcmp(id,woi.ID);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.sal

33、ary4 ,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&quo

34、t;,woi.salary1);printf(" 獎勵工資:");scanf("%d",woi.salary2);printf(" 補貼項目即金額:");scanf("%d", woi.salary3);printf("扣款項目及金額:");scanf("%d", woi.salary4);信息修改后重新更新文件里面的數(shù)據(jù)以保持數(shù)據(jù)一致性for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf("t=> 修改成功 n");/保存數(shù)據(jù)void reserve()printf("t=程序在運行時已自動保存.n&quo

溫馨提示

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

評論

0/150

提交評論