学生管理系统是对学生信息进行管理的软件,通常包括添加、删除、修改和查询学生信息等功能。以下是一个简单的C语言实现的学生管理系统:
```c
#include
#include
#include
typedef struct Student {
char name[20];
int age;
float score;
} Student;
void add_student(Student *students, int *count);
void delete_student(Student *students, int count);
void modify_student(Student *students, int index, int age, float score);
void query_student(Student *students, int count, int (*query)(const char *name));
int main() {
Student students[100];
int count = 0;
// 添加学生
add_student(students, &count);
// 查询学生
printf("查询学生: ");
query_student(students, count, print_student);
return 0;
}
void add_student(Student *students, int *count) {
int i;
printf("请输入学生姓名: ");
scanf("%s", students[*count].name);
printf("请输入学生年龄: ");
scanf("%d", &students[*count].age);
printf("请输入学生成绩: ");
scanf("%f", &students[*count].score);
(*count)++;
}
void delete_student(Student *students, int count) {
int i;
printf("请输入要删除的学生姓名: ");
scanf("%s", students[i].name);
- for (i = 0; i < count
- 1; i++) {
if (strcmp(students[i].name, students[i + 1].name) == 0) {
free(students[i].name);
(*count)--;
} else {
printf("学生姓名重复,请重新输入!");
}
}
}
void modify_student(Student *students, int index, int age, float score) {
if (index >= 0 && index < count) {
students[index].age = age;
students[index].score = score;
} else {
printf("学生索引超出范围,请重新输入!");
}
}
void query_student(Student *students, int count, int (*query)(const char *name)) {
printf("查询结果: ");
for (int i = 0; i < count; i++) {
printf("%s ", students[i].name);
if (query((const char *)students[i].name) != NULL) {
printf("分数: %.2fn", students[i].score);
} else {
printf("分数未知n");
}
}
}
int (*print_student)(const char *name) {
return print_student;
}
```
这个简单的学生管理系统实现了添加、删除、修改和查询学生信息的功能。在主函数中,我们创建了一个学生数组和一个计数器,用于存储学生数量。然后,我们调用`add_student`函数添加学生,调用`delete_student`函数删除学生,调用`modify_student`函数修改学生信息,最后调用`query_student`函数查询学生信息。