C语言版学生信息管理系统
一,开发环境
- 操作系统:windows10, windows11, linux, mac等。
- 开发工具:Qt, vscode, visual studio等
- 开发语言:c语言
二,功能需求
- 用户界面:
- 提供一个简洁的文本界面,用户可以通过键入命令或选择选项来执行不同的操作。
- 用户可以方便地选择要执行的操作,例如添加、查询、编辑、删除学生信息或显示所有学生信息。
- 学生信息记录:
- 用户可以录入学生的基本信息,如学号、姓名、年龄、性别、班级等。
- 学生信息应存储在内存中,在程序周期内可进行操作。
- 信息查询:
- 用户可以通过学号或姓名查询学生信息。
- 显示查询结果给用户。
- 信息修改:
- 用户可以选择一个特定的学生信息进行编辑。
- 提供修改学生的基本信息如学号、姓名、年龄、性别、班级等。
- 信息删除:
- 用户可以选择删除特定的学生信息。
- 在删除之前,询问用户是否确实要执行删除操作以防止错误。
- 列表:
- 用户可以查看并显示所有已录入的学生信息的列表
三,功能设计
- 主界面:
- 当程序启动时,首先显示一个欢迎消息,如“欢迎使用学生信息管理系统”。
- 接着展示一个主菜单,列出所有可用的操作。例如:
请选择一个操作:
1. 添加学生信息
2. 查询学生信息
3. 修改学生信息
4. 删除学生信息
5. 显示所有学生信息
6. 退出系统
- 用户可以通过输入相应的数字选择一个操作。
- 添加学生信息:
- 用户选择“添加学生信息”后,系统提示用户逐个输入学生的信息。例如:
请输入学生的学号:
请输入学生的姓名:
请输入学生的年龄:
请输入学生的性别:
请输入学生的班级:
- 在信息录入后,系统将保存这些信息,并给出一个确认消息,如“学生信息已成功添加”。
- 查询学生信息:
- 用户选择“查询学生信息”后,系统提示用户输入查询条件。例如:
请选择查询方式:
1. 通过学号查询
2. 通过姓名查询
- 根据用户的选择,系统提示输入相应的信息。例如,“请输入学生的学号”或“请输入学生的姓名”。
- 显示匹配的学生信息或提示未找到结果。
- 修改学生信息:
- 用户选择“修改学生信息”后,系统首先提示用户输入学生的学号。
- 如果找到相应的学生信息,系统将显示该学生的当前信息,并提示用户输入新的信息。例如:
学生信息:
学号: 123
姓名: 张三
年龄: 20
性别: 男
班级: 计算机1班
请输入新的学生信息:
请输入学生的姓名:
请输入学生的年龄:
请输入学生的性别:
请输入学生的班级:
- 确认修改并保存。
- 删除学生信息:
- 用户选择“删除学生信息”后,系统提示用户输入要删除的学生的学号。
- 显示所有学生信息:
- 当用户选择“显示所有学生信息”时,系统应该列出存储在内存中的所有学生信息。
- 数据可以以表格的形式呈现,例如:
+--------+--------+------+-------+------------+
学号 | 姓名 | 年龄 | 性别 | 班级 |
+--------+--------+------+-------+------------+
1001 | 张三 | 20 | 男 | 计算机1班 |
1002 | 李四 | 21 | 女 | 计算机2班 |
+--------+--------+------+-------+------------+
- 在列表末尾提供返回主菜单的选项。
- 退出系统:
- 当用户选择“退出系统”时,程序应给出一个友好的退出消息,如“感谢使用学生信息管理系统!再见!”然后安全地关闭程序。
四,代码结构
StudentInfoManagementSystem/
├── CMakeLists.txt
├── src/
│ ├── main.c
│ ├── student.c
│ └── student.h
├── build/
└── README.md
五,源代码
student.h
// student.h
#ifndef STUDENT_H
#define STUDENT_H
typedef struct {
int id;
char name[50];
int age;
char gender[10];
char class_name[50];
} Student;
void add_student(Student students[], int *num_students);
void query_student(Student students[], int num_students);
void modify_student(Student students[], int num_students);
void delete_student(Student students[], int *num_students);
void display_students(Student students[], int num_students);
#endif // STUDENT_H
student.c
// student.c
#include <stdio.h>
#include <string.h>
#include "student.h"
void add_student(Student students[], int *num_students) {
printf("请输入学生的学号: ");
scanf("%d", &students[*num_students].id);
printf("请输入学生的姓名: ");
scanf("%s", students[*num_students].name);
printf("请输入学生的年龄: ");
scanf("%d", &students[*num_students].age);
printf("请输入学生的性别: ");
scanf("%s", students[*num_students].gender);
printf("请输入学生的班级: ");
scanf("%s", students[*num_students].class_name);
(*num_students)++;
}
void query_student(Student students[], int num_students) {
int choice;
printf("请选择查询方式:\n");
printf("1. 通过学号查询\n");
printf("2. 通过姓名查询\n");
printf("请输入你的选择: ");
scanf("%d", &choice);
if (choice == 1) {
int id;
printf("请输入学生的学号: ");
scanf("%d", &id);
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
printf("学号: %d, 姓名: %s, 年龄: %d, 性别: %s, 班级: %s\n",
students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);
return;
}
}
printf("未找到该学生信息\n");
} else if (choice == 2) {
char name[50];
printf("请输入学生的姓名: ");
scanf("%s", name);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("学号: %d, 姓名: %s, 年龄: %d, 性别: %s, 班级: %s\n",
students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);
return;
}
}
printf("未找到该学生信息\n");
} else {
printf("无效的选择\n");
}
}
void modify_student(Student students[], int num_students) {
int id;
printf("请输入要修改的学生的学号: ");
scanf("%d", &id);
int index = -1;
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index != -1) {
printf("请输入学生的新姓名: ");
scanf("%s", students[index].name);
printf("请输入学生的新年龄: ");
scanf("%d", &students[index].age);
printf("请输入学生的新性别: ");
scanf("%s", students[index].gender);
printf("请输入学生的新班级: ");
scanf("%s", students[index].class_name);
printf("学生信息已更新。\n");
} else {
printf("未找到该学生信息。\n");
}
}
void delete_student(Student students[], int *num_students) {
int id;
printf("请输入要删除的学生的学号: ");
scanf("%d", &id);
int index = -1;
for (int i = 0; i < *num_students; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index != -1) {
for (int i = index; i < (*num_students) - 1; i++) {
students[i] = students[i + 1];
}
(*num_students)--;
printf("学生信息已删除。\n");
} else {
printf("未找到该学生信息。\n");
}
}
void display_students(Student students[], int num_students) {
printf("+--------+--------+------+-------+------------+\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 班级 |\n");
printf("+--------+--------+------+-------+------------+\n");
for (int i = 0; i < num_students; i++) {
printf("| %-6d | %-6s | %-4d | %-5s | %-10s |\n",
students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);
}
printf("+--------+--------+------+-------+------------+\n");
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
# 设置项目名称和版本
project(StudentInfoManagementSystem VERSION 1.0)
# 设置C标准
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED True)
# 添加一个可执行文件
add_executable(StudentInfoManagementSystem src/main.c src/student.c)
# 如果你有其他库文件或者链接的需求,你可以在这里添加
六,功能展示
1. 用户界面
2. 添加学生信息
3. 查询学生信息
4. 修改学生信息
5. 删除学生信息
6. 显示所有学生信息
项目资料
项目的资料及代码已整理打包,有需要可取,也可定制开发。