大大通 2019-03-14 15:55 采纳率: 100%
浏览 460
已采纳

简单的使用链表的系统,为什么无法实现数据输入功能?

我是一个c语言萌新,这里我做了个简单的使用链表的系统,在输入数据之后无法在后面操作中找出数据,找了很久都找不到哪里出错,希望能够得到解答。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
    char name[20];                       //姓名
    char age[3];                            //年龄
    char native[20];                        //籍贯
    char sex[20];                          //性别
    char phone[20];                      //联系电话 
    char pro[50];                          //专业 
    char pos[50];                       //报考职位 
    char yeargra[4];                        //毕业年份 
    char pol[50];                          //政治面貌 
    int number;                          //考生编号 
}table;
typedef struct List
{
    table data;
    struct List *next;
}list;
int meau_1();
int meau_2();
int meau_3();
int meau_4();
void read_file(list *);
void meau_total(list *);
void add_one_list(list *);
void del_one_list(list *,int);
void mod_one_list(list *,int);
void out_one_list(list *,int);
void out_all_list(list *);
void out_nape_list(list *,int);
void write_file(list *);

int main()
{
    list *head;
    head=(list *)malloc(sizeof(list *));
    head=NULL;
    read_file(head);
    meau_total(head);
    return 0;
}

void meau_total(list *head)
{   
    int n,m,k,nap;
    for(m=meau_1();m!=3;m=meau_1()) //菜单一 选择合法用户 
    {
        if(m==1)    //菜单二 选择查询考生信息 
        {
            for(n=meau_2();n!=3;n=meau_2())//查询单一考生信息 
            {
                if(n==1)
                {   
                     printf("请输入考生编号:");//输入考生编号 
                     scanf("%d",&n);
                     out_one_list(head,n);//输出考生信息 
                }
                if(n==2)//浏览所有考生信息  
               out_all_list(head);//输出所有考生信息 
            }                                
       }
       if(m==2)
       {
            for(n=meau_3();n!=5;n=meau_3())
            {   
                if(n==1)
                {
                    for(k=meau_4();k!=4;k=meau_4())                                         
                    {   
                        if(k==1)//查询单一考生信息 
                        {
                            printf("请输入考生编号:");//输入考生编号 
                            scanf("%d",&n);
                            out_one_list(head,n);//输出考生信息 
                        }
                        if(k==2)
                        {
                            printf("\t1--姓名  2--年龄      3--籍贯      4--性别      5--联系电话\n");
                            printf("\t6--专业  7--报考职位  8--毕业年份  9--政治面貌  10-考生编号\n");
                            printf("请输入需要查询的项:");
                            scanf("%d",&nap);
                            out_nape_list(head,nap);
                        }
                        if(k==3)
                            out_all_list(head);
                        if(k==5)
                            exit(0);
                    }
                }  
                if(n==2)
                {
                    printf("请输入要插入的考生的信息:\n");                //输入插入考生信息 
                    add_one_list(head); 
                }
                if(n==3)
                {
                    printf("请输入要修改的考生的编号:");                                          //输入修改考生编号 
                    scanf("%d",&n);
                    mod_one_list(head,n);                   
                }
                if(n==4)
                {
                    printf("请输入要删除的考生的编号:");            //输入删除考生编号
                    scanf("%d",&n);
                    del_one_list(head,n); 
                }
            }               
       }
    }
    write_file(head);
} 

int meau_1()
{
    int i;
    while(1)
    {
        system("cls"); 
        printf("\n\t\t\t 公务员管理系统\n\n");
        printf("\t\t **********************************************\n\n");
        printf("\t\t 1--合法用户 2--管理员\n\n");
        printf("\t\t 3--退出系统\n\n");
        printf("\t\t **********************************************\n\n");
        printf("请选择(1-3): ");
        scanf("%d",&i);
        if(i<4&&i>=1)break;
    }
    return i;
}

