讲师中心 微信公众号
AI工具推荐 视频效率加速

C++如何实现通讯录程序 容器类和基本CRUD功能开发

夜敏吖_9812

夜敏吖_9812

发布时间:2025-08-26 11:33:01

|

585人浏览过

|

来源于php中文网

原创

要实现一个简单的c++通讯录程序,需关注类设计、容器选择与crud功能。1. 设计contact类表示联系人,包含姓名、电话和邮箱,并用addressbook类管理多个联系人;2. 使用vector适合顺序访问或允许重名,使用map则便于通过姓名快速查找;3. 实现crud操作:添加时检查是否重名,查看时显示信息,修改时更新字段,删除时移除条目;4. 注意问题包括处理重名、数据持久化、控制台交互、异常处理等。掌握这些核心点有助于初学者理解面向对象编程与基础数据结构的应用。

C++如何实现通讯录程序 容器类和基本CRUD功能开发

通讯录程序是很多初学者练习C++面向对象编程时的入门项目。它涉及类的设计、容器(如vector或map)的使用,以及基本的增删改查(CRUD)操作。如果你刚接触这些内容,可能会觉得有点绕,但其实只要理清结构和逻辑,实现起来并不难。

C++如何实现通讯录程序 容器类和基本CRUD功能开发

下面我们就从几个关键点来聊聊怎么用C++实现一个简单的通讯录程序。

C++如何实现通讯录程序 容器类和基本CRUD功能开发

1. 类设计:联系人与通讯录类

要实现通讯录程序,通常需要两个类:

立即学习“C++免费学习笔记(深入)”;

  • Contact
    :表示单个联系人,包含姓名、电话、邮箱等信息。
  • AddressBook
    :管理多个联系人,提供添加、删除、修改、查找等功能。

例如,

Contact
类可以这样设计:

C++如何实现通讯录程序 容器类和基本CRUD功能开发
class Contact {
public:
    string name;
    string phone;
    string email;

    Contact(string n, string p, string e) : name(n), phone(p), email(e) {}
};

而

AddressBook
类则持有
vector<Contact>
作为数据容器,并封装各种操作方法。


2. 使用vector还是map?选对容器更方便

在选择容器时,常见的两种方式是

vector<Contact>
和
map<string, Contact>
。

  • vector 更适合按索引访问,或者顺序遍历所有联系人。
  • map 更适合通过姓名快速查找联系人。

如果你希望用户输入姓名就能快速定位联系人,建议用

map<string, Contact>
,以姓名为键。但要注意,如果允许重名联系人,map就不合适了,这时候还是用vector更好。

举个例子,用map存储联系人:

C++ 算法竞赛自动化测试数据生成与校验框架
C++ 算法竞赛自动化测试数据生成与校验框架

根据原题生成新题面、验证器及完整测试数据,自动套用 testlib 模板,用于用户要求生成测试数据时。

下载
map<string, Contact> contacts;

添加联系人的时候就可以这样:

contacts[name] = Contact(name, phone, email);

3. 实现基本的CRUD功能

添加联系人(Create)

判断是否已存在同名联系人,不存在就添加。如果是用map,可以直接检查key是否存在。

if (contacts.find(name) == contacts.end()) {
    contacts[name] = Contact(name, phone, email);
} else {
    cout << "该姓名已存在!" << endl;
}

查看联系人(Read)

根据姓名查找并显示信息:

auto it = contacts.find(name);
if (it != contacts.end()) {
    cout << "姓名:" << it->second.name << endl;
    cout << "电话:" << it->second.phone << endl;
    cout << "邮箱:" << it->second.email << endl;
} else {
    cout << "未找到联系人" << endl;
}

修改联系人(Update)

先查找是否存在,存在的话更新信息:

auto it = contacts.find(name);
if (it != contacts.end()) {
    it->second.phone = newPhone;
    it->second.email = newEmail;
}

删除联系人(Delete)

同样先查找,再删除:

auto it = contacts.find(name);
if (it != contacts.end()) {
    contacts.erase(it);
}

4. 可能遇到的问题和优化点

  • 重复姓名问题:如果允许重名,就不能用map,得用vector + 遍历查找。

  • 数据持久化:目前的数据只保存在内存中,重启程序会丢失。可以考虑写入文件或读取文件。

  • 界面交互:可以用简单的控制台菜单让用户选择操作,比如:

    cout << "1. 添加联系人" << endl;
    cout << "2. 查看联系人" << endl;
    cout << "3. 修改联系人" << endl;
    cout << "4. 删除联系人" << endl;
  • 异常处理:比如输入错误、空值等情况要做判断,避免程序崩溃。


基本上就这些内容了。虽然只是一个基础版本的通讯录程序,但已经涵盖了C++类设计、容器使用、基本算法等多个核心知识点。实现过程中可能会遇到一些细节问题,比如迭代器的使用、容器的选择等,多调试几次就会熟悉了。

热门AI工具

更多
墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5399

2023.08.02

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

5435

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

302

2025.11.27

C++ 面向对象编程与设计模式实践
C++ 面向对象编程与设计模式实践

本专题整合了 C++ 面向对象编程的核心机制,涵盖类的定义与访问控制、构造函数与析构函数、拷贝语义与移动语义、继承与虚函数多态、抽象类与接口、运算符重载、友元函数等关键知识点,同时结合单例模式、工厂模式、观察者模式、策略模式等常用设计模式的 C++ 实现,帮助开发者写出结构清晰、易于维护的面向对象代码。

304

2026.04.09

Java 面向对象与核心编程机制
Java 面向对象与核心编程机制

系统讲解 Java 面向对象编程的核心知识体系,涵盖类的定义与封装、构造方法与 this/super 关键字、继承与方法重写、多态与向上向下转型、抽象类与接口的区别与设计原则、异常处理机制(try-catch-finally / 自定义异常)、泛型的类型参数与通配符、集合框架(List/Set/Map)的使用与遍历方式,帮助开发者全面掌握 Java 程序设计的核心机制与面向对象思维。

203

2026.04.17

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2221

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

316

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

357

2026.01.06

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn