史上最牛的c语言—职工工资系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1工资信息管理系统一.题目要求该系统能够实现工理资信息管,系统包括录入,浏览,查询,统计等功能.其中录入功能要求添加新的工资信息到文件,浏览功能要求能按照工资卡号,姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号,姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额.要求1,文件中一行数据对应一个职工工资信息.2,工资信息的数据结构采用结构体数组,一个数组元素对应一条工资单记录.3,工资单信息包括工资卡号,姓名,月份,应发工资,水费,电费.税金,实发工资等.4,实发工资=应发工资-水费-电费-税金,其中税金计算方法为(1)应发工资<800元,税金=0(2)800<应发工资<1400元,税金=(应发工资-800)*5%(3)应发工资>1400元,税金=(应发工资-1400)*10%二.需求分析根据题目要求,职工信息需要以文件方式存放到文件中,系统要求提供录入操作.并应实现浏览,查询,统计等功能;另外还应提供选择菜单实现功能选择.三.总体设计整体设计可根据题目分为添加信息模块.按姓名浏览模块.按卡号升序浏览模块.按姓名查找模块.按卡号查找模块.按工资降序输出模块.统计模块.保存模块.加载模块.工资信息管理系统[流程图]菜单四.详细设计⒈主函数主函数一般设计得比较简洁.只提供输入,功能处理和输出部分的函数调用.各功能模块用菜单方式.另外菜单部分也可以写成是函数[流程图]显示一系列功能选项判断是否输入0到9NY2根据输入值调用各功能模块函数[程序]/*为了调用FILE等函数*/#includestdio.h#includeconio.h/*为了调用atof()等函数*/#includestdlib.h#defineTRUE1职工的信息存放格式为:/*结构体声明*/structzhigong{intmonth;floatid;floatjbgz;floatyfs;floatsf;floatdf;floatgrsds;floatyks;floatsfs;charname[10];};/*建立50个元素的结构体数组*/structzhigongzg[50];structzhigongname[3];/*建立结构体变量*/structzhigongzgone;/*职员列表中的数量*/intn=0;/*获得字符串*/charnumstr[50];3main(){charch;n=0;while(TRUE){printf(\n);printf(===========================================\n);printf(Welcome!Pleasechoice(0-9):+\n);printf(0.Addoneinfomation+\n);/*添加信息*/printf(1.Browsebyname+\n);/*按姓名浏览*/printf(2.Browsebykahaorise+\n);/*按卡号升序浏览*/printf(3.searchbyname+\n);/*按姓名查找*/printf(4.seachoutbynumber+\n);/*按卡号查找*/printf(5.Printoutallbygongzidown+\n);/*按工资降序输出*/printf(6.tongji+\n);/*统计*/printf(7.Savedate+\n);/*保存*/printf(8.Loaddate+\n);/*加载.从文件中加载数据到结构体上*/printf(9.Exit+\n);printf(===========================================\n);ch=getche();switch(ch){case'0':addone();break;case'1':browsename();break;case'2':browseid();break;case'3':byname();break;case'4':idone();break;case'5':listall();break;case'6':tongji();break;case'7':wfile();break;case'8':rfile();break;case'9':return;4default:printf(Sorry,pleasechoiceagain!\n);}}}2各功能模块设计(1)计算个人所得税函数[需求分析]根据输出的工资信息判断该职工的税金多少.根据数值利用以下函数算出税金多少.[流程图]提取职工应发工职信息判断应发工资符合以下那种算法根据应发工资算出税金[程序]floattgrsds(floatm){floatsui1;floattmp;sui1=0;if(m=1400){sui1=(m-1400)*0.1;}elseif(m=800&&m1400){sui1=(m-800)*0.05;}elseif(m800){sui1=0;}tmp=sui1;return(tmp);(2)添加信息模块[需求分析]添加信息模块的功能是用户需要增加新的职工信息,请从键盘输入并逐条写到原来的文件当中,注意采用是追加不是覆盖的方式。5[程序]addone(){printf(\n);printf(RecordNO.%d\n,n+1);printf(Pleaseputinkahao:\n);scanf(%f,&zg[n].id);printf(Pleaseputinname:\n);scanf(%s,zg[n].name);/*注意输入数据与字符串的区别*/printf(Pleaseputinmonth:\n);scanf(%d,&zg[n].month);printf(Pleaseputinjibengongzi:\n);scanf(%f,&zg[n].jbgz);zg[n].yfs=(zg[n].jbgz);printf(Pleaseputinshuifei:\n);scanf(%f,&zg[n].sf);printf(Pleaseputindianfei:\n);scanf(%f,&zg[n].df);zg[n].grsds=tgrsds(zg[n].yfs);zg[n].yks=(zg[n].sf)+(zg[n].df)+(zg[n].grsds);zg[n].sfs=(zg[n].yfs)-(zg[n].yks);/*通过计算个人所得税函数计算出个人的工资所得税并存入结构体中*/n++;return;}(3)按姓名浏览模块[需求分析]按姓名排列出来方便用户的查找.[流程图]选择要浏览的方式调节输出方式并把姓名放在首位输出[程序]browsename(){intj;printf(\nname;;;;;;kahao;;;month;;;jibengongziyingfashu;shuifei;dianfei;;shifashu\n);for(j=0;j=n-1;j++){printf(%8.2s|,zg[j].name);6printf(%8.2f|,zg[j].id);printf(%8.2d|,zg[j].month);printf(%8.2f|,zg[j].jbgz);printf(%8.2f|,zg[j].yfs);printf(%8.2f|,zg[j].sf);printf(%8.2f|,zg[j].df);printf(%8.2f|,zg[j].sfs);}return;}(4)按卡号升序浏览模块[需求分析]为更方便用户的查找与浏览.采用简单的交换排序方法按卡号升序排列出来.[流程图]选择浏览的方式提取卡号利用简单的排序法按卡号升序排出来调节输出方式并把卡号作为首项输出[程序]browseid(){floatt;intj,i;printf(\nkahao;;;;;shifashumonth;;;jibengongziyingfashu;shuifei;dianfei;;name\n);/*设置输出的格式*/for(i=0;in-1;i++)for(j=i+1;jn;j++)if(zg[i].idzg[j].id){t=zg[i].id;zg[i].id=zg[j].id;zg[j].id=t;};/*用简单的交换法通过for循环按卡号升序输出*/for(j=0;jn;j++){printf(%8.2f|,zg[j].id);printf(%8.2f|,zg[j].sfs);printf(%8.2d|,zg[j].month);printf(%8.2f|,zg[j].jbgz);printf(%8.2f|,zg[j].yfs);printf(%8.2f|,zg[j].sf);printf(%8.2f|,zg[j].df);printf(%8.2s|,zg[j].name);}return;7}(5)姓名查找模块[需求分析]该程序的功能是根据输入职工的姓名查找对应的记录。以方便用户的快速查找.[流程图]输入要查找的职工姓名无利用strcmp函数查找出该职工输出该职工信息[程序]byname(){intj;intflagfind;flagfind=0;printf(\nPleaseputinthename:\n);scanf(%s,name[0].name);/*输入要查找的职工姓名*/printf(\nname;;;;;;kahao;;;month;;;jibengongziyingfashu;shuifei;dianfei;;shifashu\n);for(j=0;j=n;j++){if(strcmp(zg[j].name,name[0].name)==0)/*用strcmp比较字符串.若相等则输出*/{printf(%8.2s|,zg[j].name);printf(%8.2f|,zg[j].id);printf(%8.2d|,zg[j].month);printf(%8.2f|,zg[j].jbgz);printf(%8.2f|,zg[j].yfs);printf(%8.2f|,zg[j].sf);printf(%8.2f|,zg[j].df);printf(%8.2f|,zg[j].sfs);flagfind=1;/*通过flagfind变量判断查找的结果*/8}}if(flagfind==0)printf(\nCannotfindrecord!\n);return;}(6)卡号查找模块[需求分析]该程序的功能是根据输入职工的卡号查找对应的记录。以方便用户的快速查找.[流程图]输入要查找的职工的卡号无对比查找出该职工有输出该职工信息[程序]idone(){floatzhigongid;intj;intflagfind;flagfind=0;printf(\nPleaseputinzhigongbianhao:\n);scanf(%f,&name[0].id);/*输入要查找的职工卡号*/zhigongid=name[0].id;printf(\nkahao;;;;;shifashumonth;;;jibengongziyingfashu;shuifei;dianfei;;name\n);for(j=0;j=n-1;j++){if(zg[j].id==zhigongid)/*对比卡号是否相等若等则输出*/{printf(%8.2f|,zg[j].id);printf(%8.2f|,zg[j].sfs);printf(%8.2d|,zg[j].month);printf(%8.2f|,zg[j].jbgz);printf(%8.2f|,zg[j].yfs);printf(%8.2f|,zg[j].sf);9printf(%8.2f|,zg[j].df);printf(%8.2s|,zg[j].name);/*通过flagfind变量判断查找的结果*/flagfind=1;}}if(flagfind==

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功