简易学生管理系统

*用链表实现录入学生信息 *

包括学号,姓名, 期末考试成绩

实现功能:(用子函数)

1.学生信息的录入(学号唯一)

2.输出所有的学生信息

3.成绩排序 (降序:从高到低)

4.插入学生信息(按学号插入)

5.按照学号删除。

(1)数据域交换法.a.冒泡法

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef long long DataType;

typedef struct stu

{

    long long num;

    char name[20];

    double score;

    struct stu *next,*head;

} STU;

int linkCnt=0;

STU *head=NULL;

int MenuShow()

{

    printf("*************欢迎使用 万邦易嵌 学生管理系统**************** ");

    printf("  1. 录入学生信息 ");

    printf("  2. 查找学生信息 ");

    printf("  3. 删除学生信息 ");

    printf("  4. 插入学生信息 ");

    printf("  5. 根据学号排序 ");

    printf("  6. 根据成绩排序 ");

    printf("  7. 打印所有学生信息 ");

    printf("  8. 退出 ");

    printf(" 请选择:");

    int data;

    scanf("%d", &data);

    return data;

}

STU *Creat_link()

{

    int i,n;

    STU *p;

    static STU*pf;

    printf("请输入输入学生的个数:");

    scanf("%d",&n);

    for(i=0; i<n; i++)

    {

        p=(STU *)malloc(sizeof(STU));

        printf("请输入需要输入的学生信息:");

        scanf("%lld%s%lf",&p->num,p->name,&p->score);//输入数据

        if(i==0)

        {

            head=p;

            pf=p;

            linkCnt++;

        }

        else

        {

            pf->next=p;

            pf=p;

            linkCnt++;

        }

    }

    p->next=NULL;

    return head;

}

void travel()

{

    STU *p = head;

    if(p==NULL)printf("系统中没有学生信息 ");

    printf("学号:     姓名:     成绩: ");

    while (p != NULL)

    {

        printf("%-10lld%s %10.lf ", p->num, p->name,p->score);

        p = p->next;

    }

    printf(" ");

}

void find_link()

{

    STU *p=head;

    int num;

    if(head==NULL)

    {

        printf("系统中没有学生信息 ");

        return;

    }

    printf("请输入需要查找的学生学号: ");

    scanf("%d",&num);

    while(p!=NULL)

    {

        if(p->num==num)

        {

            printf("查找成功 ");

            printf("学号:     姓名:     成绩: ");

            printf("%-10lld %s %10.lf ", p->num, p->name,p->score);

            return;

        }

        p=p->next;

    }

    printf("学号不存在 ");

}

void del_link()

{

    STU *pt=head,*p,*pf;

    int m;

    if(head==NULL)

    {

        printf("系统中没有学生信息 ");

        return;

    }

    printf("请输入需要删除的学生学号: ");

    scanf("%d",&m);

    while(pt->num!=m&&pt->next!=NULL)

    {

        pf=pt;

        pt=pt->next;

    }

    if(pt->num==m&&pt==head)

    {

        head=pt->next;

        printf("删除成功 ");

        linkCnt--;

        return;

    }

    else if(pt->num==m&&pt->next==NULL)

    {

        pf->next=NULL;

        printf("删除成功 ");

        linkCnt--;

        return;

    }

    else if(pt->num==m&&pt->next!=NULL&&pt!=head)

    {

        {

            pf->next=pt->next;

            printf("删除成功 ");

            linkCnt--;

            return;

        }

        free(pt);

        pt=NULL;

        printf("空间释放成功! ");

    }

    else

    {

        printf("查无此人! ");

    }

}

void insert_link()

