设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间08 现在时间08 缓存数据 生活如海,宽容作舟,泛舟于海,方知海之宽阔;生活如歌,宽容是曲,和曲而歌,方知生活甜美。早安

生活如海,宽容作舟,泛舟于海,方知海之宽阔;生活如歌,宽容是曲,和曲而歌,方知生活甜美。早安

查看: 598|回复: 2

C++实现通讯录功能

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:204
  • 打卡月天数:0
  • 打卡总奖励:3015
  • 最近打卡:2023-08-27 04:12:52
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
401
主题
367
精华
0
金钱
4193
积分
787
注册时间
2022-12-21
最后登录
2025-5-31

发表于 2023-2-13 11:13:50 | 显示全部楼层 |阅读模式
本文实例为大家分享了C++实现通讯录的具体代码,供大家参考,具体内容如下
简介:通讯录由一个拥有者以及通讯信息组成。
基本功能:增删改查
拥有者和通讯信息的基础结构相同,由struct构成
  1. struct Person {
  2.     int m_id;
  3.     string m_name;
  4.     string m_tele;//手机号码可以作为id,但是过于长(11位)
  5.     //string m_addr;
  6.  
  7.     Person& operator = (const Person& r) {
  8.         if (this == &r) return *this;
  9.         m_id = r.m_id;
  10.         m_name = r.m_name;
  11.         m_tele = r.m_tele;
  12.         return *this;
  13.     }
  14. };
复制代码
Person:id+姓名+手机号。还可以添加需要的信息,例如:地址、性别
重载了一个=操作符
通讯录建立class AddressList
  1. class AddressList {
  2. private:
  3.     Person owner;//通讯录拥有者
  4.     vector<Person> information;//通讯录:好友的信息组成
  5. public:
  6.     AddressList();
  7.     AddressList(const Person&, const vector<Person>& info = {});
  8.     AddressList(const AddressList&);
  9.  
  10.     void Add(const Person&);//添加一个好友信息至通讯录
  11.     void Delete();//通过姓名删除
  12.               //通过电话号码删除
  13.     void Modify();//输入id 修改姓名and号码
  14.     void Search(int);//1:id搜索
  15.              //2:姓名搜索
  16.              //3:号码指定搜索
  17.     void Print()const;
  18.     //查看通讯录所有信息:仅显示id和姓名,详细信息输入id查看    
  19. };
复制代码
cpp:
  1. #include "AddressList.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. AddressList::AddressList() {}
  6.  
  7. AddressList::AddressList(const Person& r, const vector<Person>& info) {
  8.     owner = r;
  9.     for (const auto& i : info) {
  10.         information.push_back(i);
  11.     }
  12. }
  13.  
  14. AddressList::AddressList(const AddressList& r) {
  15.     owner = r.owner;
  16.     for (const auto& i : r.information) {
  17.         information.push_back(i);
  18.     }
  19. }
  20.  
  21. void AddressList::Add(const Person& p) {
  22.     //添加一个好友信息至通讯录
  23.     //首先确认不存在:id+tele
  24.     for (const auto& it : information) {
  25.         if (p.m_id == it.m_id) {
  26.             cout << "Id已存在,添加失败!\n";
  27.             return;
  28.         }
  29.         else if (p.m_tele == it.m_tele) {
  30.             cout << "Telephone已存在,添加失败!\n";
  31.             return;
  32.         }
  33.     }
  34.     information.push_back(p);
  35. }
  36.  
  37. void AddressList::Delete() {
  38.     //通过姓名删除
  39.     //略:通过电话号码删除
  40.     string name;
  41.     cout << "姓名:"; cin >> name;
  42.     cout << "查找到信息如下:";
  43.     auto it = information.begin();
  44.     vector<int> info;//存储下标
  45.     for (int i(0); it != information.end(); ++it,++i) {
  46.         if (it->m_name == name) info.push_back(i);
  47.     }
  48.     if (info.size() == 0) {
  49.         cout << "No such name.\n";
  50.         return;
  51.     }
  52.     for (const auto& i : info) {
  53.         cout << i << ":\t" << information[i].m_id << '\t' << information[i].m_name
  54.             << '\t' << information[i].m_tele << endl;
  55.     }
  56.  
  57.     int ind;
  58.     cout << "输入下标(第一列)删除信息:";
  59.     cin>>ind;
  60.     for (const auto& i : info) {
  61.         if (i == ind) {
  62.             information.erase(information.begin() + i);
  63.             return;
  64.         }
  65.     }
  66.     cout << "输入信息错误,删除失败!\n";
  67. }
  68.  
  69. void AddressList::Modify() {
  70.     //输入id:修改姓名and号码
  71.     long id;
  72.     cout << "Id:"; cin >> id;
  73.     cout << "查找到信息如下:\n";
  74.     auto it = information.begin();
  75.     for (; it != information.end(); ++it) {
  76.         if (it->m_id == id) {
  77.             cout << it->m_id << '\t' << it->m_name << '\t' << it->m_tele << endl;
  78.             break;
  79.         }
  80.     }
  81.     if (it == information.end()) {
  82.         cout << "No such Id.\n";
  83.         return;
  84.     }
  85.     cout << "修改信息:\n";
  86.             string name;
  87.             string tele;
  88.             cout << "新的姓名:"; cin >> name;
  89.             cout << "新的号码:"; cin >> tele;
  90.             char c;
  91.             cout << "确认?<y/n> ";
  92.             cin >> c;
  93.             if (c == 'y' || c == 'Y') {
  94.                 it->m_name = name;
  95.                 it->m_tele = tele;
  96.                 return;
  97.             }
  98.             cout << "取消修改!\n";
  99.             return;
  100. }
  101. void AddressList::Search(int cho) {
  102.     //1:id搜索
  103.     //2:姓名搜索
  104.     //3:号码指定搜索
  105.     int id;
  106.     string name;
  107.     string tele;
  108.     auto it = information.begin();
  109.     switch (cho) {
  110.         case 1:
  111.             cout << "Id:";
  112.             cin >> id;
  113.             cout << "搜索到的信息如下:\n";
  114.             for (it = information.begin(); it != information.end(); ++it) {
  115.                 if (it->m_id == id) {
  116.                     cout << it->m_id << '\t' << it->m_name << '\t' << it->m_tele << endl;
  117.                     break;
  118.                 }
  119.             }
  120.             break;
  121.         case 2:
  122.             cout << "Name:";
  123.             cin >> name;
  124.             cout << "搜索到的信息如下:\n";
  125.             for (it = information.begin(); it != information.end(); ++it) {
  126.                 if (it->m_name == name)
  127.                     cout << it->m_id << '\t' << it->m_name << '\t' << it->m_tele << endl;
  128.             }
  129.             break;
  130.         case 3:
  131.             cout << "Tele:";
  132.             cin >> tele;
  133.             cout << "搜索到的信息如下:\n";
  134.             for (it = information.begin(); it != information.end(); ++it) {
  135.                 if (it->m_tele == tele) {
  136.                     cout << it->m_id << '\t' << it->m_name << '\t' << it->m_tele << endl;
  137.                     break;
  138.                 }
  139.             }
  140.             break;
  141.         default:break;
  142.     }
  143. }
  144. void AddressList::Print()const {
  145.     cout << "ID:" << owner.m_id << endl;
  146.     cout << "Owner:" << owner.m_name << endl
  147.         << "Tele:" << owner.m_tele << endl;
  148.     int n(information.size());
  149.     cout << "通讯录人数:" << n << endl;
  150.     for (int i(0); i < n; ++i) {
  151.         cout << information[i].m_id << '\t' << information[i].m_name << endl;
  152.     }
  153.     while (1) {
  154.         cout << endl
  155.             << "详细信息,请输入id:-1终止查看\n";
  156.         int id;
  157.         cin >> id;
  158.         if (id == -1) break;
  159.         bool b(false);
  160.         for (const auto& it : information) {
  161.             if (id == it.m_id) {
  162.                 b = true;
  163.                 cout << it.m_id << '\t' << it.m_name << '\t' << it.m_tele << endl;
  164.                 break;
  165.             }
  166.         }
  167.         if (!b) {
  168.             cout << "No such Id.!" << endl;
  169.         }
  170.     }
  171. }
