职工管理系统

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int g=0;
struct ZG // 结构体定义变量 
 {
     char num[20];//职工号 
     char name[10];//名字 
     char sex[4];//性别 
     int age;//年龄 
     char bumen[30];//部门 
     char zhuzhi[150];//住址 
     float pay;//工资 
     char  wen[15];//文化程度 

 }ren[220];
void duqu() 
 {
    struct ZG c;
    int a,b;
     FILE *fp;
     if((fp=fopen("zgzl.dat","rb+"))==NULL)
        exit(0);
     g=0;
     while(fread(&ren[g],sizeof(struct ZG),1,fp)==1)
        g++;
    for (a=0;a<g;a++)
    { 
        for (b=0;b<g-a-1;b++)
        {
            if (strcmp(ren[b].num,ren[b+1].num)>0)
            {
              c=ren[b];
              ren[b]=ren[b+1];
              ren[b+1]=c;
            }
        }   
    }
     fclose(fp);
 }
void menu() 
{ 
     system("cls");
     system("color B6");
     printf("\t\t********************************\n\n"); //欢迎信息 
     printf("\t\t   欢迎进入职工档案管理系统\n");
     printf("\n\t\t********************************\n"); //管理菜单 
     printf("\t\t==\t1.录入职工信息\n\t\t+\n"); 
     printf("\t\t==\t2.显示职工信息\n\t\t+\n"); 
     printf("\t\t==\t3.查询职工信息\n\t\t+\n"); 
     printf("\t\t==\t4.添加职工信息\n\t\t+\n"); 
     printf("\t\t==\t5.修改职工信息\n\t\t+\n");
     printf("\t\t==\t6.删除职工信息\n\t\t+\n");
     printf("\t\t==\t7.退出系统\n"); 
     printf("\t\t********************************\n"); 
     printf("please choise 1--7:\t"); 
     putchar(10); 
}
void scanf_1()//第一次输入 
{
    system("cls");
    system("color D1");
    struct ZG c;
    int a,b;
    char ch;
    FILE *fp;
    if((fp=fopen("zgzl.dat","wb+"))==NULL)
    {
        system("color 4D");
        printf("cannot open file\n");
        exit(0); 
    } 
    g=0;
    ch='y';
    while(ch=='y'||ch=='Y') 
    {
        printf("请输入职工的职工号:\t");
        getchar();
        gets(ren[g].num);
        for(a=0;a<g;a++)
            if(strcmp(ren[a].num,ren[g].num)==0)
            {
                a=-2;
            }
        if(a!=-2)
        {   
        printf("姓名:\t");
        gets(ren[g].name);
        printf("性别:\t");
        gets(ren[g].sex);
        printf("年龄:\t");
        scanf("%d",&ren[g].age);
        getchar();
        printf("部门:\t");
        gets(ren[g].bumen);
        printf("住址:\t");
        gets(ren[g].zhuzhi);
        printf("基本工资:\t");
        scanf("%f",&ren[g].pay);
        getchar();
        printf("文化程度:\t");
        gets(ren[g].wen);       
        printf("是否继续输入y or n ?\t");
        g++;
        }
        else
        {
         printf("职工号重复,是否重新输入y or n ?\t");      
        }
//      getchar();
//      getchar();
        ch=getchar();
    }

    for (a=0;a<g;a++)
    {
        for (b=0;b<g-a-1;b++)
        {
            if (strcmp(ren[b].num,ren[b+1].num)>0)
            {
              c=ren[b];
              ren[b]=ren[b+1];
              ren[b+1]=c;
            }
        }   
    }
    for (a=0;a<g;a++)
    {
        if(ren[a].age<=0&&ren[a].age>100)
                continue;       
        if(fwrite(&ren[a],sizeof(struct ZG),1,fp)!=1)
        {
            system("color 4D");
            printf("file write error\n");
            exit(0);
        }
    }
    fclose(fp);     
} 
void printf_1()//输出 
{
     int a,b,s[4]={0};
     char ch[20],ck;
     float max,min; 
     do
     {

     system("cls");
     printf("\n\t\t==\t1.按职工号显示\n\t\t+\n"); 
     printf("\t\t==\t2.按部门显示\n\t\t+\n"); 
     printf("\t\t==\t3.员工年龄分布\n\t\t+\n");
     printf("\t\t********************************\n"); 
     printf("please choise 1--3:\t");
     scanf("%d",&a);   
    if(a==1)//按工号排序显示 
    {
        printf("\n职工号\t\t\t姓名\t性别\t年龄\t部门\t\t住址\t\t\t基本工资\t文化程度\n"); 
        for(b=0;b<g;b++)
        {
            if(~(ren[b].age<=0&&ren[b].age>100))
            printf("%s\t\t%s\t%s\t%d\t%s\t\t%s\t%.1f\t\t%s\n",ren[b].num,ren[b].name,ren[b].sex,ren[b].age,ren[b].bumen,ren[b].zhuzhi,ren[b].pay,ren[b].wen);
        }
        printf("\n退出?(Y or N)");    
        while(ck!='y'&&ck!='Y')
        ck=getchar();
    }
    else if(a==2)// 按部门显示 
    {
        getchar();
        do
        {
            printf("请输入部门名称:");
            gets(ch);
            printf("%s\n",ch);
            printf("\n职工号\t\t\t姓名\t性别\t基本工资\n");
            max=ren[0].pay;
            min=ren[0].pay;
            for(b=0;b<g;b++)
            {
                if(max<ren[b].pay)
                  max=ren[b].pay;
                if(min>ren[b].pay)
                  min=ren[b].pay;
                if(strcmp(ren[b].bumen,ch)==0)
                    if(ren[b].age>0)
                      printf("%s\t\t%s\t%s\t%.1f\n",ren[b].num,ren[b].name,ren[b].sex,ren[b].pay);
            }
            for(b=0;b<g;b++)
            {
                if(max==ren[b].pay)
                   if(~(ren[b].age<=0&&ren[b].age>100))
                      printf("\n  最高工资 %s\n\n%s\t\t%s\t%s\t%.1f\n",ren[b].bumen,ren[b].num,ren[b].name,ren[b].sex,ren[b].pay);
                if(min==ren[b].pay)
                   if(~(ren[b].age<=0&&ren[b].age>100))
                      printf("\n  最低工资 %s\n\n%s\t\t%s\t%s\t%.1f\n",ren[b].bumen,ren[b].num,ren[b].name,ren[b].sex,ren[b].pay);
            }
            printf("\n继续?是(Y or y);否(N or n)");
            ck=getchar();
        }
        while(ck=='Y'||ck=='y');
    }
    else if(a==3)//显示各年龄段人数 
    {

        for(b=0;b<g;b++)
        {
            if(ren[b].age<=0&&ren[b].age>100)
                continue;
            if(ren[b].age<35)
                s[0]++;
            else if(ren[b].age>=36&&ren[b].age<=45)
                s[1]++;
            else if(ren[b].age>=46&&ren[b].age<=55)
                s[2]++;
            else if(ren[b].age>55&&ren[b].age<=100)
                s[3]++; 
        }
        printf("\n\t 年龄分布:\n");
        printf("\t************************\n"); 
        printf("\t1#ago: <35  : %d\n",s[0]);
        printf("\t2#ago:36--45: %d\n",s[1]);
        printf("\t3#ago:46--55: %d\n",s[2]);
        printf("\t4#ago: >55  : %d\n",s[3]);
        printf("\n退出?(Y or N)");
        ck='n'; 
        getchar();
        while(ck=='N'||ck=='n')
        ck=getchar();
    }
    system("cls");
    printf("\n\t\t==\t1.按职工号显示\n\t\t+\n"); 
    printf("\t\t==\t2.按部门显示\n\t\t+\n"); 
    printf("\t\t==\t3.员工年龄分布\n\t\t+\n");
    printf("\t\t********************************\n");
    printf("\n继续?(Y or N) ");
    getchar();
    ck=getchar(); 
  }
  while(ck!='n'&&ck!='N'); 
}
void find()//查找 
{   
    int a,b=0,c=0;
    char ch[20],ck;
    do
    {
     system("cls");
     system("color F0");
     printf("\n\t\t==\t1.按职工号查找\n\t\t+\n"); 
     printf("\t\t==\t2.按姓名查找\n\t\t+\n"); 
     printf("\t\t********************************\n"); 
     printf("please choise 1--2:\t"); 
    scanf("%d",&a); 
    if(a==1)
    { 
        c=0;
        b=0;    
        printf("请输入职工号:\t");
        getchar();
        gets(ch);
        while(b<g)
        {
           if(strcmp(ren[b].num,ch)==0)
            if(~(ren[b].age<=0&&ren[b].age>100))
            { 
               printf("职工号\t\t\t姓名\t性别\t年龄\t部门\t\t住址\t\t\t基本工资\t文化程度\n");
               printf("%s\t\t%s\t%s\t%d\t%s\t\t%s\t%.1f\t\t%s\n",ren[b].num,ren[b].name,ren[b].sex,ren[b].age,ren[b].bumen,ren[b].zhuzhi,ren[b].pay,ren[b].wen);
               c++;
            }
           b++;
        }
           if(c==0) {system("color 4D");printf("对不起!没有找到相关信息:\n");}
    }
    else if(a==2)
    { 
        c=0;
        b=0;
        printf("请输入职工的姓名:\t");
        getchar();
        gets(ch);
        while(b<g)
        {
           if(strcmp(ren[b].name,ch)==0)
            if(~(ren[b].age<=0&&ren[b].age>100))
            {
               system("color F0");
               printf("职工号\t\t\t姓名\t性别\t年龄\t部门\t\t住址\t\t\t基本工资\t文化程度\n");
               printf("%s\t\t%s\t%s\t%d\t%s\t\t%s\t%.1f\t\t%s\n",ren[b].num,ren[b].name,ren[b].sex,ren[b].age,ren[b].bumen,ren[b].zhuzhi,ren[b].pay,ren[b].wen);
               c++;
            } 
           b++;
        }   
       if(c==0) {system("color 4D");printf("对不起!没有找到相关信息:\n");} 
    }
    printf("继续查找?(y or n) ");
    ck=getchar();
  }
  while(ck=='Y'||ck=='y');
}
void scanf_2()//二次输入 
{
    system("cls");
    system("color A5");
    int a,b;
    char ch; 
    struct ZG c;
    FILE *fp;
    if((fp=fopen("zgzl.dat","wb+"))==NULL)
    {
     system("color 4D");
     printf("cannot open file\n");
     exit(0); 
    } 

    do
    {
        printf("请输入职工的职工号:\t");
        getchar();
        gets(ren[g].num);
        for(a=0;a<g;a++)
        { 
            if(strcmp(ren[a].num,ren[g].num)==0)
            {
                a=-2;
            }
        }
        if(a!=-2)
        {   
            printf("姓名:\t");
            gets(ren[g].name);
            printf("性别:\t");
            gets(ren[g].sex);
            printf("年龄:\t");
            scanf("%d",&ren[g].age);
            getchar();
            printf("部门:\t");
            gets(ren[g].bumen);
            printf("住址:\t");
            gets(ren[g].zhuzhi);
            printf("基本工资:\t");
            scanf("%f",&ren[g].pay);
            getchar();
            printf("文化程度:\t");
            gets(ren[g].wen);       
            printf("是否继续输入y or n ?\t");
            g++;
        }
        else
        {
            printf("职工号重复,是否重新输入y or n ?\t");               
        }
        ch=getchar();
    }
    while((ch=='y')||(ch=='Y'));

    for (a=0;a<g;a++)
    {
        for (b=0;b<g-a-1;b++)
        {
            if (strcmp(ren[b].num,ren[b+1].num)>0)
            {
              c=ren[b];
              ren[b]=ren[b+1];
              ren[b+1]=c;
            }
        }
    }
    for (a=0;a<g;a++)
    {
        if(ren[a].age<=0&&ren[a].age>100)
                continue;
        if(fwrite(&ren[a],sizeof(struct ZG),1,fp)!=1)
        {
            system("color 4D");
            printf("file write error\n");
            exit(0);
        }
    } 
    fclose(fp); 
}
void change()//修改 
{
     system("cls");
     system("color 9E");
     int a=0,b=0,n=0;
     char ch[20],ck;
     struct ZG c; 
     FILE *fp;
     if((fp=fopen("zgzl.day","wb+"))==NULL)
    {
        system("color 4D");
        printf("cannot open file\n");
        exit(0); 
    }
     do
     { 

         printf("请输入要修改的职工号:\t");
         getchar();
         gets(ch);
         n++;
         a=-1;
         while(b<g)
         { 
             while((strcmp(ren[b].num,ch)==0))
             { 
                 printf("职工号\t\t\t姓名\t性别\t年龄\t部门\t\t住址\t\t\t基本工资\t文化程度\n");
                 printf("%s\t\t%s\t%s\t%d\t%s\t\t%s\t%.1f\t\t%s\n",ren[b].num,ren[b].name,ren[b].sex,ren[b].age,ren[b].bumen,ren[b].zhuzhi,ren[b].pay,ren[b].wen);
                 printf("请输入职工的新信息:\n职工号:\t");
                 gets(ren[b].num);
                 for(a=0;a<g;a++)
                if(strcmp(ren[a].num,ren[g].num)==0)
                {
                    a=-2;
                    break;
                }
                 if(a!=-2)
                {   
                    printf("姓名:\t");
                    gets(ren[b].name);
                    printf("性别:\t");
                    gets(ren[b].sex);
                    printf("年龄:\t");
                    scanf("%d",&ren[b].age);
                    getchar();
                    printf("部门:\t");
                    gets(ren[b].bumen);
                    printf("住址:\t");
                    gets(ren[b].zhuzhi);
                    printf("基本工资:\t");
                    scanf("%f",&ren[b].pay);
                    getchar();
                    printf("文化程度:\t");
                    gets(ren[b].wen);       
                    a=b;
                    b++;
                }
                else
                {
                    printf("职工号重复,是否重新输入 y or n ?\t");              
                } 

             }  
             b++;
        }
         if(a==-1)
         { 
             system("color 4D");
             printf("\t没有找到相关信息!\n");
             getchar();
         }
         printf("是否继续修改?enter 'y' or 'n' \t");
         ck=getchar(); 
         system("color 9E");
     }
     while(ck=='y'||ck=='Y');
     for (a=0;a<g;a++)
    {
        for (b=0;b<g-a-1;b++)
        {
            if (strcmp(ren[b].num,ren[b+1].num)>0)
            {
              c=ren[b];
              ren[b]=ren[b+1];
              ren[b+1]=c;
            }
        }
    }
    for (a=0;a<g;a++)
    {
        if(ren[a].age<=0&&ren[a].age>100)
                continue;
        if(fwrite(&ren[a],sizeof(struct ZG),1,fp)!=1)
        {
            system("color 4D");
            printf("file write error\n");
            exit(0);
        }
    } 
     fclose(fp);
     if(b!=0)
     printf("\t修改成功:\n");

}
void dell()//删除 
{
    system("cls");
    system("color 7C");
     int a=0,b=0,n=0;
     char ch[20],ck;
     struct ZG c; 
     FILE *fp;
     if((fp=fopen("zgzl.day","wb+"))==NULL)
    {
        system("color 4D");
        printf("cannot open file\n");
        exit(0); 
    } 
     do 
     { 
         printf("请输入要删除的职工号:\t");
         scanf("%s",ch);
         n++;
         a=-1;
         while(b<g)
         { 
             if((strcmp(ren[b].num,ch)==0))
              if(~(ren[b].age<=0&&ren[b].age>100))
              {  
                 a=b;
                 printf("职工号\t\t\t姓名\t性别\t年龄\t部门\t\t住址\t\t\t基本工资\t文化程度\n");
                 printf("%s\t\t%s\t%s\t%d\t%s\t\t%s\t%.1f\t\t%s\n",ren[b].num,ren[b].name,ren[b].sex,ren[b].age,ren[b].bumen,ren[b].zhuzhi,ren[b].pay,ren[b].wen);
              } 
             b++;
         }
         if(a==-1) 
         { 
             system("color 4D");
             printf("\t没有找到相关信息!\n");
             getchar();
         }
         else
         ren[a].age=-1;
         getchar();
         getchar();
         printf("删除成功!"); 
         getchar(); 
         printf("是否继续删除?enter 'y' or 'n' \t");
         ck=getchar(); 
         system("color 7C");
     }
     while(ck=='y'||ck=='Y');
     if(b!=0)
     printf("\t保存成功:\n");
     for (a=0;a<g;a++)
    {
        for (b=0;b<g-a-1;b++)
        {
            if (strcmp(ren[b].num,ren[b+1].num)>0)
            {
              c=ren[b];
              ren[b]=ren[b+1];
              ren[b+1]=c;
            }
        }
    }
    for (a=0;a<g;a++)
    {
        if(ren[a].age<=0&&ren[a].age>100)
                continue;
        if(fwrite(&ren[a],sizeof(struct ZG),1,fp)!=1)
        {
            system("color 4D");
            printf("file write error\n");
            exit(0);
        }
    } 
     fclose(fp);

}
void myexit()
{
    system("cls");
     //int a;
     char ch;
     printf("\t是否确定退出?请选择 y or n: ");
     getchar();
     ch=getchar();
     if(ch=='y'||ch=='Y') {system("color 4D");exit(0);}
     else                 menu();

}
int main() 
{
     system("color B6");
     int a; 
     duqu();
     menu();

     while(1)
     {
         scanf("%d",&a);
         if(a==1)
           scanf_1();
         else if(a==2)
           printf_1();
         else if(a==3)
           find();
         else if(a==4)
           scanf_2();
         else if(a==5)
           change();
         else if(a==6)
           dell(); 
         else if(a==7) 
           myexit();
         else {system("color 4D");printf("输入错误!!!请重新输入:\t");}

     printf("\t按任意键继续!\n");
     getchar();
     menu();
     }
     getchar();
     return 0;
}

职工管理系统

以上是职工管理系统的代码,由自己的想法和老师的建议从而构建出这个系统,经测试还有一些小bug,各位可以进行参考、改进,也可以评论提出建议,我不胜感激!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值