C++实现简单通讯录管理系统

C++实现简单通讯录管理系统攻略

目标

实现一个简单的通讯录管理系统,可以进行添加联系人、删除联系人、修改联系人和显示联系人等操作。程序的主要功能如下:

  1. 添加联系人:输入姓名、性别、年龄、电话及地址信息,添加一个联系人信息到通讯录中。
  2. 显示联系人:显示通讯录中的所有联系人信息。
  3. 删除联系人:输入要删除联系人的姓名,从通讯录中删除该联系人的信息。
  4. 查找联系人:输入要查找联系人的姓名,从通讯录中查找该联系人的信息。
  5. 修改联系人:输入要修改联系人的姓名,然后可以修改该联系人的姓名、性别、年龄、电话或地址信息。

实现步骤

1. 首先定义联系人结构体

struct Contact
{
    string name;    // 姓名
    string gender;  // 性别
    int age;        // 年龄
    string phone;   // 电话
    string address; // 地址
};

2. 定义通讯录类

class AddressBook
{
public:
    // 添加联系人
    void addContact(Contact& contact);

    // 显示所有联系人
    void showAllContacts();

    // 查找联系人
    void searchContact(string name);

    // 删除联系人
    void deleteContact(string name);

    // 修改联系人
    void modifyContact(string name);

private:
    vector<Contact> contacts; // 通讯录联系人数组
};

3. 添加联系人功能实现

void AddressBook::addContact(Contact& contact)
{
    this->contacts.push_back(contact);
    cout << "联系人添加成功!" << endl;
}

4. 显示所有联系人功能实现

void AddressBook::showAllContacts()
{
    if (this->contacts.empty()) {
        cout << "通讯录为空!" << endl;
        return;
    }

    for (auto it = this->contacts.begin(); it != this->contacts.end(); it++) {
        Contact contact = *it;
        cout << "姓名:" << contact.name << endl;
        cout << "性别:" << contact.gender << endl;
        cout << "年龄:" << contact.age << endl;
        cout << "电话:" << contact.phone << endl;
        cout << "地址:" << contact.address << endl;
        cout << endl;
    }
}

5. 查找联系人功能实现

void AddressBook::searchContact(string name)
{
    for (auto it = this->contacts.begin(); it != this->contacts.end(); it++) {
        Contact contact = *it;
        if (contact.name == name) {
            cout << "姓名:" << contact.name << endl;
            cout << "性别:" << contact.gender << endl;
            cout << "年龄:" << contact.age << endl;
            cout << "电话:" << contact.phone << endl;
            cout << "地址:" << contact.address << endl;
            cout << endl;
            return;
        }
    }

    cout << "未查询到该联系人。" << endl;
}

6. 删除联系人功能实现

void AddressBook::deleteContact(string name)
{
    for (auto it = this->contacts.begin(); it != this->contacts.end(); it++) {
        Contact contact = *it;
        if (contact.name == name) {
            this->contacts.erase(it);
            cout << "删除联系人成功!" << endl;
            return;
        }
    }

    cout << "未查询到该联系人。" << endl;
}

7. 修改联系人功能实现

void AddressBook::modifyContact(string name)
{
    for (auto it = this->contacts.begin(); it != this->contacts.end(); it++) {
        Contact& contact = *it;
        if (contact.name == name) {
            cout << "请输入新姓名:";
            string newName;
            cin >> newName;
            contact.name = newName;

            cout << "请输入新性别:";
            string newGender;
            cin >> newGender;
            contact.gender = newGender;

            cout << "请输入新年龄:";
            int newAge;
            cin >> newAge;
            contact.age = newAge;

            cout << "请输入新电话:";
            string newPhone;
            cin >> newPhone;
            contact.phone = newPhone;

            cout << "请输入新地址:";
            string newAddress;
            cin >> newAddress;
            contact.address = newAddress;

            cout << "联系人信息修改成功!" << endl;
            return;
        }
    }

    cout << "未查询到该联系人。" << endl;
}

示例

示例1:添加联系人

int main()
{
    AddressBook ab;

    Contact c1 = {"张三", "男", 23, "13011112222", "北京市朝阳区"};
    Contact c2 = {"李四", "女", 19, "13122223333", "北京市海淀区"};

    ab.addContact(c1);
    ab.addContact(c2);

    ab.showAllContacts();

    return 0;
}

输出结果:

联系人添加成功!
联系人添加成功!

姓名:张三
性别:男
年龄:23
电话:13011112222
地址:北京市朝阳区

姓名:李四
性别:女
年龄:19
电话:13122223333
地址:北京市海淀区

示例2:删除联系人

