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

C++實現(xiàn)簡易通訊錄管理系統(tǒng)

 更新時間:2022年06月20日 10:25:11   作者:Demo龍  
這篇文章主要為大家詳細介紹了C++實現(xiàn)簡易通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)簡易通訊錄管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

前言

建議收藏,親手寫一遍代碼,感受指針神奇的魅力;
可以幫助你更好的鞏固知識體系,熟悉指針,結構體與函數(shù)一起使用時的妙處

完成通訊錄管理系統(tǒng)所需知識體系

1.結構體
2.指針
3.函數(shù)的封裝
4.指針與函數(shù)的結合使用
5.指針與結構體的結合使用

結構體

聯(lián)系人結構體

struct person
{
?? ?string name;//姓名
?? ?string sex; //性別
?? ?int age; ?//年齡
?? ?string phone;//手機號
?? ?string home;//地址

};

通訊錄結構體

struct addressbook
{
?? ?struct person personArray[MAX]; //通訊錄擴展到100;
?? ?int size=0; ?//當前聯(lián)系人個數(shù)(后面就相當于i++)
};

函數(shù)模塊

void menu();//菜單
void putit(addressbook* add);//添加聯(lián)系人
void showperson(addressbook* add);// 顯示聯(lián)系人
int if_include(addressbook* add, string name);//判斷聯(lián)系人
void deleteperson(addressbook* add, int i);//刪除聯(lián)系人
void findPerson( addressbook* add);//查找聯(lián)系人
void cleanperson(struct addressbook* add);//清空所有聯(lián)系人

菜單

void menu()
{
?? ?cout << endl;
?? ?cout << "**********【主菜單】************" << endl;
?? ?cout << "---------1.添加聯(lián)系人:----------" << endl;
?? ?cout << "---------2.顯示聯(lián)系人:---------" << endl;
?? ?cout << "---------3.刪除聯(lián)系人:---------" << endl;
?? ?cout << "---------4.查找聯(lián)系人:---------" << endl;
?? ?cout << "---------5.修改聯(lián)系人:---------" << endl;
?? ?cout << "---------6.清空聯(lián)系人:---------" << endl;
?? ?cout << "---------0.退出通訊錄:---------" << endl;
?? ?cout << "*******************************" << endl;
}

添加聯(lián)系人

void putit(addressbook* add)//添加聯(lián)系人功能
{
?? ?if (add->size == MAX)
?? ??? ?cout << "通訊錄已滿" << endl;
?? ?else
?? ?{
?? ??? ?string name;
?? ??? ?string sex;
?? ??? ?int age;
?? ??? ?string phone;
?? ??? ?string home;
?? ??? ?cout << "請輸入姓名" << endl;
?? ??? ?cin >> name;
?? ??? ?add->personArray[add->size].name = name;
?? ??? ?cout << "請輸入姓別" << endl;
?? ??? ?cin >> sex;
?? ??? ?add->personArray[add->size].sex = sex;
?? ??? ?cout << "請輸入年齡" << endl;
?? ??? ?cin >> age;
?? ??? ?add->personArray[add->size].age = age;
?? ??? ?cout << "請輸入電話號碼" << endl;
?? ??? ?cin >> phone;
?? ??? ?add->personArray[add->size].phone = phone;
?? ??? ?cout << "請輸入家庭住址" << endl;
?? ??? ?cin >> home;
?? ??? ?add->personArray[add->size].home = home;
?? ??? ?add->size++;
?? ??? ?cout << "添加聯(lián)系人成功" << endl;
?? ??? ?
?? ?}
?? ?system("pause");
?? ?system("cls");
?? ?menu();
}

有人問添加聯(lián)系人函數(shù)中為什么要使用指針?
因為值傳遞中形參無法改變實參;
而利用指針的地址傳遞可以通過函數(shù)中的形參改變實參;
具體原理可以參考博主之前的指針基礎和指針進階內(nèi)容]

顯示聯(lián)系人

void showperson(addressbook* add)
{
?? ?for (int i = 0; i <add->size; i++)
?? ?{
?? ??? ?cout << "姓名: ?" << add->personArray[i].name;
?? ??? ?cout << "\t姓別: ?" << add->personArray[i].sex;
?? ??? ?cout << "\t年齡: ?" << add->personArray[i].age;
?? ??? ?cout << "\t電話號碼: ?" << add->personArray[i].phone;
?? ??? ?cout << "\t家庭住址: ?" << add->personArray[i].home << endl;
?? ?}
?? ?system("pause");
?? ?system("cls");
?? ?menu();
}

判斷聯(lián)系人

