运用所学的 C 语言知识编辑一个应用程序:学习成绩管理系统 程序说明:有 N 个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能: (1)主菜单学生成绩管理系统1.成绩录入2.成绩查询 3.成绩统计 4.退出 (2)各菜单项功能 ②成绩录入:输入学生的学号、姓名及三门课的成绩; ②成绩询: *按学号查询学生记录; ③成绩统计: *计算学生的平均分; *根据学生的平均分高低,对学生的数据进行排序后输出; ④退出系统:退出整个系统(即主菜单)。 提示:数据结构设计描述参考 主医数 菜单函数 Input 函数 select 函数 statistics 函数退出系统 各变量的定义和作用 int num ; char name ; int score ; float average ; /*定义学号,变量为整型*/ /*定义姓名,变量为字符型*/ /*定义课程的成绩,变量为整型*/ /*定义平均分,变量为浮点型*/并说明各函数之间的关系
时间: 2024-02-27 09:55:38 浏览: 23
好的,我会根据你的要求回答你的问题。
首先,需要定义一个数据结构来存储每个学生的信息,包括学号、姓名、三门课的成绩和平均成绩。可以定义一个结构体来实现,例如:
```
struct student {
int num; // 学号
char name[20]; // 姓名
int score[3]; // 三门课的成绩
float average; // 平均成绩
};
```
接下来,可以设计一个主菜单函数,供用户选择不同的功能。主菜单函数可以调用不同的子函数来完成各项功能。例如:
```
void menu() {
int choice;
do {
printf("学生成绩管理系统\n");
printf("1. 成绩录入\n");
printf("2. 成绩查询\n");
printf("3. 成绩统计\n");
printf("4. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
input();
break;
case 2:
search();
break;
case 3:
statistics();
break;
case 4:
printf("谢谢使用,再见!\n");
break;
default:
printf("输入有误,请重新选择!\n");
break;
}
} while (choice != 4);
}
```
成绩录入函数可以让用户输入学生的学号、姓名和三门课的成绩,然后将其存储在一个数组中。例如:
```
void input() {
int n, i, j;
printf("请输入学生人数:");
scanf("%d", &n);
struct student stu[n];
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &stu[i].num);
printf("姓名:");
scanf("%s", stu[i].name);
printf("三门课的成绩:");
for (j = 0; j < 3; j++) {
scanf("%d", &stu[i].score[j]);
}
stu[i].average = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
printf("录入成功!\n");
}
}
```
成绩查询函数可以根据学号查询学生的记录。例如:
```
void search() {
int n, i, num;
printf("请输入要查询的学生学号:");
scanf("%d", &num);
for (i = 0; i < n; i++) {
if (num == stu[i].num) {
printf("学号:%d\n", stu[i].num);
printf("姓名:%s\n", stu[i].name);
printf("三门课的成绩:%d %d %d\n", stu[i].score[0], stu[i].score[1], stu[i].score[2]);
printf("平均成绩:%.2f\n", stu[i].average);
return;
}
}
printf("未找到该学生!\n");
}
```
成绩统计函数可以计算每个学生的平均分,并且根据平均分高低对学生的数据进行排序后输出。例如:
```
void statistics() {
int n, i, j;
struct student temp;
printf("按平均分高低对学生进行排序后输出:\n");
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (stu[i].average < stu[j].average) {
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
for (i = 0; i < n; i++) {
printf("学号:%d\n", stu[i].num);
printf("姓名:%s\n", stu[i].name);
printf("三门课的成绩:%d %d %d\n", stu[i].score[0], stu[i].score[1], stu[i].score[2]);
printf("平均成绩:%.2f\n", stu[i].average);
}
}
```
最后,各函数之间的关系如下:
主菜单函数 menu() 调用了成绩录入函数 input()、成绩查询函数 search()、成绩统计函数 statistics(),以及退出系统函数。成绩查询函数 search() 和成绩统计函数 statistics() 都需要使用存储学生信息的数组,因此需要在全局定义该数组。