#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
#define maxsize 20
typedef struct
{
char number[15];//职工号//
char name[10];//姓名//
double basic;//基本工资//
double post;//职务工资//
double allow;//津贴//
double insure1;//医保//
double insure2;//养老保险//
double insure3;//失业保险//
double pub;//公积金//
double wages,shui,total;//应发工资,税,实发工资//
}list;
typedef struct
{
list stu[maxsize];//职工数//
int len;
}linklist;
//以上为定义结构体//
double f(double x)
{ double m;
if(x<=3500)
return(0);
else if(x<=5000)
{m=(x-3500)*0.03;
return(m);
}
else if(x<=8000)
{m=(x-3500)*0.03+(x-5000)*0.1;
return(m);
}
else if(x<=12500)
{m=(x-3500)*0.03+(x-5000)*0.1+(x-8000)*0.2;
return(m);
}
else if(x<=38500)
{m=(x-3500)*0.03+(x-5000)*0.1+(x-8000)*0.2+(x-12500)*0.25;
return(m);
}
else if(x<=58500)
{m=(x-3500)*0.03+(x-5000)*0.1+(x-8000)*0.2+(x-12500)*0.25+(x-38500)*0.3;
return(m);
}
else if(x<=83500)
{m=(x-3500)*0.03+(x-5000)*0.1+(x-8000)*0.2+(x-12500)*0.25+(x-38500)*0.3+(x-58500)*0.35;
return(m);
}
else if(x>83500)
{m=(x-3500)*0.03+(x-5000)*0.1+(x-8000)*0.2+(x-12500)*0.25+(x-38500)*0.3+(x-58500)*0.35+(x-83500)*0.45;
return(m);
}
}
void insert(linklist &q,int &n)//输入函数//
{
int i=0;
int j;
for(i=0;i<n;i++)
{
printf("请输入第%d个职工的数据 职工号 姓名 基本工资 职务工资 津贴 医疗保险 养老保险 失业保险 公积金 \n",i+1);
scanf("%s",&q.stu[i].number);
for(j=0;j<i;j++)
{
if(strcmp(q.stu[i].number,q.stu[j].number)==0)
{printf("该职工号已输入过,请重新输入");
scanf("%s",&q.stu[i].number);
}
}
scanf("%s",&q.stu[i].name);
scanf("%lf",&q.stu[i].basic);
scanf("%lf",&q.stu[i].post);
scanf("%lf",&q.stu[i].allow);
scanf("%lf",&q.stu[i].insure1);
scanf("%lf",&q.stu[i].insure2);
scanf("%lf",&q.stu[i].insure3);
scanf("%lf",&q.stu[i].pub);//数据输入//
q.stu[i].wages=q.stu[i].basic+q.stu[i].post+q.stu[i].allow;
q.stu[i].shui=f(q.stu[i].wages-q.stu[i].insure1-q.stu[i].insure2-q.stu[i].insure3-q.stu[i].pub);
q.stu[i].total=q.stu[i].wages-q.stu[i].insure1-q.stu[i].insure2-q.stu[i].insure3-q.stu[i].pub-q.stu[i].shui;
}
}
void shanchu(linklist &q)
{
char a[15];
list b;
int i,j,n;
again:
printf("请输入您想删除的员工职工号\n");
scanf("%s",&a);
for(j=0;j<q.len;j++)
{
if(strcmp(a,q.stu[j].number)==0)
{
printf("请确认您要删除的是否为该员工\n");
printf("职工号:%s 姓名:%s",q.stu[j].number,q.stu[j].name);
printf("若是,请输入1,将为您删除,若不是,请输入2,将重新输入职工号\n");
scanf("%d",&n);
switch(n)
{
case 1:for(;j<q.len;j++)
{
q.stu[i]=q.stu[i+1];
}break;
case 2:goto again;break;
}
}
}
}
main()
{
linklist q;
q.len=4;
int i,j;
insert(q,q.len);
shanchu(q);
q.len=q.len-1;
for(i=0;i<q.len;i++)
{
printf("%s %s %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf\n",q.stu[i].number,q.stu[i].name,q.stu[i].basic,q.stu[i].post,q.stu[i].allow,q.stu[i].insure1,q.stu[i].insure2,q.stu[i].insure3,q.stu[i].pub,q.stu[i].wages,q.stu[i].shui,q.stu[i].total);
}
}