int if_include(addressbook* add, string name)
{
?? ?for (int i = 0; i < add->size; i++)
?? ?{
?? ??? ?if (name == add->personArray[i].name)
?? ??? ?{
?? ??? ??? ?return i;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?return -1;
?? ??? ?}
?? ?}

}

刪除聯(lián)系人

void deleteperson(addressbook* add, int i)
{
?? ?for (; i < add->size; i++)
?? ?{
?? ??? ?add->personArray[i] = add->personArray[i + 1];
?? ?}
?? ?system("pause");
?? ?system("cls");
}

查找聯(lián)系人

void findPerson( addressbook* add)
{
?? ?cout << "請輸入您想要查找的聯(lián)系人:" << endl;
?? ?string name;
?? ?cin >> name;
?? ?int ret = if_include(add, name);
?? ?if (ret == -1)
?? ?{
?? ??? ?cout << "查無此人" << endl;
?? ?}
?? ?else
?? ?{ ? //查到此人,進行顯示操作
?? ??? ?int i = ret;
?? ??? ?cout << "姓名:" << add->personArray[i].name << "\t";
?? ??? ?cout << "性別:" << add->personArray[i].sex << "\t";
?? ??? ?cout << "年齡:" << add->personArray[i].age << "\t";
?? ??? ?cout << "聯(lián)系方式:" << add->personArray[i].phone << "\t";
?? ??? ?cout << "地址:" << add->personArray[i].home << endl;
?? ?}
?? ?//按任意鍵清屏
?? ?system("pause");
?? ?system("cls");
}

清空所有聯(lián)系人

void cleanperson(struct addressbook* add)//清空所有聯(lián)系人
{
?? ?cout << "是否確認清空?" << endl;
?? ?cout << "1 --- 是" << endl;
?? ?cout << "2 --- 否" << endl;
?? ?int a;
?? ?cin >> a;
?? ?if (a == 1)
?? ?{
?? ??? ?add->size = 0;//將當前記錄聯(lián)系人數(shù)量置為0,做邏輯上的清空操作
?? ??? ?cout << "通訊錄已清空" << endl;
?? ?}
?? ?system("pause");
?? ?system("cls");
}

main函數(shù)