int meau_2()
{
    int i;
    while(1)
    {
        system("cls"); 
        printf("\n\t\t\t 公务员管理系统(合法用户栏)\n\n");
        printf("\t\t **********************************************\n\n");
        printf("\t\t 1--查询考生信息 2--浏览考生信息\n\n");
        printf("\t\t 3--返回上一层\n\n");
        printf("\t\t **********************************************\n\n");
        printf("请选择(1-): ");
        scanf("%d",&i);
        if(i<4&&i>=1)break;
    }
    return i;
}

int meau_3()
{
    int i;
    while(1)
    {
        system("cls"); 
        printf("\n\t\t\t 公务员管理系统(管理员栏)\n\n");
        printf("\t\t **********************************************\n\n");
        printf("\t\t 1--查询考生信息 2--插入考生信息\n\n");
        printf("\t\t 3--修改考生信息 4--删除考生信息\n\n");
        printf("\t\t 5--返回上一层   \n\n");
        printf("\t\t **********************************************\n\n");
        printf("请选择(1-6): ");
        scanf("%d",&i);
        if(i<7&&i>=1)break;
    }
    return i;
}

int meau_4()
{
    int i;
    while(1)
    {
        system("cls"); 
        printf("\n\t\t\t 公务员管理系统(管理员查询栏)\n\n");
        printf("\t\t **********************************************\n\n");
        printf("\t\t 1--查询单一考生信息 2--查询某项总考生信息\n\n");
        printf("\t\t 3--查询所有考生信息 4--返回上一层\n\n");
        printf("\t\t **********************************************\n\n");
        printf("请选择(1-4): ");
        scanf("%d",&i);
        if(i<5&&i>=1)break;
    }
    return i;
}

void read_file(list *head)
{
    list *p1,*p2,*p3;
    FILE *inFile;
    if((inFile=fopen("公务员数据.txt","f"))==NULL)
    {
        printf("文件不存在或无法打开!\n");
        return;
    }
    head=p1=(list *)malloc(sizeof(list));
    p1->next=NULL;
    while(!feof(inFile))
    {
        fscanf(inFile,"%s %s %s %s %s %s %s %s %s %d",p1->data.name,p1->data.age,p1->data.native,p1->data.sex,p1->data.phone,p1->data.pro,p1->data.pos,p1->data.yeargra,p1->data.pol,&p1->data.number);
        p2=(list *)malloc(sizeof(list));
        p1->next=p2;
        p3=p1;
        p1=p2;
        p1->next=NULL;
    }
    free(p2);
    p3->next=NULL;
    fclose(inFile);
    return;
}

void write_file(list *head)
{
    list *p1;
    FILE *outFile=fopen("公务员数据.txt","w");
    p1=head;
    while(p1!=NULL)
    {
        fprintf(outFile,"%s %s %s %s %s %s %s %s %s %d\n",p1->data.name,p1->data.age,p1->data.native,p1->data.sex,p1->data.phone,p1->data.pro,p1->data.pos,p1->data.yeargra,p1->data.pol,&p1->data.number);
        p1=p1->next;
    }
    fclose(outFile);
    printf("\n 保存完毕 \n");
    system("pause");
}

void add_one_list(list *head)
{
    list *p1,*p2;
    p2=(list *)malloc(sizeof(list));
    if(head!=NULL)
    {
        p1=head;
        while(p1->next!=NULL)
            p1=p1->next;
        p2->data.number=p1->data.number+1;
    }
    else
    {
        head=p1=(list *)malloc(sizeof(list));
        p2->data.number=1;
    }
    printf("请输入姓名:");scanf("%s",p2->data.name);
    printf("请输入年龄:");scanf("%s",p2->data.age);
    printf("请输入籍贯:");scanf("%s",p2->data.native);
    printf("请输入性别:");scanf("%s",p2->data.sex);
    printf("请输入电话:");scanf("%s",p2->data.phone);
    printf("请输入专业:");scanf("%s",p2->data.pro);
    printf("请输入报考职位:");scanf("%s",p2->data.pos);
    printf("请输入毕业年份:");scanf("%s",p2->data.yeargra);
    printf("请输入政治面貌:");scanf("%s",p2->data.pol);
    p1->next=p2;
    p1=p2;
    p1->next=NULL;

}

