用C++语言面向对象的编程思维写学生成绩管理系统,功能包括学生信息的添加、查找、删除、导出、显示、保存等
时间: 2023-07-04 22:22:30 浏览: 85
好的,这是一个比较大的程序,需要分步骤地实现。以下是一个简单的示例程序,可以作为参考:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
// 定义学生类
class Student {
public:
string name;
int id;
double score;
};
// 定义学生管理类
class StudentManager {
private:
vector<Student> students; // 学生数组
public:
// 添加学生
void addStudent() {
Student stu;
cout << "请输入学生姓名:" << endl;
cin >> stu.name;
cout << "请输入学生学号:" << endl;
cin >> stu.id;
cout << "请输入学生成绩:" << endl;
cin >> stu.score;
students.push_back(stu); // 将学生添加到数组中
cout << "学生信息添加成功!" << endl;
}
// 查找学生
void findStudent() {
int id;
cout << "请输入要查找的学生学号:" << endl;
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
cout << "学生姓名:" << students[i].name << endl;
cout << "学生学号:" << students[i].id << endl;
cout << "学生成绩:" << students[i].score << endl;
return;
}
}
cout << "未找到该学生记录!" << endl;
}
// 删除学生
void deleteStudent() {
int id;
cout << "请输入要删除的学生学号:" << endl;
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
students.erase(students.begin() + i); // 从数组中删除该学生
cout << "学生信息删除成功!" << endl;
return;
}
}
cout << "未找到该学生记录!" << endl;
}
// 导出学生信息到文件
void exportToFile() {
ofstream outfile("students.txt");
for (int i = 0; i < students.size(); i++) {
outfile << students[i].name << " " << students[i].id << " " << students[i].score << endl;
}
outfile.close();
cout << "学生信息已成功导出到文件!" << endl;
}
// 显示所有学生信息
void displayAll() {
for (int i = 0; i < students.size(); i++) {
cout << "学生姓名:" << students[i].name << endl;
cout << "学生学号:" << students[i].id << endl;
cout << "学生成绩:" << students[i].score << endl;
}
}
// 从文件中加载学生信息
void loadFromFile() {
ifstream infile("students.txt");
while (!infile.eof()) {
Student stu;
infile >> stu.name >> stu.id >> stu.score;
students.push_back(stu); // 将学生添加到数组中
}
infile.close();
cout << "学生信息已成功从文件中加载!" << endl;
}
// 保存学生信息到文件
void saveToFile() {
ofstream outfile("students.txt");
for (int i = 0; i < students.size(); i++) {
outfile << students[i].name << " " << students[i].id << " " << students[i].score << endl;
}
outfile.close();
cout << "学生信息已成功保存到文件!" << endl;
}
};
int main() {
StudentManager manager;
int choice;
do {
cout << "请选择以下操作:" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 查找学生信息" << endl;
cout << "3. 删除学生信息" << endl;
cout << "4. 导出学生信息到文件" << endl;
cout << "5. 显示所有学生信息" << endl;
cout << "6. 从文件中加载学生信息" << endl;
cout << "7. 保存学生信息到文件" << endl;
cout << "8. 退出程序" << endl;
cin >> choice;
switch (choice) {
case 1:
manager.addStudent();
break;
case 2:
manager.findStudent();
break;
case 3:
manager.deleteStudent();
break;
case 4:
manager.exportToFile();
break;
case 5:
manager.displayAll();
break;
case 6:
manager.loadFromFile();
break;
case 7:
manager.saveToFile();
break;
case 8:
cout << "程序已退出!" << endl;
return 0;
default:
cout << "输入有误,请重新输入!" << endl;
}
} while (choice != 8);
return 0;
}
```
这个程序使用了面向对象的编程思维,将学生类和学生管理类分别封装起来,使得代码更加清晰。其中,学生类包含了学生的姓名、学号和成绩三个属性,学生管理类包含了添加、查找、删除、导出、显示、保存等功能。程序提供了一个菜单供用户选择,用户输入对应的数字即可进行相应操作。
阅读全文