【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


    相关文章
    |
    12月前
    |
    IDE 编译器 开发工具
    【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
    在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
    1033 41
    【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
    |
    10月前
    |
    人工智能 Java 程序员
    一文彻底搞清楚C语言的循环语句
    本文介绍了C语言中的三种循环语句:`while`、`do-while`和`for`,并详细解释了它们的语法格式、执行流程及应用场景。此外,还讲解了循环控制语句`break`和`continue`的使用方法。希望这些内容能帮助你在编程道路上不断进步,共同成长!
    854 0
    一文彻底搞清楚C语言的循环语句
    |
    11月前
    |
    C语言
    【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
    本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
    161 19
    |
    11月前
    |
    算法 C语言
    【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
    采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
    289 18
    |
    11月前
    |
    Serverless C语言
    【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
    根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
    292 18
    |
    11月前
    |
    C语言
    【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
    有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
    230 13
    |
    11月前
    |
    存储 C语言
    【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
    项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
    271 6
    |
    11月前
    |
    C语言
    【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
    本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
    576 5
    |
    11月前
    |
    存储 算法 安全
    【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
    本任务要求从键盘输入三个数,并按从小到大的顺序排序后输出。主要内容包括: - **任务描述**:实现三个数的排序并输出。 - **编程要求**:根据提示在编辑器中补充代码。 - **相关知识**: - 选择结构(if、if-else、switch) - 主要语句类型(条件语句) - 比较操作与交换操作 - **测试说明**:提供两组测试数据及预期输出。 - **通关代码**:完整代码示例。 - **测试结果**:展示测试通过的结果。 通过本任务,你将掌握基本的选择结构和排序算法的应用。祝你成功!
    194 4
    |
    10月前
    |
    监控 关系型数据库 MySQL
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    292 0