请设计一个学生信息管理系统,用C-Free软件编程,要求学生信息是结构体的类型,至少包括姓名、年龄、分数。该系统至少具有如下功能模块:(1)输入:用户能够输入学生的信息,例如从键盘上输入。(15分)(2)输出:该系统能够输出学生的信息,例如输出到屏幕上,或者保存到文本文件。(15分)(3)查找:用户能够通过姓名查找某位学生的信息。(15分)(4)排序:该系统能够根据学生的分数进行从低分到高分排序。(25分)以上的功能模块用函数的形式编程实现。用数组、指针或链表实现都可以。并解析一下这个程序
时间: 2024-03-08 16:50:48 浏览: 10
好的,我可以帮你设计一个学生信息管理系统,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
// 学生信息结构体
typedef struct {
char name[20]; // 姓名
int age; // 年龄
int score; // 分数
} Student;
// 全局变量,保存当前学生数量以及学生信息数组
int student_count = 0;
Student student_array[MAX_STUDENT_NUM];
// 添加学生信息
void add_student() {
if (student_count >= MAX_STUDENT_NUM) {
printf("学生数量已达到上限,无法添加新学生!\n");
return;
}
Student new_student;
printf("请输入学生姓名:");
scanf("%s", new_student.name);
printf("请输入学生年龄:");
scanf("%d", &new_student.age);
printf("请输入学生分数:");
scanf("%d", &new_student.score);
student_array[student_count++] = new_student;
printf("添加成功!\n");
}
// 输出学生信息
void print_student(Student student) {
printf("%s\t%d\t%d\n", student.name, student.age, student.score);
}
void output_students() {
printf("姓名\t年龄\t分数\n");
for (int i = 0; i < student_count; i++) {
print_student(student_array[i]);
}
}
// 通过姓名查找学生信息
void find_student(char *name) {
for (int i = 0; i < student_count; i++) {
if (strcmp(name, student_array[i].name) == 0) {
printf("找到学生信息:\n");
printf("姓名\t年龄\t分数\n");
print_student(student_array[i]);
return;
}
}
printf("未找到该学生信息!\n");
}
// 根据学生分数进行排序
void sort_students() {
for (int i = 0; i < student_count - 1; i++) {
for (int j = i + 1; j < student_count; j++) {
if (student_array[i].score > student_array[j].score) {
Student temp = student_array[i];
student_array[i] = student_array[j];
student_array[j] = temp;
}
}
}
printf("排序完成!\n");
}
int main() {
int choice;
do {
printf("请选择功能:\n");
printf("1. 添加学生信息\n");
printf("2. 输出学生信息\n");
printf("3. 查找学生信息\n");
printf("4. 根据学生分数进行排序\n");
printf("5. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
output_students();
break;
case 3:
printf("请输入学生姓名:");
char name[20];
scanf("%s", name);
find_student(name);
break;
case 4:
sort_students();
break;
case 5:
printf("程序已退出!\n");
return 0;
default:
printf("输入错误,请重新输入!\n");
}
} while (1);
return 0;
}
```
这个学生信息管理系统共包含四个功能模块:
1. `add_student()`:添加学生信息,从键盘上输入学生的姓名、年龄、分数,并将学生信息保存到学生数组中。
2. `output_students()`:输出学生信息,将学生数组中的所有学生信息输出到屏幕上。
3. `find_student()`:通过姓名查找学生信息,从键盘上输入要查找的学生姓名,然后在学生数组中查找该学生信息并输出。
4. `sort_students()`:根据学生分数进行从低分到高分的排序,使用选择排序算法实现。
在 `main()` 函数中,通过循环菜单的形式,让用户选择需要执行的功能模块,直到用户选择退出程序为止。