版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、工資管理系統(tǒng)1、 設(shè)計(jì)內(nèi)容設(shè)計(jì)一個工資管理程序存儲的數(shù)據(jù)包括:姓名,職工號,所屬部門,基本工資,獎勵工資,補(bǔ)貼項(xiàng)目及金額和扣款項(xiàng)目及金額。功能:1)加入一個人的記錄2)刪除一個人的記錄3)顯示所有人的記錄4)查詢(包括按人名查詢工資和按工號查詢)5)統(tǒng)計(jì)功能(包括統(tǒng)計(jì)某一工資范圍的人數(shù)和統(tǒng)計(jì)各部門的工資總數(shù))6)修改功能2、設(shè)計(jì)目的1.熟悉C語言程序的編輯、編譯鏈接和運(yùn)行的過程。 2.熟練運(yùn)用if語句和switch語句以及嵌套應(yīng)用。3.學(xué)習(xí)并掌握C語言定義函數(shù)的基本方法、聲明函數(shù)及調(diào)用函數(shù)的方法和過程。4.掌握文件的概念以及文件的定義方法,認(rèn)識文件打開、關(guān)閉、讀、寫等文件基本操作函數(shù)。5.掌握
2、結(jié)構(gòu)體類型變量、數(shù)組的定義和使用。6. 掌握數(shù)組的定義、引用以及輸入輸出的方法、通過字符數(shù)組存儲字符串,進(jìn)一步使用字符串。3、 設(shè)計(jì)思路(包括所用的函數(shù))職工工資管理系統(tǒng)添加職工信息保存數(shù)據(jù)修改職工信息統(tǒng)計(jì)職工信息查看職工信息查找職工信息刪除職工信息退出個人工資統(tǒng)計(jì) 圖1 程序功能圖void show();void add();/添加職工信息void see();/查看職工信息void search();/查找職工信息void ghcz();/按工號查找void xmcz();/按姓名查找void bmcz();/按部門查找void del();/刪除職工信息void xmsc();/按姓名刪
3、除void ghsc();/按工號刪除void statistics();/個人工資統(tǒng)計(jì)void statistic();/統(tǒng)計(jì)職工信息void gzdtj();/按工資段統(tǒng)計(jì)void bmtj();/按部門統(tǒng)計(jì)void modify();/修改職工信息void ghxg();/ 按工號修改void xmxg();/按姓名修改void reserve();/保存職工信息選擇8保存數(shù)據(jù)選擇0退出結(jié)束個人工資統(tǒng)計(jì)刪除職工信息統(tǒng)計(jì)職工工資選擇6選擇5選擇4按工資段按部門修改職工信息選擇7按姓名按工號選擇3選擇2選擇1查找職工信息添加職工信息查看職工信息按姓名按工號主菜單開始選擇操作1、添加職工信息:
4、定義數(shù)據(jù)類型numberTemp,ii<numberTempi+添加成功輸出職工信息開始結(jié)束添加函數(shù)流程圖2、查看職工信息:定義i=0i<Number輸出職工信息開始結(jié)束查看函數(shù)流程圖3、查找職工信息:定義n=0如果n=1如果n=2按姓名查找終止按工號查找終止輸入錯誤終止開始結(jié)束輸入n查找函數(shù)流程圖4、刪除職工信息:定義n=0如果n=1如果n=2按姓名刪除終止按工號刪除終止開始結(jié)束輸入n刪除函數(shù)流程圖5、個人工資統(tǒng)計(jì)開始定義i=0For函數(shù)初始值i=0i<Number循環(huán)體輸出員工總工資i+結(jié)束個人工資統(tǒng)計(jì)流程圖6、統(tǒng)計(jì)職工工資定義n=0如果n=1如果n=2按工資段統(tǒng)計(jì)終止按
5、部門統(tǒng)計(jì)終止輸入錯誤終止開始結(jié)束輸入n工資統(tǒng)計(jì)流程圖7、修改職工工資定義mode=0如果mode=1如果mode=2按姓名修改終止按工號修改終止輸入錯誤終止開始結(jié)束輸入mode修改函數(shù)流程圖4、 程序代碼#include <stdio.h>#include <stdlib.h>#include <string.h>struct workerchar depa30;char name30;char ID10;int salary1,salary2,salary3,salary4;int dq(struct worker wo);void show();void
6、 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 modify();void ghxg(); void xmxg();void reserve();void back();struct worker wo100; /保存所有的職工信息int Number=0;
7、/記錄總的職工人數(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();back();/添加職工信息break; case 2:see();back();/查看職工信息 break;case 3:search(); back();/查找職工信息break;case 4:del ();bac
8、k();/刪除職工信息break;case 5:statistics ();back();/個人工資統(tǒng)計(jì)break; case 6:statistic();back();/統(tǒng)計(jì)職工工資break; case 7:modify();back();/修改職工信息break;case 8:reserve();back();/保存數(shù)據(jù) break;default:break;fflush(stdin);system("cls");int dq(struct worker wo)FILE *fp=NULL;int i=0;fp=fopen("C:/worker.dat&qu
9、ot;,"rb");while(fread(&woi,sizeof(struct worker),1,fp)i+;fclose(fp);return i;void show()printf("n");printf("t*職工工資管理系統(tǒng)*nn");printf("t*nn");printf("t1添加職工信息n");printf("t2查看職工信息n");printf("t3查找職工信息n");printf("t4刪除職工信息n"
10、;);printf("t5個人工資統(tǒng)計(jì)n");printf("t6統(tǒng)計(jì)職工工資n");printf("t7修改職工信息n");printf("t8 保 存 數(shù) 據(jù)n");printf("t0 退 出 系 統(tǒng)nn");printf("t*n");void bc(struct worker *wo)FILE *fp=NULL;fp=fopen("C:/worker.dat","ab+");fwrite(wo,sizeof(struct wo
11、rker),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("輸入第%d個職工信息n",i+1);printf("姓名:");scanf("%s",);printf("工號:");s
12、canf("%s",temp.ID);printf("所屬部門:");scanf("%s",temp.depa);printf("基本工資:");scanf("%d",&temp.salary1);printf("獎勵工資:");scanf("%d",&temp.salary2);printf("補(bǔ)貼項(xiàng)目即金額:");scanf("%d",&temp.salary3);printf("
13、;扣除項(xiàng)目即金額:");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補(bǔ)貼項(xiàng)目及金額t扣款項(xiàng)目及金額t總工資n");while(i<Number)printf("t%st%st%st%dtt%dtt%dtt%d
14、tt%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:
15、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");printf("t姓名t工號t所屬部門t基本工資t獎勵工資t補(bǔ)貼項(xiàng)目及金額t扣款項(xiàng)目及金額t總工資n");for (i=0;i<Numb
16、er;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.salary4);void ghcz()/按工號查找 char id10;int i=0;printf("請輸入要查找工號:");scanf("%s",id);syst
17、em("cls");printf("t姓名t工號t所屬部門t基本工資t獎勵工資t補(bǔ)貼項(xiàng)目及金額t扣款項(xiàng)目及金額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.ID,woi.depa,woi.salary1,woi.salary2,woi.salary3,woi.salary4,woi.salary1+woi.salary2+woi.salary3-woi.salary4
18、);void bmcz()/按部門查找 char depa30; int i=0; printf("請輸入要查詢的部門名稱:"); scanf("%s",depa); system("cls"); printf("t姓名t工號t所屬部門t基本工資t獎勵工資t補(bǔ)貼項(xiàng)目及金額t扣款項(xiàng)目及金額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.
19、name,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;case 2: ghsc();break;void xmsc()/按姓名刪除
20、 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<Number-1;j+)woj=woj+1;Number-;/將剩余數(shù)據(jù)寫入文件 擦除以前的數(shù)據(jù)fp=fopen("C:/worker.dat","wb");for (i=0;i<Number;i+)fwrite(&a
21、mp;woi,sizeof(struct 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;i<Number;i+)if (strcmp(id,woi.ID)=0) for (j=i;j<Number-1;j+)woj=woj+1;Number-;/將剩余數(shù)據(jù)寫入文件 擦除以前的數(shù)據(jù)f
22、p=fopen("C:/worker.dat","wb");for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf("刪除成功;n");/個人工資統(tǒng)計(jì)void statistics() int i=0;double sum100;for(i=0;i<Number;i+)sumi=woi.salary1+woi.salary2+woi.salary3-woi.salary4;printf("%s的總工資為:
23、%fn",,sumi);void statistic()/統(tǒng)計(jì)職工工資 int n=0;printf("1 按工資段統(tǒng)計(jì)n");printf("2 按部門統(tǒng)計(jì)n");scanf("%d",&n);switch(n)case 1: gzdtj();break;case 2: bmtj();break;default: printf("輸入錯誤!n");break; void gzdtj()/按工資段統(tǒng)計(jì)int sa1,sa2;int i=0;int n,m;int sl20=0,0;
24、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+;break; case 1:sl1+;break; case 2:sl2+
25、;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之間的人數(shù)為%dn",sl1);break; cas
26、e 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之間的人數(shù)為%dn",sl6);break; cas
27、e 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)計(jì) char depa30; float sum=0; int i=0; printf("
28、;請輸入要查詢的部門名稱:"); scanf("%s",depa); system("cls"); printf("t姓名t工號t所屬部門t基本工資t獎勵工資t補(bǔ)貼項(xiàng)目及金額t扣款項(xiàng)目及金額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.salar
29、y3,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"); printf("2 按工號查找修改n"); scanf("%d
30、",&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 (strcmp(name,);elsebreak;printf("
31、t姓名t工號t所屬部門t基本工資t獎勵工資t補(bǔ)貼項(xiàng)目及金額t扣款項(xiàng)目及金額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("請重新輸入該職工信息");printf("姓名:");scanf("%s", wo
32、);printf("工號:");scanf("%s",woi.ID);printf("所屬部門:");scanf("%s",woi.depa);printf("基本工資:");scanf("%d",woi.salary1);printf("獎勵工資:");scanf("%d",woi.salary2);printf("補(bǔ)貼項(xiàng)目即金額:");scanf("%d", woi.salary3
33、);printf("扣款項(xiàng)目及金額:");scanf("%d", woi.salary4);/信息修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)一致性fp=fopen("C:/worker.dat","wb");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("請輸入要修改的職工工號:&qu
34、ot;);scanf("%s",id);for (i=0;i<Number;i+)if (strcmp(id,woi.ID);elsebreak;printf("t姓名t工號t所屬部門t基本工資t獎勵工資t補(bǔ)貼項(xiàng)目及金額t扣款項(xiàng)目及金額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.s
35、alary3-woi.salary4);printf("請重新輸入該職工信息");printf("姓名:");scanf("%s", );printf("工號:");scanf("%s",woi.ID);printf("所屬部門:");scanf("%s",woi.depa);printf("基本工資:");scanf("%d",woi.salary1);printf("獎勵工資:");scanf("%d",woi.salary2);printf(&
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代熱風(fēng)系統(tǒng)在醫(yī)療設(shè)備中的應(yīng)用案例
- 現(xiàn)代口腔門診的通風(fēng)與空氣質(zhì)量設(shè)計(jì)
- 烘焙坊經(jīng)營中的供應(yīng)鏈優(yōu)化
- 現(xiàn)代科技助力教育普及與均衡發(fā)展
- 環(huán)境友好的商業(yè)產(chǎn)品設(shè)計(jì)案例分享
- 國慶節(jié)兒童泥塑活動方案
- 10《雨和雪》 說課稿-2024-2025學(xué)年科學(xué)六年級上冊人教鄂教版
- 2023三年級數(shù)學(xué)上冊 五 解決問題的策略練習(xí)十(2)說課稿 蘇教版
- 2024-2025學(xué)年高中歷史 專題二 近代中國資本主義的曲折發(fā)展 2.2 民國時(shí)期民族工業(yè)的曲折發(fā)展說課稿1 人民版必修2
- 《11 剪紙花邊》 說課稿-2024-2025學(xué)年科學(xué)一年級上冊湘科版
- 小學(xué)數(shù)學(xué)分?jǐn)?shù)四則混合運(yùn)算300題帶答案
- 2024年考研(英語一)真題及參考答案
- 林下野雞養(yǎng)殖建設(shè)項(xiàng)目可行性研究報(bào)告
- 心肺復(fù)蘇術(shù)課件2024新版
- 苜蓿青貯料質(zhì)量分級DB41-T 1906-2019
- 新鮮牛肉購銷合同模板
- 2024年內(nèi)蒙古呼和浩特市中考文科綜合試題卷(含答案)
- 燒烤店選址標(biāo)準(zhǔn)
- 大型商場招商招租方案(2篇)
- 會陰擦洗課件
- 2024年交管12123學(xué)法減分考試題庫和答案
評論
0/150
提交評論