int main()
{
?? ?menu();
?? ?addressbook add;//定義一個通訊錄
?? ?int choice=1;
?? ?while (choice != 0)
?? ?{
?? ??? ?cin >> choice;
?? ??? ?switch (choice)//選擇
?? ??? ?{
?? ??? ?case 1: putit(&add);
?? ??? ??? ?break;
?? ??? ?case 2: showperson(&add);
?? ??? ??? ?break;
?? ??? ?case 3: {cout << "請輸入你要刪除的人的名字" << endl;
?? ??? ??? ?string aname;
?? ??? ??? ?cin >> aname;
?? ??? ??? ?if (if_include(&add, aname) == -1)
?? ??? ??? ?{
?? ??? ??? ??? ?cout << "查無此人" << endl;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?if (if_include(&add, aname))
?? ??? ??? ?{
?? ??? ??? ??? ?deleteperson(&add, if_include(&add, aname));
?? ??? ??? ?}
?? ??? ?}
?? ??? ??? ?break;?
?? ??? ?case 4:
?? ??? ??? ?break;
?? ??? ?case 5:
?? ??? ??? ?break;
?? ??? ?case 6:
?? ??? ??? ?break;
?? ??? ?case 0: cout << "歡迎下次使用" << endl;
?? ??? ??? ?return 0;
?? ??? ??? ?break;
?? ??? ?default: {cout << "輸入不合法,請重新輸入" << endl;
?? ??? ??? ?break; }
?? ??? ?}
?? ?}
}

源代碼

#include<iostream>
using namespace std;
#include<string>
#define MAX 100

struct person
{
?? ?string name;//姓名
?? ?string sex; //性別
?? ?int age; ?//年齡
?? ?string phone;//手機號
?? ?string home;//地址

};
struct addressbook
{
?? ?struct person personArray[MAX]; //通訊錄擴展到100;
?? ?int size=0; ?//當前聯(lián)系人個數(shù)(后面就相當于i++)
};
void menu();//菜單
void putit(addressbook* add);
void showperson(addressbook* add);?
int if_include(addressbook* add, string name);
void deleteperson(addressbook* add, int i);
void findPerson(struct addressbooks* add);//查找聯(lián)系人
void cleanperson(struct addressbook* add);//清空所有聯(lián)系人
int main()
{
?? ?menu();
?? ?addressbook add;
?? ?int choice=1;
?? ?while (choice != 0)
?? ?{
?? ??? ?cin >> choice;
?? ??? ?switch (choice)
?? ??? ?{
?? ??? ?case 1: putit(&add);
?? ??? ??? ?break;
?? ??? ?case 2: showperson(&add);
?? ??? ??? ?break;
?? ??? ?case 3: {
?? ??? ??? ?cout << "請輸入你要刪除的人的名字" << endl;
?? ??? ??? ?string aname;
?? ??? ??? ?cin >> aname;
?? ??? ??? ?if (if_include(&add, aname) == -1)
?? ??? ??? ?{
?? ??? ??? ??? ?cout << "查無此人" << endl;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?if (if_include(&add, aname))
?? ??? ??? ?{
?? ??? ??? ??? ?deleteperson(&add, if_include(&add, aname));
?? ??? ??? ?}
?? ??? ?}
?? ??? ??? ?break;?
?? ??? ?case 4:
?? ??? ??? ?break;
?? ??? ?case 5:
?? ??? ??? ?break;
?? ??? ?case 6:
?? ??? ??? ?break;
?? ??? ?case 0: cout << "歡迎下次使用" << endl;
?? ??? ??? ?return 0;
?? ??? ??? ?break;
?? ??? ?default: {cout << "輸入不合法,請重新輸入" << endl;
?? ??? ??? ?break; }
?? ??? ?}
?? ?}
}
void menu()
{
?? ?cout << endl;
?? ?cout << "***********【主菜單】***********" << endl;
?? ?cout << "---------1.添加聯(lián)系人:----------" << endl;
?? ?cout << "---------2.顯示聯(lián)系人:---------" << endl;
?? ?cout << "---------3.刪除聯(lián)系人:---------" << endl;
?? ?cout << "---------4.查找聯(lián)系人:---------" << endl;
?? ?cout << "---------5.修改聯(lián)系人:---------" << endl;
?? ?cout << "---------6.清空聯(lián)系人:---------" << endl;
?? ?cout << "---------0.退出通訊錄:---------" << endl;
?? ?cout << "********************************" << endl;
}
void putit(addressbook* add)//添加聯(lián)系人功能
{
?? ?if (add->size == MAX)
?? ??? ?cout << "通訊錄已滿" << endl;
?? ?else
?? ?{
?? ??? ?string name;
?? ??? ?string sex;
?? ??? ?int age;
?? ??? ?string phone;
?? ??? ?string home;
?? ??? ?cout << "請輸入姓名" << endl;
?? ??? ?cin >> name;
?? ??? ?add->personArray[add->size].name = name;
?? ??? ?cout << "請輸入姓別" << endl;
?? ??? ?cin >> sex;
?? ??? ?add->personArray[add->size].sex = sex;
?? ??? ?cout << "請輸入年齡" << endl;
?? ??? ?cin >> age;
?? ??? ?add->personArray[add->size].age = age;
?? ??? ?cout << "請輸入電話號碼" << endl;
?? ??? ?cin >> phone;
?? ??? ?add->personArray[add->size].phone = phone;
?? ??? ?cout << "請輸入家庭住址" << endl;
?? ??? ?cin >> home;
?? ??? ?add->personArray[add->size].home = home;
?? ??? ?add->size++;
?? ??? ?cout << "添加聯(lián)系人成功" << endl;
?? ??? ?
?? ?}
?? ?system("pause");
?? ?system("cls");
?? ?menu();
}
void showperson(addressbook* add)
{
?? ?for (int i = 0; i <add->size; i++)
?? ?{
?? ??? ?cout << "姓名: ?" << add->personArray[i].name;
?? ??? ?cout << "\t姓別: ?" << add->personArray[i].sex;
?? ??? ?cout << "\t年齡: ?" << add->personArray[i].age;
?? ??? ?cout << "\t電話號碼: ?" << add->personArray[i].phone;
?? ??? ?cout << "\t家庭住址: ?" << add->personArray[i].home << endl;
?? ?}
?? ?system("pause");
?? ?system("cls");
?? ?menu();
}
int if_include(addressbook* add, string name)
{
?? ?for (int i = 0; i < add->size; i++)
?? ?{
?? ??? ?if (name == add->personArray[i].name)
?? ??? ?{
?? ??? ??? ?return i;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?return -1;
?? ??? ?}
?? ?}

}
void deleteperson(addressbook* add, int i)
{
?? ?for (; i < add->size; i++)
?? ?{
?? ??? ?add->personArray[i] = add->personArray[i + 1];
?? ?}
?? ?system("pause");
?? ?system("cls");
}

void findPerson( addressbook* add)
{
?? ?cout << "請輸入您想要查找的聯(lián)系人:" << endl;
?? ?string name;
?? ?cin >> name;
?? ?int ret = if_include(add, name);
?? ?if (ret == -1)
?? ?{
?? ??? ?cout << "查無此人" << endl;
?? ?}
?? ?else
?? ?{ ? //查到此人,進行顯示操作
?? ??? ?int i = ret;
?? ??? ?cout << "姓名:" << add->personArray[i].name << "\t";
?? ??? ?cout << "性別:" << add->personArray[i].sex << "\t";
?? ??? ?cout << "年齡:" << add->personArray[i].age << "\t";
?? ??? ?cout << "聯(lián)系方式:" << add->personArray[i].phone << "\t";
?? ??? ?cout << "地址:" << add->personArray[i].home << endl;
?? ?}
?? ?//按任意鍵清屏
?? ?system("pause");
?? ?system("cls");
}
void cleanperson(struct addressbook* add)//清空所有聯(lián)系人
{
?? ?cout << "是否確認清空?" << endl;
?? ?cout << "1 --- 是" << endl;
?? ?cout << "2 --- 否" << endl;
?? ?int a;
?? ?cin >> a;
?? ?if (a == 1)
?? ?{
?? ??? ?add->size = 0;//將當前記錄聯(lián)系人數(shù)量置為0,做邏輯上的清空操作
?? ??? ?cout << "通訊錄已清空" << endl;
?? ?}
?? ?system("pause");
?? ?system("cls");
}

由于代碼量過大,建議大家可以試著分文件編寫代碼,也可以方便查看

運行結果

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

相關文章

  • 淺談C++11新引入的lambda表達式

    淺談C++11新引入的lambda表達式

    Lambda表達式(又稱Lambda函數(shù),英文原文是Lambda Expression),是C++11的新特性中非常實用的一個。
    2017-07-07
  • C++11 Unicode編碼轉換

    C++11 Unicode編碼轉換

    這篇文章主要介紹了C++11 Unicode編碼轉換的相關資料,幫助大家更好的理解和學習c++11,感興趣的朋友可以了解下
    2020-08-08
  • VScode+cuda編程常見環(huán)境問題的解決

    VScode+cuda編程常見環(huán)境問題的解決

    本文主要介紹了VScode+cuda編程常見環(huán)境問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • C++制作簡單的計算器功能

    C++制作簡單的計算器功能

    這篇文章主要為大家詳細介紹了C++制作簡單的計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 教你Clion調(diào)試ROS包的方法

    教你Clion調(diào)試ROS包的方法

    Clion是一款專門開發(fā)C以及C++所設計的跨平臺的IDE,本文給大家介紹Clion調(diào)試ROS包的方法,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • C語言實現(xiàn)數(shù)獨游戲

    C語言實現(xiàn)數(shù)獨游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)數(shù)獨游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 從c++標準庫指針萃取器談一下traits技法(推薦)

    從c++標準庫指針萃取器談一下traits技法(推薦)

    本篇文章基于gcc中標準庫源碼剖析一下標準庫中的模板類pointer_traits,并且以此為例理解一下traits技法,對c++ traits技法源碼分析感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • C++調(diào)用EasyX庫實現(xiàn)嫦娥奔月小游戲

    C++調(diào)用EasyX庫實現(xiàn)嫦娥奔月小游戲

    這篇文章主要為大家詳細介紹了C++如何調(diào)用EasyX庫編寫一個簡單的嫦娥奔月小游戲,文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下
    2023-09-09
  • C++使用opencv調(diào)用級聯(lián)分類器來識別目標物體的詳細流程

    C++使用opencv調(diào)用級聯(lián)分類器來識別目標物體的詳細流程

    所謂級聯(lián)分類器其實就是把分類器按照一定的順序聯(lián)合到一起,下面這篇文章主要給大家介紹了關于C++使用opencv調(diào)用級聯(lián)分類器來識別目標物體的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • C++中String類的常用接口函數(shù)總結

    C++中String類的常用接口函數(shù)總結

    這篇文章主要介紹了C++中Stirng類的常用接口函數(shù),文中有詳細的代碼示例供大家參考,對我們學習C++有一定的幫助,感興趣的同學可以跟著小編一起來學習
    2023-06-06

最新評論

阿拉尔市| 马公市| 治多县| 宝丰县| 高安市| 兰州市| 枣阳市| 饶平县| 新巴尔虎左旗| 福鼎市| 桃江县| 寻乌县| 林芝县| 东辽县| 灌南县| 富阳市| 南宁市| 忻城县| 金沙县| 松潘县| 黄龙县| 青海省| 林甸县| 灵寿县| 安平县| 凉山| 巨野县| 嵩明县| 蕉岭县| 清涧县| 古蔺县| 天长市| 巴林左旗| 朔州市| 宝兴县| 华容县| 牙克石市| 历史| 北流市| 南阳市| 淅川县|