{

    STU *p;

    STU *q=head;

    STU *m;

    int n,cnt=0;

    p=(STU *)malloc(sizeof(STU));

    printf("输入插入的位置:");

    scanf("%d",&n);

loop1:

    printf("请输入插入的学生信息:");

    scanf("%lld%s%lf",&p->num,p->name,&p->score);

    m=head;

    while(m!=NULL)

    {

        if(p->num==m->num)

        {

            printf("学号冲突请重新输入! ");

            goto loop1;

        }

        m=m->next;

    }

    if(m==NULL)

    {

        if(head==NULL)

        {

            head=p;

            p->next=NULL;

            printf("插入成功! ");

            linkCnt++;

            return;

        }

        else if(n==0)

        {

            p->next=head;

            head=p;

            printf("插入成功! ");

            linkCnt++;

            return;

        }

        else

        {

            while(q->next!=NULL)

            {

                cnt++;

                if(cnt==n)

                {

                    p->next=q->next;

                    q->next=p;

                    printf("插入成功! ");

                    linkCnt++;

                    return;

                }

                q=q->next;

            }

            if(q->next==NULL&&n>=cnt++)

            {

                q->next=p;

                p->next=NULL;

                printf("插入成功! ");

                linkCnt++;

                return;

            }

        }

    }

}

void  num_link()

{

    STU *p=head,*p1,*p2;

    p1=p;

    p2=p->next;

    long long a;

    char b[20];

    double c;

    int count=0;

   while(p->next!=NULL)

    {

        while(p2!=NULL)

        {

            if(p1->num>p2->num)

            {

                a=p1->num;

                p1->num=p2->num;

                p2->num=a;

                strcpy(b,p1->name);

                strcpy(p1->name,p2->name);

                strcpy(p2->name,b);

                c=p1->score;

                p1->score=p2->score;

                p2->score=c;

            }

            p2=p2->next;

            p1=p1->next;

        }

        p1=head;

        p2=p1->next;

        p=p->next;

    }

    printf("排序完成! ");

}

void  score_link()

{

    STU *p=head,*p1,*p2;

    p1=p;

    p2=p->next;

    long long a;

    char b[20];

    double c;

    int count=0;

   while(p->next!=NULL)

    {

        while(p2!=NULL)

        {

            if(p1->score>p2->score)

            {

                a=p1->num;

                p1->num=p2->num;

                p2->num=a;

                strcpy(b,p1->name);

                strcpy(p1->name,p2->name);

                strcpy(p2->name,b);

                c=p1->score;

                p1->score=p2->score;

                p2->score=c;

            }

            p2=p2->next;

            p1=p1->next;

        }

        p1=head;

        p2=p1->next;

        p=p->next;

    }

    printf("排序完成! ");

}

int main()

{

    int cnt=0;

    while(1)

    {

        char userinfo[100]="我大概是只废喵123456";

        char account[100]= {0};

        char password[100]={0};

        char user[100]={0};

        printf("*****欢迎登入万邦易嵌官方教育系统!****** ");

        printf("请输入账号:");

        gets(account);

        printf("请输入密码:");

        gets(password);

        sprintf(user,"%s%s",account,password);

        if(strcmp(userinfo,user)==0)

        {

            printf("恭喜你,密码正确! ");

            break;

        }

        else

        {

            printf("密码错误! ");

            //gets(input);

        }

        ++cnt;

        if(cnt==5)

            exit(cnt);

    }

    int data;

    STU *p;

    while(1)

    {

        data = MenuShow();

        switch (data)

        {

        case 1:

            p=Creat_link();

            break;

        case 2:

            find_link();

            break;

        case 3:

            del_link();

            break;

        case 4:

            insert_link();

            break;

        case 5:

            num_link();

            break;

        case 6:

            score_link();

            break;

        case 7:

            travel();

            break;

        case 8:

            printf("系统成功退出! ");

            return 0; //结束主函数

        }

    }

    return 0;

}

(2).b.头累加法

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef long long DataType;

typedef struct stu

{

    long long num;

    char name[20];

    double score;

    struct stu *next,*head;

} STU;

int linkCnt=0;

STU *head=NULL;

int MenuShow()

{

    printf("*************欢迎使用 万邦易嵌 学生管理系统**************** ");

    printf("  1. 录入学生信息 ");

    printf("  2. 查找学生信息 ");

    printf("  3. 删除学生信息 ");

    printf("  4. 插入学生信息 ");

    printf("  5. 根据学号排序 ");

    printf("  6. 根据成绩排序 ");

    printf("  7. 打印所有学生信息 ");

    printf("  8. 退出 ");

    printf(" 请选择:");

    int data;

    scanf("%d", &data);

    return data;

}

