C语言工资管理系统

 

#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;

}

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C语言工资管理系统的查找功能是指在系统中根据一定的条件去查询和获取相关的工资信息。在一个完整的工资管理系统中,查找功能是非常重要和实用的。 首先,查找功能可以根据员工的编号或姓名等信息去查询该员工的工资情况。通过输入相关的查询条件,系统可以快速定位到目标员工的工资记录,包括基本工资、绩效奖金、加班工资等。 其次,该系统的查找功能也可以根据不同的时间段进行查询。例如,可以设定起止日期来查询某个时间段内员工的工资情况,系统会将该时间段内的工资记录一并显示出来,便于工资核对和分析。 此外,该系统的查找功能还可以实现对员工工资的统计和汇总。通过设定不同的条件,可以统计某个部门或某个职位员工的平均工资、最高工资、最低工资等信息,帮助管理者更好地了解和比较员工的工资水平。 另外,查找功能还可以实现对异常情况下的工资处理。如果某个员工的工资异常或与其他员工相比出现较大的差异,系统可以通过查找功能找出该员工的工资记录,并对其进行调整或补发。 总之,C语言工资管理系统的查找功能不仅提供了方便快捷的查询和获取工资信息的方式,还可以进行统计和分析,帮助管理者更好地掌握和管理员工的工资情况。通过系统化的工资管理,可以提高工资发放的准确性和效率,确保员工的合法权益。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值