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

发布时间:2022-06-21 09:37:10 作者:iii
来源:亿速云 阅读:218

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

在现代软件开发中,通讯录功能是一个非常常见的需求。无论是手机应用、桌面软件还是Web应用,通讯录功能都扮演着重要的角色。本文将介绍如何使用C++实现一个简易的通讯录功能,帮助读者理解基本的编程概念和数据结构。

1. 需求分析

在开始编写代码之前,我们需要明确通讯录的基本功能需求:

  1. 添加联系人:用户可以添加新的联系人,包括姓名、电话号码等信息。
  2. 删除联系人:用户可以根据姓名或其他条件删除联系人。
  3. 查找联系人:用户可以根据姓名或其他条件查找联系人。
  4. 显示所有联系人:用户可以查看所有联系人的信息。
  5. 保存和加载通讯录:通讯录的数据可以保存到文件中,并在下次启动时加载。

2. 数据结构设计

为了实现上述功能,我们需要设计一个合适的数据结构来存储联系人信息。在C++中,我们可以使用std::vector来存储联系人,每个联系人可以用一个struct来表示。

#include <string>
#include <vector>

struct Contact {
    std::string name;
    std::string phoneNumber;
};

std::vector<Contact> contacts;

3. 功能实现

3.1 添加联系人

添加联系人的功能可以通过向contacts向量中插入一个新的Contact对象来实现。

void addContact(const std::string& name, const std::string& phoneNumber) {
    Contact newContact = {name, phoneNumber};
    contacts.push_back(newContact);
    std::cout << "联系人添加成功!" << std::endl;
}

3.2 删除联系人

删除联系人可以通过遍历contacts向量,找到匹配的联系人并将其删除。

void deleteContact(const std::string& name) {
    for (auto it = contacts.begin(); it != contacts.end(); ++it) {
        if (it->name == name) {
            contacts.erase(it);
            std::cout << "联系人删除成功!" << std::endl;
            return;
        }
    }
    std::cout << "未找到该联系人!" << std::endl;
}

3.3 查找联系人

查找联系人可以通过遍历contacts向量,找到匹配的联系人并显示其信息。

void findContact(const std::string& name) {
    for (const auto& contact : contacts) {
        if (contact.name == name) {
            std::cout << "姓名: " << contact.name << ", 电话号码: " << contact.phoneNumber << std::endl;
            return;
        }
    }
    std::cout << "未找到该联系人!" << std::endl;
}

3.4 显示所有联系人

显示所有联系人可以通过遍历contacts向量,逐个输出联系人的信息。

void displayAllContacts() {
    if (contacts.empty()) {
        std::cout << "通讯录为空!" << std::endl;
        return;
    }
    for (const auto& contact : contacts) {
        std::cout << "姓名: " << contact.name << ", 电话号码: " << contact.phoneNumber << std::endl;
    }
}

3.5 保存和加载通讯录

为了保存和加载通讯录,我们可以将联系人信息写入文件,并在需要时从文件中读取。

#include <fstream>

void saveContactsToFile(const std::string& filename) {
    std::ofstream file(filename);
    for (const auto& contact : contacts) {
        file << contact.name << " " << contact.phoneNumber << std::endl;
    }
    std::cout << "通讯录已保存到文件!" << std::endl;
}

void loadContactsFromFile(const std::string& filename) {
    std::ifstream file(filename);
    if (!file) {
        std::cout << "文件打开失败!" << std::endl;
        return;
    }
    contacts.clear();
    std::string name, phoneNumber;
    while (file >> name >> phoneNumber) {
        contacts.push_back({name, phoneNumber});
    }
    std::cout << "通讯录已从文件加载!" << std::endl;
}

4. 主程序

最后,我们可以编写一个简单的主程序来测试上述功能。

#include <iostream>
#include <string>
#include <vector>
#include <fstream>

struct Contact {
    std::string name;
    std::string phoneNumber;
};

std::vector<Contact> contacts;