STU *Creat_link()

{

    int i,n;

    STU *p;

    static STU*pf;

    printf("请输入输入学生的个数:");

    scanf("%d",&n);

    for(i=0; i<n; i++)

    {

        p=(STU *)malloc(sizeof(STU));

        printf("请输入需要输入的学生信息:");

        scanf("%lld%s%lf",&p->num,p->name,&p->score);//输入数据

        if(i==0)

        {

            head=p;

            pf=p;

            linkCnt++;

        }

        else

        {

            pf->next=p;

            pf=p;

            linkCnt++;

        }

    }

    p->next=NULL;

    return head;

}

void travel()

{

    STU *p = head;

    if(p==NULL)printf("系统中没有学生信息 ");

    printf("学号:     姓名:     成绩: ");

    while (p != NULL)

    {

        printf("%-10lld%s %10.lf ", p->num, p->name,p->score);

        p = p->next;

    }

    printf(" ");

}

void find_link()

{

    STU *p=head;

    int num;

    if(head==NULL)

    {

        printf("系统中没有学生信息 ");

        return;

    }

    printf("请输入需要查找的学生学号: ");

    scanf("%d",&num);

    while(p!=NULL)

    {

        if(p->num==num)

        {

            printf("查找成功 ");

            printf("学号:     姓名:     成绩: ");

            printf("%-10lld %s %10.lf ", p->num, p->name,p->score);

            return;

        }

        p=p->next;

    }

    printf("学号不存在 ");

}

void del_link()

{

    STU *pt=head,*p,*pf;

    int m;

    if(head==NULL)

    {

        printf("系统中没有学生信息 ");

        return;

    }

    printf("请输入需要删除的学生学号: ");

    scanf("%d",&m);

    while(pt->num!=m&&pt->next!=NULL)

    {

        pf=pt;

        pt=pt->next;

    }

    if(pt->num==m&&pt==head)

    {

        head=pt->next;

        printf("删除成功 ");

        linkCnt--;

        return;

    }

    else if(pt->num==m&&pt->next==NULL)

    {

        pf->next=NULL;

        printf("删除成功 ");

        linkCnt--;

        return;

    }

    else if(pt->num==m&&pt->next!=NULL&&pt!=head)

    {

        {

            pf->next=pt->next;

            printf("删除成功 ");

            linkCnt--;

            return;

        }

        free(pt);

        pt=NULL;

        printf("空间释放成功! ");

    }

    else

    {

        printf("查无此人! ");

    }

}

void insert_link()

{

    STU *p;

    STU *q=head;

    STU *m;

    int n,cnt=0;

    p=(STU *)malloc(sizeof(STU));

    printf("输入插入的位置:");

    scanf("%d",&n);

loop1:

    printf("请输入插入的学生信息:");

    scanf("%lld%s%lf",&p->num,p->name,&p->score);

    m=head;

    while(m!=NULL)

    {

        if(p->num==m->num)

        {

            printf("学号冲突请重新输入! ");

            goto loop1;

        }

        m=m->next;

    }

    if(m==NULL)

    {

        if(head==NULL)

        {

            head=p;

            p->next=NULL;

            printf("插入成功! ");

            linkCnt++;

            return;

        }

        else if(n==0)

        {

            p->next=head;

            head=p;

            printf("插入成功! ");

            linkCnt++;

            return;

        }

        else

        {

            while(q->next!=NULL)

            {

                cnt++;

                if(cnt==n)

                {

                    p->next=q->next;

                    q->next=p;

                    printf("插入成功! ");

                    linkCnt++;

                    return;

                }

                q=q->next;

            }

            if(q->next==NULL&&n>=cnt++)

            {

                q->next=p;

                p->next=NULL;

                printf("插入成功! ");

                linkCnt++;

                return;

            }

        }

    }

}

void  num_link()

