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