代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
int age;
int grade;
} Student;
void addStudent(Student** students, int* count) {
// 读取学生信息
Student newStudent;
printf("请输入学生姓名:");
scanf("%s", newStudent.name);
printf("请输入学生年龄:");
scanf("%d", &newStudent.age);
printf("请输入学生成绩:");
scanf("%d", &newStudent.grade);
// 动态分配内存保存学生信息
*students = (Student*) realloc(*students, (*count + 1) * sizeof(Student));
(*students)[*count] = newStudent;
*count += 1;
printf("添加成功!\n");
}
void showStudents(Student* students, int count) {
printf("姓名\t年龄\t成绩\n");
for (int i = 0; i < count; i++) {
printf("%s\t%d\t%d\n", students[i].name, students[i].age, students[i].grade);
}
}
void menu() {
printf("--------- 学生管理系统 ---------\n");
printf("1. 添加学生\n");
printf("2. 查看学生\n");
printf("3. 退出系统\n");
printf("请选择操作:");
}
int main() {
Student* students = NULL; // 学生数组指针
int count = 0; // 学生数量
while (1) {
menu();
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent(&students, &count);
break;
case 2:
showStudents(students, count);
break;
case 3:
free(students);
printf("谢谢使用!\n");
exit(0);
default:
printf("输入无效,请重新选择!\n");
}
printf("\n");
}
return 0;
}
该学生管理系统实现了以下功能:
- 添加学生:用户可以输入学生的姓名、年龄、成绩,系统会将学生信息添加到学生数组中。
- 查看学生:系统会将已添加的学生信息按照姓名、年龄、成绩的格式打印出来。
- 退出系统:退出程序并释放动态分配的内存。