{

    STU *p=head;

    STU *pf=head;

    int i;

    printf("系统中已有的学生为%d个 ", linkCnt);

    if(head==NULL) printf("系统中没有录入学生信息! ");

    else if(head->next==NULL)//只有一个学生

    {

        printf("排序成功! ");

        return ;

        //printf("%-8d %s %12.1f ", p->num, p->name, p->score);

    }

    else//至少有两个学生

    {

        for(i=1; i<linkCnt; )

        {

            pf=p;

            p=p->next;

            if(pf->num<p->num) i++;

            if(pf->num>p->num)

            {

                pf->next=p->next;

                p->next=head;

                head=p;

                i=1;

            }

        }

        printf("排序成功! ");

    }

}

void  score_link()

{

    STU *p=head;

    STU *pf=head;

    int i;

    printf("系统中已有的学生为%d个 ",linkCnt);

    if(head==NULL) printf("系统中没有录入学生信息! ");

    else if(head->next==NULL)

    {

        printf("排序成功! ");

        return ;

    }

    else

    {

        for(i=1; i<linkCnt; )

        {

            pf=p;

            p=p->next;

            if(pf->score<p->score) i++;

            if(pf->score>p->score)

            {

                pf->next=p->next;

                p->next=head;

                head=p;

                i=1;

            }

        }

        printf("排序成功! ");

    }

}

int main()

{

   int cnt=0;

    while(1)

    {

        char userinfo[100]="我大概是只废喵123456";

        char account[100]= {0};

        char password[100]={0};

        char user[100]={0};

        printf("*****欢迎登入万邦易嵌官方教育系统!****** ");

        printf("请输入账号:");

        gets(account);

        printf("请输入密码:");

        gets(password);

        sprintf(user,"%s%s",account,password);

        if(strcmp(userinfo,user)==0)

        {

            printf("恭喜你,密码正确! ");

            break;

        }

        else

        {

            printf("密码错误! ");

            //gets(input);

        }

        ++cnt;

        if(cnt==5)

            exit(cnt);

    }

    int data;

    STU *p;

    while(1)

    {

        data = MenuShow();

        switch (data)

        {

        case 1:

            p=Creat_link();

            break;

        case 2:

            find_link();

            break;

        case 3:

            del_link();

            break;

        case 4:

            insert_link();

            break;

        case 5:

            num_link();

            break;

        case 6:

            score_link();

            break;

        case 7:

            travel();

            break;

        case 8:

            printf("系统成功退出! ");

            return 0; //结束主函数

        }

    }

    return 0;

}

(3)指针域交换法

#include<stdio.h>

#include<stdlib.h>

struct STU

{

       int num;

       char name[10];

       float score;

       struct STU *pnext;

       struct STU *pf;

};

struct STU * Creat_link();

void Pri_link(struct STU *phead);

struct STU * Search_link(struct STU *phead);

struct STU * Sort_num(struct STU *phead);

struct STU * Sort_score(struct STU *phead);

int main()

{

       struct STU *phead;

       phead=Creat_link();

       Pri_link(phead);

       phead=Sort_score(phead);

       Pri_link(phead);

       return 0;

}

//创建链表

struct STU * Creat_link()

{

       int n,i;

       struct STU *phead,*p,*pf;

       printf("输入结点个数:");

       scanf("%d",&n);

       for(i=1;i<=n;i++)

       {

              p=(struct STU*)malloc(sizeof(struct STU));

              printf("输入第%d个人的信息:",i);

              scanf("%d %s %f",&p->num,p->name,&p->score);

              if(i==1)

              {

                     phead=p;

                     pf=p;

              }

              else

              {

                     pf->pnext=p;

                     pf=p;

              }

       }

       p->pnext=NULL;

       return phead;

}

//遍历链表

void Pri_link(struct STU *phead)

{

       struct STU *pt=phead;

       printf(" 输出数据: ");

       while(pt!=NULL)

       {

              printf("%d  %s  %f ",pt->num,pt->name,pt->score);

              pt=pt->pnext;

       }

}

//查询

struct STU * Search_link(struct STU *phead)

{

       struct STU *pt=phead;

       int num;

       printf("输入要查找的学号:");

