C++实现企业职工工资管理系统
课程设计目的和要求
工资管理要和人事管理相联系,生成企业每个职工的实际发放工资。
企业职工人事基本信息包括:职工编号、姓名、性别、出生日期、职称(助工、工程师、高级工程师)和任职年限。
企业职工工资信息包括:职工编号、姓名、职务工资、职务补贴、住房补贴、应发工资、个人所得税、养老保险、住房公积金和实发工资。
系统主要功能包括:
(1)创建职工人事基本信息文件,根据提示输入职工的各项信息,按职工编号对职工信息进行排序,并将排序后的职工信息存储到一个文件中。
(2)创建职工的工资信息文件(每个月创建一个文件),其中职工编号和姓名从人事信息文件中复制,其他工资组成项目按下面方法计算。
职务工资:助工=1270*(1+任职年限*2%)
工程师=2360*(1+任职年限*3%)
高级工程师=3450*(1+任职年限*5%)
职务补贴:=职务工资*25%
住房补贴=(职务工资+职务补贴)*15%
应发工资=职务工资+职务补贴+住房补贴
个人所得税=(应发工资-3000)*5%
养老保险=(职务工资+职务补贴)*10%
住房公积金=应发工资*5%
实发工资=应发工资-个人所得税-养老保险-住房公积金
(3)增加职工人事基本信息,在原有职工人事基本信息文件的基础上增加新有的职工信息。
(4)删除职工人事基本信息,提示用户输入要删除的职工编号,如果在文件有该信息存在,则将其信息输出到屏幕上,用户确认后将该信息删除,并将删除后的结果保存至原文件。最后提示用户是否继续进行删除操作。
(5)修改职工人事基本信息,提示用户输入要删除的职工编号,如果在文件有该信息存在,则将其信息输出到屏幕上,然后提示用户要修改的选项(职称、任职年限),并将修改后的结果保存至原文件。最后提示用户是否继续进行修改操作。
(6)按不同条件进行查询操作,输出满足条件的职工工资信息。
① 按职工编号查询,输入一个编号,输出对应职工工资信息。
② 按姓名查询,包括精确查询,模糊查询。
③ 按职称查询,输入职称名称,输出相应职称工资信息。
(7)按不同条件对职工工资信息进行统计工作。
① 统计个职称岗位的职工人数是多少,计算高级工程师比例。
② 计算企业职工的平均实发工资,并输出。
③ 统计职工工资低于平均工资人数,并输出他们的姓名和实发工资。
代码:
#include#include #include #include #include #include typedefstructdate { shortyear; shortmonth; shortday; }st3; typedefstructgerenxinxi { charnum[30]; charname[30]; charsex[30]; st3chushengriqi; charzhicheng[20]; intnianxian; }st; typedefstructgerengongzi { charnum[20]; charname[12]; doublezhiwugongzi; doublezhiwubutie; doublezhufangbutie; doubleyingfagongzi; doublegerensuodeshui; doubleyanglaobaoxian; doublezhufanggongjijin; doubleshifagongzi; }st1; #definest3_lensizeof(st3) #definest_lensizeof(st) #definest1_lensizeof(st1) #definegerenxinxinum1000 #definegerengongzinum1000 stgerenxinxi[gerenxinxinum]={0}; st1gerengongzi[gerengongzinum]={0}; intloadgerenxinxi(void);//将文件中的信息读取 intoriginalgerenxinxi(void);//个人信息初始化 voidgetonegerenxinxi(inti);//输ru一个职工的个人信息 voidallgerenxinxi(intbn);//保存所有信息 voidxggerenxinxi(intbn);//修改个人信息 voidsaveonegerenxinxi(inti);//保存个人信息 intaddgerenxinxi(intbn);//增加个人信息 intdelgerenxinxi(intbn);//删除个人信息 voidputonegerenxinxi(inti);//输出一个个人信息 voidsort(intbn);//排序 voidshengchenggongzi(intbn);//生成工资 voidputonegerengongzi(inti);//输出一个人的工资信息 voidcxgerenxinxi(intbn);//查询 voidcxzhicheng(intbn);//职称查询 voidcxname(intbn);//姓名查询 voidcxnum(intbn);//编号查询 voidtongjigongzixinxi(intbn);//统计工资信息 floatavegongzi(intbn);//平均工资 voidlowgongzi(intbn);//低于平均工资 voidgangweirenshu(intbn);//职工人数 voidmain() {intselect,bn; bn=loadgerenxinxi(); if(bn==0) printf("职工信息为零:"); while(1) { printf("\n企业职工工资管理系统\n"); printf("\n-----------------------------\n"); printf("\n请输入要进行操作前的序号\n"); printf("\n1.输入职工信息\n"); printf("\n2.修改职工信息\n"); printf("\n3.增加职工信息\n"); printf("\n4.删除职工信息\n"); printf("\n5.职工工资\n"); printf("\n6.统计工资信息\n"); printf("\n7.查询工资信息\n"); printf("\n0.退出\n"); printf("\n----------------------------\n"); scanf("%d",&select); getchar(); switch(select) {case1:originalgerenxinxi();break; case2:xggerenxinxi(bn);break; case3:addgerenxinxi(bn);break; case4:delgerenxinxi(bn);break; case5:shengchenggongzi(bn);break; case6:tongjigongzixinxi(bn);break; case7:cxgerenxinxi(bn);break; case0:return; default:printf("\n按键错误,请重新选择\n"); } } } //===================================================== intloadgerenxinxi(void)//将文件中的信息读取 { FILE*fb; intbn=0; if((fb=fopen("gerenxinxi.txt","r+"))==NULL) {printf("不能打开\n"); return(bn); } while(!feof(fb)) if(fread(&gerenxinxi[bn],st_len,1,fb)) bn++; fclose(fb); return(bn); } //====================================================== intoriginalgerenxinxi(void)//个人信息初始化 { intn; charc='y'; for(n=0;c=='y';n++) {printf("\n输入职工%d的信息:\n",n+1); getonegerenxinxi(n); printf("\n继续输入请按'y',停止请按'n':"); c=getchar();getchar(); } sort(n); allgerenxinxi(n); return(n); } //====================================================== voidgetonegerenxinxi(inti)//输ru一个职工的个人信息 { printf("职工编号:"); gets(gerenxinxi[i].num); printf("姓名:"); gets(gerenxinxi[i].name); printf("性别:"); gets(gerenxinxi[i].sex); printf("出生日期:"); scanf("%d.%d.%d",&gerenxinxi[i].chushengriqi.year,&gerenxinxi[i].chushengriqi.month,&gerenxinxi[i].chushengriqi.day); getchar(); printf("职称(助工,工程师,高级工程师):"); gets(gerenxinxi[i].zhicheng); printf("任职年限:"); scanf("%d",&gerenxinxi[i].nianxian); getchar(); } //====================================================== voidallgerenxinxi(intbn)//保存所有信息 {FILE*fb; if((fb=fopen("gerenxinxi.txt","w"))==NULL) {printf("不能打开\n"); exit(1); } fwrite(gerenxinxi,st_len,bn,fb); fclose(fb); } //======================================================= voidxggerenxinxi(intbn)//修改个人信息 { intselect,k=-1; charnumber[20],c1='y',c2; if(bn==0) {printf("\n职工信息为空\n:"); return; } while(c1=='y') {c2='y'; printf("\n请输入要修改的职工编号\n"); gets(number); for(inti=0;i gerenxinxi[i+1].num) {temp=gerenxinxi[i]; gerenxinxi[i]=gerenxinxi[i+1]; gerenxinxi[i+1]=temp; } } } //================================================= voidshengchenggongzi(intbn)//生成工资 { FILE*fp,*fp2; inti,j; if((fp=fopen("gerenxinxi.txt","r"))==NULL) { printf("不能打开\n"); exit(0); } fread(gerenxinxi,st_len,bn,fp); if((fp2=fopen("gerengongzi.txt","w"))==NULL) { printf("不能打开\n"); exit(0); } for(i=0;i 3000) gerengongzi[i].gerensuodeshui=(gerengongzi[i].yingfagongzi-3000)*0.05; else gerengongzi[i].gerensuodeshui=0; gerengongzi[i].yanglaobaoxian=(gerengongzi[i].zhiwubutie+gerengongzi[i].zhiwugongzi)*0.1; gerengongzi[i].zhufanggongjijin=gerengongzi[i].yingfagongzi*0.05; gerengongzi[i].shifagongzi=gerengongzi[i].yingfagongzi-gerengongzi[i].gerensuodeshui-gerengongzi[i].yanglaobaoxian-gerengongzi[i].zhufanggongjijin; } printf("\n"); fwrite(gerengongzi,st1_len,bn,fp2); fclose(fp); fclose(fp2); if((fp=fopen("gerengongzi.txt","r+"))==NULL) { printf("不能打开\n"); exit(1); } fread(gerengongzi,st1_len,bn,fp2); for(j=0;j
努力了一个多星期,自己头一次做这么大的程序,鼓励一下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。