学生成绩管理系统的初步实现(C)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define QP system("cls");
void f1()
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃  Welcome to score manange system   ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.初始化                          ┃\n");
    printf("     ┃  2.添加新的学生记录                ┃\n");
    printf("     ┃  3.查询和修改已有学生记录          ┃\n");
    printf("     ┃  4.显示当前保存信息                ┃\n");
    printf("     ┃  5.根据学号查询已有学生记录        ┃\n");
    printf("     ┃  6.根据姓名查询已有学生记录        ┃\n");
    printf("     ┃  7.删除已有学生记录                ┃\n");
    printf("     ┃  8.根据总分排序                    ┃\n");
    printf("     ┃  9.清除屏幕信息                    ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f2()
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃  Welcome to score manange system   ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.根据学号查询已有学生记录        ┃\n");
    printf("     ┃  2.根据姓名查询已有学生记录        ┃\n");
    printf("     ┃  3.清除屏幕信息                    ┃\n");
    printf("     ┃  4.返回上级                        ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");  
}
void f3()
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃  Welcome to score manange system   ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.管理员登陆                      ┃\n");
    printf("     ┃  2.学生登陆                        ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
struct student
{
    long no;
    char name[20];
    int chinese;
    int maths;
    int english;
    int total;
};
struct student s[50];
int n = 0;
void init()
{
    printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
    printf("当输入学号为0时停止输入\n");
    while (n <= 50)
    {
        printf("请输入学生的学号:");
        scanf("%ld", &s[n].no);
        if (s[n].no == 0)
            break;
        printf("请输入学生的姓名:");
        scanf("%s", s[n].name);
        printf("请输入学生的语文,数学,英语成绩:");
        scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
        s[n].total = s[n].chinese + s[n].maths + s[n].english;
        n++;
    }
}
void print()
{
    int j;
    printf("学生记录如下:\n");
    printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
    for (j = 0; j < n; j++)
        printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[j].no, s[j].name, s[j].chinese, s[j].maths, s[j].english, s[j].total);
    printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
void add()
{
    printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
    printf("请输入学生的学号:");
    scanf("%ld", &s[n].no);
    printf("请输入学生的姓名:");
    scanf("%s", s[n].name);
    printf("请输入学生的语文,数学,英语成绩:");
    scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
    s[n].total = s[n].chinese + s[n].maths + s[n].english;
    n++;
}
void mod()
{
    int num, i;
    int found = 1;
    char choice;
    while (1)
    {
        printf("请输入要修改的学生的学号:");
        scanf("%d", &num);
        for (i = 0; i < n&&found == 1; i++)
            if (s[i].no == num)
            {
                found = 0;
                printf("%ld\t%s\t%d\t%d\t%d\t%d\t\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
                scanf("%d%d%d", &s[i].chinese, &s[i].maths, &s[i].english);
                s[i].total = s[i].chinese + s[i].maths + s[i].english;
            }
        if (found == 1)
            printf("未找到\n");
        found = 1;
        printf("是否继续修改(Y/N)\n");
        choice = getchar();
        getchar();
        if (choice == 'N' || choice == 'n')
            break;
    }
}
void findbyno()
{
    int num, i;
    int found = 1;
    char choice;
    while (1)
    {
        printf("请输入要查找的学生的学号:");
        scanf("%d", &num);
        for (i = 0; i < n&&found == 1; i++)
            if (s[i].no == num)
            {
                found = 0;
                printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
                printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
                printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
                    printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
                printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
            }
        if (found == 1)
            printf("未找到\n");
        found = 1;
        printf("是否继续查询(Y/N)\n");
        getchar();
        choice = getchar();     
        if (choice == 'N' || choice == 'n')
            break;
    }
}
void findbyname()
{
    int num, i;
    int found = 1;
    char choice;
    char w[20];
    while (1)
    {
        printf("请输入要查找的学生的姓名:");
        gets(w);
        for (i = 0; i < n&&found == 1; i++)
            if (strcmp(s[i].name, w) == 0)
            {
                found = 0;
                printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
                printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
                printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
                    printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
                printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
            }
        if (found == 1)
            printf("未找到\n");
        found = 1;
        printf("是否继续查询(Y/N)\n");
        choice = getchar();
        getchar();
        if (choice == 'N' || choice == 'n')
            break;
    }
}
void del()
{
    int num, i,j;
    int found = 1;
    char choice;
    while (1)
    {
        printf("请输入要删除的学生的学号:");
        scanf("%d", &num);
        for (i = 0; i < n&&found == 1; i++)
            if (s[i].no == num)
            {
                found = 0;
                for(j=i+1;j<=n-1;i++)
                    s[j-1]=s[j];
                n--;    
            }
        if (found == 1)
            printf("未找到\n");
        found = 1;
        printf("是否继续删除(Y/N)\n");
        getchar();
        choice = getchar();

        if (choice == 'N' || choice == 'n')
            break;
    }
}
void sort()
{
    int i,j;
    struct student k;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-1-i;j++)
            if(s[j].total<s[j+1].total)
                {
                    k=s[j];
                    s[j]=s[j+1];
                    s[j+1]=k;               
                }
}
void run1()
{
    int A;
    f1();
    while (1)
    {
        printf("请输入0-9:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            init();
            print();
            break;
        case 2:
            add();
            print();
            break;
        case 3:
            mod();
            print();
            break;
        case 4:
            print();
            break;
        case 5:
            findbyno();
            break;
        case 6:
            findbyname();
            break;
        case 7:
            del();
            print();
            break;
        case 8:
            sort();
            print();
            break;
        case 9:
            QP
            f1();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void run();
void run2()
{
    int A;
    f2();
    while (1)
    {
        printf("请输入0-4:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            findbyno();
            break;
        case 2:
            findbyname();
            break;
        case 3:
            QP
            f2();
            break;
        case 4:
            QP
            run();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void run()
{
    int A;
    int m;
    f3();
    while (1)
    {
        printf("请输入0-2:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            printf("请输入密码:\n");
            scanf("%d",&m);
            printf("%d",m);
            if(m==12345)
                {
                    QP
                    run1();
                }
            else
                {
                    QP
                    f3();
                }   
            break;
        case 2:
            QP
            run2();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
int main()
{
    run();
    return 0;
}                                  
课后作业,未完成版,待完善中。
环境Dev 5.4.0
—————————————————————————————————————————————————————————————————————————————————————————————————————
5.21完善。
#include <stdio.h>
#include <stdlib.h>                          //修改控制台颜色所需头文件 
#include <string.h>
#define QP system("cls");                    //定义“清屏” 
void run();
void sort();
void f1()                                    //管理员界面   
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃    Administrator      systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.初始化                          ┃\n");
    printf("     ┃  2.添加新的学生记录                ┃\n");
    printf("     ┃  3.查询和修改已有学生记录          ┃\n");
    printf("     ┃  4.显示当前保存信息                ┃\n");
    printf("     ┃  5.查询系统                        ┃\n");
    printf("     ┃  6.删除已有学生记录                ┃\n");
    printf("     ┃  7.排序系统                        ┃\n");
    printf("     ┃  8.清除屏幕信息                    ┃\n");
    printf("     ┃  9.返回上级                        ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f2()                                    //学生界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃      Student          systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.查询系统                        ┃\n");
    printf("     ┃  2.清除屏幕信息                    ┃\n");
    printf("     ┃  3.返回上级                        ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f3()                                    //开始界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃  Welcome to score manange system   ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.管理员登陆                      ┃\n");
    printf("     ┃  2.学生登陆                        ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f4()                                    //排序界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃    Administrator      systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.语文                            ┃\n");
    printf("     ┃  2.数学                            ┃\n");
    printf("     ┃  3.英语                            ┃\n");
    printf("     ┃  4.总分                            ┃\n");
    printf("     ┃  5.清除屏幕信息                    ┃\n");
    printf("     ┃  0.返回上级                        ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f5()                                    //排序选项界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃    Administrator      systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.降序                            ┃\n");
    printf("     ┃  2.升序                            ┃\n");
    printf("     ┃  3.清除屏幕信息                    ┃\n");
    printf("     ┃  0.返回上级                        ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f6()                                    //查找界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃    Administrator      systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.学号查找                        ┃\n");
    printf("     ┃  2.姓名查找                        ┃\n");
    printf("     ┃  3.清除屏幕信息                    ┃\n");
    printf("     ┃  0.返回上级                        ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
struct student                               //定义学生结构体 
{
    long no;
    char name[20];
    int chinese;
    int maths;
    int english;
    int total;
};
struct student s[50];
int n = 0;
void init()                                  //输入 
{
    printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
    printf("当输入学号为0时停止输入\n");
    while (n <= 50)
    {
        printf("请输入学生的学号:");
        scanf("%ld", &s[n].no);
        if (s[n].no == 0)
            break;
        printf("请输入学生的姓名:");
        scanf("%s", s[n].name);
        printf("请输入学生的语文,数学,英语成绩:");
        scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
        s[n].total = s[n].chinese + s[n].maths + s[n].english;
        n++;
    }
}
void print()                                 //输出 
{
    int j;
    printf("学生记录如下:\n");
    printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
    for (j = 0; j < n; j++)
        printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[j].no, s[j].name, s[j].chinese, s[j].maths, s[j].english, s[j].total);
    printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
void add()                                   //增加 
{
    printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
    printf("请输入学生的学号:");
    scanf("%ld", &s[n].no);
    printf("请输入学生的姓名:");
    scanf("%s", s[n].name);
    printf("请输入学生的语文,数学,英语成绩:");
    scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
    s[n].total = s[n].chinese + s[n].maths + s[n].english;
    n++;
}
void mod()                                   //查询 修改 
{
    int num, i;
    int found = 1;
    char choice;
    while (1)
    {
        printf("请输入要修改的学生的学号:");
        scanf("%d", &num);
        for (i = 0; i < n&&found == 1; i++)
            if (s[i].no == num)
            {
                found = 0;
                printf("%ld\t%s\t%d\t%d\t%d\t%d\t\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
                scanf("%d%d%d", &s[i].chinese, &s[i].maths, &s[i].english);
                s[i].total = s[i].chinese + s[i].maths + s[i].english;
            }
        if (found == 1)
            printf("未找到\n");
        found = 1;
        printf("是否继续修改(Y/N)\n");
        getchar();
        choice = getchar();
        if (choice == 'N' || choice == 'n')
            break;
    }
}
void findbyno()                              //学号查找 
{
    int num, i;
    int found = 1;
    printf("请输入要查找的学生的学号:");
    scanf("%d", &num);
    for (i = 0; i < n; i++)
        if (s[i].no == num)
        {
            found = 0;
            printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
            printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
            printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
            printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
            printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
        }
    if (found == 1)
        printf("未找到\n");
}
void findbyname()                            //姓名查找 
{
    int num, i;
    int found = 1;
    char w[20];
    printf("请输入要查找的学生的姓名:");
    getchar();
    gets(w);
    for (i = 0; i < n; i++)
        if (strcmp(s[i].name, w) == 0)
        {
            found = 0;
            printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
            printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
            printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
            printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
            printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
        }
    if (found == 1)
        printf("未找到\n");
}
void find_f1()                                  //管理员查询系统 
{
    QP
        int A;
    f6();
    while (1)
    {
        printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            findbyno();
            break;
        case 2:
            findbyname();
            break;
        case 3:
            QP
                f6();
            break;
        case 0:
            QP
                f1();
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void find_f2()                                  //学生查询系统 
{
    QP
        int A;
    f6();
    while (1)
    {
        printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            findbyno();
            break;
        case 2:
            findbyname();
            break;
        case 3:
            QP
                f6();
            break;
        case 0:
            QP
                f2();
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void del()                                   //删除 
{
    int num, i, j;
    int found = 1;
    char choice;
    while (1)
    {
        printf("请输入要删除的学生的学号:");
        scanf("%d", &num);
        for (i = 0; i < n&&found == 1; i++)
            if (s[i].no == num)
            {
                found = 0;
                for (j = i + 1; j <= n - 1; i++)
                    s[j - 1] = s[j];
                n--;
            }
        if (found == 1)
            printf("未找到\n");
        found = 1;
        printf("是否继续删除(Y/N)\n");
        getchar();
        choice = getchar();
        if (choice == 'N' || choice == 'n')
            break;
    }
}
void sort_totalmin()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].total < s[j + 1].total)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_totalmax()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].total > s[j + 1].total)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_total()                            //总分排序 
{
    QP
        int A;
    f5();
    while (1)
    {
        printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_totalmin();
            print();
            break;
        case 2:
            sort_totalmax();
            print();
            break;
        case 3:
            QP
                f5();
            break;
        case 0:
            QP
                f4();
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void sort_chinesemin()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].chinese < s[j + 1].chinese)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_chinesemax()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].chinese > s[j + 1].chinese)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_chinese()                          //语文排序 
{
    QP
        int A;
    f5();
    while (1)
    {
        printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_chinesemin();
            print();
            break;
        case 2:
            sort_chinesemax();
            print();
            break;
        case 3:
            QP
                f5();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void sort_mathsmin()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].maths < s[j + 1].maths)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_mathsmax()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].maths > s[j + 1].maths)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_maths()                            //数学排序 
{
    QP
        int A;
    f5();
    while (1)
    {
        printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_mathsmin();
            print();
            break;
        case 2:
            sort_mathsmax();
            print();
            break;
        case 3:
            QP
                f5();
            break;
        case 0:
            QP
                f4();
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void sort_englishmin()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].english < s[j + 1].english)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_englishmax()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].english > s[j + 1].english)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_english()                          //英语排序 
{
    QP
        int A;
    f5();
    while (1)
    {
        printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_englishmin();
            print();
            break;
        case 2:
            sort_englishmax();
            print();
            break;
        case 3:
            QP
                f5();
            break;
        case 0:
            QP
                f4();
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void sort()                                  //排序
{
    int A;
    f4();
    while (1)
    {
        printf("请输入0-5:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_chinese();
            break;
        case 2:
            sort_maths();
            break;
        case 3:
            sort_english();
            break;
        case 4:
            sort_total();
            break;
        case 5:
            QP
                f4();
            break;
        case 0:
            QP
                f1();
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void run1()                                  //运行管理员界面 
{
    system("color 0B");
    int A;
    f1();
    while (1)
    {
        printf("请输入0-9:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            init();
            print();
            break;
        case 2:
            add();
            print();
            break;
        case 3:
            mod();
            print();
            break;
        case 4:
            print();
            break;
        case 5:
            find_f1();
            break;
        case 6:
            del();
            print();
            break;
        case 7:
            QP
                sort();
            break;
        case 8:
            QP
                f1();
            break;
        case 9:
            QP
                run();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void run2()                                  //运行学生界面 
{
    system("color 0E");
    int A;
    f2();
    while (1)
    {
        printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            find_f2();
            break;
        case 2:
            QP
                f2();
            break;
        case 3:
            QP
                run();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void run()                                   //运行开始界面 
{
    system("color 3F");
    int A;
    int m;
    f3();
    while (1)
    {
        printf("请输入0-2:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            printf("请输入密码:\n");
            scanf("%d", &m);
            printf("%d", m);
            if (m == 12345)
            {
                QP
                    run1();
            }
            else
            {
                QP
                    f3();
            }
            break;
        case 2:
            QP
                run2();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
int main()                                   //主函数 
{
    run();
    return 0;
}

5.28更新。完善之前的一些错误,下次更新估计就是改用链表,加入文件。

#include <stdio.h>
#include <stdlib.h>                          //修改控制台颜色所需头文件 
#include <string.h>

#define QP system("cls");                    //定义“清屏” 

void run();
void run1();
void run2();
void sort_total();
void sort_total1();
void sort_chinese();
void sort_chinese1();
void sort_maths();
void sort_maths1();
void sort_english();
void sort_english1();
void sort();
void sort1();
void find_f1();
void find_f11();
void find_f2();
void find_f22(); 

void f1()                                    //管理员界面   
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃    Administrator      systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.初始化                          ┃\n");
    printf("     ┃  2.添加新的学生记录                ┃\n");
    printf("     ┃  3.查询和修改已有学生记录          ┃\n");
    printf("     ┃  4.显示当前保存信息                ┃\n");
    printf("     ┃  5.查询系统                        ┃\n");
    printf("     ┃  6.删除已有学生记录                ┃\n");
    printf("     ┃  7.排序系统                        ┃\n");
    printf("     ┃  8.清除屏幕信息                    ┃\n");
    printf("     ┃  9.返回上级                        ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f2()                                    //学生界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃      Student          systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.查询系统                        ┃\n");
    printf("     ┃  2.清除屏幕信息                    ┃\n");
    printf("     ┃  3.返回上级                        ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f3()                                    //开始界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃  Welcome to score manange system   ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.管理员登陆                      ┃\n");
    printf("     ┃  2.学生登陆                        ┃\n");
    printf("     ┃  0.退出学生成绩管理系统            ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f4()                                    //排序界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃    Administrator      systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.语文                            ┃\n");
    printf("     ┃  2.数学                            ┃\n");
    printf("     ┃  3.英语                            ┃\n");
    printf("     ┃  4.总分                            ┃\n");
    printf("     ┃  5.清除屏幕信息                    ┃\n");
    printf("     ┃  0.返回上级                        ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f5()                                    //排序选项界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃    Administrator      systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.降序                            ┃\n");
    printf("     ┃  2.升序                            ┃\n");
    printf("     ┃  3.清除屏幕信息                    ┃\n");
    printf("     ┃  0.返回上级                        ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f6()                                    //查找界面 
{
    printf("     ┏━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃    Administrator      systems      ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━┫\n");
    printf("     ┃  1.学号查找                        ┃\n");
    printf("     ┃  2.姓名查找                        ┃\n");
    printf("     ┃  3.清除屏幕信息                    ┃\n");
    printf("     ┃  0.返回上级                        ┃\n");
    printf("     ┗━━━━━━━━━━━━━━━━━━┛\n");
}

struct student                               //定义学生结构体 
{
    long no;
    char name[20];
    int chinese;
    int maths;
    int english;
    int total;
};
struct student s[50];
int n = 0;

void init()                                  //输入 
{
    printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
    printf("当输入学号为0时停止输入\n");
    while (n <= 50)
    {
        printf("请输入学生的学号:");
        scanf("%ld", &s[n].no);
        if (s[n].no == 0)
            break;
        printf("请输入学生的姓名:");
        scanf("%s", s[n].name);
        printf("请输入学生的语文,数学,英语成绩:");
        scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
        s[n].total = s[n].chinese + s[n].maths + s[n].english;
        n++;
    }
}
void print()                                 //输出 
{
    int j;
    printf("学生记录如下:\n");
    printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
    printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
    printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
    for (j = 0; j < n; j++)
        printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[j].no, s[j].name, s[j].chinese, s[j].maths, s[j].english, s[j].total);
    printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}

void add()                                   //增加 
{
    printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
    printf("请输入学生的学号:");
    scanf("%ld", &s[n].no);
    printf("请输入学生的姓名:");
    scanf("%s", s[n].name);
    printf("请输入学生的语文,数学,英语成绩:");
    scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
    s[n].total = s[n].chinese + s[n].maths + s[n].english;
    n++;
}

void mod()                                   //查询 修改 
{
    int num, i;
    int found = 1;
    char choice;
    while (1)
    {
        printf("请输入要修改的学生的学号:");
        scanf("%d", &num);
        for (i = 0; i < n&&found == 1; i++)
            if (s[i].no == num)
            {
                found = 0;
                printf("%ld\t%s\t%d\t%d\t%d\t%d\t\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
                scanf("%d%d%d", &s[i].chinese, &s[i].maths, &s[i].english);
                s[i].total = s[i].chinese + s[i].maths + s[i].english;
            }
        if (found == 1)
            printf("未找到\n");
        found = 1;
        printf("是否继续修改(Y/N)\n");
        getchar();
        choice = getchar();
        if (choice == 'N' || choice == 'n')
            break;
    }
}

void findbyno()                              //学号查找 
{
    int num, i;
    int found = 1;
    printf("请输入要查找的学生的学号:");
    scanf("%d", &num);
    for (i = 0; i < n; i++)
        if (s[i].no == num)
        {
            found = 0;
            printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
            printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
            printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
            printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
            printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
        }
    if (found == 1)
        printf("未找到\n");
}
void findbyname()                            //姓名查找 
{
    int num, i;
    int found = 1;
    char w[20];
    printf("请输入要查找的学生的姓名:");
    getchar();
    gets(w);
    for (i = 0; i < n; i++)
        if (strcmp(s[i].name, w) == 0)
        {
            found = 0;
            printf("     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
            printf("     ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩         ┃\n");
            printf("     ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
            printf("     ┃  %ld  \t %s  \t %d  \t  %d  \t  %d  \t  %d  \t       ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
            printf("     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
        }
    if (found == 1)
        printf("未找到\n");
}
void find_f1()                                  //管理员查询系统 
{
    QP
        int A;
    f6();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            findbyno();
            find_f11();
            break;
        case 2:
            findbyname();
            find_f11();
            break;
        case 3:
            QP
                find_f11();
            break;
        case 0:
            QP
                run1();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void find_f11()                                  //管理员查询系统 
{
    //QP
        int A;
    f6();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            findbyno();
            find_f1();
            break;
        case 2:
            findbyname();
            find_f1();
            break;
        case 3:
            QP
                find_f1();
            break;
        case 0:
            QP
                run1();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void find_f2()                                  //学生查询系统 
{
    QP
        int A;
    f6();
    printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            findbyno();
            find_f22();
            break;
        case 2:
            findbyname();
            find_f22();
            break;
        case 3:
            QP
                find_f22();
            break;
        case 0:
            QP
                run2();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void find_f22()                                  //学生查询系统 
{
    //QP
        int A;
    f6();
    printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            findbyno();
            find_f2();
            break;
        case 2:
            findbyname();
            find_f2();
            break;
        case 3:
            QP
                find_f2();
            break;
        case 0:
            QP
                run2();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}

void del()                                   //删除 
{
    int num, i, j;
    int found = 1;
    char choice;
    while (1)
    {
        printf("请输入要删除的学生的学号:");
        scanf("%d", &num);
        for (i = 0; i < n&&found == 1; i++)
            if (s[i].no == num)
            {
                found = 0;
                for (j = i + 1; j <= n - 1; i++)
                    s[j - 1] = s[j];
                n--;
            }
        if (found == 1)
            printf("未找到\n");
        found = 1;
        printf("是否继续删除(Y/N)\n");
        getchar();
        choice = getchar();
        if (choice == 'N' || choice == 'n')
            break;
    }
}

void sort_totalmin()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].total < s[j + 1].total)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_totalmax()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].total > s[j + 1].total)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_total()                            //总分排序 
{
    QP
        int A;
    f5();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_totalmin();
            print();
            sort_total1();
            break;
        case 2:
            sort_totalmax();
            print();
            sort_total1();
            break;
        case 3:
            QP
                sort_total1();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort_total1()                            //总分排序 
{
    //QP
        int A;
    f5();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_totalmin();
            print();
            sort_total();
            break;
        case 2:
            sort_totalmax();
            print();
            sort_total();
            break;
        case 3:
            QP
                sort_total();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort_chinesemin()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].chinese < s[j + 1].chinese)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_chinesemax()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].chinese > s[j + 1].chinese)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_chinese()                          //语文排序 
{
    QP
        int A;
    f5();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_chinesemin();
            print();
            sort_chinese1();
            break;
        case 2:
            sort_chinesemax();
            print();
            sort_chinese1();
            break;
        case 3:
            QP
                sort_chinese1();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort_chinese1()                          //语文排序 
{
    //QP
        int A;
    f5();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_chinesemin();
            print();
            sort_chinese();
            break;
        case 2:
            sort_chinesemax();
            print();
            sort_chinese();
            break;
        case 3:
            QP
                sort_chinese();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort_mathsmin()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].maths < s[j + 1].maths)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_mathsmax()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].maths > s[j + 1].maths)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_maths()                            //数学排序 
{
    QP
        int A;
    f5();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_mathsmin();
            print();
            sort_maths1();
            break;
        case 2:
            sort_mathsmax();
            print();
            sort_maths1();
            break;
        case 3:
            QP
                sort_maths1();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort_maths1()                            //数学排序 
{
    //QP
        int A;
    f5();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_mathsmin();
            print();
            sort_maths();
            break;
        case 2:
            sort_mathsmax();
            print();
            sort_maths();
            break;
        case 3:
            QP
                sort_maths();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort_englishmin()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].english < s[j + 1].english)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_englishmax()
{
    int i, j;
    struct student k;
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (s[j].english > s[j + 1].english)
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
}
void sort_english()                          //英语排序 
{
    QP
        int A;
    f5();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_englishmin();
            print();
            sort_english1();
            break;
        case 2:
            sort_englishmax();
            print();
            sort_english1();
            break;
        case 3:
            QP
                sort_english1();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort_english1()                          //英语排序 
{
    //QP
        int A;
    f5();
    printf("请输入0-3:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_englishmin();
            print();
            sort_english();
            break;
        case 2:
            sort_englishmax();
            print();
            sort_english();
            break;
        case 3:
            QP
                sort_english();
            break;
        case 0:
            QP
                sort();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort()                                  //排序
{
    int A;
    f4();
    printf("请输入0-5:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_chinese();
            break;
        case 2:
            sort_maths();
            break;
        case 3:
            sort_english();
            break;
        case 4:
            sort_total();
            break;
        case 5:
            QP
                sort1();
            break;
        case 0:
            QP
                run1();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}
void sort1()                                  //排序
{
    int A;
    f4();
    printf("请输入0-5:");
    scanf("%d", &A);
        switch (A)
        {
        case 1:
            sort_chinese();
            break;
        case 2:
            sort_maths();
            break;
        case 3:
            sort_english();
            break;
        case 4:
            sort_total();
            break;
        case 5:
            QP
                sort();
            break;
        case 0:
            QP
                run1();
            break;
        default:
            printf("输入错误\n");
            break;
        }
}

void run1()                                  //运行管理员界面 
{
    system("color 0B");
    int A;
    f1();
    while (1)
    {
        printf("请输入0-9:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            init();
            print();
            break;
        case 2:
            add();
            print();
            break;
        case 3:
            mod();
            print();
            break;
        case 4:
            print();
            break;
        case 5:
            find_f1();
            break;
        case 6:
            del();
            print();
            break;
        case 7:
            QP
                sort();
            break;
        case 8:
            QP
                f1();
            break;
        case 9:
            QP
                run();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void run2()                                  //运行学生界面 
{
    system("color 0E");
    int A;
    f2();
    while (1)
    {
        printf("请输入0-3:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            find_f2();
            break;
        case 2:
            QP
                f2();
            break;
        case 3:
            QP
                run();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}
void run()                                   //运行开始界面 
{
    system("color 3F");
    int A;
    int m;
    f3();
    while (1)
    {
        printf("请输入0-2:");
        scanf("%d", &A);
        switch (A)
        {
        case 1:
            printf("请输入密码:\n");
            scanf("%d", &m);
            printf("%d", m);
            if (m == 12345)
            {
                QP
                    run1();
            }
            else
            {
                QP
                    f3();
            }
            break;
        case 2:
            QP
                run2();
            break;
        case 0:
            system("cls");
            exit(0);
            break;
        default:
            printf("输入错误\n");
            break;
        }
    }
}

int main()                                   //主函数 
{
    run();
    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值