请用c++代码实现学生信息管理系统,并且用freopen保存到本地数据
时间: 2024-01-22 14:18:12 浏览: 69
以下是一个简单的学生信息管理系统示例代码,使用C++实现,并使用freopen函数将数据保存到本地文件中。
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 定义学生结构体
struct Student {
string name;
int age;
string major;
};
// 定义全局变量,存储所有学生信息
vector<Student> students;
// 添加学生信息
void addStudent() {
Student s;
cout << "请输入学生姓名:";
cin >> s.name;
cout << "请输入学生年龄:";
cin >> s.age;
cout << "请输入学生专业:";
cin >> s.major;
students.push_back(s);
cout << "添加学生信息成功!" << endl;
}
// 显示所有学生信息
void showStudents() {
cout << "学生信息如下:" << endl;
for (int i = 0; i < students.size(); i++) {
cout << "姓名:" << students[i].name << ",年龄:" << students[i].age << ",专业:" << students[i].major << endl;
}
}
// 将学生信息保存到文件中
void saveToFile() {
ofstream fout("students.txt");
for (int i = 0; i < students.size(); i++) {
fout << students[i].name << " " << students[i].age << " " << students[i].major << endl;
}
fout.close();
cout << "学生信息已保存到文件中!" << endl;
}
// 从文件中读取学生信息
void readFromFile() {
ifstream fin("students.txt");
if (!fin) {
cout << "文件不存在或打开失败!" << endl;
return;
}
students.clear();
while (!fin.eof()) {
Student s;
fin >> s.name >> s.age >> s.major;
students.push_back(s);
}
fin.close();
cout << "从文件中读取学生信息成功!" << endl;
}
int main() {
freopen("output.txt", "w", stdout); // 将标准输出重定向到文件中
int choice;
while (true) {
cout << "请选择操作:" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 显示所有学生信息" << endl;
cout << "3. 保存学生信息到文件" << endl;
cout << "4. 从文件中读取学生信息" << endl;
cout << "5. 退出" << endl;
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
showStudents();
break;
case 3:
saveToFile();
break;
case 4:
readFromFile();
break;
case 5:
return 0;
default:
cout << "无效的选择!" << endl;
break;
}
}
return 0;
}
```
在程序中,我们定义了一个名为Student的结构体,用于存储学生的姓名、年龄和专业。我们使用vector来存储所有学生的信息。然后,我们定义了一些函数,例如addStudent(用于添加新学生信息)、showStudents(用于显示所有学生信息)、saveToFile(将学生信息保存到文件中)和readFromFile(从文件中读取学生信息)。在主函数中,我们使用一个无限循环来等待用户输入,根据用户的选择来执行相应的操作。最后,我们使用freopen函数将标准输出重定向到文件中,以便将输出结果保存到本地数据。
阅读全文