用c写一个学生信息系统管理,需有学号姓名,需输入三门课程成绩,可实现按学号排序
时间: 2024-02-18 12:06:26 浏览: 21
好的,下面是C语言实现学生信息系统管理的示例代码,包括添加学生信息、排序等功能。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 50 // 最大学生数量
// 学生结构体,包括学号、姓名、三门课程成绩和总分
typedef struct student {
char id[10];
char name[20];
int score1;
int score2;
int score3;
int total;
} Student;
// 学生信息管理结构体,包括学生数组和当前学生数量
typedef struct student_manager {
Student students[MAX_STUDENTS];
int count;
} StudentManager;
// 初始化学生信息管理结构体
void init(StudentManager *manager) {
manager->count = 0;
}
// 添加学生信息
void add_student(StudentManager *manager, Student student) {
// 如果学生数量超过最大值,则添加失败
if (manager->count >= MAX_STUDENTS) {
printf("添加失败,学生数量已达到上限\n");
return;
}
// 将新学生信息加入学生数组中
manager->students[manager->count] = student;
manager->count++;
}
// 比较两个学生的学号大小,用于排序
int compare_student(const void *a, const void *b) {
Student *s1 = (Student *)a;
Student *s2 = (Student *)b;
return strcmp(s1->id, s2->id);
}
// 按学号排序
void sort_by_id(StudentManager *manager) {
qsort(manager->students, manager->count, sizeof(Student), compare_student);
}
// 输出学生信息
void print_student(Student student) {
printf("%-10s%-20s%-10d%-10d%-10d%-10d\n", student.id, student.name, student.score1, student.score2, student.score3, student.total);
}
// 输出学生信息列表
void print_students(StudentManager *manager) {
printf("%-10s%-20s%-10s%-10s%-10s%-10s\n", "学号", "姓名", "课程1", "课程2", "课程3", "总分");
for (int i = 0; i < manager->count; i++) {
print_student(manager->students[i]);
}
}
int main() {
StudentManager manager;
init(&manager);
// 添加学生信息
Student s1 = {"1001", "张三", 80, 85, 90, 255};
add_student(&manager, s1);
Student s2 = {"1003", "李四", 75, 70, 80, 225};
add_student(&manager, s2);
Student s3 = {"1002", "王五", 90, 85, 95, 270};
add_student(&manager, s3);
// 按学号排序并输出学生信息列表
sort_by_id(&manager);
print_students(&manager);
return 0;
}
```
以上代码实现了学生信息的添加、排序和输出,你可以根据自己的需求进行修改。