C++用面向对象写一个学生信息管理系统,要求包括添加、显示、查找、删除、保存、导出等功能,有3个基础学生信息。添加包括不超过11个字符的学号、20个字符的姓名、性别、语文、数学、英语成绩,可连续添加信息。查找可通过学号或姓名。删除的数据会转存至删除库。将已有的学生记录保存在默认的文件名为fname.txt的文件中。可导出记录, 提示输入文件名,输入默认的文件名为fname.txt,则可将文件中的相关信息导出。
时间: 2024-03-13 08:48:04 浏览: 19
好的,这是一个比较复杂的问题,需要一步一步来实现。我会给你提供一个大致的思路和代码示例,你可以根据自己的理解和需求进行更改和完善。
首先,我们需要定义一个学生类,包括学号、姓名、性别和三门成绩,以及对应的 get/set 方法和一些其他的方法,如输出学生信息等。代码示例如下:
```c++
class Student {
private:
string id; // 学号
string name; // 姓名
char gender; // 性别
int chinese; // 语文成绩
int math; // 数学成绩
int english; // 英语成绩
public:
Student(string id, string name, char gender, int chinese, int math, int english) {
this->id = id;
this->name = name;
this->gender = gender;
this->chinese = chinese;
this->math = math;
this->english = english;
}
string get_id() {
return id;
}
void set_id(string id) {
this->id = id;
}
// 其他 get/set 方法省略
void print_info() {
cout << "学号:" << id << endl;
cout << "姓名:" << name << endl;
cout << "性别:" << gender << endl;
cout << "语文成绩:" << chinese << endl;
cout << "数学成绩:" << math << endl;
cout << "英语成绩:" << english << endl;
}
};
```
接下来,我们需要定义一个学生信息管理类,包括添加、显示、查找、删除、保存、导出等功能。代码示例如下:
```c++
class StudentManager {
private:
vector<Student> students; // 学生信息数组
vector<Student> deleted_students; // 删除库
public:
void add_student() {
string id, name;
char gender;
int chinese, math, english;
cout << "请输入学号:";
cin >> id;
cout << "请输入姓名:";
cin >> name;
cout << "请输入性别(M/F):";
cin >> gender;
cout << "请输入语文成绩:";
cin >> chinese;
cout << "请输入数学成绩:";
cin >> math;
cout << "请输入英语成绩:";
cin >> english;
Student student(id, name, gender, chinese, math, english);
students.push_back(student);
}
void show_student() {
for (int i = 0; i < students.size(); i++) {
students[i].print_info();
cout << endl;
}
}
void search_student() {
int choice;
cout << "请选择查找方式(1.学号 2.姓名):";
cin >> choice;
if (choice == 1) {
string id;
cout << "请输入学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i].get_id() == id) {
students[i].print_info();
return;
}
}
cout << "没有找到该学生!" << endl;
} else if (choice == 2) {
string name;
cout << "请输入姓名:";
cin >> name;
for (int i = 0; i < students.size(); i++) {
if (students[i].get_name() == name) {
students[i].print_info();
return;
}
}
cout << "没有找到该学生!" << endl;
} else {
cout << "输入有误!" << endl;
}
}
void delete_student() {
int choice;
cout << "请选择删除方式(1.学号 2.姓名):";
cin >> choice;
if (choice == 1) {
string id;
cout << "请输入学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i].get_id() == id) {
deleted_students.push_back(students[i]);
students.erase(students.begin() + i);
cout << "删除成功!" << endl;
return;
}
}
cout << "没有找到该学生!" << endl;
} else if (choice == 2) {
string name;
cout << "请输入姓名:";
cin >> name;
for (int i = 0; i < students.size(); i++) {
if (students[i].get_name() == name) {
deleted_students.push_back(students[i]);
students.erase(students.begin() + i);
cout << "删除成功!" << endl;
return;
}
}
cout << "没有找到该学生!" << endl;
} else {
cout << "输入有误!" << endl;
}
}
void save_student() {
string file_name = "fname.txt";
ofstream out_file(file_name);
for (int i = 0; i < students.size(); i++) {
out_file << students[i].get_id() << " "
<< students[i].get_name() << " "
<< students[i].get_gender() << " "
<< students[i].get_chinese() << " "
<< students[i].get_math() << " "
<< students[i].get_english() << endl;
}
out_file.close();
cout << "保存成功!" << endl;
}
void export_student() {
string file_name;
cout << "请输入导出文件名:";
cin >> file_name;
ofstream out_file(file_name);
for (int i = 0; i < students.size(); i++) {
out_file << students[i].get_id() << " "
<< students[i].get_name() << " "
<< students[i].get_gender() << " "
<< students[i].get_chinese() << " "
<< students[i].get_math() << " "
<< students[i].get_english() << endl;
}
out_file.close();
cout << "导出成功!" << endl;
}
};
```
最后,我们可以在主函数中进行调用,实现相应的功能。代码示例如下:
```c++
int main() {
StudentManager manager;
while (true) {
cout << "请选择功能(1.添加 2.显示 3.查找 4.删除 5.保存 6.导出 0.退出):";
int choice;
cin >> choice;
switch (choice) {
case 1:
manager.add_student();
break;
case 2:
manager.show_student();
break;
case 3:
manager.search_student();
break;
case 4:
manager.delete_student();
break;
case 5:
manager.save_student();
break;
case 6:
manager.export_student();
break;
case 0:
return 0;
default:
cout << "输入有误!" << endl;
break;
}
}
}
```
这样,一个基础的学生信息管理系统就实现了。当然,这只是一个基础的框架,你可以根据自己的需求进行更改和完善。