weixin_69932367 2022-05-06 21:26 采纳率: 81.8%
浏览 92
已结题

学生成绩管理系统,怎么做

img

用简单基本的语言实现,要求里面一共有五个学科,分别为,英语,高数,c语言,计算机网络,近代史。可以追加酬金,看最终成品。

  • 写回答

2条回答 默认 最新

  • sinJack 2022-05-06 21:39
    关注
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct student
    {
        char num[12];
        char name[12];
        int a,b,c;
    };
    typedef struct stu
    {
        struct student data;
        struct stu *next;
    } stu,*pupil;
    
    pupil L;
    
    void creat()//创建链表
    {
        L = NULL;
        L = (pupil)malloc(sizeof(stu));
        L->next = NULL;
    }
    
    int menu()//菜单
    {
        printf("|**********欢迎进入学生信息管理系统**********|\n");
        printf("|                1.录入学生信息              |\n");
        printf("|                2.显示学生信息              |\n");
        printf("|                3.查询学生信息              |\n");
        printf("|                4.修改学生信息              |\n");
        printf("|                5.添加学生信息              |\n");
        printf("|                6.删除学生信息              |\n");
        printf("|                7.按总分排名次              |\n");
        printf("|                0.退出                      |\n");
        printf("|********************************************|\n");
        printf("|请输入您所选的选项(0-7):");
        int number;
        scanf("%d", &number);
        return number;
    }
    
    void join(pupil L)//录入学生信息
    {
        pupil p;
        p = (pupil)malloc(sizeof(stu));
        p->next = NULL;
    
    
    
        scanf("%s",&p->data.num);
        scanf("%s",&p->data.name);
        scanf("%d %d %d", &p->data.a, &p->data.b, &p->data.c);
        p->next = L->next;
        L->next = p;
    
    }
    
    void show(pupil L)//显示学生信息
    {
        L = L->next;
        if(!L)
        {
            printf("|******************无学生信息****************|\n");
            return ;
        }
    
        printf("|***************开始显示学生信息*************|\n");
        while(L)
        {
            printf("%s ", L->data.num);
            printf("%s ", L->data.name);
            printf("%d %d %d\n", L->data.a, L->data.b, L->data.c);
            L = L->next;
        }
    }
    
    void inquire(pupil L)//查询学生信息
    {
        char x[12];
    
        printf("|输入你要查询的学号:");
        scanf("%s",&x);
        while(L = L->next)
        {
    
            if(strcmp(L->data.num,x)==0)
                break;
        }
        printf("%s ", L->data.num);
        printf("%s ", L->data.name);
        printf("%d %d %d\n", L->data.a, L->data.b, L->data.c);
    
    }
    
    void alter(pupil L)//修改学生信息
    {
        int z;
        char x[12],y;
        printf("输入修改学生的学号或名字:");
        scanf("%s",&x);
        while(L = L->next)
        {
            if(strcmp(x,L->data.num)==0||strcmp(x,L->data.name)==0)
                break;
        }
        printf("修改该同学的第哪项成绩(1-3):");
        getchar();
        scanf("%c",&y);
        printf("输入修改后的成绩:");
        scanf("%d",&z);
        if(y=='1')
        {
            L->data.a=z;
        }
        else if(y=='2')
        {
            L->data.b=z;
        }
        else
        {
            L->data.c=z;
        }
        printf("修改后:");
        printf("%s ", L->data.num);
        printf("%s ", L->data.name);
        printf("%d %d %d\n", L->data.a, L->data.b, L->data.c);
    }
    
    void add(pupil L)//添加学生信息
    {
        pupil p;
        p = (pupil)malloc(sizeof(stu));
        p->next = NULL;
        printf("输入新添加同学的信息:");
    
        scanf("%s",&p->data.num);
        scanf("%s",&p->data.name);
        scanf("%d %d %d", &p->data.a, &p->data.b, &p->data.c);
        p->next = L->next;
        L->next = p;
    }
    
    void del(pupil L)//删除学生信息
    {
        char x[12];
        if(!L->next)
        {
            printf("无学生信息,操作错误\n");
            return ;
        }
        printf("输入需要删除的学生的学号或名字:");
        scanf("%s",&x);
        pupil S;
        while(L->next)
        {
            S = L->next;
            if(strcmp(x,S->data.num)==0||strcmp(x,S->data.name)==0)
            {
                L->next = S->next;
                break;
            }
            L = L->next;
        }
    
    }
    
    void rank(pupil L)//按总分排名次
    {
        L = L->next;
        pupil p = L->next->next,q = L->next;
        for(; q!=NULL; q = q->next)
        {
            for(; p!=NULL; p=p->next)
            {
                if(q->data.a+q->data.b+q->data.c < p->data.a+p->data.b+p->data.c)
                {
                    q->next = p->next;
                    p->next = q;
                    L->next = p;
                }
            }
        }
    
    }
    void chooser(int number)
    {
        switch(number)
        {
        case 1:
        {
            int vis;
            printf("|********开始录入学生信息********|\n");
            printf("你要录入人数为:");
            scanf("%d",&vis);
            for(int i=0; i<vis; i++)
            {
                join(L);
            }
    
        }
        break;//录入学生信息
        case 2:
            show(L);
            break;//显示学生信息
        case 3:
        {
            inquire(L);
        }
        break;//查询学生信息
        case 4:
        {
            alter(L);
        }
        break;//修改学生信息
        case 5:
        {
            add(L);
        }
        break;//添加学生信息
        case 6:
        {
            del(L);
        }
        break;//删除学生信息
        case 7:
            rank(L);
            break;//按总分排名次
        case 0:
            exit(0);
            break;//退出
        }
    }
    
    int main()
    {
        int number;
        creat();
        while(number = menu())
        {
            chooser(number);
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月7日
  • 已采纳回答 5月6日
  • 修改了问题 5月6日
  • 修改了问题 5月6日
  • 展开全部

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改