#ifndef _stu_h_
#define _stu_h_
#define N 10
typedef struct stu //定义学生
{
int id; //学号
int math; //数学成绩
int chinese; //语文成绩
int english; //英语成绩
double avr; //平均分
int num;
} STU;
void menu();
void input();
void list();
void avr();
void sort();
void search();
#endif
#include <stdio.h>
#include <stdlib.h>
#include "stu.h"
STU st[N];
int n;
void menu()
{
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.08 By 宋志鹏 * \n");
printf("************************************************\n");
}
//成绩录入
void input()
{
int i;
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入%d名学生的三门成绩:\n", n);
printf("学号 语文 数学 英语\n");
for (i = 1; i <= n; i++)
{
st[i - 1].num = i;
printf("%d ", st[i - 1].num);
scanf(" %d %d %d", &st[i - 1].chinese, &st[i - 1].math, &st[i - 1].english);
}
}
//计算平均分
void avr()
{
int i;
printf("学号 语文 数学 英语 平均分\n");
for (i = 1; i <= n; i++)
{
st[i - 1].avr = ((st[i - 1].chinese + st[i - 1].math + st[i - 1].english) / 3);
printf("%d %d %d %.2lf\n", st[i - 1].chinese, st[i - 1].math, st[i - 1].english, st[i - 1].avr);
}
}
//列出成绩
void list()
{
int i;
printf("学号 语文 数学 英语 平均分\n");
for (i = 1; i <= n; i++)
{
printf("%d %d %d %.2lf\n", st[i - 1].chinese, st[i - 1].math, st[i - 1].english, st[i - 1].avr);
}
}
//按平均分由高到低排序
void sort()
{
int i;
int max;
for (i = 0; i <= n; i++)
{
max = i ;
for (int j = 0; j < n ; j++)
{
if (st[max].avr < st[i + j].avr)
{
max = i + j;
}
}
struct stu temp = st[max];
st[max] = st[i];
st[i] = temp;
}
printf("学号 语文 数学 英语 平均分\n");
for (i = 1; i <= n; i++)
{
printf("%d %d %d %.2lf\n", st[i - 1].chinese, st[i - 1].math, st[i - 1].english, st[i - 1].avr);
}
}
//按学号查询成绩
void search()
{
int i, a;
int flag = 0;
printf("请输入要查询学生的学号:");
scanf("%d", &a);
for (i = 0; i <= n; i++)
{
flag = 0;
if (st[i].num == a)
{
flag = 1;
printf("学号 语文 数学 英语 平均分\n");
printf("%d %d %d %.2lf\n", st[i].chinese, st[i].math, st[i].english, st[i].avr);
break;
}
}
if (flag == 0)
{
printf("该生不存在\n");
}
}
#include <stdio.h>
#include <stdlib.h>
#include "stu.h"
int main(int argc, char const *argv[])
{
char order;
int n;
menu();
while (1)
{
printf("输入的命令=");
scanf("%c", &order);
switch (order)
{
case 'H':
menu();
break;
case 'T':
input();
break;
case 'A':
avr();
break;
case 'L':
list();
break;
case 'P':
sort();
break;
case 'S':
search();
break;
case 'C':
system("clear");
break;
case 'Q':
return 0;
default:
printf("输入错误");
}
getchar();
}
return 0;
}