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

开发一个通讯录管理程序,使用
vector
一个基础的通讯录程序应具备以下功能:
数据结构上,每个联系人包含:姓名、电话、邮箱等信息。
在 C++ 中,
std::vector
Contact
vector<Contact>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
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<Contact> 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 << "找到联系人:\n";
it->display();
} else {
cout << "未找到联系人: " << name << endl;
}
}
// 修改联系人信息
void updateContact(const string& name, const string& newPhone, const string& newEmail) {
auto it = find_if(contacts.begin(), contacts.end(),
[&name](const Contact& c) { return c.name == name; });
if (it != contacts.end()) {
it->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 << "请选择操作: ";
cin >> choice;
switch (choice) {
case 1:
cout << "姓名: ";
cin >> name;
cout << "电话: ";
cin >> phone;
cout << "邮箱: ";
cin >> email;
book.addContact(name, phone, email);
break;
case 2:
cout << "输入要删除的姓名: ";
cin >> name;
book.deleteContact(name);
break;
case 3:
cout << "输入要查找的姓名: ";
cin >> name;
book.searchContact(name);
break;
case 4:
cout << "输入要修改的姓名: ";
cin >> name;
cout << "新电话: ";
cin >> phone;
cout << "新邮箱: ";
cin >> email;
book.updateContact(name, phone, email);
break;
case 5:
book.displayAll();
break;
case 6:
cout << "再见!\n";
return 0;
default:
cout << "无效选择,请重试。\n";
}
}
return 0;
}push_back
erase
push_back(Contact(...))
display()
displayAll()
getline(cin, name)
基本上就这些。这个程序结构清晰,适合学习类、vector、STL算法的结合使用。不复杂但涵盖了实际开发中的常见模式。
以上就是怎样开发通讯录管理程序 vector容器存储联系人信息的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号