纯C代码 学生信息管理项目

#include <stdio.h>
#include <stdlib.h>
void start();
void iput();
void list();
void list1();
void average();
void paixu();
void search();

struct student
{
    int id;
    float chinese;
    float math;
    float english;
    float pingjun;
} stu[100];

int people;

int main()
{
    char nice;
    start();

    while (1)
    {
        printf("请输入命令= ");
        scanf(" %c", &nice);
        switch (nice)
        {
        case 'A':
        case 'P':
        case 'S':
        case 'L':

            printf("命令表为空!请先使用命令T,录入学生成绩\n");

            getchar();
            break;

        case 'T':
            iput();
            getchar();
            break;
        case 'C':
            system("clear");
            getchar();
            break;
        case 'H':
            start();
            getchar();
            break;
        case 'Q':
            getchar();
            printf("按任意键+回车退出\n");
            char rubbish;
            scanf(" %c", &rubbish);
            return 0;
        default:
            printf("命令有误,请再次输入命令\n");

            getchar();
            break;
        }

        if (people != '\0')
            break;
    }

    while (1)
    {
        printf("请输入命令= ");
        scanf(" %c", &nice);
        switch (nice)
        {
        case 'A':
            average();
            printf("平均分已计算,使用命令L查看\n");
            getchar();
            break;
        case 'P':
            paixu();
            printf("排序已完成,使用命令L查看\n");
            getchar();
            break;
        case 'S':
            search();
            getchar(); 
            break;
        case 'L':
            if (stu[1].pingjun != '\0')
            {
                list1();
            }
            else
            {
                list();
            }
            getchar();
            break;
        case 'T':
            iput();
            getchar();
            break;
        case 'C':
            system("clear");
            getchar();
            break;
        case 'H':
            start();
            getchar();
            break;
        case 'Q':
            getchar();
            printf("按任意键+回车退出\n");
            char rubbish;
            scanf(" %c", &rubbish);
            return 0;
        default:
            printf("输入有错误,请再次输入命令\n");
            
            break;
        }
    }
}

void start()
{
    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> 2023.08.12 by乔远乐  *   \n");
    printf("**********************************************\n");
}

void iput()
{
    printf("请选几名学生: ");
    scanf(" %d", &people);
    printf("请输入%d名学生的三门课成绩\n", people);
    printf("学号    语文    数学    英语\n");
    for (int i = 0; i < people; i++)
    {
        printf("%d        ", stu[i].id = i + 1);
        scanf(" %f%f%f", &stu[i].chinese, &stu[i].math, &stu[i].english);
        printf("\n");
    }
}

void list()
{
    printf("学号\t语文\t数学\t英语\n");
    for (int i = 0; i < people; i++)
    {
        printf("%d\t%f\t%f\t%f\n", stu[i].id, stu[i].chinese, stu[i].math, stu[i].english);
        printf("\n");
    }
    printf("\n");
}

void list1()
{
    printf("学号\t语文\t数学\t英语\t平均分\n");
    for (int i = 0; i < people; i++)
    {
        printf("%d\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].id, stu[i].chinese, stu[i].math, stu[i].english, stu[i].pingjun);
        printf("\n");
    }
    printf("\n");
}

void average()
{
    float avag;
    for (int i = 0; i < people; i++)
    {
        avag = (stu[i].chinese + stu[i].math + stu[i].english) / 3;

        stu[i].pingjun = avag;
    }
}

void paixu()
{
    int i, j;
    struct student temp;

    for (i = 0; i < people - 1; i++)
    {
        for (j = 0; j < people - 1 - i; j++)
        {
            if (stu[j].pingjun < stu[j + 1].pingjun)
            {
                temp = stu[j];
                stu[j] = stu[j + 1];
                stu[j + 1] = temp;
            }
        }
    }
}

void search()
{

    while (1)

    {

        int temp;
        printf("请输入你要查询的学生id\n");
        scanf(" %d", &temp);
        if (temp > people ||temp <= 0)
        {
            printf("输入有A误,请重新输入\n");
        }
        else
        { 
            for (int i = 0; i < people; i++)
            {
                if (stu[i].id == temp)
                {
                    printf("学号\t语文\t数学\t英语\t平均分\n");
                    printf("%d\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].id, stu[i].chinese, stu[i].math, stu[i].english, stu[i].pingjun);
                    return ;
                    
                }
                
            }
        }

    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值