C++实现企业职工工资管理系统

 更新时间:2022年03月17日 13:43:05   作者:Mr-Lou  
这篇文章主要为大家详细介绍了C++实现企业职工工资管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

本文实例为大家分享了C++实现企业职工工资管理系统的具体代码,供大家参考,具体内容如下

课程设计目的和要求

工资管理要和人事管理相联系,生成企业每个职工的实际发放工资。

企业职工人事基本信息包括:职工编号、姓名、性别、出生日期、职称(助工、工程师、高级工程师)和任职年限。

企业职工工资信息包括:职工编号、姓名、职务工资、职务补贴、住房补贴、应发工资、个人所得税、养老保险、住房公积金和实发工资。

系统主要功能包括:

(1)创建职工人事基本信息文件,根据提示输入职工的各项信息,按职工编号对职工信息进行排序,并将排序后的职工信息存储到一个文件中。

(2)创建职工的工资信息文件(每个月创建一个文件),其中职工编号和姓名从人事信息文件中复制,其他工资组成项目按下面方法计算。

职务工资:助工=1270*(1+任职年限*2%)

工程师=2360*(1+任职年限*3%)

高级工程师=3450*(1+任职年限*5%)

职务补贴:=职务工资*25%

住房补贴=(职务工资+职务补贴)*15%

应发工资=职务工资+职务补贴+住房补贴

个人所得税=(应发工资-3000)*5%

养老保险=(职务工资+职务补贴)*10%

住房公积金=应发工资*5%

实发工资=应发工资-个人所得税-养老保险-住房公积金

(3)增加职工人事基本信息,在原有职工人事基本信息文件的基础上增加新有的职工信息。

(4)删除职工人事基本信息,提示用户输入要删除的职工编号,如果在文件有该信息存在,则将其信息输出到屏幕上,用户确认后将该信息删除,并将删除后的结果保存至原文件。最后提示用户是否继续进行删除操作。

(5)修改职工人事基本信息,提示用户输入要删除的职工编号,如果在文件有该信息存在,则将其信息输出到屏幕上,然后提示用户要修改的选项(职称、任职年限),并将修改后的结果保存至原文件。最后提示用户是否继续进行修改操作。

(6)按不同条件进行查询操作,输出满足条件的职工工资信息。

①.按职工编号查询,输入一个编号,输出对应职工工资信息。

②.按姓名查询,包括精确查询,模糊查询。

③.按职称查询,输入职称名称,输出相应职称工资信息。

(7)按不同条件对职工工资信息进行统计工作。

①.统计个职称岗位的职工人数是多少,计算高级工程师比例。

②.计算企业职工的平均实发工资,并输出。

③.统计职工工资低于平均工资人数,并输出他们的姓名和实发工资。

代码:

