嗖瑞,帮我改好有halfof100的¥我用c语言写的半成品职工管理,还请大家验收下,改正错误?

下面所有板块合起来就是我的代码了,我知道很糟糕,但是还是希望有老 师可以帮我指出错误,虽然今天改不好就要挂科了但是艾不行下次再来,不混。

第一板块

//定义各文件 函数 并显示主菜单
#include<stdio.h>
#include <stdlib.h>
#include<string.h>

//职工数据结构体 
struct Worker    
{    //6个属性 
    char  num[20];                 //工号  
    char name[20];              //姓名 
    char inday[20];             //入厂年月日
    char department[20];    //工作部门 
    char  job[20];           //职称 
    char  salary[20] ;        //工资 计算平均要用到字符串转整数型 
}worker,w[200];//定义结构体数组 

//根据数据结构体定义职工链表结构体 
typedef struct node
{
    struct Worker worker;
    struct node *next;//前节点 
    struct node *prior;//后节点 
}Node; 



 
int getMeun(Node *worker);         //获取菜单 
int addWorker(Node *worker);    //增加职工
int delWorker(Node *worker);     //删除职工
int querWorker(Node *worker);     //查询职工
int revWorker(Node *worker);     //修改职工
int saveFile (Node* worker);    //存储到文件中 
int saveNode (Node* worker);     //输出排序好的链表但不更改文件
int readFile(Node *worker);        //读取文件信息 
int next(Node* worker);            //下一步 
int querNum(Node *worker);

int main()
{
    Node *worker;
    worker=(Node*)malloc(sizeof(Node)); //创建头结点 
    worker->next=worker->prior=NULL;//开始都是空 
    system("color 3f");//底色 
    readFile(worker);    //读取文件 
    getMeun (worker);   //获取主菜单 
    return 0;
}    
    
//主菜单
int getMeun (Node *worker)   
{
    int choose=0 ;
    printf("********************************************************************************************\n");
    printf("\t欢 迎来到职工管理系统\n"); 
    printf("\t1. 新增职工\n");
    printf("\t2. 删除职工\n");
    printf("\t3. 查询职工\n");
    printf("\t4. 修改职工\n");
    printf("\t0. 退出系统\n");
    printf("********************************************************************************************\n");
    printf("\t请输入操作数字\n");
    scanf("%d",&choose);
    switch(choose) 
    {
    case 1:
        system("cls");
        printf("********************************************************************************************\n");
        printf("欢 迎进入新增职工页面\n");
        printf("********************************************************************************************\n");
        addWorker(worker);  
        saveFile(worker);
        next(worker); 
        break;
    case 2:
        system("cls");
        printf("********************************************************************************************\n");
        printf("欢 迎进入删除职工页面\n");
        printf("********************************************************************************************\n");
        delWorker(worker);
        saveFile(worker);
        next(worker);
        break;
    case 3:
        system("cls");
        printf("********************************************************************************************\n");
        printf("欢 迎进入查询职工页面\n");
        printf("********************************************************************************************\n");
        querWorker(worker);
        next(worker);
        break;
    case 4:
        system("cls");
        printf("********************************************************************************************\n");
        printf("欢 迎进入修改职工页面\n");
        printf("********************************************************************************************\n");
        revWorker(worker);
        saveFile(worker);
        next(worker);
        break;
    case 0:
        exit(0);
    default:
        system("cls");//清屏 
        getMeun(worker);  //递归 
    }
}

第二板块


