C语言实现班级学生成绩管理系统:菜单操作、输入、计算、排序及查找功能设计
以下是一个班30名学生,4门课程的成绩管理程序的C语言代码,实现了输入、计算、排序、输出和查找功能:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 30
#define MAX_NAME_LENGTH 20
struct student {
int id;
char name[MAX_NAME_LENGTH];
int scores[4];
float average;
};
struct student students[MAX_STUDENTS];
int num_students = 0;
void input_scores() {
printf("请输入学生信息:
");
for (int i = 0; i < MAX_STUDENTS; i++) {
printf("请输入第%d个学生的学号(输入-1结束):", i + 1);
scanf("%d", &students[i].id);
if (students[i].id == -1) {
break;
}
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的4门课程成绩:", i + 1);
for (int j = 0; j < 4; j++) {
scanf("%d", &students[i].scores[j]);
}
num_students++;
}
}
void calculate_average() {
for (int i = 0; i < num_students; i++) {
int sum = 0;
for (int j = 0; j < 4; j++) {
sum += students[i].scores[j];
}
students[i].average = (float)sum / 4;
}
}
void sort_by_average() {
for (int i = 0; i < num_students - 1; i++) {
for (int j = 0; j < num_students - i - 1; j++) {
if (students[j].average < students[j + 1].average) {
struct student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
void output_scores() {
printf("学号 姓名 语文 数学 英语 计算机 平均分
");
for (int i = 0; i < num_students; i++) {
printf("%d %s %d %d %d %d %.2f
", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].scores[3], students[i].average);
}
}
void search_by_id() {
int id;
printf("请输入要查找的学生学号:");
scanf("%d", &id);
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
printf("学号 姓名 语文 数学 英语 计算机 平均分
");
printf("%d %s %d %d %d %d %.2f
", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].scores[3], students[i].average);
return;
}
}
printf("未找到该学生!
");
}
void search_by_name() {
char name[MAX_NAME_LENGTH];
printf("请输入要查找的学生姓名:");
scanf("%s", name);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("学号 姓名 语文 数学 英语 计算机 平均分
");
printf("%d %s %d %d %d %d %.2f
", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].scores[3], students[i].average);
return;
}
}
printf("未找到该学生!
");
}
int main() {
int choice;
do {
printf("请选择要进行的操作:
");
printf("1. 成绩信息的输入
");
printf("2. 成绩的计算
");
printf("3. 成绩的排序
");
printf("4. 成绩信息的输出
");
printf("5. 学生的查找(按学号)
");
printf("6. 学生的查找(按姓名)
");
printf("0. 退出程序
");
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_scores();
break;
case 2:
calculate_average();
break;
case 3:
sort_by_average();
break;
case 4:
output_scores();
break;
case 5:
search_by_id();
break;
case 6:
search_by_name();
break;
case 0:
printf("程序已退出!
");
break;
default:
printf("无效的操作编号,请重新输入!
");
break;
}
} while (choice != 0);
return 0;
}
```
程序中使用了结构体来存储每个学生的信息,包括学号、姓名、4门课程成绩和平均分。输入、计算、排序、输出和查找功能都是通过调用不同的函数来实现的。在菜单中,用户可以选择要进行的操作,直到选择退出程序为止。
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。