C语言学生管理系统

1)系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令。

2)开始时还没有录入成绩,所以输入命令 L 也无法列出成绩。应提示“成绩表为空!请先使用命令 T 录入学生成绩。”

同理,当输入其他的成绩处理命令时也作相应的处理。

3)输入命令 T,调用Type子函数录入成绩。

界面提示输入学生人数

输入3  提示输入3名学生的3门课成绩,列出成绩单的表头“学号 语文 数学 英语”,提示学号:1

输入1号学生的3门课成绩,用空格间隔,回车结束。提示学号:2

输入2号学生的3门课成绩,用空格间隔,回车结束。提示学号:3

输入3号学生的3门课成绩,用空格间隔,回车结束。Type子函数调用结束,返回。提示输入命令

4)输入命令 L ,调用List子函数输出成绩表。List子函数调用结束,返回。提示输入命令

5)输入命令 A ,调用Average子函数计算平均分,提示“平均分已计算。请使用命令L查看。” Average子函数调用结束,返回。提示输入命令

输入命令 L ,调用List子函数输出成绩表。List子函数调用结束,返回。提示输入命令

6)输入命令 P ,调用Sort子函数将各学生记录按平均分由高到低排序,提示“完成排序。请使用命令L查看。” Sort子函数调用结束,返回。提示输入命令

输入命令 L ,调用List子函数输出成绩表。List子函数调用结束,返回。提示输入命令

7)输入命令 S ,调用Search子函数查询学生成绩,提示“输入要查询的学生学号”。

输入2  找到2号学生的成绩并输出。Search子函数调用结束,返回。提示输入命令

8)输入命令C 执行清屏函数语句system("clear");

清除屏幕的所有内容。提示输入命令

9)输入命令H  调用Help子函数显示帮助菜单。Help子函数调用结束,返回。提示输入命令

10)输入命令Q  则退出系统。

#include<stdio.h>
#include <stdlib.h>  
float avg[] = {0};
float *avg1= avg;
int student;
struct score
    {
        int xuehao;
        float yuwen;
        float shuxue;
        float waiyu;
    }number[10];
void type(struct score *p){
    printf("学号   语文   数学   外语\n");
    int i;
    for (i = 0; i < student; i++)
    {
        number[i].xuehao = i+1;
        printf(" %d    ",i+1);
        scanf("%f %f %f",&number[i].yuwen,&number[i].shuxue,&number[i].waiyu);
    }    
}
void list(struct score number[]){
    printf("学号 语文   数学    外语   平均分\n");
    for (int i = 0; i < student; i++)
    {
        printf("%d   %.2f   %.2f   %.2f   %.2f\n",number[i].xuehao,number[i].yuwen,number[i].shuxue,number[i].waiyu,avg[i]);
    }
}
int Average(struct score number[]){
    
    for (int i = 0; i < student; i++)
    {
        float sum = 0;
        *(avg1+i) = (number[i].shuxue+number[i].waiyu+number[i].yuwen) / 3; 
    }
}
int Sort(){
    for (int i = 0; i <student - 1; i++)
    {
        for (int j = 0; i < student - i - j; j++)
        {
            if (avg1[j] < avg1[j+1])
            {
                float tem = avg1[j];
                avg1[j] = avg1[j+1];
                avg1[j+1] = tem;
                float tem1 = number[j].shuxue;
                number[j].shuxue = number[j+1].shuxue;
                number[j+1].shuxue = tem1;
                float tem2 = number[j].waiyu;
                number[j].waiyu = number[j+1].waiyu;
                number[j+1].waiyu = tem2;
                float tem3 = number[j].yuwen;
                number[j].yuwen = number[j+1].yuwen;
                number[j+1].yuwen = tem3;
                float tem4 = number[j].xuehao;
                number[j].xuehao = number[j+1].xuehao;
                number[j+1].xuehao = tem4; 
            }
        }
    }  
}
void Search(){
    printf("请输入要查询的学号:");
    int select_xuehao;
    scanf("%d",&select_xuehao);
    for (int i = 0; i < student; i++)
    {
        if (select_xuehao == number[i].xuehao)
        {
            printf("学号 语文   数学    外语   平均分\n");
            printf("%d   %.2f   %.2f   %.2f   %.2f\n",number[i].xuehao,number[i].yuwen,number[i].shuxue,number[i].waiyu,avg[i]);
        }  
    }
}
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.08.10 By 潘健  *\n");
    printf("*************************************\n");
    printf("请输入命令=");
}
int main(int argc, char const *argv[])
{
    Help();
    int num = 0;
    while (1)
    {
        //printf("进入下次循环\n");
        //printf("请输入命令=");
        char b;
        b = getchar();
        if (b == 'L')
        {
            if (num == 0)
            {
            printf("成绩表为空!请先使用T录入学生成绩\n");
            continue;
            }else
            {
            printf("进入L\n");
            //printf("%d",number[1].shuxue);
            list(number);
            puts("\n");
            continue; 
            }
        }else if (b == 'A')
        {
            if (num == 0)
            {
            printf("成绩表为空!请先使用T录入学生成绩\n");
            continue;
            }else
            {
                Average(number);
                printf("平均分已计算。请使用命令L查看");
            } 
        }else if (b == 'P')
        {
            if (num == 0)
            {
            printf("成绩表为空!请先使用T录入学生成绩\n");
            continue;
            }else
            {
                //输入命令 P ,调用Sort子函数将各学生记录按平均分由高到低排序,提示“完成排序。请使用命令L查看。” 
                //Sort子函数调用结束,返回。提示输入命令。
                Sort();
                printf("完成排序。请使用命令L查看。\n");
            }
        }else if (b == 'S')
        {
            if (num == 0)
            {
            printf("成绩表为空!请先使用T录入学生成绩\n");
            continue;
            }else
            {
                Search();
            }
        }else if (b == 'T')
        {
            printf("请输入学生人数:");
            scanf("%d",&student);
            type(number);
            num+=1;
            printf("退出T");
            continue;
        }else if (b == 'Q')break;
        else if(b=='\n'){
            printf("进入下次循环\n");
            printf("请输入命令=");
        }else if (b == 'C')
        {
            system("clear");
        }else if (b == 'H')
        {
            Help();
        }
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值