C++用面向对象的程序思想添加学生管理信息记录,可按程序提示依次输入学号,姓名,性别,成绩。可连续添加。可显示记录, 显示已有记录数和各学生相关记录信息。可找记录, 按提示输入要查找的学生学号(可用姓名,学号等查找)存在则输出相应记录,不存在,则按任意键返回主菜单。可除记录,按提示输入要删除的学生的学号(转存删除库)输入学号,若该学号存在,则删除相应的学生记录,如果该学号不存在,则按任意键返回主菜单。 可保存记录, 将已有的学生记录保存在默认的文件名为fname.txt的文件中。可导出记录, 提示输入文件名,输入默认的文件名为fname.txt,则可将文件中的相关信息导出。
时间: 2024-02-13 08:05:24 浏览: 55
C++面向对象,学生管理
好的,以下是一个使用面向对象的 C++ 程序,可以实现学生管理信息记录的功能,包括添加学生信息、显示记录、找记录、除记录、保存记录和导出记录。
```c++
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
class Student {
public:
string id; // 学号
string name; // 姓名
char gender; // 性别
float score; // 成绩
// 构造函数
Student() {}
// 构造函数,用于初始化学生信息
Student(string id, string name, char gender, float score) {
this->id = id;
this->name = name;
this->gender = gender;
this->score = score;
}
// 输出学生信息
void showInfo() {
cout << "学号:" << id << endl;
cout << "姓名:" << name << endl;
cout << "性别:" << gender << endl;
cout << "成绩:" << score << endl << endl;
}
// 将学生信息转换为字符串
string toString() {
stringstream ss;
ss << id << "," << name << "," << gender << "," << score << endl;
return ss.str();
}
};
class StudentManager {
public:
vector<Student> students; // 存储学生信息的向量
vector<Student> deleteList; // 存储被删除学生信息的向量
// 添加学生信息
void addStudent() {
Student s;
cout << "请输入学号:";
cin >> s.id;
cout << "请输入姓名:";
cin >> s.name;
cout << "请输入性别(男/女):";
cin >> s.gender;
cout << "请输入成绩:";
cin >> s.score;
students.push_back(s); // 将学生信息添加到向量中
}
// 输出所有学生信息
void showAllStudents() {
cout << "共有 " << students.size() << " 条学生记录:" << endl;
for (int i = 0; i < students.size(); i++) {
students[i].showInfo();
}
}
// 查找学生信息
void findStudent() {
string id;
cout << "请输入要查找的学生的学号(可用姓名、学号等查找):";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id || students[i].name == id) {
students[i].showInfo();
return;
}
}
cout << "未找到该学生记录!" << endl;
system("pause");
}
// 删除学生信息
void deleteStudent() {
string id;
cout << "请输入要删除的学生的学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
deleteList.push_back(students[i]); // 将要删除的学生信息添加到删除列表中
students.erase(students.begin() + i); // 从学生信息向量中删除该学生信息
cout << "已成功删除该学生信息!" << endl;
system("pause");
return;
}
}
cout << "未找到该学生记录!" << endl;
system("pause");
}
// 保存学生信息到文件
void saveToFile() {
ofstream ofs("fname.txt");
if (!ofs) {
cout << "无法打开文件!" << endl;
return;
}
for (int i = 0; i < students.size(); i++) {
ofs << students[i].toString();
}
cout << "已将学生信息保存到文件中!" << endl;
system("pause");
}
// 导出学生信息到文件
void exportToFile() {
string filename;
cout << "请输入要导出的文件名:";
cin >> filename;
ofstream ofs(filename);
if (!ofs) {
cout << "无法打开文件!" << endl;
return;
}
for (int i = 0; i < students.size(); i++) {
ofs << students[i].toString();
}
cout << "已将学生信息导出到文件中!" << endl;
system("pause");
}
};
int main() {
StudentManager sm; // 创建学生管理器对象
while (true) {
system("cls"); // 清屏
cout << "学生管理信息记录" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 显示记录" << endl;
cout << "3. 查找记录" << endl;
cout << "4. 删除记录" << endl;
cout << "5. 保存记录" << endl;
cout << "6. 导出记录" << endl;
cout << "0. 退出程序" << endl;
cout << "请选择操作:";
int choice;
cin >> choice;
switch (choice) {
case 1:
sm.addStudent(); // 添加学生信息
break;
case 2:
sm.showAllStudents(); // 显示所有学生信息
system("pause");
break;
case 3:
sm.findStudent(); // 查找学生信息
break;
case 4:
sm.deleteStudent(); // 删除学生信息
break;
case 5:
sm.saveToFile(); // 保存学生信息到文件
break;
case 6:
sm.exportToFile(); // 导出学生信息到文件
break;
case 0:
return 0; // 退出程序
default:
cout << "无效操作!" << endl;
system("pause");
}
}
return 0;
}
```
该程序使用了三个类,一个 `Student` 类用于存储单个学生信息,另一个 `StudentManager` 类用于管理多个学生信息,第三个 `fstream` 类用于读写文件。程序实现了添加学生信息、显示记录、查找记录、删除记录、保存记录和导出记录等功能。在删除学生信息时,将要删除的学生信息添加到删除列表中,并从学生信息向量中删除该学生信息。在保存和导出学生信息到文件时,使用 `ofstream` 类打开文件,将学生信息转换为字符串并写入文件中。在导出学生信息到文件时,用户可以输入要导出的文件名。
阅读全文