#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 100
typedef struct employee
{ char num[10];
char name[20];
char sex[4];
int old;
char edu[50];
int wages;
}EMP;
EMP emp[N];
int n;
void inputwages(void);
void savewages(void);
void searchwages(void);
void modify(void);
void statistic(void);
void modifywages(void);
void lookwages(void);
void searchscore(void);
void add(void);
void deletewages(void);
void menu(void);
void main()
{ short int flag=0;
menu();
do
{ flag=1;
switch(getch())
{ case '1' : inputwages();break; /*输入职工信息*/
case '2' : lookwages();break; /*查看职工信息*/
case '3' : searchwages();break; /*查找职工信息*/
case '4' : statistic();break; /*职工信息统计*/
case '5' : modify();break; /*修改职工信息*/
case '6' : add();break; /*添加职工信息*/
case '7' : deletewages();break; /*删除职工信息*/
case '8' : savewages();break; /*保存职工信息*/
case '9' : exit(0); /*退出程序*/
default : printf("输入有误!\n");
}
printf("按任意键继续\n");
getch();
menu();
}while (flag==1);
}
void menu(void)
{
system("cls");
printf("\n");
printf("*********欢迎进入职工工资管理系统**************\n");
printf(" 菜单 \n");
printf("输入职工信息----------------------------------1\n");
printf("查看职工信息或排序----------------------------2\n");
printf("查询职工信息----------------------------------3\n");
printf("职工信息统计----------------------------------4\n");
printf("修改职工信息----------------------------------5\n");
printf("添加职工信息----------------------------------6\n");
printf("删除职工信息----------------------------------7\n");
printf("保存职工信息----------------------------------8\n");
printf("退出系统--------------------------------------9\n");
printf("***********************************************\n");
printf("请输入您的选择\n");
}
/***************输入各个员工的职工信息*****************************/
void inputwages(void)
{
int i;
system("cls");
printf("请输入职工总数:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入员工%d的职工号:\n",i+1);
scanf("%s",emp[i].num);
printf("请输入员工%d的姓名:\n",i+1);
scanf("%s",emp[i].name);
printf("请输入员工%d的性别:\n",i+1);
scanf("%s",emp[i].sex);
printf("请输入员工%d的年龄:\n",i+1);
scanf("%d",&emp[i].old);
printf("请输入员工%d的学历:\n",i+1);
scanf("%s",emp[i].edu);
printf("请输入员工%d的工资:\n",i+1);
scanf("%d",&emp[i].wages);
}
printf("成功输入\n");
}
/************查看职工信息或排序*****************************/
void lookwages(void)
{
int m,i,j;
EMP t;
system("cls");
printf("是否需要排序(不需要请输入1,需要请输入2)\n");
switch(getch())
{
case '1' :printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
for(m=0;m<n;m++)
{
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);
printf("\n");
}
break;
case '2' : printf("按职工号升序请输入1,降序请输入2;按工资升序请输入3,降序请输入4!\n");
switch(getch())
{
case '1' : for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(strcmp(emp[j].num,emp[j+1].num)>0)
{
t=emp[j];
emp[j]=emp[j+1];
emp[j+1]=t;
}
}
}
printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
for(m=0;m<n;m++)
{
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);
printf("\n");
}
break;
case '2' : for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(strcmp(emp[j].num,emp[j+1].num)<0)
{
t=emp[j];
emp[j]=emp[j+1];
emp[j+1]=t;
}
}
}
printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
for(m=0;m<n;m++)
{
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);
printf("\n");
}
break;
case '3' : for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(emp[j].wages>emp[j+1].wages)
{
t=emp[j];
emp[j]=emp[j+1];
emp[j+1]=t;
}
}
}
printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
for(m=0;m<n;m++)
{
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);
printf("\n");
}
break;
case '4' : for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(emp[j].wages<emp[j+1].wages)
{
t=emp[j];
emp[j]=emp[j+1];
emp[j+1]=t;
}
}
}
printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
for(m=0;m<n;m++)
{
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);
printf("\n");
}
break;
default :printf("没有这种排序!\n");
}break;
default :printf("输入有误!\n");
}
}
/*****************通过输入职工号或姓名查找***************************/
void searchwages(void)
{
char a[10];
int i;
system("cls");
printf("请输入需查询的职工编号或姓名\n");
scanf("%s",a);
for(i=0;i<n;i++)
{
if(strcmp(a,emp[i].num)==0)
{
printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d\n",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages);
break;
}
}
if(i==n)
printf("未找到该学生信息\n");
}
/***********统计职工工资在各等级的分布情况****************/
void statistic(void)
{
int i;
int c1=0,c2=0,c3=0,c4=0;
system("cls");
printf("工资小于1999为D,在2000-3999为C,在4000-6999为B,大于7000为A\n");
for(i=0;i<n;i++)
{
if(emp[i].wages<2000)
c4++;
else if(emp[i].wages<4000)
c3++;
else if(emp[i].wages<7000)
c2++;
else
c1++;
}
printf("A:%d\n",c4);
printf("B:%d\n",c2);
printf("C:%d\n",c3);
printf("D:%d\n",c4);
}
/***************修改职工信息*****************/
void modify(void)
{
char a[50];
int t,b,i,flag=0;
system("cls");
for(i=0;i<n;i++)
{
printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d\n",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages);
}
do
{
flag=1;
printf("请输入想要修改的序号,不修改请输入0\n");
scanf("%d",&t);
if(t==0) break;
if(t<=n)
{
printf("修改职工编号请输入1,修改姓名请输入2,修改性别请输入3,修改年龄请输入4,修改学历请输入5,修改工资请输入6,不修改请输入7\n");
switch(getch())
{
case '1' :
printf("请输入职工编号\n");
scanf("%s",a);
strcpy(emp[t-1].num,a);
printf("修改成功!\n");
break;
case '2' :
printf("请输入姓名\n");
scanf("%s",a);
strcpy(emp[t-1].name,a);
printf("修改成功!\n");
break;
case '3' :
printf("请输入性别\n");
scanf("%s",a);
strcpy(emp[t-1].sex,a);
printf("修改成功!\n");
break;
case '4' :
printf("请输入年龄\n");
scanf("%d",&b);
emp[t-1].old=b;
printf("修改成功!\n");
break;
case '5' :
printf("请输入学历\n");
scanf("%s",a);
strcpy(emp[t-1].edu,a);
printf("修改成功!\n");
break;
case '6' :
printf("请输入工资\n");
scanf("%d",&b);
emp[t-1].wages=b;
printf("修改成功!\n");
break;
case '7' :flag=0;break;
default :printf("输入有误!\n");
}
}
else
printf("请确认是否有这个员工!\n");
}while(flag==1);
}
/*****************添加职工信息********************/
void add(void)
{
int a,i;
system("cls");
printf("请输入新增加的职工人数:\n");
scanf("%d",&a);
n=n+a;
for(i=n-a;i<n;i++)
{
printf("请输入员工%d的职工号:\n",i+1);
scanf("%s",emp[i].num);
printf("请输入员工%d的姓名:\n",i+1);
scanf("%s",emp[i].name);
printf("请输入员工%d的性别:\n",i+1);
scanf("%s",emp[i].sex);
printf("请输入员工%d的年龄:\n",i+1);
scanf("%d",&emp[i].old);
printf("请输入员工%d的学历:\n",i+1);
scanf("%s",emp[i].edu);
printf("请输入员工%d的工资:\n",i+1);
scanf("%d",&emp[i].wages);
printf("添加成功\n");
}
}
/*******************删除学生成绩*************************/
void deletewages(void)
{
int i,c;
char m,a[10];
system("cls");
printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
for(i=0;i<n;i++)
{
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages);
printf("\n");
}
printf("请输入职工编号\n");
scanf("%s",a);
for(i=0;i<n;i++)
{
if(strcmp(a,emp[i].num)==0)
{
printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
printf("%d\t%s\t%s\t%s\t%d\t%s\t%d\n",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages);
c=i;
break;
}
}
if(i==n)
printf("未找到该学生信息\n");
else
{
printf("是否删除该学生成绩(y/n)\n");
scanf("%s",&m);
if(m=='y')
{
for(i=c;i<n-1;i++)
emp[i]=emp[i+1]; /*结构体整体赋值将后一位职工信息拷贝进入前一位职工的存储位置*/
n=n-1; /*删除该职工信息后职工总数减一*/
printf("删除成绩成功\n");
}
else
printf("删除成绩失败\n");
}
}
/******************保存职工信息************************/
void savewages(void)
{
FILE *fp;
int i,flag=1;
char m;
system("cls");
puts("是否保存学生成绩(y/n)");
scanf("%s",&m);
if(m=='y')
{
if((fp=fopen("wages.txt","wb+"))==NULL)
{
printf("文件打开失败\n");
return;
}
fprintf(fp,"序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");
for(i=0;i<n;i++)
if(fprintf(fp,"%d\t%s\t%s\t%s\t%d\t%s\t%d\r\n",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages)==0)
{
printf("保存失败\n");
flag=0;
}
if(flag==1)
printf("保存成功!\n");
fclose(fp);
}
else
return;
}