void del_one_list(list *head,int num)
{
    list *p1,*p2,*p3;
    p1=head;
    while(p1->next!=NULL&&p1->next->data.number!=num)
        {
            p3=p1;
            p1=p1->next;
        }
    if(p1->next==NULL&&p1->data.number!=num)
    {
        printf("查无此人!!");
        system("pause");
    }
    else
    {
        p3->next=p1->next;
        p1->next=NULL;
        free(p1);
        while(p3->next!=NULL)
        {
            p3=p3->next;
            p3->data.number--;
        }
    }
}

void mod_one_list(list *head,int num)
{
    list *p1;
    char flag;
    int nap;
    p1=head;
    while(p1->next!=NULL&&p1->data.number!=num)
        p1=p1->next;
    if(p1->next==NULL&&p1->data.number!=num)
    {
        printf("查无此人!!");
        system("pause");
    }
    else
    {            
        printf("\t1--姓名  2--年龄      3--籍贯      4--性别      5--联系电话\n");
        printf("\t6--专业  7--报考职位  8--毕业年份  9--政治面貌  \n");
        printf("请输入要修改的项:");
        scanf("%d",&nap);
        for(flag='y';flag!='n'||flag!='N';)
        {   
            switch(nap)
            {
                case 1:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.name);
                            break;
                        }
                case 2:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.age);
                            break;
                        }
                case 3:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.native);
                            break;
                        }
                case 4:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.sex);
                            break;
                        }
                case 5:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.phone);
                            break;
                        }               
                case 6:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.pro);
                            break;
                        }               
                case 7:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.pos);
                            break;
                        }               
                case 8:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.yeargra);
                            break;
                        }               
                case 9:
                        {
                            printf("请输入修改数据:");
                            scanf("%s",p1->data.pol);
                            break;
                        }                                                                                   
            }
            if(nap>9||nap<1)
            {
                printf("输入错误!!请重新输入!\n");
                system("pause");
            }
            else
            {
                printf("是否再次查询?\n");
                printf("y/Y 或者 n/N");
                scanf("%c",&flag);
                for(;flag!='y'&&flag!='Y'&&flag!='N'&&flag!='n';)
                {
                    printf("输入错误!!请重新输入!\n");
                    scanf("%c",&flag);
                }       
            } 
                if(flag=='y'&&flag=='Y')
                {
                    system("cls");
                    printf("\t1--姓名  2--年龄      3--籍贯      4--性别      5--联系电话\n");
                    printf("\t6--专业  7--报考职位  8--毕业年份  9--政治面貌  \n");
                    printf("请输入要修改的项:");
                    scanf("%d",&nap);
                }
                if(flag=='n'&&flag=='N')
                    break;
        }
    }
}

void out_one_list(list *head,int num)
{
    list *p1;
    if(head==NULL)
    {
        printf("没有数据!");
        system("pause");
        return;
    }
    else
    {
        p1=head;
        while(p1->next!=NULL&&p1->data.number!=num)
            p1=p1->next;
        if(p1->next==NULL&&p1->data.number!=num)
        {
            printf("查无此人!!");
            system("pause");
        }
        else
        {   
            printf("姓名:%s",p1->data.name);
            printf("年龄:%s",p1->data.age);
            printf("籍贯:%s",p1->data.native);
            printf("性别:%s",p1->data.sex);
            printf("电话:%s",p1->data.phone);
            printf("专业:%s",p1->data.pro);
            printf("报考职位:%s",p1->data.pos);
            printf("毕业年份:%s",p1->data.yeargra);
            printf("政治面貌:%s",p1->data.pol);
            printf("编号:%d",p1->data.number);
            system("pause");
        }
        return;
    }
}

