C语言实现简单学生信息管理系统
概述
学生信息管理系统是一个常见的小型项目,可以通过C语言进行实现。本文将介绍如何使用C语言实现一个简单的学生信息管理系统。
功能要求
学生信息管理系统应该具备以下功能:
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
基本思路
我们可以通过定义一个结构体来表示一个学生的相关信息,然后将多个结构体放在一个动态数组中进行管理。
关于如何动态创建和管理结构体数组,可以参考链接:动态创建和管理结构体数组
代码实现
下面是一个简单的学生信息管理系统完整的C语言代码实现。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_STUDENT_NUM 100
typedef struct _student {
char name[MAX_NAME_LEN];
int age;
int score;
} Student;
int student_num = 0;
Student *students[MAX_STUDENT_NUM];
int get_int_input() {
int input = 0;
scanf("%d", &input);
getchar(); // 将输入缓冲区中的回车字符读取掉
return input;
}
Student* get_student_input() {
// 获取学生姓名
char name[MAX_NAME_LEN] = { 0 };
printf("请输入学生姓名:");
fgets(name, MAX_NAME_LEN, stdin);
name[strcspn(name, "\n")] = '\0'; // 将读入的换行符替换为空字符
// 获取学生年龄
printf("请输入学生年龄:");
int age = get_int_input();
// 获取学生分数
printf("请输入学生分数:");
int score = get_int_input();
// 将输入的学生信息存入一个Student结构体中
Student *student = (Student*)malloc(sizeof(Student));
if (student == NULL) {
printf("系统内存不足,请退出系统重试!");
exit(-1);
}
strcpy(student->name, name);
student->age = age;
student->score = score;
return student;
}
void add_student() {
// 检查学生数量是否达到上限
if (student_num >= MAX_STUDENT_NUM) {
printf("学生数量已达到上限(%d),无法添加新的学生信息!", MAX_STUDENT_NUM);
return;
}
// 获取一个学生的信息并加入学生数组中
Student *student = get_student_input();
students[student_num++] = student;
printf("学生信息添加成功!\n");
}
void modify_student() {
// 获取要修改学生的索引编号
printf("请输入要修改的学生信息的编号:");
int index = get_int_input();
if (index < 1 || index > student_num) {
printf("你输入的编号无效,请返回重新输入!");
return;
}
// 获取一个学生的信息并加入学生数组中
Student *student = get_student_input();
free(students[index - 1]);
students[index - 1] = student;
printf("学生信息修改成功!\n");
}
void delete_student() {
// 获取要删除学生的索引编号
printf("请输入要删除的学生信息的编号:");
int index = get_int_input();
if (index < 1 || index > student_num) {
printf("你输入的编号无效,请返回重新输入!");
return;
}
// 释放学生结构体所占用的内存
free(students[index - 1]);
students[index - 1] = NULL;
// 将其后面的学生信息依次前移,以保证学生信息数组描述的是一组连续的学生信息
for (int i = index; i < student_num; i++) {
students[i - 1] = students[i];
}
student_num--;
printf("学生信息删除成功!\n");
}
void print_student(Student *student) {
printf("姓名:%s\n", student->name);
printf("年龄:%d\n", student->age);
printf("分数:%d\n", student->score);
}
void print_students() {
// 检查学生数量
if (student_num == 0) {
printf("当前没有任何学生信息,请先添加学生信息!");
return;
}
// 输出所有学生信息
printf("编号\t姓名\t年龄\t分数\n");
printf("--------------------------------------\n");
for (int i = 0; i < student_num; i++) {
if (students[i] == NULL) {
continue;
}
printf("%d\t", i + 1);
print_student(students[i]);
printf("--------------------------------------\n");
}
}
void exit_system() {
// 释放所有学生结构体的内存
for (int i = 0; i < student_num; i++) {
if (students[i] != NULL) {
free(students[i]);
}
}
// 退出程序
printf("已退出系统,欢迎下次使用!\n");
exit(0);
}
int main() {
while (1) {
printf("\n\n*** 学生信息管理系统 ***\n");
printf("1. 添加学生信息\n");
printf("2. 修改学生信息\n");
printf("3. 删除学生信息\n");
printf("4. 打印学生信息\n");
printf("5. 退出系统\n");
printf("请选择对应的操作:");
int choice = get_int_input();
switch (choice) {
case 1:
add_student();
break;
case 2:
modify_student();
break;
case 3:
delete_student();
break;
case 4:
print_students();
break;
case 5:
exit_system();
break;
default:
printf("你输入的操作编号无效,请返回重新输入!");
break;
}
}
return 0;
}
示例说明
示例1
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:1
请输入学生姓名:Tom
请输入学生年龄:18
请输入学生分数:90
学生信息添加成功!
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:1
请输入学生姓名:Jack
请输入学生年龄:20
请输入学生分数:95
学生信息添加成功!
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:4
编号 姓名 年龄 分数
------------------------------------
1 Tom 18 90
------------------------------------
2 Jack 20 95
------------------------------------
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:3
请输入要删除的学生信息的编号:1
学生信息删除成功!
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:4
编号 姓名 年龄 分数
------------------------------------
2 Jack 20 95
------------------------------------
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:5
已退出系统,欢迎下次使用!
示例2
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:4
当前没有任何学生信息,请先添加学生信息!
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:1
请输入学生姓名:Tom
请输入学生年龄:18
请输入学生分数:90
学生信息添加成功!
*** 学生信息管理系统 ***
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 打印学生信息
5. 退出系统
请选择对应的操作:2
请输入要修改的学生信息的编号:1
请输入学生姓名:Jack
请输入学生年龄:20
请输入学生分数:95
学生信息修改成功!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现简单学生信息管理系统 - Python技术站