void addContact(const std::string& name, const std::string& phoneNumber) {
    Contact newContact = {name, phoneNumber};
    contacts.push_back(newContact);
    std::cout << "联系人添加成功!" << std::endl;
}

void deleteContact(const std::string& name) {
    for (auto it = contacts.begin(); it != contacts.end(); ++it) {
        if (it->name == name) {
            contacts.erase(it);
            std::cout << "联系人删除成功!" << std::endl;
            return;
        }
    }
    std::cout << "未找到该联系人!" << std::endl;
}

void findContact(const std::string& name) {
    for (const auto& contact : contacts) {
        if (contact.name == name) {
            std::cout << "姓名: " << contact.name << ", 电话号码: " << contact.phoneNumber << std::endl;
            return;
        }
    }
    std::cout << "未找到该联系人!" << std::endl;
}

void displayAllContacts() {
    if (contacts.empty()) {
        std::cout << "通讯录为空!" << std::endl;
        return;
    }
    for (const auto& contact : contacts) {
        std::cout << "姓名: " << contact.name << ", 电话号码: " << contact.phoneNumber << std::endl;
    }
}

void saveContactsToFile(const std::string& filename) {
    std::ofstream file(filename);
    for (const auto& contact : contacts) {
        file << contact.name << " " << contact.phoneNumber << std::endl;
    }
    std::cout << "通讯录已保存到文件!" << std::endl;
}

void loadContactsFromFile(const std::string& filename) {
    std::ifstream file(filename);
    if (!file) {
        std::cout << "文件打开失败!" << std::endl;
        return;
    }
    contacts.clear();
    std::string name, phoneNumber;
    while (file >> name >> phoneNumber) {
        contacts.push_back({name, phoneNumber});
    }
    std::cout << "通讯录已从文件加载!" << std::endl;
}

int main() {
    int choice;
    std::string name, phoneNumber, filename;

    while (true) {
        std::cout << "\n简易通讯录\n";
        std::cout << "1. 添加联系人\n";
        std::cout << "2. 删除联系人\n";
        std::cout << "3. 查找联系人\n";
        std::cout << "4. 显示所有联系人\n";
        std::cout << "5. 保存通讯录\n";
        std::cout << "6. 加载通讯录\n";
        std::cout << "0. 退出\n";
        std::cout << "请选择操作: ";
        std::cin >> choice;

        switch (choice) {
            case 1:
                std::cout << "请输入姓名: ";
                std::cin >> name;
                std::cout << "请输入电话号码: ";
                std::cin >> phoneNumber;
                addContact(name, phoneNumber);
                break;
            case 2:
                std::cout << "请输入要删除的姓名: ";
                std::cin >> name;
                deleteContact(name);
                break;
            case 3:
                std::cout << "请输入要查找的姓名: ";
                std::cin >> name;
                findContact(name);
                break;
            case 4:
                displayAllContacts();
                break;
            case 5:
                std::cout << "请输入保存文件名: ";
                std::cin >> filename;
                saveContactsToFile(filename);
                break;
            case 6:
                std::cout << "请输入加载文件名: ";
                std::cin >> filename;
                loadContactsFromFile(filename);
                break;
            case 0:
                return 0;
            default:
                std::cout << "无效的选择,请重新输入!" << std::endl;
        }
    }

    return 0;
}

5. 总结

通过本文的介绍,我们使用C++实现了一个简易的通讯录功能。这个通讯录具备添加、删除、查找、显示联系人以及保存和加载通讯录的功能。虽然这个通讯录功能相对简单,但它涵盖了C++编程中的一些基本概念,如数据结构、文件操作、循环和条件判断等。希望本文能帮助读者更好地理解C++编程,并为开发更复杂的应用打下基础。

推荐阅读:
  1. python实现简易通讯录修改版
  2. C语言实现简易通讯录

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:Java easyExcel的多级表头怎么导入

下一篇:配合Swagger使用的JSON可视化工具是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》