请用c++代码实现学生信息管理系统,并且可以保存到本地数据
时间: 2024-01-22 20:18:09 浏览: 36
好的,以下是一个简单的学生信息管理系统的C++代码实现,同时也可以保存到本地数据。
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
struct Student {
string name;
int age;
int score;
};
void addStudent(vector<Student>& students) {
Student student;
cout << "请输入学生姓名:";
cin >> student.name;
cout << "请输入学生年龄:";
cin >> student.age;
cout << "请输入学生成绩:";
cin >> student.score;
students.push_back(student);
cout << "添加成功!" << endl;
}
void delStudent(vector<Student>& students) {
string name;
cout << "请输入要删除的学生姓名:";
cin >> name;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->name == name) {
students.erase(it);
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
void modifyStudent(vector<Student>& students) {
string name;
cout << "请输入需要修改成绩的学生姓名:";
cin >> name;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->name == name) {
cout << "请输入修改后的成绩:";
cin >> it->score;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
void queryStudent(vector<Student>& students) {
string name;
cout << "请输入需要查询的学生姓名:";
cin >> name;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->name == name) {
cout << "姓名:" << it->name << " 年龄:" << it->age << " 成绩:" << it->score << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
void listStudent(vector<Student>& students) {
cout << "学生列表:" << endl;
for (auto it = students.begin(); it != students.end(); ++it) {
cout << "姓名:" << it->name << " 年龄:" << it->age << " 成绩:" << it->score << endl;
}
}
void saveToFile(vector<Student>& students) {
ofstream file("students.txt");
for (auto it = students.begin(); it != students.end(); ++it) {
file << it->name << " " << it->age << " " << it->score << endl;
}
file.close();
cout << "保存成功!" << endl;
}
void loadFromFile(vector<Student>& students) {
ifstream file("students.txt");
if (!file.is_open()) {
cout << "文件不存在!" << endl;
return;
}
students.clear();
string line;
while (getline(file, line)) {
Student student;
sscanf(line.c_str(), "%s %d %d", &student.name, &student.age, &student.score);
students.push_back(student);
}
file.close();
cout << "加载成功!" << endl;
}
int main() {
vector<Student> students;
loadFromFile(students);
while (true) {
cout << "请输入操作编号:1.添加学生 2.删除学生 3.修改成绩 4.查询学生 5.列出所有学生 6.保存到文件 7.从文件加载 0.退出" << endl;
int option;
cin >> option;
switch (option) {
case 1:
addStudent(students);
break;
case 2:
delStudent(students);
break;
case 3:
modifyStudent(students);
break;
case 4:
queryStudent(students);
break;
case 5:
listStudent(students);
break;
case 6:
saveToFile(students);
break;
case 7:
loadFromFile(students);
break;
case 0:
return 0;
default:
cout << "无效的操作编号!" << endl;
}
}
}
```
这个程序使用了一个`vector`来存储学生信息,支持添加、删除、修改、查询、列出和保存到文件等操作。在退出程序前,程序会将学生信息保存到本地文件`students.txt`中,下次启动程序时可以自动加载。