## 一、项目介绍
这是一个用C++语言编写的学生信息管理系统,采用链表数据结构实现,专门给C++初学者练手用的。只需要一个cpp文件,就能实现完整的学生信息增删改查功能。
**功能特点:**
– 纯C++标准库实现,无需第三方依赖
– 链表存储,动态扩容,不受人数限制
– 支持添加学生信息
– 支持删除学生信息
– 支持修改学生信息
– 支持查询学生信息
– 支持显示所有学生信息
– 控制台界面,操作简单直观
**适合人群:**
– 刚学C++的新手
– 想练习链表操作的同学
– 需要做课程设计的学生
– 想了解数据结构的初学者
二、效果展示
## 二、效果展示
cpp_student_screenshot2.png
png文件
8.4K
cpp_student_screenshot1.png
png文件
10.0K
三、小白教程
**环境准备**
你需要一个C++编译器,推荐新手使用:
– Dev-C++(最简单,适合新手)
– Code::Blocks(功能强大,免费)
– Visual Studio(功能最全,体积较大)
**步骤1:创建文件**
1. 打开你的C++编译器
2. 新建一个源文件(File → New → Source File)
3. 保存为 student_management.cpp(名字随便起,后缀是.cpp就行)
**步骤2:复制代码**
把下面的完整源码全部复制,粘贴到你刚创建的cpp文件里。
**步骤3:编译运行**
1. 点击编译按钮(Compile),检查有没有错误
2. 如果没有错误,点击运行按钮(Run)
3. 程序就会启动,按照菜单提示操作就行
**常见问题**
– 编译报错:检查是不是代码没复制全,或者编译器版本太老
– 中文乱码:在编译器设置里把编码改成GBK或者UTF-8
– 运行闪退:在main函数最后加一句 system(“pause”); 或者 getchar();
四、完整源码
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
// 学生结构体
struct Student {
string id; // 学号
string name; // 姓名
string gender; // 性别
int age; // 年龄
double score; // 成绩
};
// 链表节点结构体
struct Node {
Student data;
Node* next;
};
// 全局变量:链表头节点
Node* head = NULL;
int studentCount = 0;
// 函数声明
void showMenu();
void addStudent();
void deleteStudent();
void modifyStudent();
void searchStudent();
void showAllStudents();
void freeMemory();
int main() {
int choice;
while (true) {
showMenu();
cout << "请输入你的选择:";
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
deleteStudent();
break;
case 3:
modifyStudent();
break;
case 4:
searchStudent();
break;
case 5:
showAllStudents();
break;
case 0:
cout << "感谢使用,再见!" << endl;
freeMemory();
return 0;
default:
cout << "输入错误,请重新选择!" << endl;
break;
}
cout << endl;
system("pause");
system("cls");
}
return 0;
}
// 显示菜单
void showMenu() {
cout << "==============================" << endl;
cout << " 学生信息管理系统" << endl;
cout << "==============================" << endl;
cout << " 1. 添加学生信息" << endl;
cout << " 2. 删除学生信息" << endl;
cout << " 3. 修改学生信息" << endl;
cout << " 4. 查询学生信息" << endl;
cout << " 5. 显示所有学生" << endl;
cout << " 0. 退出系统" << endl;
cout << "==============================" << endl;
cout << "当前学生人数:" << studentCount << "人" << endl;
}
// 添加学生
void addStudent() {
cout << "\n--- 添加学生信息 ---" << endl;
Node* newNode = new Node;
cout << "请输入学号:";
cin >> newNode->data.id;
cout << "请输入姓名:";
cin >> newNode->data.name;
cout << "请输入性别:";
cin >> newNode->data.gender;
cout << "请输入年龄:";
cin >> newNode->data.age;
cout << "请输入成绩:";
cin >> newNode->data.score;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
Node* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
}
studentCount++;
cout << "添加成功!" << endl;
}
// 删除学生
void deleteStudent() {
cout << "\n--- 删除学生信息 ---" << endl;
if (head == NULL) {
cout << "暂无学生信息!" << endl;
return;
}
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
Node* p = head;
Node* prev = NULL;
while (p != NULL) {
if (p->data.id == id) {
break;
}
prev = p;
p = p->next;
}
if (p == NULL) {
cout << "找不到该学生!" << endl;
return;
}
if (prev == NULL) {
head = p->next;
} else {
prev->next = p->next;
}
delete p;
studentCount--;
cout << "删除成功!" << endl;
}
// 修改学生
void modifyStudent() {
cout << "\n--- 修改学生信息 ---" << endl;
if (head == NULL) {
cout << "暂无学生信息!" << endl;
return;
}
string id;
cout << "请输入要修改的学生学号:";
cin >> id;
Node* p = head;
while (p != NULL) {
if (p->data.id == id) {
break;
}
p = p->next;
}
if (p == NULL) {
cout << "找不到该学生!" << endl;
return;
}
cout << "请输入新的姓名:";
cin >> p->data.name;
cout << "请输入新的性别:";
cin >> p->data.gender;
cout << "请输入新的年龄:";
cin >> p->data.age;
cout << "请输入新的成绩:";
cin >> p->data.score;
cout << "修改成功!" << endl;
}
// 查询学生
void searchStudent() {
cout << "\n--- 查询学生信息 ---" << endl;
if (head == NULL) {
cout << "暂无学生信息!" << endl;
return;
}
string id;
cout << "请输入要查询的学生学号:";
cin >> id;
Node* p = head;
while (p != NULL) {
if (p->data.id == id) {
break;
}
p = p->next;
}
if (p == NULL) {
cout << "找不到该学生!" << endl;
return;
}
cout << "\n学生信息:" << endl;
cout << "学号:" << p->data.id << endl;
cout << "姓名:" << p->data.name << endl;
cout << "性别:" << p->data.gender << endl;
cout << "年龄:" << p->data.age << endl;
cout << "成绩:" << p->data.score << endl;
}
// 显示所有学生
void showAllStudents() {
cout << "\n--- 所有学生信息 ---" << endl;
if (head == NULL) {
cout << "暂无学生信息!" << endl;
return;
}
cout << "学号\t姓名\t性别\t年龄\t成绩" << endl;
cout << "----------------------------------------" << endl;
Node* p = head;
while (p != NULL) {
cout << p->data.id << "\t"
<< p->data.name << "\t"
<< p->data.gender << "\t"
<< p->data.age << "\t"
<< p->data.score << endl;
p = p->next;
}
}
// 释放内存
void freeMemory() {
Node* p = head;
while (p != NULL) {
Node* temp = p;
p = p->next;
delete temp;
}
head = NULL;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END










暂无评论内容