3.C++用面向对象的程序思想添加学生管理信息记录,可按程序提示依次输入学号(不超过11个字符),姓名(不超过20个字符),性别,语文成绩,数学成绩,英语成绩,可连续添加。可显示记录, 显示已有记录数和各学生相关记录信息。可找记录, 按提示输入要查找的学生学号(可用姓名,学号等查找)存在则输出相应记录,不存在,则按任意键返回主菜单。可删除记录,按提示输入要删除的学生的学号(转存入删除库),输入学号,若该学号存在,则删除相应的学生记录,如果该学号不存在,则按任意键返回主菜单。 可保存记录, 将已有的学生记录保存在默认的文件名为fname.txt的文件中。可导出记录, 提示输入文件名,输入默认的文件名为fname.txt,则可将文件中的相关信息导出。
时间: 2023-11-27 14:03:58 浏览: 109
学生成绩管理系统-C语言061406116蒋红杰.doc
好的,我可以为您提供一些思路和代码实现。
首先,我们需要定义一个学生类,包含学生的基本信息和成绩信息。代码如下:
```cpp
class Student {
private:
string id; // 学生学号
string name; // 学生姓名
string gender; // 学生性别
float chineseScore; // 语文成绩
float mathScore; // 数学成绩
float englishScore; // 英语成绩
public:
// 构造函数
Student(string id, string name, string gender, float chineseScore, float mathScore, float englishScore) {
this->id = id;
this->name = name;
this->gender = gender;
this->chineseScore = chineseScore;
this->mathScore = mathScore;
this->englishScore = englishScore;
}
// 获取学生学号
string getId() {
return id;
}
// 获取学生姓名
string getName() {
return name;
}
// 获取学生性别
string getGender() {
return gender;
}
// 获取语文成绩
float getChineseScore() {
return chineseScore;
}
// 获取数学成绩
float getMathScore() {
return mathScore;
}
// 获取英语成绩
float getEnglishScore() {
return englishScore;
}
// 显示学生信息
void display() {
cout << "学号:" << id << " 姓名:" << name << " 性别:" << gender << " 语文成绩:" << chineseScore << " 数学成绩:" << mathScore << " 英语成绩:" << englishScore << endl;
}
// 将学生信息转换成字符串
string toString() {
stringstream ss;
ss << id << "," << name << "," << gender << "," << chineseScore << "," << mathScore << "," << englishScore << endl;
return ss.str();
}
};
```
接下来,我们需要定义一个学生管理类,实现学生信息的添加、查找、删除、保存和导出功能。代码如下:
```cpp
class StudentManager {
private:
vector<Student> students; // 学生信息列表
vector<Student> deletedStudents; // 删除的学生信息列表
public:
// 添加学生信息
void addStudent(Student student) {
students.push_back(student);
}
// 根据学号或姓名查找学生信息
vector<Student*> findStudent(string keyword) {
vector<Student*> result;
for (int i = 0; i < students.size(); i++) {
if (students[i].getId() == keyword || students[i].getName() == keyword) {
result.push_back(&students[i]);
}
}
return result;
}
// 根据学号删除学生信息
void deleteStudent(string id) {
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
if (it->getId() == id) {
deletedStudents.push_back(*it);
students.erase(it);
break;
}
}
}
// 显示所有学生信息
void displayAllStudents() {
cout << "已有记录数:" << students.size() << endl;
for (int i = 0; i < students.size(); i++) {
students[i].display();
}
}
// 保存学生信息到文件
void saveToFile(string fileName) {
ofstream fout(fileName.c_str());
for (int i = 0; i < students.size(); i++) {
fout << students[i].toString();
}
fout.close();
}
// 导出学生信息到文件
void exportToFile(string fileName) {
ofstream fout(fileName.c_str());
for (int i = 0; i < students.size(); i++) {
fout << students[i].toString();
}
fout.close();
}
};
```
最后,我们可以在主函数中测试学生管理系统的功能。代码如下:
```cpp
int main() {
StudentManager manager;
while (true) {
cout << "1.添加学生信息" << endl;
cout << "2.查找学生信息" << endl;
cout << "3.删除学生信息" << endl;
cout << "4.显示所有学生信息" << endl;
cout << "5.保存学生信息到文件" << endl;
cout << "6.导出学生信息到文件" << endl;
cout << "7.退出" << endl;
cout << "请选择操作:";
int choice;
cin >> choice;
switch (choice) {
case 1:
{
cout << "请输入学号:";
string id;
cin >> id;
cout << "请输入姓名:";
string name;
cin >> name;
cout << "请输入性别:";
string gender;
cin >> gender;
cout << "请输入语文成绩:";
float chineseScore;
cin >> chineseScore;
cout << "请输入数学成绩:";
float mathScore;
cin >> mathScore;
cout << "请输入英语成绩:";
float englishScore;
cin >> englishScore;
manager.addStudent(Student(id, name, gender, chineseScore, mathScore, englishScore));
cout << "添加成功!" << endl;
break;
}
case 2:
{
cout << "请输入要查找的学生学号或姓名:";
string keyword;
cin >> keyword;
vector<Student*> result = manager.findStudent(keyword);
if (result.size() > 0) {
for (int i = 0; i < result.size(); i++) {
result[i]->display();
}
} else {
cout << "未找到相关学生信息!" << endl;
}
break;
}
case 3:
{
cout << "请输入要删除的学生学号:";
string id;
cin >> id;
manager.deleteStudent(id);
cout << "删除成功!" << endl;
break;
}
case 4:
{
manager.displayAllStudents();
break;
}
case 5:
{
manager.saveToFile("students.txt");
cout << "保存成功!" << endl;
break;
}
case 6:
{
cout << "请输入导出的文件名:";
string fileName;
cin >> fileName;
manager.exportToFile(fileName);
cout << "导出成功!" << endl;
break;
}
case 7:
{
return 0;
}
default:
{
cout << "输入有误,请重新输入!" << endl;
break;
}
}
}
return 0;
}
```
以上代码实现了一个简单的学生管理信息记录系统,包含学生信息的添加、查找、删除、保存和导出功能。
阅读全文