用C语言程序编写一个菜单驱动的学生成绩管理程序。某个学生班-一个学 期的学生成绩管理,设课程数量为5门课程,学生人数为10人。
1、程序功能
(1)从键盘输入包括学号、姓名、各门课程及成绩(学生基本信息及所选科目成绩的录入);
(2)计算每个人的总分和平均分,并按照平均分排序;
(3)具有查询的功能;
(4)具有学生增加和减少功能;
(5)将原始数据和计算后的数据保存在磁盘文件student.xt中。
2、系统菜单
[1]输入(键盘输入若干条记录,相当于初始化)
[2]插入(插入一 条新记录)
[3] 查找(输入一个学生学号,输出其学生基本信息和各科成绩)[4] 删除(按姓名或学号查找, 删除一条学生记录)
[5] 统计(若按1, 则输入学生的学号统计该生的总分及平均分;若按2,则输入课程求该门课程的总平均分)
[6]排序(按学 号或按其他字段属性进行排序)
[7]存盘(将所有 数据以文件的形式存盘)
[0]退出(退出系统 )
参考
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define N 10
struct student {
int num;
char name[1024];
int score[3];
};
typedef struct student stu;
void input(stu* p) {//输入
for (int i = 0; i < N; ++i) {
printf("请输入第%d个学生的信息\n", i + 1);
printf("请输入num\n");
scanf("%d", &(p + i)->num);
printf("请输入姓名\n");
scanf("%s", &(p + i)->name);
for (int j = 0; j < 3; ++j) {
printf("请输入score%d\n", j + 1);
scanf("%d", &(p + i)->score[j]);
}
}
}
void print(stu* p) {//输出
printf("%d\t", p->num);
printf("%s\t", p->name);
for (int j = 0; j < 3; ++j) {
printf("%d\t", p->score[j]);
}
}
double aver(stu* p) {//计算平均分
double sum = 0;
for (int i = 0; i < 3; ++i) {
sum += p->score[i];
}
return sum / N;
}
int excellect(stu* p) {//判断最高分,返回下标
double sum = 0;
double max = 0;
int record = 0;
for (int i = 0; i < N; ++i) {
sum = 0;
for (int j = 0; j < 3; ++j) {
sum += (p + i)->score[j];
}
if (max < sum) {
max = sum;
record = i;
}
}
return record;
}
void main() {
stu a[N];
stu* p = a;
input(p);
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均\n");
for (int i = 0; i < N; i++) {
print(p + i);
printf("%f\n", aver(p + i));
}
printf("最高分的学生数据如下\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均\n");
int n = excellect(p);
print(p + n);
printf("%f\n", aver(p + n));
system("pause");
}