
#include  #include  #include  #define N 140  struct teacher//职工基本情况 {  char num[6];//编号  char name[8];//姓名  char sex[5];//性别f为女m为男  char birth[8];//出生年月  int age;//年龄  char marriage[10];//婚姻状况,y/n,是/否  char address[20];//家庭住址  char workplace[10];//所在单位  char salarylevel[8];//工资级别  char position[8];//职称 } teach[N];  /*主要函数*/ void input();//输入职工信息 void display();//显示职工信息 void passWord();//设置密码 void save();//保存职工信息 void change();//修改职工信息 /*查找函数*/ void search(); void searchByname();//按姓名查找 void searchBynum();//按编号查找 int total=0;//定义total来记数记录数 int i=0; void main()   {     int choice;     do     {         printf("************************************\\n");//系统欢迎界面         printf("*                                  *\\n");         printf("*****欢迎进入院职工档案管理系统*****\\n");         printf("*                                  *\\n");         printf("************************************\\n");         printf(" 请您选择操作类型: \\n");         printf("======================== \\n");         printf("   1.输入职工信息 \\n");//用户选择         printf("   2.显示职工信息 \\n");         printf("   3.查找职工信息 \\n");         printf("   4.修改职工信息 \\n");         printf("   0.退出系统 \\n");         printf("======================== \\n");         scanf("%d",&choice);         switch(choice)         {          case 1:input();break;          case 2:display();break;          case 3:search();break;          case 4:change();break;          case 0:             {              printf("谢谢使用!再见! ");              exit(0);//退出系统             }         default:             {printf("您的输入有错误,请重新输入!");              return;             }                }     }while(1);//当为真值时执行do循环   }    void input() {     char j='\\0';//初始化j值为空     do     {         total++;         i++;         printf("第%d个职工:\\n",i);         printf("请您输入编号: ");//输入编号         scanf("%s",teach[i].num);         printf("请您输入姓名: ");//输入姓名         scanf("%s",teach[i].name);         printf("请您输入性别(m男f女): ");//输入性别         getchar();         scanf("%s",teach[i].sex);         printf("请您输入出生年月(格式如:1990.03): ");//输入出生年月         scanf("%s",teach[i].birth);         printf("请您输入年龄: ");//输入年龄         scanf("%d",&teach[i].age);         printf("请您输入婚姻状况: ");//输入婚姻状况         scanf("%s",teach[i].marriage);         printf("请您输入家庭住址: ");//输入家庭住址         scanf("%s",teach[i].address);         printf("请您输入所在单位: ");//输入所在单位         scanf("%s",teach[i].workplace);         printf("请您输入职称: ");//输入职称         scanf("%s",teach[i].position);         printf("请您输入工资级别: ");//输入工资级别         scanf("%s",teach[i].salarylevel);         printf("是否继续输入?(y/n):");         getchar();         j=getchar();         while(j!='y'&&j!='n')         {             printf("输入不合法!\\n是否继续输入?(y/n):");             getchar();             j=getchar();         }     } while(j=='y');     save();//保存职工记录     printf("输入完毕,请按任意键返回\\n ");    getch();//conio库函数里的,结收键盘输入任意~~~    return; }        void save()  {     FILE *fp;     int i=0;     if((fp=fopen("teacher.txt     {         printf("This File Can Not Be Opened !\\n");         return;     } for(i=1;i<=total;i++)        if(fwrite(&teach[i],sizeof(struct teacher),1,fp)!=1)             printf("file write error\\n");        fclose(fp); } void display()//显示所有职工信息 {    FILE *fp;    int i;    if((fp=fopen("teacher.txt    {        printf("文件打开失败或未创建文件!\\n");        return;    }    printf("所有职工信息如下: \\n");//输出所有职工信息    printf("\\n==========================================================================================================\\n");    printf("编号      姓 名  性别   出生年月   年龄   婚姻状况     家庭住址         所在单位         职  称    工资级别\\n");    printf("============================================================================================================\\n");    for(i=1;fread(&teach[i],sizeof(struct teacher),1,fp)!=0;i++)//读完所有数据       printf("%-6s%8s%8s%10s%5d%7s%20s%10s%18s%8s%5s\\n",teach[i].num,teach[i].name,teach[i].sex,teach[i].birth,teach[i].age,teach[i].marriage,teach[i].address,teach[i].workplace,teach[i].position,teach[i].salarylevel);    printf("完毕,请按任意键返回\\n ");    getch();    fclose(fp);    return; } void search() {int choice;  printf("请您选择查找方式:\\n");  printf("1.按编号查找\\n 2.按姓名查找 \\n");  scanf("%d",&choice);  switch(choice)  {      case 1:searchBynum();break;      case 2:searchByname();break;      default:printf("输入有误,请重输入:\\n");  } } void searchBynum() {     FILE *fp;     int i;     char numb[6];     if((fp=fopen("teacher.txt     {       printf("不能够打开这个文件,请按任意键返回");       return;     }       printf("请您输入要查找的人的编号: ");      scanf("%s",numb); for(i=0;i        {            printf("所有职工信息如下: \\n");//输出所有职工信息            printf("\\n==========================================================================================================\\n");    printf("编号      姓 名  性别   出生年月   年龄   婚姻状况     家庭住址         所在单位         职  称    工资级别\\n");        printf("%-6s%8s%8s%10s%5d%7s%20s%10s%18s%8s%5s\\n",teach[i].num,teach[i].name,teach[i].sex,teach[i].birth,teach[i].age,teach[i].marriage,teach[i].address,teach[i].workplace,teach[i].position,teach[i].salarylevel);   printf("查找完毕,请按任意键返回\\n ");         getch();         fclose(fp);         return;        }     printf("不存在,请按任意键返回\\n");     getch();     fclose(fp);     return; } void searchByname() {  FILE *fp;  int i=0;  char nam[8];  if((fp=fopen("teacher.txt  {   printf("不能够打开这个文件,请按任意键返回\\n");   return;  }   printf("请您输入要查找的人的姓名: ");   scanf("%s",nam); for(i=0;i      {          printf("\\n==========================================================================================================\\n");    printf("编号      姓 名  性别   出生年月   年龄   婚姻状况     家庭住址         所在单位         职  称    工资级别\\n");    printf("============================================================================================================\\n");        printf("%-6s%8s%8s%10s%5d%7s%20s%10s%18s%8s%5s\\n",teach[i].num,teach[i].name,teach[i].sex,teach[i].birth,teach[i].age,teach[i].marriage,teach[i].address,teach[i].workplace,teach[i].position,teach[i].salarylevel);       fclose(fp);       printf("查找完毕,请按任意键返回\\n ");      getch();      return;      }   printf("不存在,请按任意键返回\\n ");   getch();   fclose(fp);   return;   } void passWord() {      char passWord[8]="123456";//起始密码      char s[8];      int flag=0;      int n=3;//密码输入次数      do      {         scanf("%s",s);         if(strcmp(passWord,s)==0)//若密码正确         {             printf("密码正确,祝您操作愉快!\\n ");             flag=1;             break;         }         else          {             printf("密码错误,您还有%d次机会: ",n-1);             n--;//次数记数         } }while(n>0);      if(flag!=1)      {        printf("您的输入次数已到!再见!\\n ");        main();//返回主函数(主菜单)      } } void change() {  FILE *fp;  int i;  char newnum[6];//新编号  char newname[8];//新名字  char newsex[2];//新性别  char newbirth[8];//新出生年月  int newage;//新年龄  char newmarriage[10];//新婚姻状况,y/n,是/否  char newaddress[20];//新家庭住址  char newworkplace[10];//新所在单位  char newposition[8];//新职称  char newsalarylevel[8];//新工资水平  char nam[8];  int choice;  printf("请您输入密码:");  passWord();//调用密码函数  printf("请您输入要修改的人的姓名: ");  scanf("%s",&nam);  if((fp=fopen("teacher.txt  {   printf("不能够打开这个文件 ");   return;  } for(i=1;i<=N;i++)    if(strcmp(nam,teach[i].name)==0)   {    printf("\\n==========================================================================================================\\n");    printf("编号      姓 名  性别   出生年月   年龄   婚姻状况     家庭住址         所在单位         职  称    工资级别\\n");    printf("============================================================================================================\\n");    for(i=1;fread(&teach[i],sizeof(struct teacher),1,fp)!=0;i++)//读完所有数据        printf("%-6s%8s%8s%10s%5d%7s%20s%10s%18s%8s%5s\\n",teach[i].num,teach[i].name,teach[i].sex,teach[i].birth,teach[i].age,teach[i].marriage,teach[i].address,teach[i].workplace,teach[i].position,teach[i].salarylevel);    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("10.修改工资级别\\n ");    printf("0.返回主菜单\\n ");    printf("========================\\n ");    scanf("%d",&choice);    switch(choice)    {        case 1: printf("请您输入新的编号: ");                scanf("%s",newnum);                strcpy(teach[i].num,newnum);                break;        case 2: printf("请您输入新的姓名: ");                scanf("%s",newname);                strcpy(teach[i].name,newname);                break;        case 3: printf("请您输入新的性别: ");                getchar();                scanf("%s",&newsex);                strcpy(teach[i].sex,newsex);                break;        case 4: printf("请您输入新的出生年月: ");                scanf("%s",newbirth);                strcpy(teach[i].birth,newbirth);                break; case 5: printf("请您输入新的年龄: ");                getchar();                scanf("%d",&newage);                teach[i].age=newage;                break; case 6: printf("请您输入新的家庭住址: ");                getchar();                scanf("%s",&newaddress);                strcpy(teach[i].address,newaddress);                break;        case 7: printf("请您输入新的婚姻状况: ");                scanf("%s",newmarriage);                strcpy(teach[i].marriage,newmarriage);                break;        case 8: printf("请您输入新的所在单位: ");                scanf("%s",newworkplace);                strcpy(teach[i].workplace,newworkplace);                break;        case 9:printf("请您输入新的职称: ");               scanf("%s",newposition);               strcpy(teach[i].position,newposition);               break;        case 10:printf("请您输入新的工资级别: ");               scanf("%s",newsalarylevel);               strcpy(teach[i].salarylevel,newsalarylevel);               break;        case 0:            {              printf("返回主菜单 ");              main();//返回            }        default :printf("输入有错误!请重新输入!");return;    }         printf("\\n==========================================================================================================\\n");    printf("编号      姓 名  性别   出生年月   年龄   婚姻状况     家庭住址         所在单位         职  称    工资级别\\n");    printf("============================================================================================================\\n");    for(i=1;fread(&teach[i],sizeof(struct teacher),1,fp)!=0;i++)//读完所有数据        printf("%-6s%8s%8s%10s%5d%7s%20s%10s%15s%10s%5s\\n",teach[i].num,teach[i].name,teach[i].sex,teach[i].birth,teach[i].age,teach[i].marriage,teach[i].address,teach[i].workplace,teach[i].position,teach[i].salarylevel);     save();//保存修改信息     break;   }   else if(i==N)     {       printf("没有这个职工,为了安全,请再次输入密码!\\n");       change();      }     printf("\\n===================\\n");    printf("1.继续修改\\n2.返回主菜单\\n");    printf("===================\\n");    printf("\\n请您选择:");    scanf("%d",&choice);    switch(choice)    {       case 1:change();break;       case 2:main();break;       default:printf("输入不合法!返回\\n");main();    } } 1.选择功能1,输入三个人的信息,其中一人信息错误,便于使用修改功能 2.选择功能2,显示所有已经录入信息的职工资料、 3.选择功能3,分别按照姓名和编号查询,若输入错误,则有报错提示。 3.选择功能4,将第1步输入错误的职工资料修改正确,随后退出。
