写一个c++的学生成绩管理系统,可以添加、显示、查找、删除、保存、导出学生成绩记录
时间: 2023-07-10 21:12:46 浏览: 133
学生成绩管理系统(基于文件的MFC) mfc学生成绩管理系统 C++学生成绩管理系统
好的,我可以为您提供一个简单的 C++ 学生成绩管理系统,包含添加、显示、查找、删除、保存、导出学生成绩记录的功能。以下是代码实现和注释:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
// 学生结构体
struct Student {
string name; // 姓名
int age; // 年龄
string id; // 学号
int score; // 成绩
// 重载运算符 < ,用于排序
bool operator < (const Student& s) const {
return id < s.id;
}
};
vector<Student> students; // 学生集合
// 添加学生
void addStudent() {
Student s;
cout << "请输入学生姓名:";
cin >> s.name;
cout << "请输入学生年龄:";
cin >> s.age;
cout << "请输入学生学号:";
cin >> s.id;
cout << "请输入学生成绩:";
cin >> s.score;
students.push_back(s);
cout << "添加成功!" << endl;
}
// 显示所有学生
void showStudents() {
cout << "姓名\t年龄\t学号\t成绩" << endl;
for (const auto& s : students) {
cout << s.name << "\t" << s.age << "\t" << s.id << "\t" << s.score << endl;
}
}
// 查找学生
void searchStudent() {
string id;
cout << "请输入要查找的学生学号:";
cin >> id;
auto it = find_if(students.begin(), students.end(), [id](const Student& s) {
return s.id == id;
});
if (it != students.end()) {
cout << "姓名\t年龄\t学号\t成绩" << endl;
cout << it->name << "\t" << it->age << "\t" << it->id << "\t" << it->score << endl;
} else {
cout << "未找到该学生!" << endl;
}
}
// 删除学生
void deleteStudent() {
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
auto it = find_if(students.begin(), students.end(), [id](const Student& s) {
return s.id == id;
});
if (it != students.end()) {
students.erase(it);
cout << "删除成功!" << endl;
} else {
cout << "未找到该学生!" << endl;
}
}
// 保存学生成绩记录到文件
void saveToFile() {
ofstream outfile("students.txt");
if (outfile.is_open()) {
for (const auto& s : students) {
outfile << s.name << " " << s.age << " " << s.id << " " << s.score << endl;
}
outfile.close();
cout << "保存成功!" << endl;
} else {
cout << "保存失败!" << endl;
}
}
// 从文件中导入学生成绩记录
void loadFromFile() {
ifstream infile("students.txt");
if (infile.is_open()) {
students.clear(); // 清空原有记录
while (!infile.eof()) {
Student s;
infile >> s.name >> s.age >> s.id >> s.score;
students.push_back(s);
}
infile.close();
cout << "导入成功!" << endl;
} else {
cout << "未找到记录文件!" << endl;
}
}
// 导出学生成绩记录到文件
void exportToFile() {
ofstream outfile("students.csv");
if (outfile.is_open()) {
outfile << "姓名,年龄,学号,成绩" << endl;
for (const auto& s : students) {
outfile << s.name << "," << s.age << "," << s.id << "," << s.score << endl;
}
outfile.close();
cout << "导出成功!" << endl;
} else {
cout << "导出失败!" << endl;
}
}
int main() {
int choice;
do {
cout << "1. 添加学生" << endl;
cout << "2. 显示所有学生" << endl;
cout << "3. 查找学生" << endl;
cout << "4. 删除学生" << endl;
cout << "5. 保存学生成绩记录到文件" << endl;
cout << "6. 从文件中导入学生成绩记录" << endl;
cout << "7. 导出学生成绩记录到文件" << endl;
cout << "0. 退出" << endl;
cout << "请选择操作:";
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
showStudents();
break;
case 3:
searchStudent();
break;
case 4:
deleteStudent();
break;
case 5:
saveToFile();
break;
case 6:
loadFromFile();
break;
case 7:
exportToFile();
break;
case 0:
cout << "谢谢使用!" << endl;
break;
default:
cout << "无效的选择!" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
该程序将学生记录保存到一个 vector 容器中,支持添加、显示、查找、删除、保存、导入、导出操作。其中:
- 添加学生:输入学生姓名、年龄、学号、成绩,将学生记录添加到 vector 容器中。
- 显示所有学生:遍历 vector 容器,输出每个学生的姓名、年龄、学号、成绩。
- 查找学生:输入要查找的学号,使用 `find_if()` 算法在 vector 容器中查找该学生,找到后输出该学生的姓名、年龄、学号、成绩。
- 删除学生:输入要删除的学号,使用 `find_if()` 算法在 vector 容器中查找该学生,找到后从 vector 容器中删除该学生记录。
- 保存学生成绩记录到文件:将 vector 容器中的学生记录保存到文件中,每行记录包含学生姓名、年龄、学号、成绩,用空格分隔。
- 从文件中导入学生成绩记录:从文件中读取学生记录,每行记录包含学生姓名、年龄、学号、成绩,用空格分隔,添加到 vector 容器中。
- 导出学生成绩记录到文件:将 vector 容器中的学生记录导出到 CSV 格式的文件中,每行记录包含学生姓名、年龄、学号、成绩,用逗号分隔。
该程序基本实现了学生成绩管理系统的常用功能,您可以根据需要进行修改和扩展。
阅读全文