职工工资管理系统C语言.docx
- 文档编号:13449662
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:36
- 大小:47.32KB
职工工资管理系统C语言.docx
《职工工资管理系统C语言.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统C语言.docx(36页珍藏版)》请在冰点文库上搜索。
职工工资管理系统C语言
1、设计内容
设计一个工资管理程序
存储的数据包括:
姓名,职工号,所属部门,基本工资,奖励工资,补贴项目及金额和扣款项目及金额。
功能:
1)加入一个人的记录
2)删除一个人的记录
3)显示所有人的记录
4)查询(包括按人名查询工资和按工号查询)
5)统计功能(包括统计某一工资范围的人数和统计各部门的工资总数)
6)修改功能
2、设计目的
1.熟悉C语言程序的编辑、编译链接和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
4.掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
5.掌握结构体类型变量、数组的定义和使用。
6.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
3、设计思路(包括所用的函数)
职工工资管理系统
个统删修保退添查查出存改找除人计加看数职职职职职工职
据工工工工资工工信信信信信信统息计息息息息息
图1程序功能图
voidshow();
voidxmcz();//按姓名查找
voidbmcz();//按部门查找voidadd();//添加职工信息voiddel();//删除职工信息查看职工信息voidsee();//
voidxmsc();//voidsearch();//查找职工信息按姓名删除
按工号删除voidghsc();//按工号查找voidghcz();//
voidstatistics();//个人工资统计voidghxg();//按工号修改
voidxmxg();//按姓名修改voidstatistic();//统计职工信息
voidreserve();//保存职工信息按工资段统计voidgzdtj();//
voidbmtj();//按部门统计voidmodify();//修改职工信息
开始添加职工信息查看职工信息
按姓名查找职工信息删除职工信息个人工资统计统计职工工资
i++
主菜单i 输出职工信息 选择操作 选择选择选择选择选择选择选择选择选择 123456780添加成功结束 按工号 按姓名按工号 按工资段按部门 修改职工信息 结束 保存数据 退出 1、添加职工信息: 开始 定义数据类型numberTemp,i 添加函数流程图 2、查看职工信息: 开始 定义i=0 i 输出职工信息 结束 查看函数流程图 3、查找职工信息: 开始 定义n=0 输入n 如果n=1如果n=2开始 定义n=0 输入n 如果n=1如果n=2开始i=0 定义i=0 For函数初始值i 按姓名查找按姓名删除 终止终止 结束结束 输出员工总工资 按工号查找按工号删除 输入错误 终止终止 终止 i++ 查找函数流程图 4、删除职工信息: 删除函数流程图 5、个人工资统计 结束 个人工资统计流程图 6、统计职工工资 开始 定义n=0 输入n 如果n=1如果n=2按部门统计 按工资段统计 终止结束 输入错误 终止 终止 工资统计流程图 7、修改职工工资 开始 定义mode=0 输入mode 如果mode=1如果mode=2按工号修改 按姓名修改 终止结束 输入错误 终止 终止 修改函数流程图 4、程序代码 #include #include #include structworker {chardepa[30]; charname[30]; charID[10]; intsalary1,salary2,salary3,salary4; }; intdq(structworkerwo[]); voidshow(); voidbc(structworkerwo[]); voidadd(); voidsee(); voidsearch(); voidghcz(); voidxmcz(); voidbmcz(); voiddel(); voidxmsc(); voidghsc(); voidstatistics(); voidstatistic(); voidgzdtj(); voidbmtj(); voidmodify(); voidghxg(); voidxmxg(); voidreserve(); voidback(); structworkerwo[100];//保存所有的职工信息 intNumber=0;//记录总的职工人数 voidmain() { intchoose=0; while (1) { show(); printf(\\t====>请选择: ); scanf(%d,&choose); system(cls); switch(choose) { case0: exit(0);//退出 break; case1: add(); back();//添加职工信息 break; case2: see(); back();//查看职工信息 break; case3: search(); back();//查找职工信息 break; case4: del(); back();//删除职工信息 break; case5: statistics(); back();//个人工资统计 break; case6: statistic(); back();//统计职工工资 break; case7: modify(); back();//修改职工信息 break; case8: reserve(); back();//保存数据 break; default: break; } fflush(stdin); system(cls); } } intdq(structworkerwo[]) { FILE*fp=NULL; inti=0; fp=fopen(C: //worker.dat, b); while(fread(&wo[i],sizeof(structworker),1,fp)) i++; fclose(fp); returni; } voidshow() { printf(\ ); printf(\****************职工工资管理系统****************\n\n); printf(\*☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆*\n\n); printf(\^^^^^^^^^^^^^^^[1]添加职工信息^^^^^^^^^^^^^^^^^\n); printf(\^^^^^^^^^^^^^^^[2]查看职工信息^^^^^^^^^^^^^^^^^\n); printf(\^^^^^^^^^^^^^^^[3]查找职工信息^^^^^^^^^^^^^^^^^\n); printf(\^^^^^^^^^^^^^^^[4]删除职工信息^^^^^^^^^^^^^^^^^\n); printf(\^^^^^^^^^^^^^^^[5]个人工资统计^^^^^^^^^^^^^^^^^\n); printf(\^^^^^^^^^^^^^^^[6]统计职工工资^^^^^^^^^^^^^^^^^^\n); printf(\^^^^^^^^^^^^^^^[7]修改职工信息^^^^^^^^^^^^^^^^^\n); printf(\^^^^^^^^^^^^^^^[8]保存数据^^^^^^^^^^^^^^^^^\n); printf(\^^^^^^^^^^^^^^^[0]退出系统^^^^^^^^^^^^^^^^^\n\n); printf(\*★★★★★★★★★★★★★★★★★★★★★★★*\n); } voidbc(structworker*wo) { FILE*fp=NULL; fp=fopen(C: //worker.dat,ab+); fwrite(wo,sizeof(structworker),1,fp); fclose(fp); } //添加职工信息 voidadd() { intnumberTemp=0; inti=0; structworkertemp; 牰湩晴尨请输入要添加职工个数: ); scanf(%d,&numberTemp); for(i=0;i { 牰湩晴尨输入第%d个职工信息\n,i+1); 牰湩晴尨姓名: ); scanf(%s,temp.name); 牰湩晴尨工号: ); scanf(%s,temp.ID); 牰湩晴尨所属部门: ); scanf(%s,temp.depa); 牰湩晴尨基本工资: ); scanf(%d,&temp.salary1); 牰湩晴尨奖励工资: ); scanf(%d,&temp.salary2); 牰湩晴尨补贴项目即金额: ); scanf(%d,&temp.salary3); 牰湩晴尨扣除项目即金额: ); scanf(%d,&temp.salary4); wo[Number++]=temp;//写入到数组 bc(&temp);//写入到文件 } 牰湩晴尨添加成功\n); } //查看职工信息 voidsee() { inti=0; 牰湩晴尨以下是全部职工\n); printf(\姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t总工资\n); while(i { printf(\%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4); i++; } } //查找职工信息 voidsearch() { intn=0; printf(按姓名查找\n); printf(按工号查找\n); printf(按部门查找\n); scanf(%d,&n); switch(n) { case1: xmcz(); break; case2: ghcz(); break; case3: bmcz(); break; 敤慦汵? 瀠楲瑮? 输入错误! \n); break; } } voidxmcz()//按姓名查找 { charname[30]; inti=0; 牰湩晴尨请输入要查找职工姓名: ); scanf(%s,name); system(cls); printf(\姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t总工资\n); for(i=0;i { if(strcmp(name,wo[i].name)==0) { printf(\%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4); } } } voidghcz()//按工号查找 { charid[10]; inti=0; 牰湩晴尨请输入要查找工号: ); scanf(%s,id); system(cls); printf(\姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t总工资\n); for(i=0;i { if(strcmp(id,wo[i].ID)==0) { printf(\%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4); } } } voidbmcz()//按部门查找 { chardepa[30]; inti=0; 牰湩晴尨请输入要查询的部门名称: ); scanf(%s,depa); system(cls); printf(\姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t总工资\n); for(i=0;i { if(strcmp(depa,wo[i].depa)==0) { printf(\%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4); } } } //删除职工信息 voiddel() { intn=0; printf(按姓名删除\n); printf(按工号删除\n); scanf(%d,&n); switch(n) { case1: xmsc(); break; case2: ghsc(); break; } } voidxmsc()//按姓名删除 { FILE*fp=NULL; charname[30]; inti=0; intj=0; 牰湩晴尨请输入要删除的职工姓名: ); scanf(%s,name); for(i=0;i { if(strcmp(name,wo[i].name)==0) { for(j=i;j { wo[j]=wo[j+1]; } Number--; } } //将剩余数据写入文件擦除以前的数据 fp=fopen(C: //worker.dat,wb); for(i=0;i { fwrite(&wo[i],sizeof(structworker),1,fp); } fclose(fp); 牰湩晴尨删除成功;\n); } voidghsc()//按工号删除 { FILE*fp=NULL; charid[60]; inti=0; intj=0; 牰湩晴尨请输入要删除的职工工号: ); scanf(%s,id); for(i=0;i { if(strcmp(id,wo[i].ID)==0) { for(j=i;j { wo[j]=wo[j+1]; } Number--; } } 擦除以前的数据将剩余数据写入文件// fp=fopen(C: //worker.dat,wb); for(i=0;i { fwrite(&wo[i],sizeof(structworker),1,fp); } fclose(fp); 牰湩晴尨删除成功;\n); } //个人工资统计 voidstatistics() { inti=0; doublesum[100]; for(i=0;i { sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4; printf(%s的总工资为: %f\n,wo[i].name,sum[i]); } } voidstatistic()//统计职工工资 { intn=0; printf(按工资段统计\n); printf(按部门统计\n); scanf(%d,&n); switch(n) { case1: gzdtj(); break; case2: bmtj(); break; 敤慦汵? 瀠楲瑮? 输入错误! \n); break; } } voidgzdtj()//按工资段统计 {intsa1,sa2; inti=0; intn,m; intsl[20]={0,0}; doublesum[100]; 牰湩晴尨请输入要查询的工资段: ); scanf(%d-%d,&sa1,&sa2); system(cls); for(i=0;i { sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4; } for(i=0;i {n=sum[i]/1000; if(n>9)n=10; switch(n) {case0: sl[0]++;break; case1: sl[1]++;break; case2: sl[2]++;break; case3: sl[3]++;break; case4: sl[4]++;break; case5: sl[5]++;break; case6: sl[6]++;break; case7: sl[7]++;break; case8: sl[8]++;break; case9: sl[9]++;break; case10: sl[10]++;break; } } m=sa1/1000; switch(m) 捻獡? ? 牰湩晴尨工资在1000以下的人数为%d\n,sl[0]);break; 慣敳ㄠ瀺楲瑮? 工资在1000到2000之间的人数为%d\n,sl[1]);break; 慣敳㈠瀺楲瑮? 工资在2000到3000之间的人数为%d\n,sl[2]);break; 慣敳? 瀺楲瑮? 工资在3000到4000之间的人数为%d\n,sl[3]);break; 慣敳? 瀺楲瑮? 工资在4000到5000之间的人数为%d\n,sl[4]);break; 慣敳? 瀺楲瑮? 工资在5000到6000之间的人数为%d\n,sl[5]);break; 慣敳? 瀺楲瑮? 工资在6000到7000之间的人数为%d\n,sl[6]);break; 慣敳? 瀺楲瑮? 工资在7000到8000之间的人数为%d\n,sl[7]);break; 慣敳? 瀺楲瑮? 工资在8000到9000之间的人数为%d\n,sl[8]);break; 慣敳? 瀺楲瑮? 工资在9000到10000之间的人数为%d\n,sl[9]);break; 慣敳ㄠ? 牰湩晴尨工资在10000以上的人数为%d\n,sl[10]);break; } } voidbmtj()//按部门统计 { chardepa[30]; floatsum=0; inti=0; 牰湩晴尨请输入要查询的部门名称: ); scanf(%s,depa); system(cls); printf(\姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t总工资\n); for(i=0;i { if(strcmp(depa,wo[i].depa)==0) { printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 语言
![提示](https://static.bingdoc.com/images/bang_tan.gif)