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"
#define MAX 10
void menu();
void order();
struct student
{
    int id;
    double china;
    double english;
    double math;
};
struct student stu[MAX];
int count=0;
double ave[MAX]={0.0};
void Type()
{
    int num,i=0;
    printf("请输入学生人数:");
    scanf("%d",&num);
    printf("请输入%d名学生的三门成绩\n",num);
    printf("学号\t语文\t英语\t数学\n");
    while (num)
    { 
    if(count>=MAX)
    {
        printf("学生数量以达到上限\n");
        return;
    }
    stu[count].id=++i;
    printf("%d\t",stu[count].id);
    scanf("%lf%lf%lf",&stu[count].china,&stu[count].english,&stu[count].math);
    count++;
    num--;
    }

    printf("录入成功!\n");
    order();
}
void List()
{
    if(count==0)
    {
        printf("成绩表为空!请先使用命令T录入学生成绩\n");
        order();
    }
    printf("学号\t语文\t英语\t数学\t平均分\n");
    for(int i=0;i<count;i++)
    {
        printf("%d\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].china,stu[i].english,stu[i].math,ave[i]);
    }
    order();
}
void search()
{
    int id;
    if(count==0)
    {
        printf("成绩表为空!请先使用命令T录入学生成绩\n");
        order();
    }
    printf("请输入要查询的学生学号:\n");
    scanf("%d",&id);
    for(int i=0;i<count;i++)
    {
        if(stu[i].id==id)
        {
            printf("学号\t语文\t英语\t数学\t平均分\n");
            printf("%d\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].china,stu[i].english,stu[i].math,ave[i]);
            order();
        }
    }
    order();
}
void average()
{
    if(count==0)
    {
        printf("成绩表为空!请先使用命令T录入学生成绩\n");
        order();
    }
    for(int i=0;i<count;i++)
    {
        ave[i]=(stu[i].id+stu[i].china+stu[i].english+stu[i].math)/3;
        
    }
    printf("平均分已计算。请使用命令L查看\n");
    order();
}
void sort()
{
    if(count==0)
    {
        printf("成绩表为空!请先使用命令T录入学生成绩\n");
        order();
    }
    for(int i=0;i<count-1;i++)
    {
         for(int j=0;j<count-1;j++)
         {
             if(ave[j]<ave[j+1])
             {
                 int tem=ave[j];
                 ave[j]=ave[j+1];
                 ave[j+1]=tem;
                 int tem1=stu[j].id;
                 stu[j].id=stu[j+1].id;
                 stu[j+1].id=tem1;
                 int tem2=stu[j].china;
                 stu[j].china=stu[j+1].china;
                 stu[j+1].china=tem2;
                 int tem3=stu[j].english;
                 stu[j].english=stu[j+1].english;
                 stu[j+1].english=tem3;
                 int tem4=stu[j].math;
                 stu[j].math=stu[j+1].math;
                 stu[j+1].math=tem3;
             }
         }
    }
    printf("完成排序,请使用命令L查看。");
    order();
}
void help()
{
    menu();
     printf("请输入命令="); 
}
void menu()
{
    printf("**********************************************************\n");
    printf("\t*\t学生成绩管理系统————帮助菜单\t*\t\n");
    printf("**********************************************************\n");     
    printf("\t*\t H = 显示帮助菜单\t\t*\t\n");
    printf("\t*\t T = 成绩录入    \t\t*\t\n");
    printf("\t*\t A = 计算学生平均分\t\t*\t\n");
    printf("\t*\t L = 列出成绩表   \t\t*\t\n");
    printf("\t*\t P = 按平均成绩由高到低排序 \t*\t\n");
    printf("\t*\t S = 按学号查询学生成绩 \t*\t\n");
    printf("\t*\t C = 清屏         \t\t*\t\n");
    printf("\t*\t Q = 退出系统      \t\t*\t\n");
    printf("**********************************************************\n");
    printf("\t*\tCopyright<C>2016.06.12 By 姓名  *\t\n");
    printf("**********************************************************\n");
}
void order()
{ 
 printf("请输入命令="); 
    while(1)
    {
    char choice;  
    scanf(" %c",&choice);
    switch (choice)
    {
    case 'T':
        Type();
        break;
    case 'L':
        List();
        break;
    case 'S':
        search();
        break;
    case 'A':
        average();
        break;
    case 'P':
        sort();
        break;
    case 'H':
        help();
        break;
    case 'C':
        system("clear");
        printf("请输入命令="); 
        break;
    case 'Q':
        exit(0);
        break;
    default:
    printf("指令错误,请重新输入命令:\n");
    printf("请输入命令="); 
    break;
    }   
    }  
}
int main(int argc, char const *argv[])
{   
    menu();
    order();
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值