用面向对象的方法编写通讯录管理系统(包括:姓名,电话号码,QQ,Emall)。 籍贯等信息)。 增加(注意:姓名、电话号码、QQ是唯一的。不能有重复记录存在。) 删除(可以按照姓名、电话号码、QQ进行操作) 修改(可

时间: 2024-02-11 18:10:04 浏览: 22
好的,以下是一个可能的通讯录管理系统的代码实现: ```cpp #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; // 定义联系人类 class Contact { public: Contact(string name, string phone, string qq, string email, string birthplace) : name(name), phone(phone), qq(qq), email(email), birthplace(birthplace) {} string getName() const { return name; } string getPhone() const { return phone; } string getQQ() const { return qq; } string getEmail() const { return email; } string getBirthplace() const { return birthplace; } private: string name; string phone; string qq; string email; string birthplace; }; // 定义通讯录类 class AddressBook { public: // 添加联系人 void addContact(const Contact& contact) { // 判断该联系人是否已经存在 auto iter = find_if(contacts.begin(), contacts.end(), [&](const Contact& c) { return (c.getName() == contact.getName()) || (c.getPhone() == contact.getPhone()) || (c.getQQ() == contact.getQQ()); }); if (iter != contacts.end()) { cout << "该联系人已经存在!" << endl; } else { contacts.push_back(contact); cout << "添加联系人成功!" << endl; } } // 删除联系人 void removeContact(const string& keyword) { auto iter = find_if(contacts.begin(), contacts.end(), [&](const Contact& c) { return (c.getName() == keyword) || (c.getPhone() == keyword) || (c.getQQ() == keyword); }); if (iter != contacts.end()) { contacts.erase(iter); cout << "删除联系人成功!" << endl; } else { cout << "没有找到匹配的联系人!" << endl; } } // 修改联系人 void modifyContact(const string& keyword) { auto iter = find_if(contacts.begin(), contacts.end(), [&](const Contact& c) { return (c.getName() == keyword) || (c.getPhone() == keyword) || (c.getQQ() == keyword); }); if (iter != contacts.end()) { Contact& contact = *iter; cout << "请输入新的联系人信息:" << endl; string name, phone, qq, email, birthplace; cout << "姓名:"; cin >> name; cout << "电话号码:"; cin >> phone; cout << "QQ:"; cin >> qq; cout << "Email:"; cin >> email; cout << "籍贯:"; cin >> birthplace; // 更新联系人信息 contact = Contact(name, phone, qq, email, birthplace); cout << "修改联系人成功!" << endl; } else { cout << "没有找到匹配的联系人!" << endl; } } // 显示所有联系人 void showContacts() const { cout << "所有联系人信息如下:" << endl; for (const auto& contact : contacts) { cout << "姓名:" << contact.getName() << endl; cout << "电话号码:" << contact.getPhone() << endl; cout << "QQ:" << contact.getQQ() << endl; cout << "Email:" << contact.getEmail() << endl; cout << "籍贯:" << contact.getBirthplace() << endl; cout << endl; } } private: vector<Contact> contacts; }; // 主函数 int main() { AddressBook addressBook; while (true) { cout << "**************************************" << endl; cout << "***** 请输入要执行的操作: *****" << endl; cout << "***** 1. 添加联系人 *****" << endl; cout << "***** 2. 删除联系人 *****" << endl; cout << "***** 3. 修改联系人 *****" << endl; cout << "***** 4. 显示所有联系人 *****" << endl; cout << "***** 0. 退出通讯录 *****" << endl; cout << "**************************************" << endl; int choice; cin >> choice; switch (choice) { case 0: cout << "感谢使用通讯录,再见!" << endl; return 0; case 1: cout << "请输入联系人信息:" << endl; string name, phone, qq, email, birthplace; cout << "姓名:"; cin >> name; cout << "电话号码:"; cin >> phone; cout << "QQ:"; cin >> qq; cout << "Email:"; cin >> email; cout << "籍贯:"; cin >> birthplace; addressBook.addContact(Contact(name, phone, qq, email, birthplace)); break; case 2: cout << "请输入要删除的联系人的姓名、电话号码或QQ:" << endl; string keyword; cin >> keyword; addressBook.removeContact(keyword); break; case 3: cout << "请输入要修改的联系人的姓名、电话号码或QQ:" << endl; string keyword2; cin >> keyword2; addressBook.modifyContact(keyword2); break; case 4: addressBook.showContacts(); break; default: cout << "无效的操作!请重新输入。" << endl; break; } } } ``` 这个程序实现了按照姓名、电话号码、QQ进行增加、删除、修改联系人的功能,并且保证了姓名、电话号码、QQ是唯一的,不能有重复记录存在。

相关推荐

最新推荐

recommend-type

python自学教程-04-自定义JavaScript.ev4.rar

python自学教程-04-自定义JavaScript.ev4.rar
recommend-type

严蔚敏数据结构全套C语言实现

严蔚敏数据结构全套C语言实现
recommend-type

Java_Android的可扩展媒体播放器.zip

Java_Android的可扩展媒体播放器
recommend-type

源代码-DBAdmin 在线Access数据库管理程序 v2.3.zip

源代码-DBAdmin 在线Access数据库管理程序 v2.3.zip
recommend-type

Apache Dubbo的java实现RPC和微服务框架.zip

Apache Dubbo的java实现RPC和微服务框架
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

【实战演练】增量式PID的simulink仿真实现

# 2.1 Simulink仿真环境简介 Simulink是MATLAB中用于建模、仿真和分析动态系统的图形化环境。它提供了一个直观的用户界面,允许用户使用块和连接线来创建系统模型。Simulink模型由以下元素组成: - **子系统:**将复杂系统分解成更小的、可管理的模块。 - **块:**代表系统中的组件,如传感器、执行器和控制器。 - **连接线:**表示信号在块之间的流动。 Simulink仿真环境提供了广泛的块库,涵盖了各种工程学科,包括控制系统、电子和机械工程。它还支持用户自定义块的创建,以满足特定仿真需求。 # 2. Simulink仿真环境的搭建和建模 ### 2.
recommend-type

训练集和测试集的准确率都99%,但是预测效果不好

即使训练集和测试集的准确率都很高,但是在实际的预测中表现不佳,可能会有以下几个原因: 1. 数据质量问题:模型训练和测试的数据可能存在问题,比如数据标签错误、数据集采样不均衡、数据集中存在异常值等问题,这些问题可能会导致模型在实际预测中表现不佳。 2. 特征工程问题:模型的特征工程可能存在问题,导致模型无法很好地捕捉数据的特征,从而影响预测效果。 3. 模型选择问题:模型的选择可能不合适,比如选择的模型太简单,无法很好地拟合数据,或者选择的模型太复杂,导致过拟合等问题。 4. 超参数调整问题:模型的超参数可能没有调整到最佳状态,需要进行调整。 针对以上可能的原因,可以采取相应的措施进
recommend-type

JSBSim Reference Manual

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