用结构体写学生信息管理系统,包含添加、显示、查找、删除、保存文件、导出文件功能
时间: 2023-07-10 19:12:45 浏览: 84
好的,以下是一个简单的学生信息管理系统的代码实现:
```C++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 学生信息结构体
struct Student {
string name;
int age;
string id;
string major;
};
// 添加学生信息函数
void addStudent(vector<Student>& students) {
Student s;
cout << "请输入学生姓名:";
cin >> s.name;
cout << "请输入学生年龄:";
cin >> s.age;
cout << "请输入学生学号:";
cin >> s.id;
cout << "请输入学生专业:";
cin >> s.major;
students.push_back(s);
cout << "添加成功!" << endl;
}
// 显示学生信息函数
void showStudents(const vector<Student>& students) {
if (students.empty()) {
cout << "没有学生信息!" << endl;
return;
}
cout << "姓名\t年龄\t学号\t\t专业" << endl;
for (const auto& s : students) {
cout << s.name << '\t' << s.age << '\t' << s.id << '\t' << s.major << endl;
}
}
// 查找学生信息函数
void findStudent(const vector<Student>& students) {
if (students.empty()) {
cout << "没有学生信息!" << endl;
return;
}
string id;
cout << "请输入要查找的学生学号:";
cin >> id;
for (const auto& s : students) {
if (s.id == id) {
cout << "姓名\t年龄\t学号\t\t专业" << endl;
cout << s.name << '\t' << s.age << '\t' << s.id << '\t' << s.major << endl;
return;
}
}
cout << "找不到该学生信息!" << endl;
}
// 删除学生信息函数
void deleteStudent(vector<Student>& students) {
if (students.empty()) {
cout << "没有学生信息!" << endl;
return;
}
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->id == id) {
students.erase(it);
cout << "删除成功!" << endl;
return;
}
}
cout << "找不到该学生信息!" << endl;
}
// 保存学生信息到文件函数
void saveToFile(const vector<Student>& students) {
if (students.empty()) {
cout << "没有学生信息!" << endl;
return;
}
ofstream outfile("students.txt");
if (!outfile.is_open()) {
cout << "文件打开失败!" << endl;
return;
}
for (const auto& s : students) {
outfile << s.name << ' ' << s.age << ' ' << s.id << ' ' << s.major << endl;
}
outfile.close();
cout << "保存成功!" << endl;
}
// 导出学生信息到文件函数
void exportToFile(const vector<Student>& students) {
if (students.empty()) {
cout << "没有学生信息!" << endl;
return;
}
ofstream outfile("students.csv");
if (!outfile.is_open()) {
cout << "文件打开失败!" << endl;
return;
}
outfile << "姓名,年龄,学号,专业" << endl;
for (const auto& s : students) {
outfile << s.name << ',' << s.age << ',' << s.id << ',' << s.major << endl;
}
outfile.close();
cout << "导出成功!" << endl;
}
int main() {
vector<Student> students; // 学生信息容器
int choice;
while (true) {
cout << "请选择操作:1.添加 2.显示 3.查找 4.删除 5.保存文件 6.导出文件 0.退出" << endl;
cin >> choice;
switch (choice) {
case 1:
addStudent(students);
break;
case 2:
showStudents(students);
break;
case 3:
findStudent(students);
break;
case 4:
deleteStudent(students);
break;
case 5:
saveToFile(students);
break;
case 6:
exportToFile(students);
break;
case 0:
cout << "再见!" << endl;
return 0;
default:
cout << "无效的操作!" << endl;
break;
}
}
}
```
这个学生信息管理系统使用了一个名为 `Student` 的结构体来存储学生信息,包含了姓名、年龄、学号和专业四个属性。在主函数中,使用一个 `vector<Student>` 容器来管理所有学生信息。实现了添加、显示、查找、删除、保存文件和导出文件等功能。用户可以通过控制台输入选择操作,进行相应的功能操作。
阅读全文