信息管理系统

员工信息管理系统

要求:

输入5个员工的信息(输入),每个员工含有成员名为“工号、姓名、基本工资、补贴、奖金、水电费、房租、实发工资、工资排名”,编写函数完成下列要求:
(1)输入一个员工的工号,查询该员工的信息并输出,若不存在显示没找到;(查询) 
(2)输入一个新员工的信息,按工号顺序将该员工的信息插入后输出;(显示)
(3)输入一个已存在员工的姓名信息,删除该员工的信息后输出;(删除)
(4)修改某员工的信息;(修改)
(5)求每个员工的实发工资(实发工资=基本工资+补贴+奖金-水电费-房租); 
(6)求所有员工的基本工资、补贴、奖金、水电费、房租和实发工资的总和并输出; 
(7)对所有员工的信息按实发工资升序排序,并填写工资排名后输出。
(由四个人分别完成各种函数,然后进行函数的调用,汇总,完成主程序。)

主页面:

在这里插入图片描述

代码


    char name[20];  //姓名 
	int basePay;    //基本工资 
	int allowance;  //补贴 
	int bonus;      //奖金 
	int wePay;      //水电费 
	int houseRent;  //房租 
	int netPayRoll; //实际工资 
};
staff a[100];



void refer()       //查询员工信息 
{   int x,t;int c=0;
    if(a[0].basePay==0){    //基本工资进行判断是否有数据 
    printf("无数据\n");
    return;
    }else{ 
        void netPayRoll();
        netPayRoll(); 
        printf("输入要查询员工的工号:");
        scanf("%d",&x);
        for(int i=0;i<M;i++)
        {   if(x==a[i].number){    //按照员工序号进行查找 
            printf("工号\t姓名\t基本工资\t补贴\t奖金\t水电费\t房租\t实发工资\t工资排名\n");
	     	printf("%d\t%s\t%d\t\t%d\t%d\t%d\t%d\t%d\t\t%d\n",a[i].number,a[i].name,a[i].basePay,
	    	a[i].allowance,a[i].bonus,a[i].wePay,a[i].houseRent,a[i].netPayRoll,
	          i+1);
	        c=1; 
	        }
        }
    if(c==0) {
        printf("\n继续查询请按1,返回主菜单请按0: "); 
        scanf("%d",&t); 
        switch(t) {
		    case 1:  refer(); 
			    break;     
	     	case 0:  system("cls");     //清空显示屏 
	 			break; 
	    	default: break;
        } 
     }
   } 
 } 
 
 void add()   //添加员工信息 
 { 
    int b=1,i;
	int c=0; 
	printf("现在添加信息。\n");
	while(b)
	{
	    for(i=M;;i++)
	    {
	    	printf("工号   姓名   基本工资   补贴   奖金   水电费   房租 \n ");
	    	scanf("%d %s %d %d %d %d %d",&a[i].number,a[i].name,&a[i].basePay,&a[i].allowance,
			&a[i].bonus,&a[i].wePay,&a[i].houseRent);
		    M++;
			printf("是否继录入? 请输入1(继续输入) OR 0(结束输入)\n");
			scanf("%d",&c);
			if(c==1)         //判断之后是否继续添加员工信息 
			{					
				b=1;
				break;
			}else if(c==0)
			{
			 	b=0;
			 	printf("输入完成");
			 	break;
			}
		}
	}
}
 
 void input()    //输入员工信息 
 {
 	int i;
 	printf("请输入员工数据:\n");
 	printf("工号\t姓名\t基本工资\t 补贴\t  奖金\t  水电费\t  房租 \n ");
 	for(i=0;i<M;i++)
 	{
 		scanf("%d %s %d %d %d %d %d",&a[i].number,a[i].name,&a[i].basePay,
		& a[i].allowance,&a[i].bonus,&a[i].wePay,&a[i].houseRent);
	 }
 }
void change()   //修改 
{
	void display();
	int i,z,k=0;
	char x[5];
	if(a[0].basePay==0){    //基本工资进行判断是否有数据 
	printf("无数据\n");
	return;}
	else{
	printf("请输入要修改的员工号:");
	scanf("%d",&z);
	for(i=0;i<M;i++)
	{
		if(z==a[i].number)
		{
			printf("请输入新的工号:");
			scanf("%d",&a[i].number);
			printf("请输入新的姓名:");
			scanf("%s",x);
			strcpy(a[i].name,x);
			printf("请输入新的基本工资:");
			scanf("%d",&a[i].basePay);
			printf("请输入新的补贴:");
			scanf("%d",&a[i].allowance);
			printf("请输入新的奖金:");
			scanf("%d",&a[i].bonus);
			printf("请输入新的水电费:");
			scanf("%d",&a[i].wePay);
			printf("请输入新的房租:");
			scanf("%d",&a[i].houseRent);
			k=1;
		}
	}}
	if(k==0)
	printf("没有找到你要修改的信息。\n");
	printf("\n");
	display();
}



