【C语言】制作“学生管理成绩系统”,内容包括【系统显示】【录入信息】【删除信息】【等级评定】【成绩排序】【成绩修改】【查找学生】涉及循环、结构体和数组等

简介: 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?导言学生菜单系统是基于前阶段的C语言学习,从实际出发,巩固C语言基础的练习,通过多种函数的不同运用,检验知识点的牢固可靠性。系统设计概述整个学生系统将会被分成几个内容,将大任务分为多个小任务,并将其合理连接起来,独立而又有联系,对逻辑能力有一定要求(没错,我是木头)设计多个模块开发团队信息(即首

目录

导言

系统设计概述

设计多个模块

详细代码操作

详细设计

系统显示

信息录入

删除信息

等级评定

成绩排序

成绩修改

查找学生

代码展示


学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?

 

导言

学生菜单系统是基于前阶段的C语言学习,从实际出发,巩固C语言基础的练习,通过多种函数的不同运用,检验知识点的牢固可靠性。

系统设计概述

整个学生系统将会被分成几个内容,将大任务分为多个小任务,并将其合理连接起来,独立而又有联系,对逻辑能力有一定要求(没错,我是木头)


设计多个模块

    1. 开发团队信息(即首页,目前来说是次要,直接运用printf即可)
    2. 模拟系统密码登录(通过循环对不同密码情况进行判定,从而使系统做出不同反应,一般包含①密码正确,进入系统②密码错误,退出系统,这两种情况)根据平时实际情况,多次输入密码错误,也可以添加这一项内容,实现更完整的功能还原
    3. 学生信息录入版块(运用结构体和数组,对学生多项信息进行输入,可包括姓名,学号,性别,年龄,成绩等。由于是模拟班级或者学校系统,所以会模拟多个学生信息录入的过程,此过程可运用循环实现)
    4. 计算分数版块(使用简单的运算法则即可完成,此处还可细分两种,一种是计算成绩总分,另一种是计算平均分)
    5. 信息修改版块(通过学生学号查找,进行修改、添加或删除等操作)
    6. 成绩排序版块(运用冒泡法,对学生一一对比,按学生总分进行排序输出)
    7. 系统退出

    详细代码操作

    所涉及的头函数:

    #include<stdio.h>#include<stdlib.h>#include<conio.h>#include<windows.h>

    image.gif

    自定义函数:

    showAuthor();      团队信息

    image.gif

    checkLogin();    密码检测

    image.gif

    MainMenu();    主菜单

    image.gif

    input();        信息录入

    image.gif

    add();        添加信息

    image.gif

    Delete();        删除信息

    image.gif

    countScore();        等级评定

    image.gif

    oderbyScore()          成绩排序

    image.gif

    结构体定义:

    使用结构体将所需学生信息罗列出来,定义一个数组,保存各项内容本文内容的系统包括的信息如下:学号,姓名,年龄,性别,手机号码,数学、英语、体育和语文的成绩,总分和平均分。(此处成绩不分为两个函数了,直接进行计算)

    structstudent//结构体{
    charsno[10];            //学号charsname[10];          //姓名intsage;                //年龄charssex[10];           //性别charstel[20];           //手机号码floatMath;              //数学成绩floatC;                 //语文成绩floatEnglish;           //英语成绩floatSport;             //体育floatScore;             //总成绩floatAver;              //平均分};
    structstudentp[100];    //数组

    image.gif

    详细设计

    首先,进入系统显示的团队信息printf即可,无需过于复杂

    模板如下

    系统显示

    voidshowAuthor()   //  显示团队信息{
    printf("========= ===**小九出品   $   必属良品**==============\n");
    printf("\n");
    printf("=============技术不精**被逼无奈**实属下策=============\n");
    printf("\n");
    printf(" *   *   *   开发团队信息    *   *   *   *\n");
    printf("\n");
    printf("====================**盗版必究**======================\n");
    printf("\n");
    }

    image.gif

    其次呢,我们进入系统肯定得设置一串密码吧,由于学艺不精,这密码暂时只设置包含数字的吧,初始密码123456,暂且用 int 混过去。接着回想登录过程,有正误之分,那必然少不了else-if的参与,通过判定密码值,来确定循环条件中的0和1

    而后,可设定一个计数器 cnt,用while循环实现当cnt=n次时,系统锁定自动退出

    注:在这几项过程中,很明显若是单纯的一个画面,那必然导致文字繁多画面杂乱

    我们就可以利用好system("cls");清屏特点,再适当时候,进行画面清楚

    运用好这点,也可以配合Sleep(n);实现计时器的倒计时特点

    voidcheckLogin()   //密码检测登录{
    intPW=123456;        //密码printf("请输入系统密码:");
    for(cnt=0;cnt!=3;)
        {
    scanf("%d",&password);
    if(password==PW)
            {
    n=1;
    printf("登录成功,3秒后自动进入系统\n");
    Sleep(1000);
    printf("登录成功,2秒后自动进入系统\n");
    Sleep(1000);
    printf("登录成功,1秒后自动进入系统\n");
    Sleep(1000);
    system("cls");
    break;
            }
    else        {
    cnt++;
    while(cnt==3)
            {
    printf("系统锁定,无法输入密码,3秒后系统自动关闭\n");
    Sleep(2000);
    system("cls");
    printf("系统锁定,无法输入密码,2秒后系统自动关闭\n");
    Sleep(1200);
    system("cls");
    printf("系统锁定,无法输入密码,1秒后系统自动关闭\n");
    Sleep(1200);
    system("cls");
    exit(0);
            }
    printf("密码错误,再次输入密码:");
            }
        }
    }

    image.gif

    密码输入完成后,必然有主菜单,清屏弹出主菜单界面,就可以用简单的循环来实现,同时编辑出上下左右的边框,美观!(全局变量中一定要定义好画布大小,否则该功能无法实现)

    voidMainMenu()     //主菜单{
    inti,j;
    printf("—————欢迎使用小九牌伪劣系统—————\n");
    printf("\n");
    printf("\n");
    for(i=6;i<=high;i++)
        {
    for(j=0;j<=width;j++)
            {
    if((i==6)||(i==high))
                {
    printf("#");        //上下边框            }
    elseif((i==7)&&(j==16))
                {
    printf("1.信息录入\t");
                }
    elseif((i==9)&&(j==16))
                {
    printf("2.添加信息\t");
                }
    elseif((i==11)&&(j==16))
                {
    printf("3.删除信息\t");     //待完善            }
    elseif((i==13)&&(j==16))
                {
    printf("4.等级评定\t");     //待完善            }
    elseif((i==15)&&(j==16))
                {
    printf("5.成绩修改\t");     //待完善            }
    elseif((i==17)&&(j==16))
                {
    printf("6.成绩排序\t");     //待完善            }
    elseif((i==19)&&(j==16))
                {
    printf("0.退出系统\t");     //待完善            }
    elseif((j==0)||(j==width))
                {
    printf("1");
                }
    else            {
    printf(" ");
                }
            }
    printf("\n");
        }
    }

    image.gif

    效果如下:image.gif编辑

    接着就是菜单的跳转功能,此处就要运用到一个与它必然相关的选择Switch-case

    运用不同的case n:,跳转到不同的函数,进行相应的操作。格式重复,十分简单。

    while(1)
        {
    printf("请输入你的选择(0-6)");
    scanf("%d",&num_choose);
    switch(num_choose)
        {
    case1:
    input();
    system("cls");
    break;
    case2:
    add();
    system("cls");
    break;
    case3:
    Delete();
    system("cls");
    break;
    case4:
    countScore();
    system("cls");
    break;
    case5:
    oderbyScore();
    system("cls");
    break;
    case6:
    modifyScore();
    system("cls");
    break;
    case0:
    system("cls");
    break;
    default:printf("结束\a");system("cls");
        }
        }

    image.gif

    后面就以一个自定义函数为例,运用结构体和数组,实现学生信息的录入

    这里的第一步,自然是判断学生的人数,根据实际判断条件,给while的操作与否提供数值,当学生人数超出范围,那自然要重新输入。

    再运用i定义出不同的p[i],给不同学号i的学生留出空间

    信息录入

    voidinput()   //信息录入{
    inti,j,k=1;
    printf("请输入学生人数(0-100):");
    scanf("%d",&j);
    while((j<0)||(j>100))
        {
    printf("请重新输入学生人数(0-100):");
    scanf("%d",&j);
        }
    n=j;
    for(i=0;i<n;i++)
        {
    printf("输入第%d个学生的学号:",i+1);
    scanf("%s",&p[i].sno);
    printf("输入第%d个学生的姓名:",i+1);
    scanf("%s",&p[i].sname);
    printf("输入第%d个学生的年龄:",i+1);
    scanf("%d",&p[i].sage);
    printf("输入第%d个学生的性别:",i+1);
    scanf("%s",&p[i].ssex);
    printf("输入第%d个学生的电话:",i+1);
    scanf("%s",&p[i].stel);
    printf("输入第%d个学生的数学成绩:",i+1);
    scanf("%f",&p[i].Math);
    printf("输入第%d个学生的C成绩:",i+1);
    scanf("%f",&p[i].C);
    printf("输入第%d个学生的英语成绩:",i+1);
    scanf("%f",&p[i].English);
    printf("输入第%d个学生的体育成绩:",i+1);
    scanf("%f",&p[i].Sport);
    printf("第%d个学生的总分为:%g",i+1,p[i].Score=p[i].Math+p[i].C+p[i].English+p[i].Sport);
    printf("第%d个学生的平均分为:%g",i+1,p[i].Aver=(p[i].Math+p[i].C+p[i].English+p[i].Sport)/4);
    printf("\n");
    printf("\n");
    printf("系统记录中,请稍等");
    Sleep(3000);
    printf("\n");
        }
    }

    image.gif

    有输入就有修改选项,接下来就是删除信息板块

    详细看代码,就不过多赘述了。

    voidDelete()       //删除信息{
    inti,j,k,n=100;
    printf("请输入要删除的学生的学号:");
    scanf("%d",&k);
    for(i=0;i<k;i++)
        {
    if(k==p[i].sno[10])
    break;
        }
    if((i<0)||(i>100))
        {
    printf("学号不存在!请输入正确的学号:\n");
        }
    else    {
    for(j=i;j<n;j++)
    p[j]=p[j+1];    
    printf("系统删除中,请稍后\n");
    Sleep(3000);
        }
    }

    image.gif

    删除信息

    删除信息,等级评定,成绩修改等板块,都是几乎一样的模板,相同的查询方法,运用for if 循环

    voidDelete()       //删除信息****************************************************{
    system("cls");
    inti,flag=0;
    charj[10];
    intn=100;
    printf("请输入要删除的学生所属学号:\n");
    scanf("%s",&j);
    for(i=0;i<n;i++)
        {
    if(strcmp(j,p[i].sno)==0)
            {
    flag=1;
    p[i] =p[i+1];
    printf("学生已删除");
            }
        }
    if(flag==0)
        {
    printf("没有此学生\n");
        }
    system("pause");
    system("cls");
    }

    image.gif

    等级评定

    voidcountScore()   //等级评定***************************************************************************{
    system("cls");
    inti,flag=0;
    charj[10];
    intn=100;
    printf("请输入一个学生的学号\n");
    scanf("%s",&j);
    for(i=0;i<n;i++)
        {
    if(strcmp(j,p[i].sno)==0)
            {
    flag=1;
    printf("该学生总成绩为:%g\n",p[i].Score);
    if(p[i].Score<100)
                {
    printf("该学生成绩评级为:C");
    system("pause");
                }
    elseif((p[i].Score>=100)&&(p[i].Score<300))
                {
    printf("该学生成绩评级为:B");
    system("pause");
                }
    elseif(p[i].Score>=300)
                {
    printf("该学生成绩评级为:A");
    system("pause");
                }
            }
        }
    if(flag==0)
        {
    printf("没有此学生");
    system("pause");
    system("cls");
    printf("是否继续查找学生信息\n");
    printf("输入a(继续),输入b(退出)\n");
    charinput;
    input=getch();
    if(input=='a')
        {
    countScore();
        }
    elseif(input=='b')
        {
    MainMenu();
        }
        }
    system("cls");
    printf("是否继续查找学生信息\n");
    printf("输入a(继续),输入b(退出)\n");
    charinput;
    input=getch();
    if(input=='a')
        {
    countScore();
        }
    elseif(input=='b')
        {
    MainMenu();
        }
    }

    image.gif

    成绩排序

    voidoderbyScore()  //成绩排序***************************************************************************{
    system("cls");
    inti,k,l,flag=0;
    charj[10];
    intn;
    printf("请输入要排序的学生个数:\n");
    scanf("%d",&n);
    for(k=0;k<n;k++)
        {
    printf("请输入第%d个学生的学号:\n",k+1);
    scanf("%s",&j);
    for(i=0;i<100;i++)
            {
    if(strcmp(j,p[k].sno)==0)
                {
    flag=1;
    printf("该学生学号为%s\n",p[k].sno);
    printf("该学生总成绩为%g\n",p[k].Score);
    break;
                }
            }
    if(flag!=1)
            {
    printf("无此学生\n");
            }
        }
    for(i=0;i<100;i++)
        {
    for(k=0;k<n-1-i;k++)
            {
    if(p[k].Score>=p[k+1].Score)
                {
    l=p[k].Score;
    p[k].Score=p[k+1].Score;
    p[k+1].Score=l;
                }
            }
        }
    printf("排名为:\n");
    for(k=0;k<n;k++)
        {
    printf("%g\n",p[k].Score);
        }
    system("pause");
    }

    image.gif

    成绩修改

    voidmodifyScore()  //成绩修改****************************************************************************{
    system("cls");
    inti,flag=0;
    floatx[10];
    charj[10];
    system("cls");
    printf("请输入要修改成绩的学生学号\n");
    scanf("%s",&j);
    for(i=0;i<100;i++)
        {
    if(strcmp(j,p[i].sno)==0)
            {
    flag=1;
    printf("该学生成绩为%g\n",p[i].Score);
    printf("请输入要修改的成绩值(0~100)\n");
    scanf("%g",&x[i]);
    p[i].Score=x[i];
            }
        }
    if(flag!=1)
        {
    printf("无此学生");
        }
    system("pause");
    system("cls");
    printf("是否继续查找学生信息\n");
    printf("输入a(继续),输入b(退出)\n");
    charinput;
    input=getch();
    if(input=='a')
        {
    modifyScore();
        }
    elseif(input=='b')
        {
    MainMenu();
        }
    }

    image.gif

    查找学生

    voidsearchstu()    //查找学生************************************************************************{
    system("cls");
    inti,flag=0;
    charj[10];
    intn=100;
    printf("请输入一个学生的学号\n");
    scanf("%s",&j);
    for(i=0;i<n;i++)
        {
    if(strcmp(j,p[i].sno)==0)
            {
    printf("学号:%s\n",p[i].sno);
    printf("姓名:%s\n",p[i].sname);
    printf("性别:%s\n",p[i].ssex);
    printf("电话号码:%s\n",p[i].stel);
    printf("年龄:%d\n",p[i].sage);
    printf("数学成绩:%g\n",p[i].Math);
    printf("英语成绩:%g\n",p[i].English);
    printf("C成绩:%g\n",p[i].C);
    printf("体育成绩:%g\n",p[i].Sport);
    printf("总成绩:%g\n",p[i].Score);
    printf("平均分:%g\n",p[i].Aver);
    flag=1;
            }
        }
    if(flag==0)
        {
    printf("没有此学生\n");
        }
    system("pause");
    system("cls");
    printf("是否继续查找学生信息\n");
    printf("输入a(继续),输入b(退出)\n");
    charinput;
    input=getch();
    if(input=='a')
        {
    searchstu();
        }
    elseif(input=='b')
        {
    MainMenu();
        }
    }

    image.gif


    代码展示

    目前只实现了这几个板块,后续还将继续补充其他板块,使这个系统更完整,残缺的代码就展示出来吧,仅供参考,我会继续努力,进一步完善。(忽略此内容嘿嘿)

    此文案在上一次发布的内容做补充,各板块已基本实现其功能,欢迎修改bug,谢谢

    此次发布时间 2022/09/24

    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<windows.h>
    void HideCursor()
    {
        CONSOLE_CURSOR_INFO cursor_info={1,0};  //0表示隐藏光标
        SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    }
    int high = 26;
    int width = 42;
    int password;
    int n=100;
    int cnt = 0;
    int choice;
    int num_choose;
    struct student
    {
        char sno[10];
        char sname[10];
        int sage;
        char ssex[10];
        char stel[20];
        float Math;
        float C;
        float English;
        float Sport;
        float Score;
        float Aver;
    };
    struct student p[100];
    void showAuthor()   //  显示团队信息
    {
        printf("========= ===**小九出品   $   必属良品**==============\n");
        printf("\n");
        printf("=============技术不精**被逼无奈**实属下策=============\n");
        printf("\n");
        printf(" *   *   *   开发团队信息    *   *   *   *\n");
        printf("\n");
        printf("====================**盗版必究**======================\n");
        printf("\n");
    }
    void MainMenu()     //主菜单*****************************************************************************
    {
        int i,j;
        printf("—————欢迎使用小九牌伪劣系统—————\n");
        printf("\n");
        printf("\n");
        for(i=6;i<=high;i++)
        {
            for(j=0;j<=width;j++)
            {
                if((i==6)||(i==high))
                {
                    printf("#");        //上下边框
                }
                else if((i==7)&&(j==16))
                {
                    printf("1.信息录入\t");
                }
                else if((i==9)&&(j==16))
                {
                    printf("2.删除信息\t");     
                }
                else if((i==11)&&(j==16))
                {
                    printf("3.等级评定\t");     
                }
                else if((i==13)&&(j==16))
                {
                    printf("4.成绩排序\t");     
                }
                else if((i==15)&&(j==16))
                {
                    printf("5.成绩修改\t");     
                }
                else if((i==17)&&(j==16))
                {
                    printf("6.查找学生\t");     
                }
                else if((i==19)&&(j==16))
                {
                    printf("0.退出系统\t");
                }
                else if((i==21)&&(j==16))
                {
                    printf("完善中。。。\t");     //待完善
                }
                else if((i==23)&&(j==16))
                {
                    printf("完善中。。。\t");     //待完善
                }
                else if((i==25)&&(j==16))
                {
                    printf("完善中。。。\t");     //待完善
                }
                else if((j==0)||(j==width))
                {
                    printf("1");
                }
                else
                {
                    printf(" ");
                }
            }
            printf("\n");
        }
    }
    void checkLogin()   //密码检测登录************************************************************************
    {
        int PW = 123456;        //密码
        printf("请输入系统密码:");
        for(cnt=0;cnt!=3;)
        {
            scanf("%d",&password);
            if(password==PW)
            {
                n=1;
                printf("登录成功,3秒后自动进入系统\n");
                Sleep(1000);
                printf("登录成功,2秒后自动进入系统\n");
                Sleep(1000);
                printf("登录成功,1秒后自动进入系统\n");
                Sleep(1000);
                system("cls");
                break;
            }
            else
            {
                cnt++;
                while(cnt==3)
            {
                printf("系统锁定,无法输入密码,3秒后系统自动关闭\n");
                Sleep(2000);
                system("cls");
                printf("系统锁定,无法输入密码,2秒后系统自动关闭\n");
                Sleep(1200);
                system("cls");
                printf("系统锁定,无法输入密码,1秒后系统自动关闭\n");
                Sleep(1200);
                system("cls");
                exit(0);
            }
                printf("密码错误,再次输入密码(你只有三次机会):\n");
            }
        }
    }
    void input()   //信息录入**********************************************************************************
    {
        system("cls");
        int i,j;
        printf("请输入学生人数(0-100):");
        scanf("%d",&j);
        while((j<0)||(j>100))
        {
            printf("请重新输入学生人数(0-100):");
            scanf("%d",&j);
        }
        n=j;
        for(i=0;i<n;i++)
        {
            printf("输入第%d个学生的学号:",i+1);
            scanf("%s",&p[i].sno);
            while((*p[i].sno<0)&&(*p[i].sno>100))
        {
            printf("请重新输入学生学号(0-100):");
            scanf("%s",&p[i].sno);
        }
            printf("输入第%d个学生的姓名:",i+1);
            scanf("%s",&p[i].sname);
            printf("输入第%d个学生的年龄:",i+1);
            scanf("%d",&p[i].sage);
            printf("输入第%d个学生的性别:",i+1);
            scanf("%s",&p[i].ssex);
            printf("输入第%d个学生的电话:",i+1);
            scanf("%s",&p[i].stel);
            printf("输入第%d个学生的数学成绩:",i+1);
            scanf("%f",&p[i].Math);
            printf("输入第%d个学生的C成绩:",i+1);
            scanf("%f",&p[i].C);
            printf("输入第%d个学生的英语成绩:",i+1);
            scanf("%f",&p[i].English);
            printf("输入第%d个学生的体育成绩:",i+1);
            scanf("%f",&p[i].Sport);
            p[i].Score=p[i].Math+p[i].C+p[i].English+p[i].Sport;
            printf("第%d个学生的总分为:%g\n",i+1,p[i].Score);
            p[i].Aver=(p[i].Math+p[i].C+p[i].English+p[i].Sport)/4;
            printf("第%d个学生的平均分为:%g\n",i+1,p[i].Aver);
            printf("\n");
            printf("\n");
            printf("系统记录中,请稍等\n");
            Sleep(1000);
            system("pause");
            printf("\n");
            system("cls");
        }
    }
    void Delete()       //删除信息*****************************************************************************
    {
        system("cls");
        int i,flag = 0;
        char j[10];
        int n = 100;
        printf("请输入要删除的学生所属学号:\n");
        scanf("%s",&j);
        for(i=0;i<n;i++)
        {
            if(strcmp(j,p[i].sno)==0)
            {
                flag = 1;
                p[i] = p[i+1];
                printf("学生已删除");
            }
        }
        if(flag==0)
        {
            printf("没有此学生\n");
        }
        system("pause");
        system("cls");
    }
    void countScore()   //等级评定***************************************************************************
    {
        system("cls");
        int i,flag=0;
        char j[10];
        int n = 100;
        printf("请输入一个学生的学号\n");
        scanf("%s",&j);
        for(i=0;i<n;i++)
        {
            if(strcmp(j,p[i].sno)==0)
            {
                flag = 1;
                printf("该学生总成绩为:%g\n",p[i].Score);
                if(p[i].Score < 100)
                {
                    printf("该学生成绩评级为:C");
                    system("pause");
                }
                else if((p[i].Score>=100)&&(p[i].Score<300))
                {
                    printf("该学生成绩评级为:B");
                    system("pause");
                }
                else if(p[i].Score>=300)
                {
                    printf("该学生成绩评级为:A");
                    system("pause");
                }
            }
        }
        if(flag == 0)
        {
            printf("没有此学生");
            system("pause");
        system("cls");
        printf("是否继续查找学生信息\n");
        printf("输入a(继续),输入b(退出)\n");
        char input;
        input = getch();
        if(input =='a')
        {
            countScore();
        }
        else if(input == 'b')
        {
            MainMenu();
        }
        }
        system("cls");
        printf("是否继续查找学生信息\n");
        printf("输入a(继续),输入b(退出)\n");
        char input;
        input = getch();
        if(input =='a')
        {
            countScore();
        }
        else if(input == 'b')
        {
            MainMenu();
        }
    }
    void oderbyScore()  //成绩排序***************************************************************************
    {
        system("cls");
        int i,k,l,flag=0;
        char j[10];
        int n;
        printf("请输入要排序的学生个数:\n");
        scanf("%d",&n);
        for(k=0;k<n;k++)
        {
            printf("请输入第%d个学生的学号:\n",k+1);
            scanf("%s",&j);
            for(i=0;i<100;i++)
            {
                if(strcmp(j,p[k].sno)==0)
                {
                    flag = 1;
                    printf("该学生学号为%s\n",p[k].sno);
                    printf("该学生总成绩为%g\n",p[k].Score);
                    break;
                }
            }
            if(flag!=1)
            {
                printf("无此学生\n");
            }
        }
        for(i=0;i<100;i++)
        {
            for(k=0;k<n-1-i;k++)
            {
                if(p[k].Score>=p[k+1].Score)
                {
                    l=p[k].Score;
                    p[k].Score=p[k+1].Score;
                    p[k+1].Score=l;
                }
            }
        }
        printf("排名为:\n");
        for(k=0;k<n;k++)
        {
            printf("%g\n",p[k].Score);
        }
        system("pause");
    }
    void modifyScore()  //成绩修改****************************************************************************
    {
        system("cls");
        int i,flag=0;
        float x[10];
        char j[10];
        system("cls");
        printf("请输入要修改成绩的学生学号\n");
        scanf("%s",&j);
        for(i=0;i<100;i++)
        {
            if(strcmp(j,p[i].sno)==0)
            {
                flag = 1;
                printf("该学生成绩为%g\n",p[i].Score);
                printf("请输入要修改的成绩值(0~100)\n");
                scanf("%g",&x[i]);
                p[i].Score = x[i];
            }
        }
        if(flag != 1)
        {
            printf("无此学生");
        }
        system("pause");
        system("cls");
        printf("是否继续查找学生信息\n");
        printf("输入a(继续),输入b(退出)\n");
        char input;
        input = getch();
        if(input =='a')
        {
            modifyScore();
        }
        else if(input == 'b')
        {
            MainMenu();
        }
    }
    void searchstu()    //查找学生************************************************************************
    {
        system("cls");
        int i,flag=0;
        char j[10];
        int n = 100;
        printf("请输入一个学生的学号\n");
        scanf("%s",&j);
        for(i=0;i<n;i++)
        {
            if(strcmp(j,p[i].sno)==0)
            {
                printf("学号:%s\n",p[i].sno);
                printf("姓名:%s\n",p[i].sname);
                printf("性别:%s\n",p[i].ssex);
                printf("电话号码:%s\n",p[i].stel);
                printf("年龄:%d\n",p[i].sage);
                printf("数学成绩:%g\n",p[i].Math);
                printf("英语成绩:%g\n",p[i].English);
                printf("C成绩:%g\n",p[i].C);
                printf("体育成绩:%g\n",p[i].Sport);
                printf("总成绩:%g\n",p[i].Score);
                printf("平均分:%g\n",p[i].Aver);
                flag=1;
            }
        }
        if(flag==0)
        {
            printf("没有此学生\n");
        }
        system("pause");
        system("cls");
        printf("是否继续查找学生信息\n");
        printf("输入a(继续),输入b(退出)\n");
        char input;
        input = getch();
        if(input =='a')
        {
            searchstu();
        }
        else if(input == 'b')
        {
            MainMenu();
        }
    }
    void closesystem()  //关闭系统******************************************************************************
    {
        system("cls");
        printf("您确定要关闭系统吗,请输入你的选项\n");
        printf("输入a确定关闭\n输入b返回菜单\n");
        char input;
        input = getch();
        if(input == 'a')
        {
            printf("系统3秒后关闭");
            Sleep(1000);
            system("cls");
            printf("系统2秒后关闭");
            Sleep(1000);
            system("cls");
            printf("系统1秒后关闭");
            Sleep(1000);
            system("cls");
            exit(0);
        }else if(input == 'b')
        {
            printf("三秒后跳转主菜单");
            Sleep(3000);
            MainMenu();
        }
    }
    int main()  //******************************************************************************************
    {
        showAuthor();
        checkLogin();
        if(n)
        {
        while(1)
        {
            MainMenu();
            printf("请输入你的选择(0-6)");
            scanf("%d",&num_choose);
        switch(num_choose)
        {
            case 1:
            input();        //录入信息
            system("cls");
            break;
            case 2:
            Delete();       //删除信息
            system("cls");
            break;
            case 3:
            countScore();   //等级评定
            system("cls");
            break;
            case 4:
            oderbyScore();  //成绩排序
            system("cls");
            break;
            case 5:
            modifyScore();  //成绩修改
            system("cls");
            break;
            case 6:
            searchstu();    //查找学生
            system("cls");
            break;
            case 0:
            closesystem();  //关闭系统
            system("cls");
            break;
            default:printf("结束\a");system("cls");
        }
        }
        }
        system("pause");
        return 0;
    }

    image.gif


    相关文章
    |
    1月前
    |
    存储 安全 数据管理
    C语言之考勤模拟系统平台(千行代码)
    C语言之考勤模拟系统平台(千行代码)
    55 4
    |
    1月前
    |
    程序员 C语言 开发者
    pymalloc 和系统的 malloc 有什么区别
    pymalloc 和系统的 malloc 有什么区别
    |
    20天前
    |
    IDE 编译器 开发工具
    【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
    在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
    93 41
    【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
    |
    15天前
    |
    存储 编译器 C语言
    【C语言】C语言的变量和声明系统性讲解
    在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
    44 12
    |
    20天前
    |
    存储 网络协议 编译器
    【C语言】深入解析C语言结构体:定义、声明与高级应用实践
    通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
    103 14
    |
    24天前
    |
    存储 编译器 C语言
    【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
    结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
    109 10
    |
    28天前
    |
    存储 数据建模 程序员
    C 语言结构体 —— 数据封装的利器
    C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
    |
    1月前
    |
    存储 C语言
    C语言如何使用结构体和指针来操作动态分配的内存
    在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
    120 13
    |
    1月前
    |
    存储 编译器 数据处理
    C 语言结构体与位域:高效数据组织与内存优化
    C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
    62 11
    |
    26天前
    |
    机器学习/深度学习 算法 数据挖掘
    C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
    本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
    43 1