文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-07-02 10:53

关注

这篇文章主要介绍“C++如何实现通讯录功能”,在日常操作中,相信很多人在C++如何实现通讯录功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现通讯录功能”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

简介:通讯录由一个拥有者以及通讯信息组成。

基本功能:增删改查

拥有者和通讯信息的基础结构相同,由struct构成

struct Person {    int m_id;    string m_name;    string m_tele;//手机号码可以作为id,但是过于长(11位)    //string m_addr;     Person& operator = (const Person& r) {        if (this == &r) return *this;        m_id = r.m_id;        m_name = r.m_name;        m_tele = r.m_tele;        return *this;    }};

Person:id+姓名+手机号。还可以添加需要的信息,例如:地址、性别
重载了一个=操作符
通讯录建立class AddressList

class AddressList {private:    Person owner;//通讯录拥有者    vector<Person> information;//通讯录:好友的信息组成public:    AddressList();    AddressList(const Person&, const vector<Person>& info = {});    AddressList(const AddressList&);     void Add(const Person&);//添加一个好友信息至通讯录    void Delete();//通过姓名删除              //通过电话号码删除    void Modify();//输入id 修改姓名and号码    void Search(int);//1:id搜索             //2:姓名搜索             //3:号码指定搜索    void Print()const;    //查看通讯录所有信息:仅显示id和姓名,详细信息输入id查看    };

cpp:

#include "AddressList.h"#include <iostream>using namespace std; AddressList::AddressList() {} AddressList::AddressList(const Person& r, const vector<Person>& info) {    owner = r;    for (const auto& i : info) {        information.push_back(i);    }} AddressList::AddressList(const AddressList& r) {    owner = r.owner;    for (const auto& i : r.information) {        information.push_back(i);    }} void AddressList::Add(const Person& p) {    //添加一个好友信息至通讯录    //首先确认不存在:id+tele    for (const auto& it : information) {        if (p.m_id == it.m_id) {            cout << "Id已存在,添加失败!\n";            return;        }        else if (p.m_tele == it.m_tele) {            cout << "Telephone已存在,添加失败!\n";            return;        }    }    information.push_back(p);} void AddressList::Delete() {    //通过姓名删除    //略:通过电话号码删除    string name;    cout << "姓名:"; cin >> name;    cout << "查找到信息如下:";    auto it = information.begin();    vector<int> info;//存储下标    for (int i(0); it != information.end(); ++it,++i) {        if (it->m_name == name) info.push_back(i);    }    if (info.size() == 0) {        cout << "No such name.\n";        return;    }    for (const auto& i : info) {        cout << i << ":\t" << information[i].m_id << '\t' << information[i].m_name            << '\t' << information[i].m_tele << endl;    }     int ind;    cout << "输入下标(第一列)删除信息:";    cin>>ind;    for (const auto& i : info) {        if (i == ind) {            information.erase(information.begin() + i);            return;        }    }    cout << "输入信息错误,删除失败!\n";} void AddressList::Modify() {    //输入id:修改姓名and号码    long id;    cout << "Id:"; cin >> id;    cout << "查找到信息如下:\n";    auto it = information.begin();    for (; it != information.end(); ++it) {        if (it->m_id == id) {            cout << it->m_id << '\t' << it->m_name << '\t' << it->m_tele << endl;            break;        }    }    if (it == information.end()) {        cout << "No such Id.\n";        return;    }    cout << "修改信息:\n";            string name;            string tele;            cout << "新的姓名:"; cin >> name;            cout << "新的号码:"; cin >> tele;            char c;            cout << "确认?<y/n> ";            cin >> c;            if (c == 'y' || c == 'Y') {                it->m_name = name;                it->m_tele = tele;                return;            }            cout << "取消修改!\n";            return;}void AddressList::Search(int cho) {    //1:id搜索    //2:姓名搜索    //3:号码指定搜索    int id;    string name;    string tele;    auto it = information.begin();    switch (cho) {        case 1:            cout << "Id:";            cin >> id;            cout << "搜索到的信息如下:\n";            for (it = information.begin(); it != information.end(); ++it) {                if (it->m_id == id) {                    cout << it->m_id << '\t' << it->m_name << '\t' << it->m_tele << endl;                    break;                }            }            break;        case 2:            cout << "Name:";            cin >> name;            cout << "搜索到的信息如下:\n";            for (it = information.begin(); it != information.end(); ++it) {                if (it->m_name == name)                    cout << it->m_id << '\t' << it->m_name << '\t' << it->m_tele << endl;            }            break;        case 3:            cout << "Tele:";            cin >> tele;            cout << "搜索到的信息如下:\n";            for (it = information.begin(); it != information.end(); ++it) {                if (it->m_tele == tele) {                    cout << it->m_id << '\t' << it->m_name << '\t' << it->m_tele << endl;                    break;                }            }            break;        default:break;    }}void AddressList::Print()const {    cout << "ID:" << owner.m_id << endl;    cout << "Owner:" << owner.m_name << endl        << "Tele:" << owner.m_tele << endl;    int n(information.size());    cout << "通讯录人数:" << n << endl;    for (int i(0); i < n; ++i) {        cout << information[i].m_id << '\t' << information[i].m_name << endl;    }    while (1) {        cout << endl            << "详细信息,请输入id:-1终止查看\n";        int id;        cin >> id;        if (id == -1) break;        bool b(false);        for (const auto& it : information) {            if (id == it.m_id) {                b = true;                cout << it.m_id << '\t' << it.m_name << '\t' << it.m_tele << endl;                break;            }        }        if (!b) {            cout << "No such Id.!" << endl;        }    }}

main.cpp:测试

#include"AddressList.h"#include <iostream>using namespace std; int main() {    Person p;    {        p.m_id = 0;        p.m_name = "一号";        p.m_tele = "11012011900";//任意    }    int I = 1;//m_id编号    AddressList addr(p);    {        cout << "0.退出\n"            << "1.添加\n"            << "2.删除\n"            << "3.修改\n"            << "4.搜索\n"            << "5.查看\n"            << endl            << endl;    }    int cho2;    bool b(true);    while (b) {        int cho;        int id;        string name;        string tele;         cout << "Your choose:";        cin >> cho;        switch (cho) {        case 0:            b = false;            break;        case 1:            cout << "添加信息:\n"                << "姓名:";            cin >> name;            cout << "号码:";            cin >> tele;            id = I++;            {                p.m_id = id;                p.m_name = name;                p.m_tele = tele;            }            addr.Add(p);            break;        case 2:            cout << "删除信息:\n";            addr.Delete();            break;        case 3:            cout << "修改信息:\n";            addr.Modify();            break;        case 4:            cout << "搜索信息\n"                << "1.Id\n"                << "2.Name\n"                << "3.Telephone\n";            cout << "Chosse:";            cin >> cho2;            addr.Search(cho2);            break;        case 5:            cout << "查看信息\n";            addr.Print();            break;        default:break;        }        cout << endl;    }    return 0;}

截图:

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

到此,关于“C++如何实现通讯录功能”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