m0_59428143 2021-06-18 09:19 采纳率: 25%
浏览 17
已采纳

职工问题,大神帮帮忙,拜托了

 

  • 写回答

2条回答 默认 最新

  • 关注
    #include<stdio.h>
    #include <string.h>
    #include <stdlib.h>
    struct teach{
        int    xh;
        char   gh[20];
        char   xm[20];
        int    gl;
        char   zc[20];
        double gz;
        char   dh[13];
        struct teach *next;
    };
     
    void menu1();
    void menu2();
    void menuM();
    int  load();
    void creatList(struct teach *head);
    void brow(struct teach *head);
    void find(struct teach *head);
    void findNo(struct teach *head,char no[]);
    void del(struct teach *head,char gh[]);
     
    int main(){
        int  choice;
        char gh[20];
        struct teach *head;
        int  dl=load();
        if(dl==1){
            creatList(head);
            while(1){
                menuM();
                printf("请选择操作(0-5):\n");
                scanf("%d",&choice);
                switch(choice){
                    case 1:
                        brow(head);
                        break;
                    case 2:
                        find(head);
                        break;
                    case 3:
                        printf("请输入工号:\n");
                        scanf("%s",gh);
                        del(head,gh);
                        break;
                    case 4:
                        break;
                    case 5:
                        break;
                    default:
                        return 0;        
                }
                system("pause");
                system("cls");
            }
        }
        return 0;
    }
     
    void del(struct teach *head,char gh[]){
        struct teach *pre,*p;
        if(head==NULL){
            printf("表为空!\n");
            return;
        }
        pre=head;
        p=head->next;
        while(p!=NULL){
            if(strcmp(p->gh,gh)==0){
                pre->next=p->next;
                printf("删除成功!\n");
                printf("序号 工号\t姓名\t工龄\t职称\t工资\t联系方式\n");
                printf("%d   %s\t%s\t%d\t%s\t\t%-6.2f\t\t%-s\n",
                                       p->xh,p->gh,p->xm,p->gl,p->zc,p->gz,p->dh);
                free(p);
                break;
            }
            pre=p;
            p=p->next;
        }
        if(p == NULL) printf("查无此人!\n");
    }
     
    void findNo(struct teach *head,char no[]){
        if(head==NULL){
            printf("表为空!\n");
            return;
        }
        head=head->next;
        printf("序号 工号\t姓名\t工龄\t职称\t工资\t联系方式\n");
        while(head){
            if(strcmp(head->gh,no)==0){
                printf("%d   %s\t%s\t%d\t%s\t\t%-6.2f\t\t%-s\n",
                  head->xh,head->gh,head->xm,head->gl,head->zc,head->gz,head->dh);
                break;
            }
            head=head->next;
        }
        if(head == NULL) printf("查无此人!\n");
    }
     
    void find(struct teach *head){
        int c,tage;
        char no[20];
        while(1){
            printf("**********************************************\n");
            printf("*        1-----------按教工工号信息查询      *\n");
            printf("*        2-----------按教工工龄信息查询      *\n");
            printf("*        0-----------退出                    *\n");
            printf("**********************************************\n");
            printf("请选择(0-2):\n");
            scanf("%d",&c);
            if(c==1){
                printf("gh:");
                scanf("%s",no);
                findNo(head,no);
            }
            else if(c==2){
                printf("gl:");
                scanf("%d",&tage);
                //findTage(head,tage);
            }
            else
                return ;
        }
    }
     
    void menuM(){
        printf("**********************************************\n");
        printf("*        1-----------教工信息浏览            *\n");
        printf("*        2-----------教工信息查询            *\n");
        printf("*        3-----------教工信息删除            *\n");
        printf("*        4-----------教工信息插入            *\n");
        printf("*        5-----------教工信息修改            *\n");
        printf("*        0-----------退出                    *\n");
        printf("**********************************************\n");
    }
    void brow(struct teach *head){
        if(head==NULL){
            printf("表为空!\n");
            return;
        }
        printf("序号 工号\t姓名\t工龄\t职称\t工资\t联系方式\n");
        head=head->next;
        while(head){
            printf("%d   %s\t%s\t%d\t%s\t\t%-6.2f\t\t%-s\n",
                   head->xh,head->gh,head->xm,head->gl,head->zc,head->gz,head->dh);
            head=head->next;
        }
    }
     
    void  creatList(struct teach *head){
        FILE *fp;
        struct teach *tmp,*tail;
        fp=fopen("tea.txt","at+");
        if(fp==NULL){
           printf("Open file fail!\n");
           head=NULL;
           return;
        }
    
        head =(struct teach*)malloc(sizeof(struct teach));
        head->next=NULL;
        tail= head;
        while(1){
            tmp=(struct teach*)malloc(sizeof(struct teach));
            tmp->next=NULL;
            if(fscanf(fp,"%d %s %s %d %s %lf %s",&tmp->xh,tmp->gh,tmp->xm,&tmp->gl,tmp->zc,&tmp->gz,tmp->dh)!=7) break;
            if(head->next==NULL){
                head->next = tmp;
                tail       = tmp;
            }else{
                tail->next=tmp;
                tail = tmp;
            }
        }
        fclose(fp);
        free(tmp);
    }
    void menu1(){
            printf("*************************************\n");
            printf("*********1------------登陆***********\n");
            printf("*********0------------退出***********\n");
            printf("*************************************\n");
    }
    int load(){
        int c=3,dl;
        char name[20],pass[10];
        while(c){
            system("cls");
            menu1();
            printf("请选择(0/1):\n");
            scanf("%d",&dl);
            getchar();
            if(dl==1){
                printf("请输入用户名:\n");
                scanf("%s",name);
                printf("请输入密码:\n");
                scanf("%s",pass);
                c--;
                if(strcmp("aaa",name)==0&&strcmp("123456",pass)==0){//登陆成功创建链表
                        return 1;
                }else if(c!=0){
                        printf("用户名或密码错误,还有%d次机会\n",c);
                        system("pause");
                }
                else
                    return 0;    
            }
            else
             return 0;
        }
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function