快捷导航

c语言成绩管理系统中学号排序的问题

//为什么我输入1再输入3,输入1 1 1回车3 3 3回车2 2 2后输入5输入1之后并没有进行按照学号升序排列?#include #include #include #include int main_menu();            //主界面int menu_5();               //输入'5'时的界面void overview();            //实现全览功能的函数void ID_select();           //按学号顺序int menu_6();               //输入'6'时的界面void statistics();          //实现统计功能的函数void add();                 //学生成绩新增void mark_statistics();     //成绩分布统计//定义学生结构体struct Student{    char ID[20];    char Name[20];    int Mark;};//声明学生数组及学生数量struct Student students[1000];int num=0;int main(){    char ch;    while(1)    {        switch(main_menu())          //获取main_menu()函数输入的数据        {            case 1:                system("CLS");                add();                break;            case 2:                system("CLS");                printf("\n查询学生成绩信息功能待完成!\n");                //以后版本插入函数  check()                break;            case 3:                system("CLS");                printf("\n修改学生成绩信息功能待完成!\n");                //以后版本插入函数  revise()                break;            case 4:                system("CLS");                printf("\n删除学生成绩信息功能待完成!\n");                //以后版本修改函数  deleted()                break;            case 5:                //system("CLS");                overview();                break;            case 6:                system("CLS");                statistics();                break;            case 0:                system("CLS");                printf("\n确认退出系统?(Y/N) ");                scanf(" %c",&ch);                if (ch == 'Y'||ch == 'y')                {                    return 0;                }                else if (ch == 'N'||ch == 'n')                {                    return main();                }        }    }    return 0;}//主界面函数int main_menu(){    char ch;    do    {    printf("----- 学生成绩管理系统 V2.0 -----\n");    printf("\t1. 学生成绩新增\n");    printf("\t2. 学生成绩查询\n");    printf("\t3. 学生成绩修改\n");    printf("\t4. 学生成绩删除\n");    printf("\t5. 班级成绩全览\n");    printf("\t6. 班级成绩统计\n");    printf("\t0. 退出\n");    printf("输入 : \n");    ch = getch();    if(ch < '0'||ch > '7')          //判断输入错误    {        printf("\n error!\n");        return (ch - 48);    }    }while(ch < '0'||ch > '7');    return (ch - 48);}//学生成绩新增void add(){    int i;    system("CLS");    printf("请输入班级人数: ");    scanf("%d",&num);    printf("请输入每个学生学号、姓名及成绩\n");    for(i = 0;i < num;i++)    {        scanf("%s%s%d",students.ID,students.Name,&students.Mark);    }    printf("成绩录入已完成!\n");}//输入'5'时的界面int menu_5(){    char ch;    do{    printf("\t1---按学号顺序浏览\n");    printf("\t2---按成绩排名浏览\n");    printf("\t0---返回上一级\n");    printf("输入 : \n");    ch = getch();    }while(ch < '0'||ch > '2');    return (ch - 48);}//实现全览功能的函数void overview(){    system("CLS");    char ch = 0;    do{        switch(menu_5())        {        case 0:            system("CLS");            return;        case 1:            printf("按学号顺序成绩列表如下:\n");            ID_select();            break;        case 2:            system("CLS");            printf("按成绩顺序浏览成绩功能待完成!\n");            break;        }       }while(ch < '0'||ch > '2');       return;}//按学号顺序void ID_select(){    int i,j;    struct Student t;           //中间变量t    for(i = 0;i < num;i++)    {        for(j = 0;j < num-1;j++)        {            if (students[j-1].ID>students[j].ID)            {                t = students[j-1];                students[j-1] = students[j];                students[j] = t;            }        }        printf("%s %s %d\n",students.ID,students.Name,students.Mark);    }}//输入'6'时的界面int menu_6(){    char ch;    do{        system("CLS");        printf("\t1----成绩分布统计\n");        printf("\t2----统计不及格人数及名单\n");        printf("\t3----统计优秀人数及名单\n");        printf("\t4----统计及格人数及名单\n");        printf("\t0----返回上一级\n");        printf("输入 : ");        ch = getch();    }while(ch < '0'||ch > '4');    return (ch - 48);}//实现统计功能的函数void statistics(){    system("CLS");    char ch = 0;    do{        switch(menu_6())        {        case 0:            system("CLS");            return;        case 1:            mark_statistics();            break;        case 2:            system("CLS");            printf("功能待完成!\n");            break;        case 3:            system("CLS");            printf("功能待完成!\n");            break;        case 4:            system("CLS");            printf("功能待完成!\n");            break;       }       }while(ch < '0'||ch > '4');}//成绩分布统计void mark_statistics(){    int fail=-1;              //不及格    int pass=0;               //及格    int secondary=0;          //中等    int good=0;               //良好    int excellent=0;          //优秀    int i;    double ratio_1,ratio_2,ratio_3,ratio_4,ratio_5;    printf("成绩分布如下 :\n");    printf("总人数\t不及格\t及格\t中等\t良好\t优秀\n");    for(i = 0;i = 0)            fail++;        else if(students.Mark >= 60 && students.Mark < 70)            pass++;        else if(students.Mark >= 70 && students.Mark < 80)            secondary++;        else if(students.Mark >= 80 && students.Mark < 90)            good++;        else if(students.Mark >= 90 && students.Mark

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP