职工治理系统

来源:互联网 发布:算法工程师培训 编辑:程序博客网 时间:2024/04/27 21:46
/*八、简单的职工治理系统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 100 typedef 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(n>0);     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;i<N;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;i<total;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;i<N;i++) {  if(strcmp(em[i].name,delname)==0)    {   total--;   for(;i<N;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;i<p;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;i<p;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);}资料引用:http://www.knowsky.com/395511.html

原创粉丝点击