       scanf("%d",&num);

       if(phead==NULL)

       {

              printf("链表为空! ");

       }

       else

       {

              while(pt->num!=num && pt->pnext!=NULL)

              {

                     pt=pt->pnext;

              }

              if(pt->num==num)

              {

                     printf("所要查找人的信息如下:");

                     printf("%d  %s  %f ",pt->num,pt->name,pt->score);

              }

              else

              {

                     printf("查无此人!");

              }

       }

       return pt;

}

struct STU *Del_link(struct STU *phead)

{

       int num;

       struct STU *pt=phead,*pf;

       printf("输入要删除的学号:");

       scanf("%d",&num);

       if(phead==NULL)

       {

              printf("链表为空! ");

       }

       else

       {

              while(pt->num!=num && pt->pnext!=NULL)

              {

                     pf=pt;

                     pt=pt->pnext;

              }

              if(pt->num==num)

              {

                     if(pt==phead)

                     {

                            phead=pt->pnext;

                     }

                     else if(pt->pnext==NULL)

                     {

                            pf->pnext=NULL;

                     }

                     else

                     {

                            pf->pnext=pt->pnext;

                     }

                     printf("找到此人! ");

                     free(pt);

                     pt=NULL;

                     printf("空间释放成功! ");

              }

              else

              {

                     printf("查无此人!");

              }

       }

       return phead;

}

//成绩排序

struct STU *  Sort_score(struct STU *phead)

{

       struct STU *pt=phead,*pf,*p,*pm,*ph=phead;

       int i,j,n=0;

       while(ph!=NULL)

       {

              n++;

              ph=ph->pnext;

       }

       printf("n=%d ",n);

       for(i=1;i<=n;i++)

       {

              pm=pf=pt=phead;

              while(pt->pnext!=NULL)

              {

                     pm=pf;

                     pf=pt;

                     pt=pt->pnext;

                     if(pf->score< pt->score)

                     {

                            if(pf==phead)

                            {

                                   pf->pnext=pt->pnext;

                                   pt->pnext=pf;

                                   p=pf;

                                   pf=pt;

                                   pt=p;

                                   phead=pf;

                            }

                            else

                            {

                                   pf->pnext=pt->pnext;

                                   pt->pnext=pf;

                                   pm->pnext=pt;

                                   p=pf;

                                   pf=pt;

                                   pt=p;

                            }

                     }

              }

       }

       return phead;

}

//学号排序

struct STU * Sort_num(struct STU *phead)

{

       struct STU *pt=phead,*pf,*p,*pm,*ph=phead;

       int i,j,n=0;

       while(ph!=NULL)

       {

              n++;

              ph=ph->pnext;

       }

       printf("n=%d ",n);

       for(i=1;i<=n;i++)

       {

              pm=pf=pt=phead;

              while(pt->pnext!=NULL)

              {

                     pm=pf;

                     pf=pt;

                     pt=pt->pnext;

                     if(pf->num > pt->num)

                     {

                            if(pf==phead)

                            {

                                   pf->pnext=pt->pnext;

                                   pt->pnext=pf;

                                   p=pf;

                                   pf=pt;

                                   pt=p;

                                   phead=pf;

                            }

                            else

                            {

                                   pf->pnext=pt->pnext;

                                   pt->pnext=pf;

                                   pm->pnext=pt;

                                   p=pf;

                                   pf=pt;

                                   pt=p;

                            }

                     }

              }

       }

       return phead;

}

struct STU *insert_link(struct STU *phead)

{

       struct STU *p,*pf,*pt=phead;

       p=(struct STU *)malloc(sizeof(struct STU));

       printf("输入要插入的数据:");

       scanf("%d %s %f",&p->num,p->name,&p->score);

       if(phead=NULL)

       {

              phead=p;

              p->pnext=NULL;

       }

       else

       {

              while(p->num > pt->num && pt->pnext!=NULL)

              {

                     pf=pt;

                     pt=pt->pnext;

              }

              if(p->num < pt->num)

              {

                     if(pt==phead)

                     {

                            p->pnext=phead;

                            phead=p;

                     }

                     else

                     {

                            p->pnext=pt;

                            pf->pnext=p;

                     }

              }

              else

              {

                     pt->pnext=p;

                     p->pnext=NULL;

              }

       }

