0

0

C++如何实现简易通讯录功能

P粉602998670

P粉602998670

发布时间:2025-09-19 17:27:01

|

434人浏览过

|

来源于php中文网

原创

答案是使用C++中的结构体和vector实现通讯录,通过菜单操作添加、查看和查找联系人。定义Contact结构体存储姓名和电话,利用std::vector管理联系人列表,提供添加、显示全部和按姓名查找的功能,结合命令行交互完成简易通讯录的核心逻辑。

c++如何实现简易通讯录功能

C++实现一个简易通讯录功能,核心在于选择合适的数据结构来存储联系人信息,并围绕这个数据结构构建添加、查找、删除等基本操作。通常,我们会用到结构体(

struct
)来定义联系人,然后将其放入一个动态数组(如
std::vector
)中进行管理,再通过一个简单的命令行菜单来与用户交互。这听起来可能有点像搭积木,但每一步的选择都直接影响最终的可用性。

解决方案: 在我看来,实现一个简易通讯录,最直观且易于上手的方式,就是定义一个

Contact
结构体来承载每个联系人的基本信息,比如姓名和电话号码。然后,我们用
std::vector
来存储这些联系人。这样一来,动态增删联系人就变得非常方便。

首先,我们定义联系人的结构:

情感家园企业站5.0 多语言多风格版
情感家园企业站5.0 多语言多风格版

一套面向小企业用户的企业网站程序!功能简单,操作简单。实现了小企业网站的很多实用的功能,如文章新闻模块、图片展示、产品列表以及小型的下载功能,还同时增加了邮件订阅等相应模块。公告,友情链接等这些通用功能本程序也同样都集成了!同时本程序引入了模块功能,只要在系统默认模板上创建模块,可以在任何一个语言环境(或任意风格)的适当位置进行使用!

下载
#include 
#include 
#include 
#include  // For numeric_limits

// 定义联系人结构
struct Contact {
    std::string name;
    std::string phone;

    // 构造函数,方便初始化
    Contact(std::string n, std::string p) : name(std::move(n)), phone(std::move(p)) {}

    // 打印联系人信息
    void display() const {
        std::cout << "姓名: " << name << ", 电话: " << phone << std::endl;
    }
};

// 全局向量来存储所有联系人
std::vector contacts;

// 添加联系人
void addContact() {
    std::string name, phone;
    std::cout << "请输入联系人姓名: ";
    // 清除输入缓冲区,防止getline读取到之前的换行符
    std::cin.ignore(std::numeric_limits::max(), '\n');
    std::getline(std::cin, name);
    std::cout << "请输入联系人电话: ";
    std::getline(std::cin, phone);
    contacts.emplace_back(name, phone);
    std::cout << "联系人添加成功!" << std::endl;
}

// 查看所有联系人
void viewContacts() {
    if (contacts.empty()) {
        std::cout << "通讯录为空。" << std::endl;
        return;
    }
    std::cout << "\n--- 通讯录列表 ---" << std::endl;
    for (const auto& contact : contacts) {
        contact.display();
    }
    std::cout << "------------------\n" << std::endl;
}

// 查找联系人
void searchContact() {
    if (contacts.empty()) {
        std::cout << "通讯录为空,无法查找。" << std::endl;
        return;
    }
    std::string nameToSearch;
    std::cout << "请输入要查找的联系人姓名: ";
    std::cin.ignore(std::numeric_limits::max(), '\n');
    std::getline(std::cin, nameToSearch);

    bool found = false;
    std::cout << "\n--- 查找结果 ---" << std::endl;
    for (const auto& contact : contacts) {
        if (contact.name == nameToSearch) {
            contact.display();
            found = true;
        }
    }
    if (!found) {
        std::cout << "未找到姓名为 '" << nameToSearch << "' 的联系人。" << std::endl

相关专题

更多
golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

196

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

187

2025.07.04

treenode的用法
treenode的用法

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

534

2023.12.01

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

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

17

2025.12.22

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

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

14

2026.01.06

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

61

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

31

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

72

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

20

2026.01.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 6.8万人学习

C 教程
C 教程

共75课时 | 4万人学习

C++教程
C++教程

共115课时 | 12.4万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号