最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)通訊錄功能

 更新時間:2022年06月20日 16:00:31   作者:xl拾一  
這篇文章主要為大家詳細介紹了C++實現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)通訊錄的具體代碼,供大家參考,具體內容如下

簡介:通訊錄由一個擁有者以及通訊信息組成。

基本功能:增刪改查

擁有者和通訊信息的基礎結構相同,由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 << "通訊錄人數(shù):" << 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;
}

截圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • win32使用openfilename瀏覽文件窗口示例

    win32使用openfilename瀏覽文件窗口示例

    這篇文章主要介紹了使用win32 API打開瀏覽文件窗口,使用OPENFILENAME結構體來實現(xiàn)這個功能,需要的朋友可以參考下
    2014-02-02
  • C++ primer超詳細講解泛型算法

    C++ primer超詳細講解泛型算法

    泛型編程,故如其名,是一個泛化的編程方式。其實現(xiàn)原理為程序員編寫一個函數(shù)/類的代碼示例,讓編譯器去填補出不同的函數(shù)實現(xiàn)
    2022-07-07
  • C/C++ 宏詳細解析

    C/C++ 宏詳細解析

    關于宏的一些語法問題,可以在google上找到。相信我,你對于宏的了解絕對沒你想象的那么多。如果你還不知道#和##,也不知道prescan,那么你肯定對宏的了解不夠
    2013-09-09
  • C語言深入探究函數(shù)的溯源

    C語言深入探究函數(shù)的溯源

    函數(shù)是一組一起執(zhí)行一個任務的語句。每個 C 程序都至少有一個函數(shù),即主函數(shù) main() ,所有簡單的程序都可以定義其他額外的函數(shù)
    2022-04-04
  • C語言菜鳥基礎教程之常量和變量

    C語言菜鳥基礎教程之常量和變量

    在C語言中,常量和變量都是可以用來存儲和表示數(shù)據(jù)的,常量值在程序執(zhí)行的過程中是不可變的,而變量是可變的
    2017-10-10
  • C++ TinyXML解析案例詳解

    C++ TinyXML解析案例詳解

    這篇文章主要介紹了C++ TinyXML解析案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C++實現(xiàn)控制臺隨機迷宮的示例代碼

    C++實現(xiàn)控制臺隨機迷宮的示例代碼

    本文主要介紹了C++實現(xiàn)控制臺隨機迷宮的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C程序結構的入門

    C程序結構的入門

    在我們學習 C 語言的基本構建塊之前,讓我們先來看看一個最小的 C 程序結構,在接下來的章節(jié)中可以以此作為參考
    2021-06-06
  • 基于C/C++ 常見誤區(qū)詳解

    基于C/C++ 常見誤區(qū)詳解

    本篇文章介紹了在c和c++中一些常見誤區(qū)的詳細概述。需要的朋友參考下
    2013-05-05
  • 解析C++中的字符串處理函數(shù)和指針

    解析C++中的字符串處理函數(shù)和指針

    這篇文章主要介紹了解析C++中的字符串處理函數(shù)和指針,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09

最新評論

五家渠市| 溧阳市| 溧水县| 蓬莱市| 雷波县| 鱼台县| 阿鲁科尔沁旗| 洪江市| 扬中市| 萨嘎县| 靖江市| 临夏县| 揭东县| 油尖旺区| 容城县| 新郑市| 承德县| 白水县| 象山县| 新竹县| 怀远县| 丰县| 宣汉县| 若羌县| 嘉义县| 满城县| 股票| 大新县| 滦南县| 白山市| 黑河市| 河津市| 泽州县| 张家口市| 门头沟区| 禄劝| 离岛区| 高邮市| 宁蒗| 岑巩县| 宁乡县|