       return phead;

}

(4)双向链表法

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef long long DataType;

typedef struct stu

{

    long long num;

    char name[20];

    double score;

    struct stu *next,*head,*prev;

} STU;

int linkCnt=0;

STU *head=NULL;

int MenuShow()

{

    printf("*************欢迎使用 万邦易嵌 学生管理系统**************** ");

    printf("  1. 录入学生信息 ");

    printf("  2. 查找学生信息 ");

    printf("  3. 删除学生信息 ");

    printf("  4. 插入学生信息 ");

    printf("  5. 根据学号排序 ");

    printf("  6. 根据成绩排序 ");

    printf("  7. 打印所有学生信息 ");

    printf("  8. 退出 ");

    printf(" 请选择:");

    int data;

    scanf("%d", &data);

    return data;

}

STU *Creat_link()

{

    int i,n;

    STU *p;

    static STU*pf;

    printf("请输入输入学生的个数:");

    scanf("%d",&n);

    for(i=0; i<n; i++)

    {

        p=(STU *)malloc(sizeof(STU));

        printf("请输入需要输入的学生信息:");

        scanf("%lld%s%lf",&p->num,p->name,&p->score);//输入数据

        if(i==0)

        {

            head=p;

            p->next=NULL;

            p->prev=NULL;

            pf=p;

            linkCnt++;

        }

        else

        {

            pf->next=p;

            p->prev=pf;

            pf=p;

            linkCnt++;

        }

    }

    p->next=NULL;

    return head;

}

void travel()

{

    STU *p = head;

    if(p==NULL)printf("系统中没有学生信息 ");

    printf("学号:     姓名:     成绩: ");

    while (p != NULL)

    {

        printf("%-10lld%s %10.lf ", p->num, p->name,p->score);

        p = p->next;

    }

    printf(" ");

}

void find_link()

{

    STU *p=head;

    int num;

    if(head==NULL)

    {

        printf("系统中没有学生信息 ");

        return;

    }

    printf("请输入需要查找的学生学号: ");

    scanf("%d",&num);

    while(p!=NULL)

    {

        if(p->num==num)

        {

            printf("查找成功 ");

            printf("学号:     姓名:     成绩: ");

            printf("%-10lld %s %10.lf ", p->num, p->name,p->score);

            return;

        }

        p=p->next;

    }

    printf("学号不存在 ");

}

void del_link()

{

    STU *pt=head,*p,*pf,*pp;

    int m;

    if(head==NULL)

    {

        printf("系统中没有学生信息 ");

        return;

    }

    printf("请输入需要删除的学生学号: ");

    scanf("%d",&m);

    while(pt->num!=m&&pt->next!=NULL)

    {

        pf=pt;

        pt=pt->next;

        pt->prev=pf;

    }

    if(pt->num==m&&pt==head&&p->next==NULL)

    {

        head=NULL;

        printf("删除成功 ");

        linkCnt--;

        return;

    }

    else if(pt->num==m&&pt==head&&pt->next!=NULL)

    {

        head=pt->next;

        pt->prev=NULL;

        printf("删除成功 ");

        linkCnt--;

        return;

    }

    else if(pt->num==m&&pt->next==NULL)

    {

        pf->next=NULL;

        printf("删除成功 ");

        linkCnt--;

        return;

    }

    else if(pt->num==m&&pt->next!=NULL&&pt!=head)

    {

        {

            pp=pt->next;

            pf->next=pp;

            pp->prev=pf;

            printf("删除成功 ");

            linkCnt--;

            return;

        }

        free(pt);

        pt=NULL;

        printf("空间释放成功! ");

    }

    else

    {

        printf("查无此人! ");

    }

}

void insert_link()