void out_all_list(list *head)
{
    list *p1;
    if(head==NULL)
    {
        printf("没有数据!");
        system("pause");
        return;
    }
    else
    {   
        p1=head;
        printf("姓名 年龄  籍贯  性别   联系电话     专业   报考职位   毕业年份   政治面貌  编号\n");
        while(p1->next!=NULL)
        {
            printf("%s %s %s %s %s %s %s %s %s %d",p1->data.name,p1->data.age,p1->data.native,p1->data.sex,p1->data.phone,p1->data.pro,p1->data.pos,p1->data.yeargra,p1->data.pol,p1->data.number);
            p1=p1->next;
        }
        system("pause"); 
        return;
    }
}

void out_nape_list(list *head,int nape)
{
    list *p1;
    char nap[50];
    if(head==NULL)
    {
        printf("没有数据!");
        system("pause");
        return;
    }
    else
    {
        p1=head;
        while(p1->next!=NULL)
            switch(nape)
                {
                    case 1:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.name,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }
                    case 2:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.age,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }
                    case 3:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.native,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }
                    case 4:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.sex,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }
                    case 5:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.phone,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }               
                    case 6:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.pro,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }               
                    case 7:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.pos,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }               
                    case 8:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.yeargra,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }               
                    case 9:
                            {
                                printf("请输入查询的数据:");
                                scanf("%s",nap);
                                if(strcmp(p1->data.pol,nap)==0)
                                {
                                    printf("姓名:%s",p1->data.name);
                                    printf("年龄:%s",p1->data.age);
                                    printf("籍贯:%s",p1->data.native);
                                    printf("性别:%s",p1->data.sex);
                                    printf("电话:%s",p1->data.phone);
                                    printf("专业:%s",p1->data.pro);
                                    printf("报考职位:%s",p1->data.pos);
                                    printf("毕业年份:%s",p1->data.yeargra);
                                    printf("政治面貌:%s",p1->data.pol);
                                    printf("编号:%d",p1->data.number);
                                }
                                break;
                            }
                }   
        system("pause");
        return;
    }
}
  • 写回答