//1.增加职工
int addWorker (Node *worker)    
{    char addNum[20],addName[20],addJob[20],adddepartment[20];
    int num=0,i;
    Node *p,*q,*pre,*k;
    q=pre=worker;    //头结点不存储数据 
    k=worker->next;
//    if(q->next !=NULL) 
//    {
//        pre=q;
//        q=q->next; 
//        q->prior=pre;
//    }
    p=(Node *)malloc(sizeof(Node));
    printf("请依次输入数据:\n"); 
    printf("工号:\n");
    scanf("%s",&p->worker.num);
        //这里要插入函数效验工号格式(规定格式为一个大写字母加四位数字,如果一个大写字母对应某一个部门怎么办?后面关于工号和部门还要修改说明?,这里我晕的一塌糊涂),见第三板块代码
    //对工号进行判断是否重复 ,循环多次判断 (这里可以运行并且判断出来)由第三板块如果输入工号格式正确的话可以并入到效验函数里
     while(k!=NULL)
     {
         if(strcmp(p->worker.num ,k->worker.num)==0)
         {
             printf("该工号已存在,请重新输入工号\n");
            scanf("%s",p->worker.num);
            k=worker;             //指回头结点,再次遍历判断 
        }
            k=k->next;    
    }
    printf("姓名:\n");
    scanf("%s",&p->worker.name);
        //这里要插入函数效验姓名格式(规定只能是中文),见第三板块代码
    //对姓名进行判断 ,循环多次判断(这里可以运行但是判断 不出来)
    while(k!=NULL)
     {
         int choose;
         if(strcmp(p->worker.name ,k->worker.name)==0)
         {
             
             printf("姓名重复,请确认是否输入\n");
             printf("确认:1  否认:0 \n");
             scanf("%d",&choose);
             if(choose==0)
             {
                 printf("请重新输入姓名:\n");
                 scanf("%s",p->worker.num);
                 k=worker; //指回头结点,再次遍历判断 
                 k=k->next;
             } 
                        
        }
                
    }
    printf("入厂年月日:\n");
    scanf("%s",&p->worker.inday);
    //这里要插入函数效验日期格式,错误的话依旧要查询输入,见第三板块代码(不知道如何调用使用) 
    printf("职务:\n");
    scanf("%s",&p->worker.job);
        //这里要检验职务输入是否是公司已有的职务位置(如何设定已有职务,已有职务都是从文件读取的职工信息而取得
        //但一开始文件是空的,需要手动输入职工信息),如果公司没有,请确认是重新输入还是添加该职务(完全没有头绪)
    printf("工作部门:\n");
    scanf("%s",&p->worker.department);
    
/*    while(k!=NULL)
                        {    
                    if((strcmp(p->worker.name,pre->worker.num) > 0 )||( strcmp(p->worker.name,q->worker.num) < 0 ))
                    {
                        int i; 
                        printf("该部门不存在!请选择添加重新输入:");
                        printf("添加该部门:1   重新输入:2") ;
                        
                            
                                    
                                    scanf("%d",&i);
                                    if(i==1)
                                    {
                                    
                                                printf("添加成功");
                                    
                                        continue; 
                                    }
                                    else
                                    {
                                        
                                        printf("不添加该部门。返回重新输入。");
                                        return i==2; 
                                    } 
                                    if(i==2);
                                    {
                                            scanf("%s",&p->worker.department);
                                    }
                        
                        
                        
                    }
                    else continue;
                    p=p->next;
                }*/
    printf("工资:\n");
//这里要判断工资输入是否合理,工资范围为4000-16000;不合理同样要重新输入(不知这里是使用循环判断还是写一个效验函数来调用)
    scanf("%s",&p->worker.salary);
 
     
     
    printf("新增职工信息如下:\n\n");
    printf("工号\t姓名\t入厂年月\t职称\t工作部门\t工资 \n"); 
    printf("%s\t%s\t\t%s\t%s\t\t%s\t%s\n",
    p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
    

            while(q!=NULL)
        {
            //大于前结点而且小于后结点,插入于中间 
            if( (strcmp(p->worker.name,pre->worker.num) > 0 )&&( strcmp(p->worker.name,q->worker.num) < 0 ) )
            {
                p->next=q;
                p->prior=q->prior;
                q->prior=p;
                p->prior->next=p;
                break;
            }    
            //插入于最后一个的后面    
            if( (q->next==NULL)&& ( strcmp(p->worker.name,pre->worker.num) > 0 ))
            {
                q->next=p;
                p->prior=q;
                p->next=NULL;
                break;
            }
            pre=q;
            q=q->next; 
            q->prior=pre;        
        }             
    
}

第三板块

//1.这里要写 插入函数效验工号格式(规定格式为一个大写字母加四位数字,如果一个大写字母对应某一个部门怎么办?后面关于工号和部门还要修改说明?,这里我晕的一塌糊涂)
//这里写到 效验工号格式的代码  但是我还是不知道如何用作调用函数到第二板块里
#include <stdio.h>
#include <string.h>
//按照你要求的第一个大写字母+后四位数
int isValid(char* buf)
{
  int i;
  if(strlen(buf) != 5) //长度不匹配,直接退出
  {
    printf("长度不符合\n");
    return 0;//
  }
  if(buf[0] <'A' || buf[0] > 'Z')
  {
    printf("第一个字符不是大写字母\n");
    return 0; //第一个字符不是大写字母,退出
  }
  for(i=1;i<5;i++)
    if(buf[i] < '0' || buf[i] > '9')
    {
      printf("第2-5位中有非数字字符\n");
      return 0;
    }
  //上面的条件都满足,则说明输入符合要求
  printf("输入符合要求\n");
  return 1;
}
 
int main()
{
  char buf[100]={0};
  gets(buf); //读取字符串
  if(isValid(buf))
    //输入合法时的处理,即输入添加职工的工号格式正确,检验工号是否重复
  else
    //输入不合法的处理,即工号格式错误,需重新输入工号直到合格
  return 0;
}

//2.这里是要写效验姓名函数 已知以下代码可以判断姓名格式输入是否正确
//但是我还不会,不知道怎么写,要效验姓名只能是中文才正确,否则要重新输入姓名并且再效验 

//3.这是可以效验日期格式的代码 但是如何调用到板块二里效验呢
//定义一个表示日期的结构体类型struct Date
struct Date
{
    int year;
    int month;
    int day;
}date;
//用typedef重新定义新类型名Date
typedef struct Date Date;


//检查日期是否有效函数
//int checkDate(Date date);
int checkDate(Date date)
{
    int y = 0;
    //判断月份是否为31天
    if (date.month == 1 || date.month == 3 || date.month == 5 || date.month == 7 || date.month == 8 || date.month == 10 || date.month == 12)
        y = 1;
    //判断月份是否为30天
    if (date.month == 4 || date.month == 6 || date.month == 9 || date.month == 11)
        y = 4;
    //月份为2月时(需要判断闰年)
    if (date.month == 2)
    {
        if ((date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0)
            y = 2;
        else
            y = 3;
    }
    if (date.year < 1900 || date.year>2020)
        return 0;
    else if (date.month < 1 || date.month>12)
        return 0;
    else if (y == 1 && (date.day < 1 || date.day>31))
        return 0;
    else if ((y == 4) && (date.day < 1 || date.day>30))
        return 0;
    else if ((y == 2) && (date.day < 1 || date.day>29))
        return 0;
    else if ((y == 3) && (date.day < 1 || date.day>28))
        return 0;
    else
        return 1;
}






//4.以下是我写的用来判断工作部门输入时面对的情况以及处理,但是貌似好像不可以运行也有许多错误
while(k!=NULL)
{    if((strcmp(p->worker.name,pre->worker.num) > 0 )||( strcmp(p->worker.name,q->worker.num) < 0 ))
    {
        int i; 
        printf("该部门不存在!请选择添加重新输入:");
        printf("添加该部门:1   重新输入:2") ;scanf("%d",&i)
        if(i==1)
          {
        
        printf("添加成功");
                                    
            continue; 
        }
            else
          {
                                        
        printf("不添加该部门。返回重新输入。");
        return i==2; 
          } 
        if(i==2);
        {
            scanf("%s",&p->worker.department);
        }
                        
                        
                        
    }
    else continue;
    p=p->next;
}

第四板块

//这里按工号删除没什么问题,因为工号是惟一的
//但是按姓名删除就运行不是很对,只能搜查出相同姓名的职工里在文件里排在较前的职工(另一职工的信息搜索不出来),然后对其可以进行删除
//2.删除职工
int delWorker(Node *worker)        
{
    Node *p,*r;
    char delnum[20],delname[20];
    int delChoose,confirmChoose;
    p=worker->next;
    
    if( p==NULL)
    {
        printf("目前没有资料\n"); 
    }

    else
    {
        printf("按职工工号删除: 1\n");
        printf("按职工姓名删除: 2\n");
        printf("删除所有职工信息:   3\n"); 
        printf("********************************************************************************************\n");
        scanf("%d",&delChoose);
            if(delChoose==1 ) 
            {
                int num=0; 
                printf("请输入要删除职工的工号\n"); 
                scanf("%s",&delnum);
                while(p!=NULL)
                {    
                    if(strcmp(p->worker.num,delnum)==0)
                    {
                        num++;
                        printf("工号\t姓名\t入厂年月\t职称\t工作部门\t工资 \n"); 
                        printf("%s\t%s\t\t%s\t%s\t\t%s\t%s\n",
                        p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                        printf("您是否删除%s\n\n",p->worker.name);
                        
                        printf("确认删除:1,取消删除:2\n");
                        scanf("%d",&confirmChoose);
                        if(confirmChoose==1)
                        {
                            printf("%s删除成功\n",p->worker.name); 
                            //删除该节点 
                                if(p!=NULL)
                                {
                                    r=worker;
                                    while (r->next!=p)
                                    {
                                        r=r->next;    
                                    }
                                    r->next=r->next->next;    
                                }
                                saveFile(worker);
                        }
                        else if(confirmChoose==2)
                        {
                            printf("您已取消操作\n"); 
                            break;
                        }
                        break;
                    }
                    else
                    {
                        if(p->next==NULL&&num==0)
                        {
                            printf("该职工不存在\n"); 
                        }    
                    }
                    p=p->next;    
                }
                
                
            }//delChoose==1
            else if (delChoose==2 )
            {
                printf("请输入要删除职工的姓名\n"); 
                scanf("%s",&delname);
                int num=0; 
                
                while(p!=NULL)
                {    
                    if(strcmp(p->worker.name,delname)==0)
                    {
                        num++;
                                
                                if(num==1)
                                {
                                    printf("找到该职工,其信息如下:"); 
                                    printf("工号\t姓名\t入厂年月日\t职称\t工作部门\t工资 \n"); 
                                    printf("%s\t%s\t%s\t%s\t\t%s\t%s\n",
                                    p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                    printf("您是否删除%s\n",p->worker.name);
                                        printf("确认删除:1,取消删除:2\n");
                                        scanf("%d",&confirmChoose);
                                        if(confirmChoose==1)
                                        {
                                            printf("%s删除成功\n",p->worker.name); 
                                        
                                    
                                        //删除该节点 
                                            if(p!=NULL)
                                            {
                                                r=worker;
                                                while (r->next!=p)
                                                {
                                                    r=r->next;    
                                                }
                                                r->next=r->next->next;    
                                            }
                                            saveFile(worker);
                                        }
                                        else if(confirmChoose==2)
                                        {
                                            printf("您已取消操作\n"); 
                                            break;
                                        }
                                        break;
                                            
                                    }
                                if(num>=2)
                                {
                                    printf("请输入你要删除的职工的工号:");
                                    scanf("%s",p->worker.num) ;
                                    printf("您是否删除%s\n",p->worker.name);
                                    printf("确认删除:1,取消删除:2\n");
                                    scanf("%d",&confirmChoose);
                                    if(confirmChoose==1)
                                    {
                                        printf("%s删除成功\n",p->worker.name); 
                                    
                                
                                    //删除该节点 
                                        if(p!=NULL)
                                        {
                                            r=worker;
                                            while (r->next!=p)
                                            {
                                                r=r->next;    
                                            }
                                            r->next=r->next->next;    
                                        }
                                        saveFile(worker);
                                    }
                                    else if(confirmChoose==2)
                                    {
                                        printf("您已取消操作\n"); 
                                        break;
                                    }
                                    break;
                                }
                        
                    }
                    else
                    {
                        if(p->next==NULL&&num==0)
                        {
                            printf("该职工不存在\n"); 
                        }    
                    }
                    p=p->next;    
                }
            }//delChoose==2 
        
            else if (delChoose==3 )
            {
                worker=NULL;
                printf("所有人员信息已经删除!");
            
            }
        
        
        
        
    }
    

};

可以,把定义的函数实现

这个格式可以调整下...

第五板块

//3.查询职工
int querWorker(Node *worker)//查询职工函数    
{
    
    int querChoose,flag;
    double averSalary;  
    Node *p=worker->next;
    
    if( p==NULL)
    {
        printf("目前没有资料\n"); 
    }
    while(p!=NULL)//下面用switch语句 解决else if过多问题
    {    
        printf("********************************************************************************************\n");
        printf("\t欢迎进入 职工查询 页面\n"); //查询菜单
        printf("\t1. 工号查询 页面\n");
        printf("\t2. 姓名查询 页面\n");
        printf("\t3. 职务查询 页面\n");
        printf("\t4. 工作部门查询 页面\n");
        printf("\t5  所有职工信息 页面\n");
        printf("\t6. 查询平均工资 页面\n"); 
        printf("\t7. 回到查询页面\n"); 
        printf("\t0.  回到主菜单 \n");
        printf("********************************************************************************************\n");
        printf("\t请输入操作数字0~7:\n");
        scanf("%d",&querChoose);
        switch(querChoose) 
        {
            
            case 1: 
                system("cls");
                printf("********************************************************************************************\n");
                printf("欢迎进入 工号查询职工 页面\n");
                printf("********************************************************************************************\n");
                querNum(worker);//调用工号查询函数 
                next(worker);
                break;
            case 2: 
                system("cls");
                printf("********************************************************************************************\n");
                printf("欢迎进入 姓名查询职工 页面\n");
                printf("********************************************************************************************\n");
                querName(worker);//调用姓名查询函数 
                next(worker);
                break;
            case 3: 
                system("cls");
                printf("********************************************************************************************\n");
                printf("欢迎进入 职务查询职工 页面\n");
                printf("********************************************************************************************\n");
                querJob(worker);//调用职务查询函数 
                next(worker);
                break;
                
            case 4: 
                system("cls");
                printf("********************************************************************************************\n");
                printf("欢迎进入 工作部门查询职工 页面\n");
                printf("********************************************************************************************\n");
                querdepartment(worker);//调用工作部门查询函数 
                next(worker);
                break;
            case 5:
                system("cls");
                printf("********************************************************************************************\n");
                printf("欢迎进入 所有职工信息 页面\n");
                printf("********************************************************************************************\n");
                output(worker);
                next(worker);
                getMeun(worker);
                break; 
            case 6:
                system("cls");
                printf("********************************************************************************************\n");
                printf("欢迎进入 查询平均工资 页面 页面\n");//这个相应还是还没有写,不知道用总职工/数组工资还是将字符串类型的工资转换成整形然后写一个调用函数
                printf("********************************************************************************************\n");
        //    
                next(worker);
                getMeun(worker);
                break; 
            case 7: 
                system("cls");
                 querWorker(worker); 
                 
            case 0:
                system("cls");
                getMeun(worker);
            default:
                system("cls");//清屏
                querWorker(worker); 
        }
    } 
};    
        
        
        
        
        
        



    
        
        
        
        
        
int  output(Node *worker)//显示所有职工信息 
{
    FILE *fp;  //创建一个文件指针*fp
    char ch;
    fp=fopen("D:\\职工信息资料.txt","r");   //以只读方式打开D:\data.txt文件
    if(fp==NULL)    
        printf("can not open!\n");  //如果fp指针指向为空,即文件为空,则输出can not open
    else{
        //读取字符:fscanf(fp,"%c",&ch),ch=fgetc(fp);
        fscanf(fp,"%c",&ch);   //读取字符
        while(!feof(fp)){      //feof()这个函数是用来判断指针是否已经到达文件尾部的,此处即如果没有到达末尾循环
        putchar(ch);           //输出
        fscanf(fp,"%c",&ch);   //再次读取字符
        }
        fclose(fp);   //关闭文件
     }
    printf("\n");
}


//工号查询职工
int querNum(Node *worker)
{    char querNum[20];
    int num=0; 
    Node *p=worker->next;
    printf("请输入工号 查询职工:\n");
    scanf("%s",&querNum);
    //这里插入检验工号的函数(工号格式为A1003或B1034) 

    while(p!=NULL)
    {    
        if(strcmp(p->worker.num,querNum)==0)
        {
            num++;
            if(num==1)
            {
                printf("该职工信息如下") ;
                printf("********************************************************************************************\n");
                printf("工号\t姓名\t入厂年月日\t职称\t工作部门\t工资 \n"); 
            }     
            printf("%s\t%s\t%s\t\t%s\t%s\t%s\n",
            p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
        }
        else
        {
            if (p->next==NULL&&num==0)
            {
                printf("未找到职工\n");
            }
        }
        p=p->next;
    }    
};


//姓名查询职工
int querName(Node *worker)
{    char  querName[20]; 
    int num=0;
     Node *p=worker->next;
    printf("请输入要查询的职工姓名:\n")    ;
     scanf("%s",&querName);
         
    //插入姓名检验函数(只能中文)
    while(p!=NULL)
    {    
        if(strcmp(p->worker.name,querName)==0)
        {
            num++;
            if(num==1)
            {
                printf("找到该职工信息如下") ;
                printf("********************************************************************************************\n");
                printf("工号\t姓名\t入厂年月日\t职称\t工作部门\t工资 \n"); 
            } 
                printf("%s\t%s\t%s\t%s\t%s\t%s\n",
            p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
        }
        else
        {
            if (p->next==NULL&&num==0)
            {
                printf("未找到该职工\n");
            }
        }
        p=p->next;
    }    
} ;


//职务查询职工
int querJob(Node *worker)
{    char querJob[20]; 
    int num=0 ;
    Node *p=worker->next;
    printf("请输入要查询的职工职称:\n")    ;
    scanf("%s",&querJob);            
    while(p!=NULL)
    {    
        if(strcmp(p->worker.job,querJob)==0)
        {
            num++;
            if(num==1)
            {
                printf("********************************************************************************************\n");
                printf("工号\t姓名\t入厂年月日\t职称\t工作部门\t工资 \n"); 
            } 
            printf("%s\t%s\t%s\t%s\t%s\t%s\n",
            p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
        }
        else
        {
            if (p->next==NULL && num==0)
            {
                printf("未找到该职工\n");
            }
        }
        p=p->next;
    }
};
    
//工作部门查询职工
int querdepartment(Node *worker) 
{    char querdepartment[20]; 
    int num=0 ;
    Node *p=worker->next;
    printf("请输入要查询工作部门:\n");
    scanf("%s",&querdepartment);            
    while(p!=NULL)
    {    
        if(strcmp(p->worker.department,querdepartment)==0)
        {
            num++;
            if(num==1){
                printf("********************************************************************************************\n");
                printf("工号\t姓名\t入厂年月日\t职称\t工作部门\t工资 \n"); 
            } 
            printf("%s\t%s\t%s\t%s\t%s\t%s\n",
            p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
        }
        else
        {
            if (p->next==NULL && num==0)
            {
                printf("未找到该职工\n");
            }
        }
        p=p->next;
    }        
};

第六板块

//修改职工

/4.修改职工
int revWorker(Node *worker)    
{
    char revnum[20],revname[20]; 
    int revChoose ; 
    Node *p=worker->next; 
    
    if( p==NULL)
    {
        printf("目前没有资料\n"); 
    }
    else
    {            
               //显示原信息 
                querNum(worker);
            
            
                //修改信息 
                
                printf("********************************************************************************************\n");
                printf("\t欢迎进入 职工修改 页面\n"); 
                printf("\t1. 修改工号\n");
                printf("\t2. 修改姓名\n");
                printf("\t3. 修改职务\n");
                printf("\t4. 修改工作部门\n");
                printf("\t5. 修改入厂年月日\n") ;
                printf("\t6. 修改职工的全部信息  页面\n"); // 
            
                printf("\t0.  回到 主菜单 \n");
                printf("********************************************************************************************\n");
                printf("\t请输入操作数字\n");
                scanf("%d",&revChoose) ;
            /*    if(revChoose==1 || revChoose==2 || revChoose==3 || revChoose==4 || revChoose==5 || revChoose==6|| revChoose==0)
                {
                    return 1;
                }
                else 
                {
                    printf("输入有误,请重新输入操作数字:");
                     scanf("%d",&revChoose) ;
                     
                     
                }*/
                    switch(revChoose) 
                {
                    
                    case 1: 
                        system("cls");
                        printf("********************************************************************************************\n");
                        printf("欢迎进入 修改工号 页面\n");
                        printf("********************************************************************************************\n");
                        revNum(worker);//调用工号查询函数 
                        saveFile(worker);
                        next(worker);
                        getMeun(worker);
                        break;
                    case 2: 
                        system("cls");
                        printf("********************************************************************************************\n");
                        printf("欢迎进入 修改姓名 页面\n");
                        printf("********************************************************************************************\n");
                        revName(worker);//调用姓名查询函数 
                        saveFile(worker);
                        next(worker);
                        break;
                    case 3: 
                        system("cls");
                        printf("********************************************************************************************\n");
                        printf("欢迎进入 修改职务 页面\n");
                        printf("********************************************************************************************\n");
                        revJob(worker);//调用职务查询函数 
                        saveFile(worker);
                        next(worker);
                        break;
                        
                    case 4: 
                        system("cls");
                        printf("********************************************************************************************\n");
                        printf("欢迎进入 修改工作部门 页面\n");
                        printf("********************************************************************************************\n");
                        revdepartment(worker);//调用工号查询函数 
                        saveFile(worker);
                        next(worker);
                        break;
                    case 5:
                        system("cls");
                        printf("********************************************************************************************\n");
                        printf("欢迎进入 修改入厂年月日 页面\n");
                        printf("********************************************************************************************\n");
                        revData     (worker) ;
                        saveFile(worker);
                        next(worker);
                        break;
                    
                    case 6:
                        system("cls");
                        revWorker(worker);
                    case 0:
                        system("cls");
                        getMeun(worker);
                    default:
                        system("cls");//清屏
                        revWorker(worker); 
                }
                
    }
            saveFile(worker);    
};        

int revNum(Node *worker)//修改工号函数 
                {
                    char  revNum[20]; 
                        int num=0;
                         Node *p=worker->next;
                        printf("请输入新工号:\n");
                        scanf("%s",p->worker.num);
                        //这里要插入工号格式效验函数 testNum
                        while(p!=NULL)
                        {    
                            if(strcmp(p->worker.num,revNum)==0)
                            {
                                num++;
                                if(num==1)
                                {
                                    printf("该工号已存在,请重新输入:"); 
                                    
                                    scanf("%s",p->worker.num);
                                } 
                                    
                            }
                            else
                            {
                                
                                printf("修改成功");
                                printf("修改后职工信息如下:\n\n");
                                printf("工号\t姓名\t入厂年月日t\t职称\t工作部门\t\t工资 \n"); 
                                printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                break; 
                                 
                            }
                            p=p->next;
                        }    
                }; 
                
                
                    int revName(Node *worker)//修改姓名函数 
                {
                    char  revName[20]; 
                        int num=0;
                         Node *p=worker->next;
                        printf("请输入新的姓名:\n")    ;
                        scanf("%s",p->worker.name);
                        //这里要插入姓名格式效验函数 testNum
                        while(p!=NULL)
                        {    
                            if(strcmp(p->worker.name,revName)==0)
                            {
                                num++;
                                if(num==1)
                                {
                                    int i;
                                    printf("该姓名已存在,请确认是否输入:"); 
                                    printf("是:1   否:0\n") ; 
                                    scanf("%d",&i);
                                    if(i==1)
                                    {
                                    
                                                printf("修改成功");
                                        printf("修改后职工信息如下:\n\n");
                                        printf("工号\t姓名\t入厂年月日\t\t职称\t工作部门\t\t工资 \n"); 
                                        printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                        p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                        break; 
                                    }
                                    else
                                    {
                                        
                                    printf("不添加该职工。返回修改页面。");
                                    revWorker(worker); 
                                    }
                                } 
                                    
                            }
                            else
                            {
                                printf("修改成功");
                                        printf("修改后职工信息如下:\n\n");
                                        printf("工号\t姓名\t入厂年月日\t\t职称\t工作部门\t\t工资 \n"); 
                                        printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                        p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                        break; 
                                
                                 
                            }
                            p=p->next;
                        }    
                };
                
                
                    int revJob(Node *worker)//修改职务函数 
                {
                    char  revJob[20]; 
                        int num=0;
                         Node *p=worker->next;
                        printf("请输入新职务:\n");
                        scanf("%s",&p->worker.job);
                        //这里要插入职务格式效验函数 testNum
                        while(p!=NULL)
                        {    
                            if(strcmp(p->worker.job,revJob)==0)
                            {
                                num++;
                                if(num==1)
                                {
                                     
                                        
                                        printf("修改成功");
                                    printf("修改后职工信息如下:\n\n");
                                    printf("工号\t姓名\t入厂年月日\t\t职称\t工作部门\t\t工资 \n"); 
                                    printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                    p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                break; 
                                } 
                                    
                            }
                            else
                            {
                                int i;
                                printf("该职务不存在,请选择是否添加");
                                printf("是:1   否:0\n") ; 
                                scanf("%d",&i);
                                    if(i==1)
                                    {
                                        printf("请输入添加的职务:");
                                        scanf("%s",&p->worker.job);
                                    }
                                    else if(i==0)
                                    {
                                    
                                    printf("不修改该职工职务。返回修改页面。");
                                    revWorker(worker);
                                    }
                                    else
                                    {
                                        printf("输入错误,请重新选择");
                                        scanf("%d",&i);
                                    }
                                    
                                     printf("添加成功");
                                    printf("修改后职工信息如下:\n\n");
                                    printf("工号\t姓名\t入厂年月日\t\t职称\t工作部门\t\t工资 \n"); 
                                    printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                    p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                break; 
                                
                                
                                
                                 
                            }
                            p=p->next;
                        }    
                }; 
                
                
                
                int revdepartment(Node *worker)//修改工作部门函数 
                {
                    char  revdepartment[20]; 
                        int num=0;
                         Node *p=worker->next;
                        printf("请输入新工作部门:\n");
                        scanf("%s",p->worker.department);
                        //这里要插入职务格式效验函数 testNum
                        while(p!=NULL)
                        {    
                            if(strcmp(p->worker.department,revdepartment)==0)
                            {
                                num++;
                                if(num==1)
                                {
                                     
                                        
                                    printf("修改成功");
                                    printf("修改后职工信息如下:\n\n");
                                    printf("工号\t姓名\t入厂年月日\t\t职称\t工作部门\t\t工资 \n"); 
                                    printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                    p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                
                                } 
                                    
                            }
                            else
                            {
                                printf("该部门不存在,请重新输入:");
                                scanf("%s",p->worker.department);
                                
                                 printf("添加修改成功");
                                    printf("修改后职工信息如下:\n\n");
                                    printf("工号\t姓名\t入厂年月日\t\t职称\t工作部门\t\t工资 \n"); 
                                    printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                    p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                            }
                            p=p->next;
                        }    
                }; 
                
                int revData(Node *worker)//修改日期函数 应该是有错误的但不知道为什么
                {
                    char  revData[20]; 
                        int num=0,i;
                         Node *p=worker->next;
                        
                        do //检验日期格式 
                        {
                            printf("请输入新入厂年月日:\n");
                            scanf("%s",p->worker.num);
                            num=checkDate(date);        //这里要插入工号格式效验函数 testNum
                        } while(num==0);
                        if(num)
                        printf( "日期格式正确") ; 
                        return 0; 
                        printf("请确认修改输入该日期,是:1  否:0");
                        scanf("%d",&i);
                        if(i==1)
                        {
                            printf("修改成功");
                                    printf("修改后职工信息如下:\n\n");
                                    printf("工号\t姓名\t入厂年月日\t\t职称\t工作部门\t\t工资 \n"); 
                                    printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                    p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                        }
                        else if(i==0)
                        {
                            printf("不修改日期,返回修改页面");
                            revWorker(worker);
                            getMeun(worker);
                        }
                        else
                        {
                            printf("输入错误,返回主菜单") ;
                            getMeun(worker); 
                        }
                         
                        
                }; 
                
                    int revall(Node *worker)
                    {
                        char revnum[20]; 
                        int revChoose ; 
                        Node *p=worker->next; 
                            if( p!=NULL)
                            {
                                printf("请输入要修改的职工工号\n");
                                scanf("%s",&revnum);
                                int num=0 ;
                                while(p!=NULL)
                                {
                                    if(strcmp(p->worker.num,revnum)==0)
                                    {
                                                num++ ; 
                                            //显示原信息 
                                            printf("找到该职工,其信息如下\n");
                                            printf("工号\t姓名\t入厂年月\t\t职称\t工作部门\t\t工资 \n"); 
                                            printf("%s\t%s\t%s\t%s\t%s\t%s\n",
                                            p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                        
                                            //修改信息 
                                            printf("\n请依次输入数据进行修改:\n"); 
                                            
                                            printf("工号:\n");
                                            scanf("%s",&p->worker.num);
                                            printf("姓名:\n");
                                            scanf("%s",&p->worker.name);
                                            printf("入厂年月:\n");
                                            scanf("%s",&p->worker.inday);
                                            printf("职称:\n");
                                            scanf("%s",&p->worker.job);
                                            printf("工作部门:\n");
                                            scanf("%s",&p->worker.department);
                                            printf("工资:\n");
                                            scanf("%s",&p->worker.salary);
                                            
                                            //修改后信息 
                                            printf("修改职工信息如下:\n\n");
                                            printf("工号\t姓名\t入厂年月\t\t职称\t工作部门\t\t工资 \n"); 
                                            printf("\n%s\t%s\t%s\t\t%s\t%s\t%s\n",
                                            p->worker.num,p->worker.name,p->worker.inday,p->worker.job,p->worker.department,p->worker.salary);
                                            break;
                                            
                                    }
                                    else
                                    {
                                        if (p->next==NULL&&num==0)
                                        {
                                            printf("未找到该职工\n");
                                        }
                                    }
                                        p=p->next;     
                                    
                                }
                            }
                        
                    };