void Delete()   /*删除函数*/
{	 
	int i,j,t,n,f;
	char Name[20];
	if(a[0].basePay==0)
	{ 
	printf("无数据");
	return;
	}
	else{
	printf("请输入要删除的职工的姓名:  "); 
	scanf("%s",Name);  
	for(f=1,i=0;f&&i<M;i++) 
	{    if(strcmp(a[i].name,Name)==0)
		{    
			printf("\n已找到此人\n"); 			
			printf("\n确认删除请按 1,取消删除请按 0: ");    
			scanf("%d",&n);              
			if(n==1)                     /*如果删除,则其他的信息都向前移一行*/   
			{ 	for(j=i;j<M-1;j++)
					 a[j]=a[j+1];      /*当找到第j个职工时,for语句后j自加了1,所以下面的应该把改后的信息赋值给第j-1个人*/      
				f=0; 
			    M--;
			}
			else f=2;
		}
	}
}
   switch(f){
		case 0: printf("\n删除成功!\n");   
				break;
		case 1: printf("\n对不起,贵公司没有该员工!\n");    
				break;
		case 2: printf("\n取消删除!\n");
				break;
	}   
      
   printf("\n继续删除请按1,返回主菜单请按0: "); 
   scanf("%d",&t); 
   switch(t) 
   {    case 1:  Delete(); 
			     break;     
		case 0:  system("cls");     //清空显示屏 
				 break; 
		default: break;
   } 
} 
 
void netPayRoll()    //求实发工资 
{
	int i,j;
	for(i=0;i<M;i++)
	{
		a[i].netPayRoll=a[i].basePay+a[i].allowance+a[i].bonus-a[i].wePay-a[i].houseRent;
	}
}
void synthesis()//各项数据之和 
{
	int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,sum6=0;
	int i;
	void netPayRoll();
	if(a[0].basePay==0){ 
	printf("无数据");
	return;}
	else { 
	for(i=0;i<M;i++)
	{
		sum1=sum1+a[i].basePay;
	}
	for(i=0;i<M;i++)
	{
		sum2=sum2+a[i].allowance;
	}
	for(i=0;i<M;i++)
	{
		sum3=sum3+a[i].bonus;
	}
	for(i=0;i<M;i++)
	{
		sum4=sum4+a[i].wePay;
	}
	for(i=0;i<M;i++)
	{
		sum5=sum5+a[i].houseRent;
	}
	netPayRoll();
	for(i=0;i<M;i++)
	{
		sum6=sum6+a[i].netPayRoll;
	}
	printf("员工基本工资的总和为:%d\n",sum1);
	printf("员工的补贴总和为:%d\n",sum2);
	printf("员工的奖金综合为:%d\n",sum3);
	printf("员工的水电费总和为:%d\n",sum4);
	printf("员工的房租总和为:%d\n",sum5);
	printf("员工的实发工资总和为:%d\n",sum6);
}} 

void rank()     //按实发工资排序 
{
	
	int i,j;
	staff t;
	for(j=0;j<M-1;j++){   //冒泡法排序 
		for(i=0;i<M-1-j;i++){
			if(a[i].netPayRoll<a[i+1].netPayRoll){
				t=a[i];
				a[i]=a[i+1];
				a[i+1]=t;
			}			
		}
	}
	
} 

void display()    //显示 
{
	void netPayRoll();
	void rank();
	int i;
	if(a[0].basePay==0){
	printf("数据空");
	return;}
	else{
	netPayRoll();
	rank();
	printf("工号\t姓名\t基本工资\t补贴\t奖金\t水电费\t房租\t实发工资\t工资排名\n");
	for(i=0;i<M;i++){
		printf("%d\t%s\t%d\t\t%d\t%d\t%d\t%d\t%d\t\t%d\n",a[i].number,a[i].name,a[i].basePay,
		a[i].allowance,a[i].bonus,a[i].wePay,a[i].houseRent,a[i].netPayRoll,
	  i+1);
	}
 
}
}
int main()
{
	//声明函数 
    void input();
    void display();
	void change();
    void synthesis();
    void Delete();
    void refer();
    void add();
	int  n;
	while(1)
 	{
 		    printf("\n");
 			printf("\t*****职 工 信 息 管 理 系 统*****\n");
 			printf("\t*    1. 输 入 职 工 信 息       *\n");
 			printf("\t*    2. 查 询 职 工 信 息       *\n");
			printf("\t*    3. 添 加 职 工 信 息       *\n");
			printf("\t*    4. 修 改 职 工 信 息       *\n");
			printf("\t*    5. 浏 览 职 工 信 息       *\n");
			printf("\t*    6. 删 除 职 工 信 息       *\n");
			printf("\t*    7. 职 工 信 息 总 和       *\n");
			printf("\t*    0. 退 出 系 统             *\n");
			printf("\t*********************************\n"); 
			printf("\n"); 
			printf("输入你选择的序号:");
			scanf("%d",&n);
	switch(n)
	{
		case 1:input();break;
		case 2:refer();break;
		case 3:add();break; 
		case 4:change();break;
		case 5:display();break;
		case 6:Delete();break;
		case 7:synthesis();break;
		case 0:return 0;
		default :printf("无该选项,请重新输入!\n"); break; 
	}
}
	return 0;
	
}
  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

? Adore ?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值