该通讯录管理程序使用c++++的vector容器存储联系人信息,能够实现添加、删除、查找、修改和显示联系人功能,通过contact类封装联系人信息,addressbook类管理vector并提供增删改查方法,结合find_if与lambda表达式实现按姓名查找或删除,利用emplace_back高效插入对象,所有显示函数标记为const确保不修改状态,主函数通过菜单驱动用户交互,支持持续操作直至退出,程序结构清晰,适合初学者掌握类设计、stl容器与算法的综合应用,可进一步扩展文件持久化、模糊搜索、排序等特性,是一个完整的c++面向对象编程实践案例。

开发一个通讯录管理程序,使用
vector
容器来存储联系人信息,是C++中常见的练习项目。它结合了类的设计、容器操作和基本的增删改查功能。下面是一个实用、清晰的实现思路和代码结构,适合初学者理解和扩展。
一、明确需求和功能
一个基础的通讯录程序应具备以下功能:
添加联系人删除联系人查找联系人修改联系人显示所有联系人退出程序
数据结构上,每个联系人包含:姓名、电话、邮箱等信息。
二、使用 vector 存储联系人
在 C++ 中,
std::vector
是动态数组,适合频繁增删的场景。我们将定义一个
Contact
类来表示单个联系人,然后用
vector
来统一管理。
三、代码实现结构
#include #include #include #include using namespace std;// 联系人类class Contact {public: string name; string phone; string email; // 构造函数 Contact(const string& n, const string& p, const string& e) : name(n), phone(p), email(e) {} // 显示联系人信息 void display() const { cout << "姓名: " << name << " | 电话: " << phone << " | 邮箱: " << email << endl; }};// 通讯录管理类class AddressBook {private: vector contacts;public: // 添加联系人 void addContact(const string& name, const string& phone, const string& email) { contacts.emplace_back(name, phone, email); cout << "联系人 " << name << " 已添加。n"; } // 删除联系人(按姓名) void deleteContact(const string& name) { auto it = find_if(contacts.begin(), contacts.end(), [&name](const Contact& c) { return c.name == name; }); if (it != contacts.end()) { contacts.erase(it); cout << "联系人 " << name << " 已删除。n"; } else { cout << "未找到联系人: " << name << endl; } } // 查找联系人 void searchContact(const string& name) const { auto it = find_if(contacts.begin(), contacts.end(), [&name](const Contact& c) { return c.name == name; }); if (it != contacts.end()) { cout <display(); } else { cout << "未找到联系人: " << name <phone = newPhone; it->email = newEmail; cout << "联系人 " << name << " 信息已更新。n"; } else { cout << "未找到联系人: " << name << endl; } } // 显示所有联系人 void displayAll() const { if (contacts.empty()) { cout << "通讯录为空。n"; return; } cout << "n=== 所有联系人 ===n"; for (const auto& contact : contacts) { contact.display(); } cout << "==================n"; }};
四、主函数交互逻辑
int main() { AddressBook book; int choice; string name, phone, email; while (true) { cout << "n--- 通讯录管理系统 ---n"; cout << "1. 添加联系人n"; cout << "2. 删除联系人n"; cout << "3. 查找联系人n"; cout << "4. 修改联系人n"; cout << "5. 显示所有联系人n"; cout << "6. 退出n"; cout <> choice; switch (choice) { case 1: cout <> name; cout <> phone; cout <> email; book.addContact(name, phone, email); break; case 2: cout <> name; book.deleteContact(name); break; case 3: cout <> name; book.searchContact(name); break; case 4: cout <> name; cout <> phone; cout <> email; book.updateContact(name, phone, email); break; case 5: book.displayAll(); break; case 6: cout << "再见!n"; return 0; default: cout << "无效选择,请重试。n"; } } return 0;}
五、关键点说明
vector 的优势:自动扩容,支持随机访问,
push_back
和
erase
操作方便。emplace_back:直接在 vector 尾部构造对象,比
push_back(Contact(...))
更高效。find_if + lambda:用于按条件查找,比如按姓名匹配。const 成员函数:如
display()
和
displayAll()
,保证不修改对象状态。输入处理:本例未处理空格问题(如姓名带空格),若需支持,可用
getline(cin, name)
并注意缓冲区。
六、可扩展方向
支持从文件读取/保存通讯录(如 txt 或 csv)增加分组功能(家庭、工作等)支持模糊搜索使用指针或智能指针管理大量数据添加排序功能(按姓名字母排序)
基本上就这些。这个程序结构清晰,适合学习类、vector、STL算法的结合使用。不复杂但涵盖了实际开发中的常见模式。
以上就是怎样开发通讯录管理程序 vector容器存储联系人信息的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1470638.html
微信扫一扫
支付宝扫一扫