int main()
{
    AddressBook ab;

    Contact c1 = {"张三", "男", 23, "13011112222", "北京市朝阳区"};
    Contact c2 = {"李四", "女", 19, "13122223333", "北京市海淀区"};

    ab.addContact(c1);
    ab.addContact(c2);

    ab.deleteContact("张三");

    ab.showAllContacts();

    return 0;
}

输出结果:

删除联系人成功!

姓名:李四
性别:女
年龄:19
电话:13122223333
地址:北京市海淀区

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现简单通讯录管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • php实现json编码的方法

    下面是关于php实现json编码的方法的详细攻略。 一、什么是json JSON是JavaScript对象表示法的缩写,是一种轻量级数据交换格式。它的特点是易于阅读和编写,同时也易于机器的解析和生成,能够更好的提高网络传输效率。 常见的JSON数据格式如下所示: { "name": "张三", "age&qu…

    C 2023年5月23日
    00
  • Go如何实现json字符串与各类struct相互转换

    Go 语言提供了 encoding/json 包来支持 JSON 数据的编解码操作。该包中提供了 Marshal 和 Unmarshal 函数,可实现将 struct 对象序列化成 JSON 字符串和将 JSON 字符串反序列化为 struct 对象的操作。下面我将详细讲解如何使用 encoding/json 包实现 JSON 字符串与各类 struct 的…

    C 2023年5月23日
    00
  • WPA/WPA2无线网络密码破解图文教程

    下面是“WPA/WPA2无线网络密码破解图文教程”的完整攻略,包括两个示例说明。 WPA/WPA2无线网络密码破解图文教程 背景介绍 WPA/WPA2是目前使用最为广泛的无线网络加密方式之一。但是,在某些情况下(比如忘记密码),我们需要破解已经连接的无线网络密码。本文将介绍WPA/WPA2无线网络密码破解的方法。 破解方法 准备工作 首先,我们需要安装一个L…

    C 2023年5月22日
    00
  • 详解JavaScript中数组的一些特殊用法

    详解JavaScript中数组的一些特殊用法 数组是JavaScript中最重要的数据类型之一,其具有存储一组有序数据的能力。常见的操作包括遍历、添加、删除、排序、查找等。而除此之外,数组还有一些特殊的用法,可以让我们更好地处理数据或进行编程。 数组去重 数组去重是数组操作中的一个常见需求,我们可以使用ES6中的Set来实现简单的去重。 const arr …

    C 2023年5月22日
    00
  • C++语言编写写日志类

    下面就是“C++语言编写写日志类”的完整攻略: 1. 确定日志类的功能和需求 在编写日志类之前,需要考虑其功能和需求,如何记录日志、日志信息的格式、日志级别、日志存储路径等。根据实际需求设计日志类的各项功能,比如: 记录日志信息 支持不同的日志级别 支持自定义日志存储路径和文件名 自动切分日志文件 支持日志的异步输出,避免阻塞主线程等待写日志操作 在这里,我…

    C 2023年5月22日
    00
  • 解决开机时svchost.exe的CPU占用率过高导致系统异常缓慢

    针对“解决开机时svchost.exe的CPU占用率过高导致系统异常缓慢”的问题,可以按照以下步骤进行: 1. 确认问题 首先要确认svchost.exe的CPU占用率过高是否是系统缓慢的主要原因。可以打开任务管理器(快捷键Ctrl+Shift+Esc),在进程标签页中找到svchost.exe进程,将其展开,查看对应的服务列表。如果某个服务的CPU占用过高…

    C 2023年5月22日
    00
  • C++ 实现2048游戏示例

    C++ 实现2048游戏示例攻略 1. 简介 2048是一个深受欢迎的数字游戏,我们可以使用C++语言实现这个游戏。在本文中,我们将深入了解如何用C++实现一个完整的2048游戏。 2. 程序设计思路 我们可以使用C++语言中的面向对象思想来实现2048游戏。对于每个数字方块,可以定义一个方块类,类中包含了每个方块所需要的数据和方法。每个方块都有自己的数字数…

    C 2023年5月23日
    00
  • C语言中的递归,你真的懂了吗?

    C语言中的递归,你真的懂了吗? 递归是指一个函数不断地调用自己来实现某种功能,通常递归函数都包含一个或多个条件语句,作为递归结束的判断条件。对于初学者来说,递归常常是比较难理解和掌握的一种编程思想。本篇文章将详细讲解如何理解和使用C语言中的递归。 递归的基本原理 递归的基本原理非常简单:将原问题分解成一个或者多个规模较小但是可以解决的子问题,并且将小问题的解…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部