学生管理系统

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

struct student
{
    int id;
    float Chinese;
    float Math;
    float English;
    float Average;
} stu[10];
int n;//学生的数量
void Help()
{
    printf("**************************************\n");
    printf("*     学生成绩管理系统--帮助菜单     *\n");
    printf("**************************************\n");
    printf("*        H = 显示帮助菜单            *\n");
    printf("*        T = 成绩录入                *\n");
    printf("*        A = 计算学生平均成绩        *\n");
    printf("*        L = 列出成绩表              *\n");
    printf("*        P = 按平均成绩由高到低排序  *\n");
    printf("*        S = 按学号查询学生成绩      *\n");
    printf("*        C = 清屏                    *\n");
    printf("*        Q = 退出系统                *\n");
    printf("**************************************\n");
    printf("*   Copyright <C> 2024.4.12 By TA  *\n");
    printf("**************************************\n");
}

void Type(struct student *p)
{
    printf("请输入学生人数:\n");
    scanf("%d", &n);
    printf("请输入%d名学生的三门课成绩:\n",n);
    printf("学号 语文 数学 外语\n");
    for (int i = 0; i < n; i++)
    {
        scanf("%d %f %f %f", &p[i].id, &p[i].Chinese, &p[i].Math, &p[i].English);
    }
    getchar();
}

void Averange(struct student *p)
{
    if (n == 0)
    {
        printf("成绩表为空!请先使用命令T录入学生成绩\n");
        return;
    }
    for (int i = 0; i < n; i++)
    {
        p[i].Average = (p[i].Chinese + p[i].Math + p[i].English)/3;
    }
    printf("平均分已计算完,请使用命令 L 查看。\n");
}


void List(struct student *p)
{
    if (n == 0)
    {
        printf("成绩表为空!请先使用命令T录入学生成绩\n");
        return;
    }
    printf("学号 语文 数学 外语 平均分\n");
    for (int i = 0; i < n; i++)
    {
        printf("%d %.1f %.1f %.1f %.1f\n", p[i].id, p[i].Chinese, p[i].Math, p[i].English, p[i].Average);
    }
}


void Sort(struct student *p)
{
    if (n == 0)
    {
        printf("成绩为空!请先使用命令 T 录入学生成绩\n");
        return;
    }
    struct student temp;
    for (int i = 0; i < n-1; i++)
    {
        for (int j = 0; j < n -1- i; j++)
        {
            if (p[j].Average < p[j + 1].Average)
            {
                temp = p[j];
                p[j] = p[j + 1];
                p[j + 1] = temp;
            }
        }
    }
    printf("完成排序,请使用 L 查看\n");
}

void Search(struct student *p)
{
    if (n == 0)
    {
        printf("成绩为空!请先使用命令 T 录入学生成绩\n");
        return;
    }
    printf("请输入要查询的学号\n");
    int num;
    scanf("%d", &num);
    getchar();
    for (int i = 0; i < n; i++)
    {
        if (p[i].id == num)
        {
            printf("学号 语文 数学 英语 平均分\n");
            printf("%d %.1f %.1f %.1f %.1f\n", p[i].id, p[i].Chinese, p[i].Math, p[i].English, p[i].Average);
            return;
        }
    }
}

void Clear()
{
    system("clear");
}

void Quit()
{
    exit(1);
}

int main()
{
    char opt;
    Help();

    while (1)
    {
        printf("请输入命令:\n");
        scanf(" %c", &opt);
        getchar();
        switch (opt)
        {
        case 'H':
            Help();
            break; //帮助菜单
        case 'T':
            Type(stu);
            break; //输入成绩
        case 'A':
            Averange(stu);
            break; //
        case 'L':
            List(stu);
            break; //列表
        case 'P':
            Sort(stu);
            break; //排序
        case 'S':
            Search(stu);
            break; //搜索
        case 'C':
            Clear();
            break; //清屏
        case 'Q':
            Quit();
            break; //退出
        }
    }
    return 0;
}

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值