#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;
}