复制代码
main.cpp:测试
  1. #include"AddressList.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main() {
  6.     Person p;
  7.     {
  8.         p.m_id = 0;
  9.         p.m_name = "一号";
  10.         p.m_tele = "11012011900";//任意
  11.     }
  12.     int I = 1;//m_id编号
  13.     AddressList addr(p);
  14.     {
  15.         cout << "0.退出\n"
  16.             << "1.添加\n"
  17.             << "2.删除\n"
  18.             << "3.修改\n"
  19.             << "4.搜索\n"
  20.             << "5.查看\n"
  21.             << endl
  22.             << endl;
  23.     }
  24.     int cho2;
  25.     bool b(true);
  26.     while (b) {
  27.         int cho;
  28.         int id;
  29.         string name;
  30.         string tele;
  31.  
  32.         cout << "Your choose:";
  33.         cin >> cho;
  34.         switch (cho) {
  35.         case 0:
  36.             b = false;
  37.             break;
  38.         case 1:
  39.             cout << "添加信息:\n"
  40.                 << "姓名:";
  41.             cin >> name;
  42.             cout << "号码:";
  43.             cin >> tele;
  44.             id = I++;
  45.             {
  46.                 p.m_id = id;
  47.                 p.m_name = name;
  48.                 p.m_tele = tele;
  49.             }
  50.             addr.Add(p);
  51.             break;
  52.         case 2:
  53.             cout << "删除信息:\n";
  54.             addr.Delete();
  55.             break;
  56.         case 3:
  57.             cout << "修改信息:\n";
  58.             addr.Modify();
  59.             break;
  60.         case 4:
  61.             cout << "搜索信息\n"
  62.                 << "1.Id\n"
  63.                 << "2.Name\n"
  64.                 << "3.Telephone\n";
  65.             cout << "Chosse:";
  66.             cin >> cho2;
  67.             addr.Search(cho2);
  68.             break;
  69.         case 5:
  70.             cout << "查看信息\n";
  71.             addr.Print();
  72.             break;
  73.         default:break;
  74.         }
  75.         cout << endl;
  76.     }
  77.     return 0;
  78. }
复制代码
截图:
121352nwxr1jrjj1rssuka.jpeg

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持晓枫资讯。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
15
积分
10
注册时间
2022-12-28
最后登录
2022-12-28

发表于 2024-9-19 13:51:53 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:27
  • 打卡月天数:0
  • 打卡总奖励:345
  • 最近打卡:2025-04-19 11:46:33
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
397
积分
56
注册时间
2023-1-6
最后登录
2025-4-19

发表于 前天 04:10 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表