改编 的 C版 职工管理系统

sheo1314

sheo1314

2016-02-19 21:32

下面是个超简单的改编 的 C版 职工管理系统教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

  /*八、简单的职工治理系统
  1.问题描述
  对单位的职工进行治理,包括插入、删除、查找、排序等功能。
  2.要求
  职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
  (1)新增一名职工:将新增职工对象按姓名以字典方式职工治理文件中。
  (2)删除一名职工:从职工治理文件中删除一名职工对象。
  (3)查询:从职工治理文件中查询符合某些条件的职工。
  (4)修改:检索某个职工对象,对其某些属性进行修改。
  (5)排序:按某种需要对职工对象文件进行排序。
  3.实现提示
  职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。
  (1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。
  (2)对职工对象中的"姓名"按字典顺序进行排序。
  (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。
  4.选做内容
  将职工对象按散列法存储,并设计解决冲突的方法。在此基础上实现增、删、查询、修改、排序等操作。
  */
  #include stdio.h
  #include string.h
  #include stdlib.h
  #include conio.h
  #define N 100typedef strUCt employee//职工基本情况
  {
   int num;//工号
   int position;//职位1为董事长2为总经理3为副总经理等
   char name[8];//姓名
   char sex[2];//性别f为女m为男
   int age;//年龄
   int cult;//文化程度1为专家2为博士3为硕士4为学士5为其他
   int salary;//工资
   int state;//健康情况分为good,general,bad
   char day[10];//工作年月
  }ro;
  ro em[N];
  typedef struct communication//职工通讯录
  {
   char name[8];
   char Officetel[13];
   char hometel[13];
   char handtel[13];
   char address[13];
   char time[13];
  }el;
  el empc[N];void manage();
  void query();
  void communicate();
  void input();
  void display();
  void change();
  void del();
  void add();
  int changeposition();
  int changecult();
  int changesalary();
  int changestate();
  void inputcommunicate();
  void querycommunicate();
  void changecommunicate();
  char *changetel1();
  char *changetel2();
  char *changetel3();int total;
  int p;char passWord[10]="talentxch";void main()
  {
       int choice;
       char s[10];
       int flag=0;
       int n=3;
       do
    {
          printf("请你输入密码: ");
          scanf("%s",s);
          if(!strcmp(s,password))//若密码正确
    {
              printf("恭喜你成功登陆了 ");
              flag=1;
              break;
  
     }
          else
    {
              printf("输入有错误请重新输入: ");
              n--;
    }
    }while(n0);
       if(!flag)
    {
          printf("你的输入次数已到再见 ");
    }
       do
    {
          printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");
          printf(" 欢迎进入职工治理系统中文版 ");
          printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");
          printf(" 请你选择操作类型: ");
          printf("====================================================== ");
          printf("   1进入治理系统 ");
          printf("   2进入查询系统 ");
          printf("   3进入通讯录 ");
          printf("   0退出系统 ");
          printf("====================================================== ");
          scanf("%d",&choice);
          switch(choice)
    {
             case 1:manage();
             break;
             case 2:query();
             break;
             case 3:communicate();
             break;
             case 0:
        {
                      printf("谢谢使用再见 ");
                      exit(0);
        }
             default:
        {
                      printf("输入有错误请重新输入: ");
                      return;
        }
    }
    }while(1);
  }void manage()
  {
       int choicemanage;
       char choice='y';
       while(choice=='y'choice=='Y')
  
     {
           printf(" 欢迎进入治理系统 ");
           printf("====================================================== ");
           printf(" 请你选择操作类型: ");
           printf(" 1输入职工信息 ");
           printf(" 2显示职工信息 ");
           printf(" 3修改职工信息 ");
           printf(" 4追加一个职工信息 ");
           printf(" 5删除一个职工信息 ");
           printf(" 0返回 ");
           printf("====================================================== ");
           scanf("%d",&choicemanage);
           switch(choicemanage)
     {
               case 1: input();//输入职工信息
               break;
               case 2:display();//显示职工信息
               break;
               case 3:change();//修改职工信息
               break;
               case 4:add();//追加一个职工信息
               break;
               case 5:del();//删除一个职工信息
               break;
               case 0:
               printf("谢谢你的使用再见 ");
               return;
              default:printf("你的输入有错请重新输入 ");
     }
           printf("是否继续治理?(y/n)");
           scanf("%s",&choice);
    }
       if(toupper(choice)=='N'(choice)=='n')
    {
           printf("输入完毕,任意键返回 ");
           getch();
           return;
    }
  }
  void input()
  {
      FILE *fp;
      int i=0;
      char choiceinput='y';
      if((fp=fopen("employee.txt","w"))==NULL)
      return;
      while(choiceinput=='y'choiceinput=='Y')
  
    {
        i++;
     total++;
        printf("第%d个职工 ",i);
        printf(" ");
        printf("请你输入工号: ");//输入工号
        scanf("%d",&em[i].num);
        printf(" ");
        printf("请你输入职位: ");//输入职位
        printf("1董事长     2总经理    3副总经理 ");
        printf("4部门经理   5工程师    6秘书 ");
        printf("7技术员     8领班      9员工 ");
        scanf("%d",&em[i].position);
        printf(" ");
        printf("请你输入姓名: ");//输入姓名
        scanf("%s",em[i].name);
        printf(" ");
        printf("请你输入性别以(m男f女): ");//输入性别
        scanf("%s",em[i].sex);
        printf(" ");
        printf("请你输入文化程度: ");//输入文化程度
        printf("1专家  2博士  3硕士  4学士  5其他 ");
        scanf("%d",&em[i].cult);
        printf(" ");
        printf("请你输入工资: ");//输入工资
        scanf("%d",&em[i].salary);
        printf(" ");
        printf("请你输入身体情况: ");//身体情况
        printf("1好  2一般  3差 ");
        scanf("%d",&em[i].state);
     printf("请你输入工作年月: ");
     scanf("%s",em[i].day);
        printf(" ");
        printf("是否继续输入?(y/n) ");
          scanf("%s",&choiceinput);
        fwrite(&em[i],sizeof(struct employee),1,fp);
   }
      if(toupper(choiceinput)=='N')  //字符大小写转换
         {
            fclose(fp);
            printf("输入完毕,任意键返回 ");
            getch();
            return;
         }
  }
  void display()//显示职工信息
  {
     FILE *fp;
     int i;
     if((fp=fopen("employee.txt","r"))==NULL)
       return;
     printf("输出结果: ");
     printf("工号  职位  姓名  性别  文化程度  工资  身体情况 ");
     printf(" ");
     for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
     { 
  
         printf(" ");
        printf("工号: %d ",em[i].num);
        printf("职位: %d ",em[i].position);
        printf("1董事长     2总经理    3副总经理 ");
        printf("4部门经理   5工程师    6秘书 ");
        printf("7技术员     8领班      9员工 ");
        printf("姓名: %s ",em[i].name);
        printf("性别: %s ",em[i].sex);
        printf("其中(m男f女) ");
        printf("文化程度: %d ",em[i].cult);
        printf("1专家  2博士  3硕士  4学士  5其他 ");
        printf("工资: %d ",em[i].salary);
        printf("身体情况: %d ",em[i].state);
        printf("1好  2一般  3差 ");
     printf("工作年月: %s",em[i].day);
        printf(" ");
     }
     printf(" ");
     printf("完毕按任意键返回 ");
     getch();                                         //文件里用
     fclose(fp);
      return;
  }
  void change()
  {
   FILE *fp;
   int i;
   char chname[8];
   int choicechange;
   ro a[N];
   printf("请你输入要修改的人的姓名: ");
   scanf("%s",&chname);
   if((fp=fopen("employee.txt","w+"))==NULL)
   {
    printf("不能够打开这个文件 ");
    return;
   }
   for(i=0;iN;i++)
   {
    if(strcmp(chname,em[i].name)==0)
    {
     printf("这是你要修改的人的信息 ");
     printf("工号:%d 职位:%d 姓名:%s 性别:%s 文化程度:%d 工资:%d 身体:%d ",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state);
     printf("-------------------------------------------------------- ");
     printf("请你输入要修改的部分: ");
     printf("======================================================== ");
     printf("1修改职位 ");
     printf("2修改文化程度 ");
     printf("3修改工资 ");
     printf("4修改身体情况 ");
     printf("0退出系统 ");
     printf("======================================================== ");
     printf("请选择 ");
     scanf("%d",&choicechange);
     switch(choicechange)
     {
     case 1:
      em[i].position=changeposition();
      break;
     case 2:
      em[i].cult=changecult();
      break;
     case 3:
      em[i].salary=changesalary();
  
       break;
     case 4:
      em[i].state=changestate();
      break;
     case 0:
      return;
     default :
      printf("输入有错误");
     }
     a[i]=em[i];
    }
    else
    {
     a[i]=em[i];
    }
   }
   for(i=0;itotal;i++)
   {
    em[i]=a[i];
   }
   i=0;
   fwrite(&em[i],sizeof(struct employee),total,fp);
   fclose(fp);
   printf("操作完成按任意键返回 ");
   getch();
   return;
  }
  int changeposition()
  {
   int newposition;
   printf("请你输入新职位: ");
   printf("1董事长     2总经理    3副总经理 ");
   printf("4部门经理   5工程师    6秘书 ");
   printf("7技术员     8领班      9员工 ");
   scanf("%d",&newposition);
   return(newposition);
  }
  int changecult()
  {
   int newcult;
   printf("请你输入新的文凭: ");
   printf("1专家  2博士  3硕士  4学士  5其他 ");
   scanf("%d",&newcult);
   return(newcult);
  }
  int changesalary()
  {
   int newsalary;
   printf("请你输入新的工资: ");
   scanf("%d",&newsalary);
   return(newsalary);
  }
  int changestate()
  {
   int newstate;
   printf("请你输入现在的身体情况: ");
   printf("1好  2一般  3差 ");
   scanf("%d",&newstate);
   return(newstate);
  }
  void add()//追加一个职工信息
  {
   struct employee emp;
   FILE *fp;
   int i=0;
   if((fp=fopen("employee.txt","ab+"))==NULL)
   {
    printf("不能够打开这个文件 ");
    getch();
    return;
   }
   printf("请你输入新人的内容: ");
   printf("请你输入工号: ");//输入工号
   scanf("%d",&emp.num);
   printf("请你输入职位: ");//输入职位
   printf("1董事长     2总经理    3副总经理 ");
   printf("4部门经理   5工程师    6秘书 ");
   printf("7技术员     8领班      9员工 ");
   scanf("%d",&emp.position);
   printf("请你输入姓名: ");//输入姓名
   scanf("%s",emp.name);
   printf("请你输入性别以(m男f女): ");//输入性别
   scanf("%s",emp.sex);
   printf("请你输入文化程度: ");//输入文化程度
   printf("1专家   2博士  3硕士  4学士  5其他 ");
   scanf("%d",&emp.cult);
   printf("请你输入工资: ");//输入工资
   scanf("%d",&emp.salary);
   printf("请你输入身体情况: ");//身体情况
   printf("1好  2一般  3差 ");
   scanf("%d",&emp.state);
   printf("请你输入工作年月: ");
   scanf("%s",emp.day);
   fwrite(&emp,sizeof(struct employee),1,fp);
   rewind(fp);
   printf("插入完毕,按任意键返回 ");
   getch();
   total=total+1;
   fclose(fp);
   return;
  }
  
   void del()//删除一个职工信息
  {
   int i=0;
   char delname[8];
   FILE *fp;
   if((fp=fopen("employee.txt","w"))==NULL)
   {
    printf("文件为空,不能够打开 ");
    printf("按任意键返回 ");
    getch();
    return;
   }
   printf("请你输入要删除的人的姓名: ");//删除的职工的信息
   scanf("%s",delname);
   for(i=0;iN;i++)
   {
    if(strcmp(em[i].name,delname)==0) 
    {
     total--;
     for(;iN;i++)
     {
      em[i]=em[i+1];
     }
    }
   }
    i=0;
    fwrite(&em[i],sizeof(struct employee),total,fp);
    fclose(fp);
  }void query()
  {
   FILE *fp;
   int i=0;
   char quename[8];
   if((fp=fopen("employee.txt","r"))==NULL)
   {
    printf("不能够打开文件,按任意键返回 ");
    getch();
    return;
   }
   printf("请你输入要查询的人的姓名 ");
   scanf("%s",quename);
   for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
   {
        if(strcmp(em[i].name,quename)==0)  /*找到,并显示该职工记录*/
     {
            printf(" 查询到的职工号或姓名为的信息如下: ");
            printf("以下是你要查询的人的信息 ");
            printf("工号: %d ",em[i].num);
            printf("职位: %d ",em[i].position);
            printf("1董事长      2总经理    3副总经理 ");
            printf("4部门经理    5工程师    6秘书 ");
            printf("7技术员      8领班      9员工 ");
            printf("姓名: %s ",em[i].name);
            printf("性别: %s ",em[i].sex);
            printf("其中(m男f女) ");
            printf("文化程度: %d ",em[i].cult);
            printf("1专家   2博士   3硕士   4学士   5其他 ");
            printf("工资: %d ",em[i].salary);
            printf("身体情况: %d ",em[i].state);
            printf("1好   2一般   3差 ");
            printf("工作年月: %s ",em[i].day);
            printf(" ");
               printf("查询完毕,按任意键返回 ");
            getch();
  
             fclose(fp);
            return;
     }
   }
      printf("没有这样的人,按任意键返回 ");
      getch();
      fclose(fp);
      return;
  }void communicate()
  {
      int choicecommunicate;
      printf("欢迎进入通讯录系统 "); 
      printf("请你选择操作类型: ");
      printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ");
      printf("1为输入通讯录信息 ");
      printf("2为查询通讯录信息 ");
      printf("3为修改通讯录信息 ");
      printf("0为退出通讯录系统 ");
      printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");
      scanf("%d",&choicecommunicate);
      switch(choicecommunicate)
      {
         case 1:inputcommunicate();
         break;
         case 2:querycommunicate();
         break;
         case 3:changecommunicate();
         break;
         case 0:
    {
              printf("谢谢使用再见 ");
              printf("按任意键返回 ");
              getch();
              return;
    }
         default:
         printf("输入有错 ");
   }      
  }      
  void inputcommunicate()
  {
          FILE *fp;
          int choiceincom='y';
          int i=0;
          if((fp=fopen("empcom.txt","w"))==NULL)
    {
                    printf("不能够打开文件 ");
                    printf("任意键返回 ");
                    getch();
                    return;
    }
          printf("请你输入通讯录的信息: ");
          while(choiceincom=='y'choiceincom=='Y')
          {
                 p++;
                 i++;
  
                  printf("第%d个职工 ",i);
                 printf("请你输入姓名: ");
                 scanf("%s",empc[i].name);
                 printf("请你输入生日: ");
                 scanf("%s",empc[i].time);
                 printf("请你输入办公室电话号码: ");
                 scanf("%s",empc[i].officetel);
                 printf("请你输入家庭电话号码: ");
                 scanf("%s",empc[i].hometel);
                 printf("请你输入手机号码: ");
                 scanf("%s",empc[i].handtel);
                 printf("请你输入地址: ");
                 scanf("%s",empc[i].address);
                 printf("是否继续输入?(y/n) ");
                 choiceincom=getch();
                 fwrite(&empc[i],sizeof(struct communication),1,fp);
            }
          if(toupper(choiceincom)=='N')
          {
               fclose(fp);
               printf("输入完毕,任意键返回 ");
               return;
    }         
  }
  void querycommunicate()
  {
         FILE *fp;
         int i=0;
         char qcname[8];
         if((fp=fopen("empcom.txt","r"))==NULL)
         {
            printf("不能够打开文件,按任意键返回 ");
            getch();
  
             return;
         }
         printf("请你输入要查询的人的姓名: ");
            scanf("%s",qcname);
         for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
      {
             if(strcmp(empc[i].name,qcname)==0)
             {
                 printf("以下为您所要求的信息: ");
                 printf("姓名: %s ",empc[i].name);
                 printf("生日: %s ",empc[i].time);
                 printf("办公室电话号码: %s ",empc[i].officetel);
                 printf("家庭电话号码: %s ",empc[i].hometel);
                 printf("手机号码: %s ",empc[i].handtel);
                 printf("家庭地址: %s ",empc[i].address);
                 printf("查询完毕,按任意键返回 ");
                 getch();
                 fclose(fp);
                 return;
       }
      }
         printf("没有这样的人,按任意键返回 ");
         getch();
         fclose(fp);
         return;
  }
  void changecommunicate()
  {
        FILE *fp;
        int i=0;
        char chcname[8];
        int choicecom;
     el b[N];
        if((fp=fopen("empcom.txt","w+"))==NULL)
        {
            printf("打不开文件按任意键返回 ");
            getch();
            return;
     }
        printf("请你输入你要修改的人的姓名: ");
          scanf("%s",chcname);
          for(i=0;ip;i++)
          {
              if(strcmp(empc[i].name,chcname)==0)
  
               {
                  printf("以下为您所要修改的人的信息: ");
                  printf("姓名:%s ",empc[i].name);
                  printf("生日: %s ",empc[i].time);
                  printf("办公室电话号码: %s ",empc[i].officetel);
                  printf("家庭电话号码: %s ",empc[i].hometel);
                  printf("手机号码: %s ",empc[i].handtel);
                  printf("家庭地址: %s ",empc[i].address);
                  printf("请你选择要修改的东西: ");
                  printf("$$$$$$$$$$$$$$$$$$$$$$ ");
                  printf("1修改办公室电话号码 ");
                  printf("2修改家庭电话号码 ");
                  printf("3修改手机电话号码 ");
                  printf("0退出系统 ");
                  printf("$$$$$$$$$$$$$$$$$$$$$$ ");
                  scanf("%d",&choicecom);
                  switch(choicecom)
      {
                      case 1:strcpy(empc[i].officetel,changetel1());
                      break;
                      case 2:strcpy(empc[i].hometel,changetel2());   
                      break;
                      case 3:strcpy(empc[i].handtel,changetel3());   
                      break;
                      case 0:
  
                       return;
                      default:
                      printf("输入有错 ");
      }
      b[i]=empc[i];
     }
     else
     
    }
    for(i=0;ip;i++)
    
    i=0;
    fwrite(&empc[i],sizeof(struct communication),p,fp);
    fclose(fp);
          printf("操作完成按任意键返回 ");
          getch();
    return;
  }
  char *changetel1()
  {
   char newofficetel[13];
   printf("请你输入新办公室电话号码: ");
   scanf("%s",newofficetel);
   return(newofficetel);
  }char *changetel2()
  {
   char newhometel[13];
   printf("请你输入新家庭电话号码: ");
   scanf("%s",newhometel);
   return(newhometel);
  }char *changetel3()
  {
   char newhandtel[13];
   printf("请你输入新手机电话号码: ");
   scanf("%s",newhandtel);
   return(newhandtel);
  }
  
展开更多 50%)
分享

猜你喜欢

改编 的 C版 职工管理系统

编程语言 网络编程
改编 的 C版 职工管理系统

简单的职工管理系统(V1.1修改版)内含中文注释

编程语言 网络编程
简单的职工管理系统(V1.1修改版)内含中文注释

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

【儿歌改编大赛】儿歌改编参赛

儿歌 育儿知识 怀孕 孕妇
【儿歌改编大赛】儿歌改编参赛

C++内存管理详解

编程语言 网络编程
C++内存管理详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

【儿歌改编大赛】3首改编儿歌

儿歌 育儿知识 怀孕 孕妇
【儿歌改编大赛】3首改编儿歌

浅谈C++中的内存管理

编程语言 网络编程
浅谈C++中的内存管理

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Docx怎么打开?常见文件打开方式教程

Docx怎么打开?常见文件打开方式教程

初学者你应当如何学习C++以及编程

初学者你应当如何学习C++以及编程
下拉加载更多内容 ↓