C++基础学生管理系统:完整攻略
简介
学生管理系统是程序开发中常见的一个小型项目,用于对学生信息、成绩等进行管理。本篇攻略将介绍如何使用C++编写一个简单的学生管理系统。
功能分析
根据需求,我们将实现以下功能:
- 添加学生信息(包括姓名、学号、性别、年龄、身份证号、联系电话、家庭住址等);
- 查询所有学生信息;
- 按条件查询学生信息(可以按学号、姓名、年龄等条件查询);
- 修改学生信息;
- 删除学生信息。
前期准备
在开始开发之前,我们需要安装开发环境。本篇攻略使用Visual Studio Code作为开发工具,使用MinGW作为编译器,同时还需要安装C/C++插件。
代码实现
1. 添加学生信息
用户需要输入学生信息,然后将学生信息保存到文件中。代码示例:
#include <iostream>
#include <fstream>
using namespace std;
struct Student
{
string name; // 姓名
string id; // 学号
string gender; // 性别
int age; // 年龄
string id_card; // 身份证号
string phone; // 联系电话
string address; // 家庭住址
};
void add_student()
{
Student stu;
cout << "请输入学生信息:" << endl;
cout << "姓名:";
cin >> stu.name;
cout << "学号:";
cin >> stu.id;
cout << "性别:";
cin >> stu.gender;
cout << "年龄:";
cin >> stu.age;
cout << "身份证号:";
cin >> stu.id_card;
cout << "联系电话:";
cin >> stu.phone;
cout << "家庭住址:";
cin >> stu.address;
ofstream out("students.txt", ios::app);
out << stu.name << " " << stu.id << " " << stu.gender << " " << stu.age << " " << stu.id_card << " " << stu.phone << " " << stu.address << endl;
out.close();
}
2. 查询所有学生信息
从文件中读取所有学生信息,并输出到屏幕上。代码示例:
void show_all_students()
{
ifstream in("students.txt");
string line;
while (getline(in, line))
{
cout << line << endl;
}
in.close();
}
3. 按条件查询学生信息
根据用户输入的条件,从文件中查询学生信息,并输出到屏幕上。代码示例:
void find_students()
{
cout << "请输入查询条件(学号/姓名/年龄):";
string cond;
cin >> cond;
ifstream in("students.txt");
string line;
while (getline(in, line))
{
stringstream ss(line);
string id, name, gender, id_card, phone, address;
int age;
ss >> name >> id >> gender >> age >> id_card >> phone >> address;
// 根据条件查询
if (cond == id || cond == name || cond == to_string(age))
{
cout << line << endl;
}
}
in.close();
}
4. 修改学生信息
从文件中读取所有学生信息,根据学号查询到对应的学生,然后让用户修改信息,最后将修改后的结果保存到文件中。代码示例:
void update_student()
{
string sid;
cout << "请输入要修改的学生学号:";
cin >> sid;
ifstream in("students.txt");
string line;
bool found = false;
Student stu;
while (getline(in, line))
{
stringstream ss(line);
ss >> stu.name >> stu.id >> stu.gender >> stu.age >> stu.id_card >> stu.phone >> stu.address;
if (stu.id == sid)
{
found = true;
break;
}
}
in.close();
if (!found)
{
cout << "找不到该学生!" << endl;
return;
}
cout << "学生信息如下:" << endl;
cout << "姓名:" << stu.name << endl;
cout << "学号:" << stu.id << endl;
cout << "性别:" << stu.gender << endl;
cout << "年龄:" << stu.age << endl;
cout << "身份证号:" << stu.id_card << endl;
cout << "联系电话:" << stu.phone << endl;
cout << "家庭住址:" << stu.address << endl;
cout << "请输入修改后的信息:" << endl;
cout << "姓名:";
cin >> stu.name;
cout << "学号:";
cin >> stu.id;
cout << "性别:";
cin >> stu.gender;
cout << "年龄:";
cin >> stu.age;
cout << "身份证号:";
cin >> stu.id_card;
cout << "联系电话:";
cin >> stu.phone;
cout << "家庭住址:";
cin >> stu.address;
ofstream out("students.tmp", ios::app);
ifstream in2("students.txt");
while (getline(in2, line))
{
stringstream ss(line);
string id;
ss >> name >> id >> gender >> age >> id_card >> phone >> address;
if (id != sid)
{
out << line << endl;
}
}
in2.close();
out << stu.name << " " << stu.id << " " << stu.gender << " " << stu.age << " " << stu.id_card << " " << stu.phone << " " << stu.address << endl;
out.close();
remove("students.txt");
rename("students.tmp", "students.txt");
cout << "修改学生信息成功!" << endl;
}
5. 删除学生信息
从文件中读取所有学生信息,根据学号查询到对应的学生,然后将该学生从列表中删除。代码示例:
void delete_student()
{
string sid;
cout << "请输入要删除的学生学号:";
cin >> sid;
ifstream in("students.txt");
string line;
bool found = false;
Student stu;
while (getline(in, line))
{
stringstream ss(line);
ss >> stu.name >> stu.id >> stu.gender >> stu.age >> stu.id_card >> stu.phone >> stu.address;
if (stu.id == sid)
{
found = true;
break;
}
}
in.close();
if (!found)
{
cout << "找不到该学生!" << endl;
return;
}
ofstream out("students.tmp", ios::app);
ifstream in2("students.txt");
while (getline(in2, line))
{
stringstream ss(line);
string id;
ss >> name >> id >> gender >> age >> id_card >> phone >> address;
if (id != sid)
{
out << line << endl;
}
}
in2.close();
out.close();
remove("students.txt");
rename("students.tmp", "students.txt");
cout << "删除学生信息成功!" << endl;
}
总结
本篇攻略介绍了如何使用C++编写一个简单的学生管理系统,并实现了添加、查询、修改、删除等功能。在开发过程中,需要注意代码的优化以及错误处理。如有任何疑问或建议,请留言讨论。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++基础学生管理系统 - Python技术站