{

    STU *p;

    STU *q=head;

    STU *m;

    int n,cnt=0;

    p=(STU *)malloc(sizeof(STU));

    printf("输入插入的位置:");

    scanf("%d",&n);

loop1:

    printf("请输入插入的学生信息:");

    scanf("%lld%s%lf",&p->num,p->name,&p->score);

    m=head;

    while(m!=NULL)

    {

        if(p->num==m->num)

        {

            printf("学号冲突请重新输入! ");

            goto loop1;

        }

        m=m->next;

    }

    if(m==NULL)

    {

        if(head==NULL)

        {

            head=p;

            p->next=NULL;

            p->prev=NULL;

            printf("插入成功! ");

            linkCnt++;

            return;

        }

        else if(n==0)

        {

            p->next=head;

            p->prev=NULL;

            head=p;

            printf("插入成功! ");

            linkCnt++;

            return;

        }

        else

        {

            while(q->next!=NULL)

            {

                cnt++;

                if(cnt==n)

                {

                    p->next=q->next;

                    p->prev=p;

                    q->next=p;

                    printf("插入成功! ");

                    linkCnt++;

                    return;

                }

                q=q->next;

            }

            if(q->next==NULL&&n>=cnt++)

            {

                q->next=p;

                p->prev=q;

                p->next=NULL;

                printf("插入成功! ");

                linkCnt++;

                return;

            }

        }

    }

}

void  num_link()

{

    STU *p=head,*p1,*p2;

    p1=p;

    p2=p->next;

    p1=p2->prev;

    long long a;

    char b[20];

    double c;

    int count=0;

   while(p->next!=NULL)

    {

        while(p2!=NULL)

        {

            if(p1->num>p2->num)

            {

                a=p1->num;

                p1->num=p2->num;

                p2->num=a;

                strcpy(b,p1->name);

                strcpy(p1->name,p2->name);

                strcpy(p2->name,b);

                c=p1->score;

                p1->score=p2->score;

                p2->score=c;

            }

            p2=p2->next;

            p1=p1->next;

        }

        p1=head;

        p1->prev=NULL;

        p2=p1->next;

        p1=p2->prev;

        p=p->next;

    }

    printf("排序完成! ");

}

void  score_link()

{

    STU *p=head,*p1,*p2;

    p1=p;

    p2=p->next;

    p1=p2->prev;

    long long a;

    char b[20];

    double c;

    int count=0;

   while(p->next!=NULL)

    {

        while(p2!=NULL)

        {

            if(p1->score>p2->score)

            {

                a=p1->num;

                p1->num=p2->num;

                p2->num=a;

                strcpy(b,p1->name);

                strcpy(p1->name,p2->name);

                strcpy(p2->name,b);

                c=p1->score;

                p1->score=p2->score;

                p2->score=c;

            }

            p2=p2->next;

            p1=p1->next;

        }

        p1=head;

        p1->prev=NULL;

        p2=p1->next;

        p1=p2->prev;

        p=p->next;

    }

    printf("排序完成! ");

}

int main()

{

    int cnt=0;

    while(1)

    {

        char userinfo[100]="我大概是只废喵123456";

        char account[100]= {0};

        char password[100]={0};

        char user[100]={0};

        printf("*****欢迎登入万邦易嵌官方教育系统!****** ");

        printf("请输入账号:");

        gets(account);

        printf("请输入密码:");

        gets(password);

        sprintf(user,"%s%s",account,password);

        if(strcmp(userinfo,user)==0)

        {

            printf("恭喜你,密码正确! ");

            break;

        }

        else

        {

            printf("密码错误! ");

            //gets(input);

        }

        ++cnt;

        if(cnt==5)

            exit(cnt);

    }

    int data;

    STU *p;

    while(1)

    {

        data = MenuShow();

        switch (data)

        {

        case 1:

            p=Creat_link();

            break;

        case 2:

            find_link();

            break;

        case 3:

            del_link();

            break;

        case 4:

            insert_link();

            break;

        case 5:

            num_link();

            break;

        case 6:

            score_link();

            break;

        case 7:

            travel();

            break;

        case 8:

            printf("系统成功退出! ");

            return 0; //结束主函数

        }

    }

    return 0;

}

原文地址:https://www.cnblogs.com/eastofeden/p/7375990.html