#include<stdafx.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<time.h>
?
typedef struct date
{
?? ?short year;
? ? short month;
?? ?short day;
}st3;
typedef struct gerenxinxi
{
?? ?char num[30];
?char name[30];
?char sex[30];
?st3 chushengriqi;
?char zhicheng[20];
?int nianxian;
}st;
typedef struct gerengongzi
{
? ? ?char num[20];
? ? ?char name[12];
? ? ?double zhiwugongzi;
? ? ?double zhiwubutie;
? ? ?double zhufangbutie;
? ? ?double yingfagongzi;
? ? ?double gerensuodeshui;
? ? ?double yanglaobaoxian;
? ? ?double zhufanggongjijin;
? ? ?double shifagongzi;
}st1;
#define st3_len sizeof(st3)
#define st_len sizeof(st)
#define st1_len sizeof(st1)
#define gerenxinxinum 1000
#define gerengongzinum 1000
st gerenxinxi[gerenxinxinum]={0};
st1 gerengongzi[gerengongzinum]={0};
?
int loadgerenxinxi(void);//将文件中的信息读取
int originalgerenxinxi(void);//个人信息初始化
void getonegerenxinxi(int i);//输ru一个职工的个人信息
void allgerenxinxi(int bn);//保存所有信息
void xggerenxinxi(int bn);//修改个人信息
void saveonegerenxinxi(int i);//保存个人信息
int addgerenxinxi(int bn);//增加个人信息
int delgerenxinxi(int bn); ?//删除个人信息
void putonegerenxinxi(int i);//输出一个个人信息
void sort(int bn);//排序
void shengchenggongzi(int bn);//生成工资
void putonegerengongzi(int i);//输出一个人的工资信息
void cxgerenxinxi(int bn);//查询
void cxzhicheng(int bn);//职称查询
void cxname(int bn);//姓名查询
void cxnum(int bn);//编号查询
void tongjigongzixinxi(int bn);//统计工资信息
float avegongzi(int bn);//平均工资
void lowgongzi(int bn);//低于平均工资
void ?gangweirenshu(int bn);//职工人数
?
?
void main()
{ ? ?int select,bn;
? ? ?bn=loadgerenxinxi();
?? ? if(bn==0)
? ? ? printf("职工信息为零:");
?
?? ? ? while(1)
? ? ? ?{
?? ? ? ? ? ?printf("\n ? ?企业职工工资管理系统 ? ? \n");
? ? ? ? ? ? printf("\n-----------------------------\n");
?? ??? ??? ?printf("\n ? 请输入要进行操作前的序号 ?\n");
?? ? ? ? ? ?printf("\n ? ? ?1.输入职工信息 ? ? ? ? \n");
?? ? ? ? ? ?printf("\n ? ? ?2.修改职工信息 ? ? ? ? \n");
?? ? ? ? ? ?printf("\n ? ? ?3.增加职工信息 ? ? ? ? \n");
?? ? ? ? ? ?printf("\n ? ? ?4.删除职工信息 ? ? ? ? \n");
? ? ? ? ? ? printf("\n ? ? ?5.职工工资 ? ? ? ? ? ? \n");
?? ? ? ? ? ?printf("\n ? ? ?6.统计工资信息 ? ? ? ? \n");
? ? ? ? ? ? printf("\n ? ? ?7.查询工资信息 ? ? ? ? \n");?
?? ? ? ? ? ?printf("\n ? ? ?0.退出 ? ? ? ? ? ? ? ? \n");
? ? ? ? ? ? printf("\n----------------------------\n");
? ? ? ? ? ?
? ? ? ? ? ? scanf("%d",&select);
? ? ? ? ? ? getchar();
? ? ? ? ? ? switch(select)
?? ??? ??? ?{ case 1: originalgerenxinxi(); break;
?? ? ? ? ? ? ?case 2: xggerenxinxi(bn); break;
?? ? ? ? ? ? ?case 3: addgerenxinxi(bn); break;
?? ? ? ? ? ? ?case 4: delgerenxinxi(bn); break;
?? ? ? ? ? ? ?case 5: shengchenggongzi(bn); break;
?? ? ? ? ? ? ?case 6: tongjigongzixinxi(bn); break;
? ? ? ? ? ? ? case 7: cxgerenxinxi(bn); break;
? ? ? ? ? ? ? case 0: return;
?? ??? ? ? ? ?default:printf("\n按键错误,请重新选择\n");
?? ??? ??? ?}
?? ? ? }
?? ?
}
//===============================================================================
?
int loadgerenxinxi(void)//将文件中的信息读取
{
?? ?FILE *fb;
?? ?int bn=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);
}
//==============================================================================
?
?
int originalgerenxinxi(void)//个人信息初始化
{
? ? ?int n;
?? ? char c='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);
}
//============================================================================================
void getonegerenxinxi(int i)//输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();
}
//============================================================================================================================
?
void allgerenxinxi(int bn)//保存所有信息
{ ? ?FILE *fb;
? ? ?if((fb=fopen("gerenxinxi.txt","w"))==NULL)
? ? ?{ ?printf("不能打开\n");
? ? ? ? exit(1);
? ? ?}
?? ? ? fwrite(gerenxinxi,st_len,bn,fb);
? ? ? fclose(fb);
}
//=============================================================================================================================
?
void xggerenxinxi(int bn)//修改个人信息
{
?? ?int select,k=-1;
?? ?char number[20],c1='y',c2;
?? ?if(bn==0)
?? ?{ printf("\n职工信息为空\n:");
?? ?return;
?? ?}
?? ?while(c1=='y')
?? ?{c2='y';
?? ?printf("\n请输入要修改的职工编号\n");
?? ?gets(number);
?? ?for(int i=0;i<bn;i++)
? ? ? ? if(strcmp(gerenxinxi[i].num,number)==0)
?? ?{ k=i;
?? ?break;}
?? ?if(k<0)
?? ??? ?printf("\n编号有误,请重新输入\n");
?? ?else
?? ?{ ? printf("\n职工信息:\n");
?? ? ? ?putonegerenxinxi(k);
?? ? ? ?while(c2=='y')
? ? ? ? ? ? {?
? ? ? ? ? ? ? printf("\n请输入要修改项前的序号:\n");
? ? ? ? ? ? ? ?printf("1.职称\n");
? ? ? ? ? ? ? ?printf("2.任职年限\n");
? ? ? ? ? ? ? ?printf("0.退出程序\n");
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?scanf("%d",&select);
? ? ? ? ? ? ? ?getchar();
? ? ? ? ? ? ? ?switch(select)
? ? ? ? ? ? ? ?{?
? ? ? ? ? ? ? ? ?case 1:printf("职称:");
? ? ? ? ? ? ? ? ? ? ? ?gets(gerenxinxi[k].zhicheng);
? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ?case 2:printf("入职年限:");
? ? ? ? ? ? ? ? ? ? ? ?scanf("%d",&gerenxinxi[k].nianxian);
? ? ? ? ? ? ? ? ? ? ? ?getchar();
? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ?case 0:
?? ??? ??? ??? ??? ? exit(1);
?? ??? ??? ??? ? default:
?? ??? ??? ??? ??? ? printf("\n按键错误,请重新输入\n");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ?printf("\n还要修改该职工其它信息吗(y/n)?\n");
? ? ? ? ? ? ?c2=getchar();
? ? ? ? ? ? ?getchar();
? ? ? ? ? ? ?}
? ? ? ? }
? ? ? ? ?saveonegerenxinxi(k);
? ? ? ? ?printf("\n还要修改其他职工信息吗?(y/n)\n");
? ? ? ? ?c1=getchar();
? ? ? ? ?getchar();
? ? ?}
? ?printf("\n按任意键继续\n");
? ?getchar();
}
//=======================================================================================================
?
void saveonegerenxinxi(int i)//保存个人信息
{
?? ?FILE *fb;
?? ?if((fb=fopen("gerenxinxi.txt","r+"))==NULL)
?? ?{printf("不能打开 \n");
?? ?exit(1);
?? ?}
?? ?fseek(fb,st_len*i,0);
? ? ?fwrite(&gerenxinxi[i],st_len,1,fb);
?? ?fclose(fb);
}
?
//================================================================================================
int addgerenxinxi(int bn)//增加个人信息
{ ??? ?char c='y';
?? ?FILE *fb;
?? ?if((fb=fopen("gerenxinxi.txt","a"))==NULL)
?? ?{printf("不能打开\n");
?? ?exit(1);
?? ?}
?? ?while(c=='y')
?? ?{printf("\n请输入新增职工信息:\n");
?? ? ? ?getonegerenxinxi(bn);
?? ??? ?fwrite(&gerenxinxi[bn],st_len,1,fb);
?? ??? ?bn++;
?? ??? ?printf("\n继续输入其他职工信息吗?(y/n):");
?? ??? ?c=getchar();
?? ??? ?getchar();
?? ?}
?
?? ?printf("\n按任意键继续\n:");
?? ?getch();
?? ?fclose(fb);
?? ?return(bn);
}
//==========================================================================================
?
int delgerenxinxi(int bn) ?//删除个人信息
{
? ? ?int k=-1;
?? ? char number[20],c1='y',c2;
?? ? if(bn==0)
?? ? { ?printf("\n信息为空\n");
?? ? ? ?return(bn);
?? ? }
?? ? while(c1=='y')
?? ? { ? ?c2='y';
?? ? ? ? ?printf("\n输入要删除的职工编号\n");
?? ? ? ? ?gets(number);
?? ? ? ? ?for(int i=0;i<bn;i++)
?? ??? ? ? ? ?if(strcmp(gerenxinxi[i].num,number)==0)
?? ??? ??? ??? ?{ k=i;
?? ? ? ? ? ? ? ? ?break;}
?? ??? ? ?if(k<0)
?? ??? ? ? ? printf("\n编号有误,重新输入\n");
?? ??? ?else
?? ??? ?{ ?
?? ??? ??? ?printf("\n职工信息:\n");
?? ??? ? ? putonegerenxinxi(k);
?? ??? ? ? printf("\n确定要删除该职工的全部信息吗?(y/n):");
?? ??? ? ? c2=getchar();
? ? ? ? ? ?getchar();
?? ??? ? ? if(c2=='y')
?? ??? ? ? { ?for(i=k;i<bn;i++)
?? ??? ? ? ? ? ? ?gerenxinxi[i]=gerenxinxi[i+1];
?? ??? ??? ? ?bn--;
?? ??? ??? ? ?printf("\n成功删除!\n");
?? ??? ? ? }
?? ??? ? ? else
?? ??? ? ? ? ? printf("\n取消删除!\n");
?? ??? ? ? printf("\n继续删除其它职工信息吗?(y/n):");
?? ??? ? ? c1=getchar(); getchar();
?? ??? ?}?? ? ? ? ?
?? ? }
? ? ?allgerenxinxi(bn);
? ? ?printf("\n按任意键继续!\n");
? ? ?getch();
? ? ?return(bn);
}
//===========================================================================================
void putonegerenxinxi(int i)//输出一个个人信息
{
?? ?printf("\n");
? ? printf("职工编号:");
?? ?puts(gerenxinxi[i].num);
?? ?printf("姓名:");
? ? puts(gerenxinxi[i].name);
?? ?printf("性别:");
? ? puts(gerenxinxi[i].sex);
?? ?printf("出生日期:");
? ? printf("%d.%d.%d\n",gerenxinxi[i].chushengriqi.year,gerenxinxi[i].chushengriqi.month,gerenxinxi[i].chushengriqi.day);
?? ?printf("职称:");
? ? puts(gerenxinxi[i].zhicheng);
?? ?printf("任职年限:");
? ? printf("%d",gerenxinxi[i].nianxian);?? ??? ?
}
?
//======================================================================================
void sort(int bn)//排序
{
? ? st temp;
?? ?int i,j;
?? ?for(i=0;i<bn-1;i++);
?? ?{
?? ? ? ? for(j=i+1;j<bn;j++)
?? ? ? ? if(gerenxinxi[i].num >gerenxinxi[i+1].num )
?? ??? ? { ? ?temp=gerenxinxi[i];
?? ??? ? ? ? ?gerenxinxi[i]=gerenxinxi[i+1];
?? ??? ??? ? ?gerenxinxi[i+1]=temp;
?? ??? ? }
?
?? ?}
}
//==========================================================================================
void shengchenggongzi(int bn)//生成工资
{ ??
? ? ?FILE ?*fp,*fp2;
? ? ?int ?i,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<bn;i++)
?? ? { ? strcpy(gerengongzi[i].name, gerenxinxi[i].name);
? ? ? ? ?strcpy(gerengongzi[i].num, gerenxinxi[i].num);
? ? ? ? ?if (strcmp(gerenxinxi[i].zhicheng,"助工") == 0)
?? ??? ? {gerengongzi[i].zhiwugongzi=1270*(1+gerenxinxi[i].nianxian*0.02);}
? ? ? ? ?if (strcmp(gerenxinxi[i].zhicheng,"工程师") == 0)
?? ??? ? {gerengongzi[i].zhiwugongzi=2360*(1+gerenxinxi[i].nianxian*0.03);}
? ? ? ? ?if (strcmp(gerenxinxi[i].zhicheng,"高级工程师") == 0)
?? ??? ? {gerengongzi[i].zhiwugongzi=3450*(1+gerenxinxi[i].nianxian*0.05);}
?
? ? ? ? ?gerengongzi[i].zhiwubutie=gerengongzi[i].zhiwugongzi*0.25;
?
? ? ? ? ?gerengongzi[i].zhufangbutie=(gerengongzi[i].zhiwubutie+gerengongzi[i].zhiwugongzi)*0.15;
?
? ? ? ? ?gerengongzi[i].yingfagongzi=gerengongzi[i].zhiwugongzi+gerengongzi[i].zhiwubutie+gerengongzi[i].zhufangbutie;
?? ??? ??
?? ??? ? if(gerengongzi[i].yingfagongzi>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<bn;j++)
?? ??? ?putonegerengongzi(j);
? ? ? ? ? ? fclose(fp);
}
//===============================================================================================
?
void putonegerengongzi(int ?i)//输出一个人的工资信息
{ ?
? ? ? printf("\n");
? ? ? printf("职工编号:");
? ? ? puts(gerengongzi[i].num);
? ? ? printf("职工姓名:");
? ? ? puts(gerengongzi[i].name);
? ? ? printf("劳务工资:");
? ? ? printf("%f\n",gerengongzi[i].zhiwugongzi);
? ? ? printf("劳务补助:");
? ? ? printf("%f\n",gerengongzi[i].zhiwubutie);
? ? ? printf("住房补贴:");
? ? ? printf("%f\n",gerengongzi[i].zhufangbutie);
? ? ? printf("应发工资:");
? ? ? printf("%f\n",gerengongzi[i].yingfagongzi);
? ? ? printf("个人所得税:");
? ? ? printf("%f\n",gerengongzi[i].gerensuodeshui);
? ? ? printf("养老保险:");
? ? ? printf("%f\n",gerengongzi[i].yanglaobaoxian);
? ? ? printf("住房公积金:");
? ? ? printf("%f\n",gerengongzi[i].zhufanggongjijin);
? ? ? printf("实发工资:");
? ? ? printf("%f\n",gerengongzi[i].shifagongzi);
}
//======================================================================
void cxgerenxinxi(int bn)//查询
{
? ? ?int select;
? ? ?while(1)?
? ? ?{ ?printf("\n请输入要进行操作前的编号\n");
? ? ? ? printf("1.编号查询\n");
? ? ? ? printf("2.按姓名查询\n");
? ? ? ? printf("3.按职称查询\n");
? ? ? ? printf("0.退出查询\n");
? ? ? ? scanf("%d",&select);
? ? ? ? getchar();
? ? ? ? switch(select)
? ? ? ? {?
?? ??? ? ?case 1:
?? ??? ??? ? ?cxnum(bn);
?? ??? ??? ? ?break;
? ? ? ? ? case 2:
?? ??? ??? ? ?cxname(bn);
?? ??? ??? ? ?break;
? ? ? ? ? case 3:
?? ??? ??? ? ?cxzhicheng(bn);
?? ??? ??? ? ?break;
? ? ? ? ? case 0:
?? ??? ? ?return;
? ? ? ? ? default:printf("\n按键错误,请重新选择\n");
? ? ? ? ?}
? ? ? }
}
?
?
//=============================================================================================
void cxnum(int bn)
{
? ? ?int i;
? ? ?char number[20],c='y';
? ? ?while(c=='y')
? ? ?{ ?
? ? ? ? printf("\n请输入职工编号:");
? ? ? ? gets(number);
? ? ? ? for(i=0;i<bn;i++)
? ? ? ? ? if(strcmp(gerenxinxi[i].num,number)==0)
? ? ? ? ? {?
? ? ? ? ? ? ?printf("\n职工%d的信息:\n");
? ? ? ? ? ? ?putonegerenxinxi(i);
? ? ? ? ? ? ?printf("\n按任意键继续!\n");?
?? ??? ??? ? getch();
?? ??? ? ?}
? ? ? ? ? if(i==bn)
?? ??? ? ?printf("\n没有找到职工信息\n");
?? ??? ? ? return;
?? ??? ? ?
? ? ?}
? ?
? ? ?printf("\n按任意键继续查询!\n");
? ? ?getchar();
}
//==============================================================================
void cxzhicheng(int bn)
{
? ? ?int i;
? ? ?char zhicheng[20],c='y';
? ? ?while(c=='y')
? ? ?{ ?
? ? ? ? printf("\n请输入职工职称:");
? ? ? ? gets(zhicheng);
? ? ? ? for(i=0;i<bn;i++)
? ? ? ? ? if(strcmp(gerenxinxi[i].zhicheng,zhicheng)==0)
? ? ? ? ? {?
? ? ? ? ? ? ?printf("\n职工的信息:\n");
? ? ? ? ? ? ?putonegerenxinxi(i);
? ? ? ? ? ? ?printf("\n按任意键继续!\n");?
?? ??? ??? ? getch();
?? ??? ? ?}
? ? ? ? ? if(i==bn)
?? ??? ? ?{ printf("\n没有找到职工信息\n");
?? ??? ? ? ? return ;
?? ??? ? ?}
? ? ?}
? ??
? ? ?printf("\n按任意键继续查询!\n");
? ? ?getchar();
?
}
//===================================================================================
?
void cxname(int bn)//姓名查询
{
? ? ?int i,j,k;
? ? ?char name[12],c='y';
? ? ?while(c=='y')
? ? ?{?
?? ??? ? k=-1;
? ? ? ? printf("\n请输入职工姓名:");
? ? ? ? gets(name);
? ? ? ? for(i=0,j=1;i<bn;i++)
? ? ? ? ? if(strcmp(gerenxinxi[i].name,name)==0)
? ? ? ? ? { printf("\n当前为准确查询\n");
?? ??? ??? ? ?k=i;
? ? ? ? ? ? ?printf("\n职工%d的信息:\n",j++);
? ? ? ? ? ? ?putonegerenxinxi(k);
? ? ? ? ? ? ?printf("\n按任意键继续!\n");?
?? ??? ??? ? getch();
? ? ? ? ? }
? ? ? ? if(k==-1)
? ? ? ? { ?
?? ??? ??? ?printf("\n当前为模糊查询\n");
? ? ? ? ? ?for(i=0,j=1;i<bn;i++)
? ? ? ? ? ? ? ?if(strstr(gerenxinxi[i].name,name)!=NULL)
? ? ? ? ? ? ? ?{ ?
?? ??? ??? ??? ? ? k=i;
? ? ? ? ? ? ? ? ? printf("\n职工%d的信息:\n",j++);
? ? ? ? ? ? ? ? ? putonegerenxinxi(k);
? ? ? ? ? ? ? ? ? printf("\n按任意键继续!\n");
? ? ? ? ? ? ? ? ? getch();
? ? ? ? ? ? ? ?}
? ? ? ? ? ? if(j==1)?
?? ??? ??? ??? ?printf("\n没有找到职工信息!\n");
?? ??? ??? ?return;
? ? ? ? }
? ? ? ?
? ? ?}?
? ? ?printf("\n按任意键继续!\n");
? ? ?getchar();
}
?
//=================================================================================
void tongjigongzixinxi(int bn)//统计工资信息
{
?? ?int select;
?? ?while(1)
?? ?{ ?
?? ? ? ?printf("请输入要进行操作前的编号\n");
?? ? ? printf(" 1.各职称岗位的职工人数\n");
?? ? ? printf(" 2.职工的平均实发工资\n");
?? ? ? printf(" 3.低于平均工资的人数\n");
?? ? ? printf(" 0.退出统计功能\n");
?? ? ?
?? ? ? scanf("%d",&select); getchar();
?? ? ? switch(select)
?? ? ? { ?case 1:gangweirenshu(bn); break;
?? ? ? ? ?case 2:avegongzi(bn); break;
?? ??? ? ?case 3:lowgongzi(bn); break;
?? ??? ? ?case 0:return;
?? ? ? ? ?default: printf("\n按键错误,请重新选择!\n");
?? ? ? }
?? ? ? return;
?
?
?? ?}
}
?
?
?
//====================================================================
void ?gangweirenshu(int ?bn)//职工人数
{ ?int i,j=0, k=0, m=0;
? ?float ave;
? ?for(i=0;i<bn;i++)
? ?{ ?if(strcmp(gerenxinxi[i].zhicheng ,"助工")==0)
? ? ? ? j++;?
? ? ? if(strcmp(gerenxinxi[i].zhicheng ,"工程师")==0)
? ? ? ? k++;?
? ? ? if(strcmp(gerenxinxi[i].zhicheng ,"高级工程师")==0)
? ? ? ?m++;?
? ? }
? ? ? ave=(m*1.0/bn);
? ? ? printf("助工人数为%d人\n",j);
? ? ? printf("工程师人数为%d人\n",k);
? ? ? printf("高级工程师人数为%d人\n",m);
? ? ? printf("高级工程师比例为%f\n",ave);
}
//==============================================================================
?
float avegongzi(int bn)//平均工资
{
? ?int i;
? ?float sum=0;
? ?float ave;
? ?for(i=0;i<bn;i++)
? ?sum=sum+gerengongzi[i].shifagongzi;
? ?ave=(sum/bn);
? ?printf("职工的平均实发工资为:%f\n",ave);
? ?return(ave);
? ?return(0);
}
//================================
void lowgongzi(int bn)//低于平均工资
{ ?int i,k=0;
? ?float b;
? ?b=avegongzi(bn);
? ?for(i=0;i<bn;i++)
? ?{ ?
?? ? ? if(gerengongzi[i].shifagongzi<b)
?? ? ? {
?? ??? ? ? k++;
? ? ? ? ? ?printf("姓名:%s\n",gerengongzi[i].name);
?? ??? ? ? printf("工资:%f\n",gerengongzi[i].shifagongzi);
?? ? ? }
? ?
? ?}
? ?printf("低于平均工资的人数为:%d\n",k);
}

努力了一个多星期,自己头一次做这么大的程序,鼓励一下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。

相关文章

  • C++实现简易通讯录

    C++实现简易通讯录

    这篇文章主要为大家详细介绍了C++实现简易通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Qt增加版本公司等信息两种方式

    Qt增加版本公司等信息两种方式

    在项目中生成exe或者动态库过程中可能需要加入公司信息、版本号、说明等等,下面这篇文章主要给大家介绍了关于Qt增加版本公司等信息的两种方式,需要的朋友可以参考下
    2024-01-01
  • C++继承的定义与注意事项

    C++继承的定义与注意事项

    这篇文章主要给大家介绍了关于C++继承的定义与注意事项的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Linux下C语言修改进程名称的方法

    Linux下C语言修改进程名称的方法

    这篇文章主要介绍了Linux下C语言修改进程名称的方法,涉及Linux下使用C语言操作进程的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 带你用C语言实现strtok和字符串分割函数

    带你用C语言实现strtok和字符串分割函数

    下面小编就为大家带来一篇c语言中字符串分割函数及实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-09-09
  • C++20中的结构化绑定类型示例详解

    C++20中的结构化绑定类型示例详解

    这篇文章主要为大家介绍了C++20中的结构化绑定类型示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • C语言实现数字连连看

    C语言实现数字连连看

    这篇文章主要为大家详细介绍了C语言实现数字连连看游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C++实现Date类各种运算符重载的示例代码

    C++实现Date类各种运算符重载的示例代码

    这篇文章主要为大家详细介绍了C++实现Date类各种运算符重载的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • C++实现图书管理系统最新版

    C++实现图书管理系统最新版

    这篇文章主要为大家详细介绍了C++实现图书管理系统最新版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C语言中数组排序浅析

    C语言中数组排序浅析

    这篇文章主要为大家介绍了C语言算法练习中数组元素排序的四种类型,文中的示例代码讲解详细,对我们学习C语言有一定帮助,需要的可以参考一下
    2022-12-12

最新评论

?


http://www.vxiaotou.com