请设计一个学生信息管理系统,要求用C语言编程,要求学生信息是结构体的类型,至少包括姓名、年龄、分数。该系统至少具有如下功能模块: (1) 输入:用户能够输入学生的信息,例如从键盘上输入。(15分) (2) 输出:该系统能够输出学生的信息,例如输出到屏幕上,或者保存到文本文件。(15分) (3) 查找:用户能够通过姓名查找某位学生的信息。(15分) (4) 排序:该系统能够根据学生的分数进行从低分到高分排序。(25分) 以上的功能模块用函数的形式编程实现。 用数组、指针或链表实现都可以。 评分说明:本次作业满分100分,其中前三个功能模块,每个功能15分,第4个功能是25分,其余分数酌情给出。
时间: 2024-03-04 21:48:59 浏览: 108
以下是一个学生信息管理系统的C语言代码示例,使用结构体、数组和函数实现:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
// 学生信息结构体
typedef struct {
char name[20]; // 姓名
int age; // 年龄
int score; // 分数
} Student;
// 学生数组
Student students[MAX_STUDENTS];
int num_students = 0; // 学生数量
// 输入学生信息
void input_student() {
if (num_students >= MAX_STUDENTS) {
printf("学生信息已满,无法添加!\n");
return;
}
printf("请输入学生的姓名、年龄、分数(以空格分隔):");
scanf("%s %d %d", students[num_students].name, &students[num_students].age, &students[num_students].score);
num_students++;
printf("学生信息已添加!\n");
}
// 输出学生信息
void output_student() {
if (num_students == 0) {
printf("学生信息为空!\n");
return;
}
printf("学生信息如下:\n");
printf("%-10s%-10s%-10s\n", "姓名", "年龄", "分数");
for (int i = 0; i < num_students; i++) {
printf("%-10s%-10d%-10d\n", students[i].name, students[i].age, students[i].score);
}
}
// 根据姓名查找学生信息
void search_student() {
char name[20];
printf("请输入要查找的学生姓名:");
scanf("%s", name);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("学生信息如下:\n");
printf("%-10s%-10s%-10s\n", "姓名", "年龄", "分数");
printf("%-10s%-10d%-10d\n", students[i].name, students[i].age, students[i].score);
return;
}
}
printf("未找到该学生信息!\n");
}
// 比较函数:根据分数从低到高排序
int cmp_score(const void* a, const void* b) {
return ((Student*)a)->score - ((Student*)b)->score;
}
// 根据分数排序
void sort_student() {
if (num_students == 0) {
printf("学生信息为空!\n");
return;
}
qsort(students, num_students, sizeof(Student), cmp_score);
printf("学生信息已排序!\n");
}
// 主函数
int main() {
int choice;
while (1) {
printf("请选择功能:\n");
printf("1. 输入学生信息\n");
printf("2. 输出学生信息\n");
printf("3. 查找学生信息\n");
printf("4. 排序学生信息\n");
printf("0. 退出程序\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_student();
break;
case 2:
output_student();
break;
case 3:
search_student();
break;
case 4:
sort_student();
break;
case 0:
printf("程序已退出!\n");
return 0;
default:
printf("无效选项,请重新输入!\n");
break;
}
}
}
```
该程序实现了学生信息的输入、输出、查找和排序功能,其中输入和输出使用数组实现,查找使用字符串比较实现,排序使用`qsort`函数实现。用户可以通过菜单选择不同的功能模块。
阅读全文