C++用面向对象的程序思想添加学生管理信息记录,可按程序提示依次输入学号,姓名,性别,成绩。可连续添加。可显示记录, 显示已有记录数和各学生相关记录信息。可找记录, 按提示输入要查找的学生学号(可用姓名,学号等查找)存在则输出相应记录,不存在,则按任意键返回主菜单。可除记录,按提示输入要删除的学生的学号(转存删除库)输入学号,若该学号存在,则删除相应的学生记录,如果该学号不存在,则按任意键返回主菜单。 可保存记录, 将已有的学生记录保存在默认的文件名为fname.txt的文件中。可导出记录, 提示输入文件名,输入默认的文件名为fname.txt,则可将文件中的相关信息导出。

时间: 2024-02-13 11:05:24 浏览: 23
好的,以下是一个使用面向对象的 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` 类打开文件,将学生信息转换为字符串并写入文件中。在导出学生信息到文件时,用户可以输入要导出的文件名。

相关推荐

最新推荐

recommend-type

【长春理工大学】面向对象程序设计下期末复习浏览题.pdf

这个是我本人在大一下学期期间整理的C++题库,涵盖机考(2018级及以后的南区软件工大一下学期程面向对象程序设计期末考试题库)中几乎所有的题目,并配有解析,方便记忆,考试这个东西……最主要还是自己会,我自己...
recommend-type

C++实现会员管理程序

主要为大家详细介绍了C++实现会员管理程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

学生成绩管理系统实验报告.doc

(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 (3)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。 (4...
recommend-type

C++ 学生成绩管理系统设计报告书

(3)学生基本信息的读取和保存输入数据等功能 (4)学生基本信息的查询与修改。可以对已有的学生信息进行修改。 (5)学生基本信息的删除。 (6)对该班各科成绩进行分析;对学生成绩进行统计(包括最高分,最低分,排序,...
recommend-type

c++程序设计基础课程设计学生成绩管理系统实验报告

题目: ...(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。 (4) 计算某编号学生的总成绩与平均成绩。 (5) 列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。