2条回答 默认 最新

  • nituxiaocao 2019-03-14 18:08
    关注

    记得点赞哦。主要问题是头结点的使用不一致,代码中有的地方直接存储数据,当数据节点使用,有的地方则当做纯粹的头结点使用,还有其他的一些问题,我修改了部分,可以使用beyondcompare 对比下代码修改的地方。

    
    #include<stdlib.h>
    #include<string.h>
    typedef struct node
    {
        char name[20];                       //姓名
        char age[3];                            //年龄
        char native[20];                        //籍贯
        char sex[20];                          //性别
        char phone[20];                      //联系电话 
        char pro[50];                          //专业 
        char pos[50];                       //报考职位 
        char yeargra[4];                        //毕业年份 
        char pol[50];                          //政治面貌 
        int number;                          //考生编号 
    }table;
    typedef struct List
    {
        table data;
        struct List *next;
    }list;
    int meau_1();
    int meau_2();
    int meau_3();
    int meau_4();
    void read_file(list *);
    void meau_total(list *);
    void add_one_list(list *);
    void del_one_list(list *, int);
    void mod_one_list(list *, int);
    void out_one_list(list *, int);
    void out_all_list(list *);
    void out_nape_list(list *, int);
    void write_file(list *);
    
    int main()
    {
        list *head;
        head = (list *)malloc(sizeof(list *));
        //head = NULL;
        read_file(head);
        meau_total(head);
        return 0;
    }
    
    void meau_total(list *head)
    {
        int n, m, k, nap;
        for (m = meau_1(); m != 3; m = meau_1()) //菜单一 选择合法用户 
        {
            if (m == 1)    //菜单二 选择查询考生信息 
            {
                for (n = meau_2(); n != 3; n = meau_2())//查询单一考生信息 
                {
                    if (n == 1)
                    {
                        printf("请输入考生编号:");//输入考生编号 
                        scanf("%d", &n);
                        out_one_list(head, n);//输出考生信息 
                    }
                    if (n == 2)//浏览所有考生信息  
                        out_all_list(head);//输出所有考生信息 
                }
            }
            if (m == 2)
            {
                for (n = meau_3(); n != 5; n = meau_3())
                {
                    if (n == 1)
                    {
                        for (k = meau_4(); k != 4; k = meau_4())
                        {
                            if (k == 1)//查询单一考生信息 
                            {
                                printf("请输入考生编号:");//输入考生编号 
                                scanf("%d", &n);
                                out_one_list(head, n);//输出考生信息 
                            }
                            if (k == 2)
                            {
                                printf("\t1--姓名  2--年龄      3--籍贯      4--性别      5--联系电话\n");
                                printf("\t6--专业  7--报考职位  8--毕业年份  9--政治面貌  10-考生编号\n");
                                printf("请输入需要查询的项:");
                                scanf("%d", &nap);
                                out_nape_list(head, nap);
                            }
                            if (k == 3)
                                out_all_list(head);
                            if (k == 5)
                                exit(0);
                        }
                    }
                    if (n == 2)
                    {
                        printf("请输入要插入的考生的信息:\n");                //输入插入考生信息 
                        add_one_list(head);
                    }
                    if (n == 3)
                    {
                        printf("请输入要修改的考生的编号:");                                          //输入修改考生编号 
                        scanf("%d", &n);
                        mod_one_list(head, n);
                    }
                    if (n == 4)
                    {
                        printf("请输入要删除的考生的编号:");            //输入删除考生编号
                        scanf("%d", &n);
                        del_one_list(head, n);
                    }
                }
            }
        }
        write_file(head);
    }
    
    int meau_1()
    {
        int i;
        while (1)
        {
            system("cls");
            printf("\n\t\t\t 公务员管理系统\n\n");
            printf("\t\t **********************************************\n\n");
            printf("\t\t 1--合法用户 2--管理员\n\n");
            printf("\t\t 3--退出系统\n\n");
            printf("\t\t **********************************************\n\n");
            printf("请选择(1-3): ");
            scanf("%d", &i);
            if (i < 4 && i >= 1)break;
        }
        return i;
    }
    
    int meau_2()
    {
        int i;
        while (1)
        {
            system("cls");
            printf("\n\t\t\t 公务员管理系统(合法用户栏)\n\n");
            printf("\t\t **********************************************\n\n");
            printf("\t\t 1--查询考生信息 2--浏览考生信息\n\n");
            printf("\t\t 3--返回上一层\n\n");
            printf("\t\t **********************************************\n\n");
            printf("请选择(1-): ");
            scanf("%d", &i);
            if (i < 4 && i >= 1)break;
        }
        return i;
    }
    
    int meau_3()
    {
        int i;
        while (1)
        {
            system("cls");
            printf("\n\t\t\t 公务员管理系统(管理员栏)\n\n");
            printf("\t\t **********************************************\n\n");
            printf("\t\t 1--查询考生信息 2--插入考生信息\n\n");
            printf("\t\t 3--修改考生信息 4--删除考生信息\n\n");
            printf("\t\t 5--返回上一层   \n\n");
            printf("\t\t **********************************************\n\n");
            printf("请选择(1-6): ");
            scanf("%d", &i);
            if (i < 7 && i >= 1)break;
        }
        return i;
    }
    
    int meau_4()
    {
        int i;
        while (1)
        {
            system("cls");
            printf("\n\t\t\t 公务员管理系统(管理员查询栏)\n\n");
            printf("\t\t **********************************************\n\n");
            printf("\t\t 1--查询单一考生信息 2--查询某项总考生信息\n\n");
            printf("\t\t 3--查询所有考生信息 4--返回上一层\n\n");
            printf("\t\t **********************************************\n\n");
            printf("请选择(1-4): ");
            scanf("%d", &i);
            if (i < 5 && i >= 1)break;
        }
        return i;
    }
    
    void read_file(list *head)
    {
        list *p1, *p2, *p3;
        FILE *inFile;
        if ((inFile = fopen("公务员数据.txt", "r")) == NULL)
        {
            printf("文件不存在或无法打开!\n");
            return;
        }
    
        p3 = p1 = (list *)malloc(sizeof(list));
        head->next = p1;
        p1->next = NULL;
        while (!feof(inFile))
        {
            fscanf(inFile, "%s %s %s %s %s %s %s %s %s %d", p1->data.name, p1->data.age, p1->data.native, p1->data.sex, p1->data.phone, p1->data.pro, p1->data.pos, p1->data.yeargra, p1->data.pol, &p1->data.number);
            p2 = (list *)malloc(sizeof(list));
            p1->next = p2;
            p3 = p1;
            p1 = p2;
            p1->next = NULL;
        }
    
        free(p1);
        p3->next = NULL;
        fclose(inFile);
        return;
    }
    
    void write_file(list *head)
    {
        list *p1;
        FILE *outFile = fopen("公务员数据.txt", "w");
        p1 = head->next;
        while (p1 != NULL)
        {
            fprintf(outFile, "%s %s %s %s %s %s %s %s %s %d\n", p1->data.name, p1->data.age, p1->data.native, p1->data.sex, p1->data.phone, p1->data.pro, p1->data.pos, p1->data.yeargra, p1->data.pol, p1->data.number);
            p1 = p1->next;
        }
        fclose(outFile);
        printf("\n 保存完毕 \n");
        system("pause");
    }
    
    void add_one_list(list *head)
    {
        list *p1, *p2;
    
        p1 = head;
        p2 = (list *)malloc(sizeof(list));
    
        if (p1->next != NULL)
        {
            p1 = head;
            while (p1->next != NULL)
                p1 = p1->next;
            p2->data.number = p1->data.number + 1;
        }
        else
        {
            //head = p1 = (list *)malloc(sizeof(list));
            p2->data.number = 1;
        }
        printf("请输入姓名:"); scanf("%s", p2->data.name);
        printf("请输入年龄:"); scanf("%s", p2->data.age);
        printf("请输入籍贯:"); scanf("%s", p2->data.native);
        printf("请输入性别:"); scanf("%s", p2->data.sex);
        printf("请输入电话:"); scanf("%s", p2->data.phone);
        printf("请输入专业:"); scanf("%s", p2->data.pro);
        printf("请输入报考职位:"); scanf("%s", p2->data.pos);
        printf("请输入毕业年份:"); scanf("%s", p2->data.yeargra);
        printf("请输入政治面貌:"); scanf("%s", p2->data.pol);
        p1->next = p2;
        p1 = p2;
        p1->next = NULL;
    
    }
    
    void del_one_list(list *head, int num)
    {
        list *p1, *p2, *p3;
        p3 = p1 = head->next;
        while (p1 != NULL && p1->data.number != num)
        {
            p3 = p1;
            p1 = p1->next;
        }
        if (p1 == NULL)
        {
            printf("查无此人!!");
            system("pause");
        }
        else
        {
            p3->next = p1->next;
            //p1->next = NULL;
            p1 = NULL;
            free(p1);
            while (p3->next != NULL)
            {
                p3 = p3->next;
                p3->data.number--;
            }
        }
    }
    
    void mod_one_list(list *head, int num)
    {
        list *p1;
        char flag;
        int nap;
        p1 = head->next;
        while (p1 != NULL && p1->data.number != num)
            p1 = p1->next;
        if (p1 == NULL)
        {
            printf("查无此人!!");
            system("pause");
        }
        else
        {
            printf("\t1--姓名  2--年龄      3--籍贯      4--性别      5--联系电话\n");
            printf("\t6--专业  7--报考职位  8--毕业年份  9--政治面貌  \n");
            printf("请输入要修改的项:");
            scanf("%d", &nap);
            for (flag = 'y'; flag != 'n' || flag != 'N';)
            {
                switch (nap)
                {
                case 1:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.name);
                    break;
                }
                case 2:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.age);
                    break;
                }
                case 3:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.native);
                    break;
                }
                case 4:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.sex);
                    break;
                }
                case 5:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.phone);
                    break;
                }
                case 6:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.pro);
                    break;
                }
                case 7:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.pos);
                    break;
                }
                case 8:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.yeargra);
                    break;
                }
                case 9:
                {
                    printf("请输入修改数据:");
                    scanf("%s", p1->data.pol);
                    break;
                }
                }
                if (nap > 9 || nap < 1)
                {
                    printf("输入错误!!请重新输入!\n");
                    system("pause");
                }
                else
                {
                    printf("是否再次查询?\n");
                    printf("y/Y 或者 n/N");
                    scanf("%c", &flag);
                    for (; flag != 'y'&&flag != 'Y'&&flag != 'N'&&flag != 'n';)
                    {
                        printf("输入错误!!请重新输入!\n");
                        scanf("%c", &flag);
                    }
                }
                if (flag == 'y'&&flag == 'Y')
                {
                    system("cls");
                    printf("\t1--姓名  2--年龄      3--籍贯      4--性别      5--联系电话\n");
                    printf("\t6--专业  7--报考职位  8--毕业年份  9--政治面貌  \n");
                    printf("请输入要修改的项:");
                    scanf("%d", &nap);
                }
                if (flag == 'n'&&flag == 'N')
                    break;
            }
        }
    }
    
    void out_one_list(list *head, int num)
    {
        list *p1;
        if (head == NULL)
        {
            printf("没有数据!");
            system("pause");
            return;
        }
        else
        {
            p1 = head->next;
            while (p1 != NULL && p1->data.number != num)
                p1 = p1->next;
            if (p1 == NULL)
            {
                printf("查无此人!!");
                system("pause");
            }
            else
            {
                printf("姓名:%s", p1->data.name);
                printf("年龄:%s", p1->data.age);
                printf("籍贯:%s", p1->data.native);
                printf("性别:%s", p1->data.sex);
                printf("电话:%s", p1->data.phone);
                printf("专业:%s", p1->data.pro);
                printf("报考职位:%s", p1->data.pos);
                printf("毕业年份:%s", p1->data.yeargra);
                printf("政治面貌:%s", p1->data.pol);
                printf("编号:%d", p1->data.number);
                system("pause");
            }
            return;
        }
    }
    
    void out_all_list(list *head)
    {
        list *p1;
        if (head == NULL)
        {
            printf("没有数据!");
            system("pause");
            return;
        }
        else
        {
            p1 = head->next;
            printf("姓名 年龄  籍贯  性别   联系电话     专业   报考职位   毕业年份   政治面貌  编号\n");
            while (p1 != NULL)
            {
                printf("%s %s %s %s %s %s %s %s %s %d\n", p1->data.name, p1->data.age, p1->data.native, p1->data.sex, p1->data.phone, p1->data.pro, p1->data.pos, p1->data.yeargra, p1->data.pol, p1->data.number);
                p1 = p1->next;
            }
            system("pause");
            return;
        }
    }
    
    void out_nape_list(list *head, int nape)
    {
        list *p1;
        char nap[50];
        if (head == NULL)
        {
            printf("没有数据!");
            system("pause");
            return;
        }
        else
        {
            p1 = head->next;
            while (p1->next != NULL)
                switch (nape)
                {
                case 1:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.name, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                case 2:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.age, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                case 3:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.native, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                case 4:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.sex, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                case 5:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.phone, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                case 6:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.pro, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                case 7:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.pos, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                case 8:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.yeargra, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                case 9:
                {
                    printf("请输入查询的数据:");
                    scanf("%s", nap);
                    if (strcmp(p1->data.pol, nap) == 0)
                    {
                        printf("姓名:%s", p1->data.name);
                        printf("年龄:%s", p1->data.age);
                        printf("籍贯:%s", p1->data.native);
                        printf("性别:%s", p1->data.sex);
                        printf("电话:%s", p1->data.phone);
                        printf("专业:%s", p1->data.pro);
                        printf("报考职位:%s", p1->data.pos);
                        printf("毕业年份:%s", p1->data.yeargra);
                        printf("政治面貌:%s", p1->data.pol);
                        printf("编号:%d", p1->data.number);
                    }
                    break;
                }
                }
            system("pause");
            return;
        }
    }
    
    

    部分运行结果:图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题