#include <stdio.h>
#include <stdlib.h>
struct score
{
int id;
int aa;
int bb;
int cc;
float dd;
};
void Help(void); //H=显示帮助菜单
void Type(struct score s[50], int *n); // T=成绩录入
void Average(struct score s[50], int n); // A=计算学生平均分
void List(struct score s[50], int n); // L=列出成绩表
void Sort(struct score s[50], int n); // P=按平均成绩由高到低排序
void Search(struct score s[50], int n); // S=按学号查询学生成绩
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.8.8 by 111 *\n");
printf("**************************************************\n");
printf("请输入命令=");
}
void Type(struct score s[50], int *n) // T=成绩录入
{
printf("请输入学生人数:");
scanf("%d", n);
printf("请输入%d名学生的三门成绩\n", *n);if (n == 0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
printf("请输入命令=");
}
printf("学号 语文 数学 外语\n");
for (int i = 0; i < *n; i++)
{
printf("%d ", i + 1);
s[i].id = i + 1;
s[i].dd = 0;
scanf(" %d %d %d", &s[i].aa, &s[i].bb, &s[i].cc);
}
printf("请输入命令=");
}
void Average(struct score s[50], int n) // A=计算学生平均分
{
if (n == 0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
printf("请输入命令=");
}
else
{
for (int i = 0; i < n; i++)
s[i].dd = (s[i].aa + s[i].cc + s[i].bb) / 3;
printf("平均分已计算。请使用命令L查看");
printf("请输入命令=");
}
}
void List(struct score s[50], int n) // L=列出成绩表
{
if (n == 0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
printf("请输入命令=");
}
else
{
printf("学生成绩如下:\n");
printf("学号 语文 数学 外语 平均分\n");
for (int i = 0; i < n; i++)
printf("%d %d %d %d %.1f\n", s[i].id, s[i].aa, s[i].bb, s[i].cc, s[i].dd);
printf("请输入命令=");
}
}
void Sort(struct score s[50], int n) // P=按平均成绩由高到低排序
{
if (n == 0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
printf("请输入命令=");
}
else
{
struct score t;
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (s[j].dd < s[j + 1].dd)
{
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
}
}
}
printf("完成排序,请使用命令L查看\n");
printf("请输入命令=");
}
}
void Search(struct score s[50], int n) // S=按学号查询学生成绩
{
if (n == 0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
printf("请输入命令=");
}
else
{
printf("请输入要查询的学生学号:");
int num;
scanf("%d", &num);
for (int i = 0; i < n; i++)
{
if (s[i].id == num)
{
printf("学号 语文 数学 外语 平均分\n");
printf("%d %d %d %d %.1f\n", s[i].id, s[i].aa, s[i].bb, s[i].cc, s[i].dd);
}
}
printf("请输入命令=");
}
}
int main()
{
int n;
struct score s[50];
char m;
Help();
while (1)
{
scanf(" %c", &m);
switch (m)
{
case 'H':
Help();
break;
case 'T':
Type(s, &n);
break;
case 'A':
Average(s, n);
break;
case 'L':
List(s, n);
break;
case 'P':
Sort(s, n);
break;
case 'S':
Search(s, n);
break;
case 'C':
system("clear");
printf("请输入命令=");
break;
case 'Q':
exit(1);
printf("Press any key to continue ");
break;
default:
printf("命令不正确请输入=");
break;
}
}
return 0;
}