欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年06月20日 09:19:15   作者:石先森很瘋狂  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡單的通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

案例描述:

通訊錄是一個(gè)可以記錄親人、好友信息的工具。
本教程主要利用C++來實(shí)現(xiàn)一個(gè)通訊錄管理系統(tǒng)
系統(tǒng)中需要實(shí)現(xiàn)的功能如下:

  • 添加聯(lián)系人:向通訊錄中添加新人,信息包括(姓名、性別、年齡、聯(lián)系電話、家庭住址)最多記錄1000人
  • 顯示聯(lián)系人:顯示通訊錄中所有聯(lián)系人信息
  • 刪除聯(lián)系人:按照姓名進(jìn)行刪除指定聯(lián)系人
  • 查找聯(lián)系人:按照姓名查看指定聯(lián)系人信息
  • 修改聯(lián)系人:按照姓名重新修改指定聯(lián)系人
  • 清空聯(lián)系人:清空通訊錄中所有信息
  • 退出通訊錄:退出當(dāng)前使用的通訊錄
#include<iostream>
#include<string>
using namespace std;
#define MAX ?1000 ? ?//通訊錄總?cè)藬?shù),可以修改

//聯(lián)系人信息結(jié)構(gòu)體
struct Person
{
?? ?string name;
?? ?string sex;
?? ?int ?age;
?? ?int number;
?? ?string address;
};
//通訊錄結(jié)構(gòu)體
struct addressbook
{
?? ?struct Person personArray[MAX]; //通訊錄中保存的聯(lián)系人數(shù)組
?? ?int m_Size; //通訊錄中人員個(gè)數(shù)
};

//菜單界面
void showMenu()
{
?? ?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)系人
int findPerson(addressbook* abs, string name) {
?? ?//-1代表不存在該聯(lián)系人
?? ?int j = -1;
?? ?for (int i = 0; i < abs->m_Size; i++) {
?? ??? ?if (abs->personArray[i].name == name) {
?? ??? ??? ?cout << "姓名:" << abs->personArray[i].name << "?? ?"
?? ??? ??? ??? ?<< "性別:" << abs->personArray[i].sex << "?? ?"
?? ??? ??? ??? ?<< "年齡:" << abs->personArray[i].age << "?? ?"
?? ??? ??? ??? ?<< "聯(lián)系電話:" << abs->personArray[i].number << "?? ?"
?? ??? ??? ??? ?<< "家庭住址:" << abs->personArray[i].address << endl;
?? ??? ??? ?//獲得已存在聯(lián)系人的下標(biāo)
?? ??? ??? ?j = i;
?? ??? ?}
?? ?}
?? ?return j;
}

//添加聯(lián)系人
void addPerson(addressbook* abs, string name) {
?? ?int sex = 0;
?? ?int age;
?? ?int number;
?? ?string address;

?? ?abs->personArray[abs->m_Size].name = name;
?? ?cout << "請(qǐng)輸入性別:" << endl;
?? ?cout << "1 -- 男" << endl;
?? ?cout << "2 -- 女" << endl;
?? ?//性別
?? ?while (true)
?? ?{
?? ??? ?cin >> sex;
?? ??? ?if (sex == 1 || sex == 2)
?? ??? ?{
?? ??? ??? ?if (sex == 1) {
?? ??? ??? ??? ?abs->personArray[abs->m_Size].sex = "男";
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?abs->personArray[abs->m_Size].sex = "女";
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?cout << "輸入有誤,請(qǐng)重新輸入";
?? ?}

?? ?//年齡
?? ?cout << "請(qǐng)輸入年齡:" << endl;
?? ?cin >> age;
?? ?abs->personArray[abs->m_Size].age = age;

?? ?//聯(lián)系電話
?? ?cout << "請(qǐng)輸入聯(lián)系電話:" << endl;
?? ?cin >> number;
?? ?abs->personArray[abs->m_Size].number = number;

?? ?//家庭住址
?? ?cout << "請(qǐng)輸入家庭住址:" << endl;
?? ?cin >> address;
?? ?abs->personArray[abs->m_Size].address = address;

?? ?//更新通訊錄人數(shù)
?? ?abs->m_Size++;
?? ?cout << "添加成功" << endl;
?? ?system("pause");
?? ?//執(zhí)行清屏操作
?? ?system("cls");
}

//判斷聯(lián)系人受否存在
void existsPerson(addressbook* abs, string name) {
?? ?//判斷通訊錄是否已滿
?? ?if (abs->m_Size == 1000) {
?? ??? ?cout << "通訊錄已滿,不能添加聯(lián)系人!" << endl;
?? ?}
?? ?//未滿,則判斷聯(lián)系人是否已存在
?? ?else
?? ?{ ?//判斷用戶輸入的聯(lián)系人是否存在
?? ??? ?int p = findPerson(abs, name);
?? ??? ?//不存在執(zhí)行添加聯(lián)系人操作
?? ??? ?if (p == -1) {
?? ??? ??? ?addPerson(abs, name);
?? ??? ?}
?? ??? ?else
?? ??? ?{ ?//若存在,則輸出聯(lián)系人信息,并詢問用戶是否繼續(xù)添加
?? ??? ??? ?int i = p;
?? ??? ??? ?cout << "姓名:" << abs->personArray[i].name << "?? ?"
?? ??? ??? ??? ?<< "性別:" << abs->personArray[i].sex << "?? ?"
?? ??? ??? ??? ?<< "年齡:" << abs->personArray[i].age << "?? ?"
?? ??? ??? ??? ?<< "聯(lián)系電話:" << abs->personArray[i].address << "?? ?"
?? ??? ??? ??? ?<< "家庭住址:" << abs->personArray[i].address << endl;
?? ??? ??? ?cout << "聯(lián)系人已存在! " << endl;
?? ??? ??? ?system("pause");
?? ??? ??? ?//執(zhí)行清屏操作
?? ??? ??? ?system("cls");
?? ??? ?}
?? ?}
}

//刪除聯(lián)系人
void deletePerson(addressbook* abs) {
?? ?string name;
?? ?cout << "請(qǐng)輸入聯(lián)系人姓名" << endl;
?? ?cin >> name;
?? ?//判斷用戶輸入的聯(lián)系人是否存在
?? ?int p = findPerson(abs, name);
?? ?if (p != -1) {
?? ??? ?//進(jìn)行刪除聯(lián)系人操作
?? ??? ?for (int i = p; i < abs->m_Size; i++) {
?? ??? ??? ?abs->personArray[i] = abs->personArray[i + 1];
?? ??? ?}
?? ??? ?//更新通訊錄
?? ??? ?abs->m_Size--;
?? ??? ?cout << "刪除成功!" << endl;
?? ?}
?? ?else
?? ?{
?? ??? ?cout << "查無此人!" << endl;
?? ?}
?? ?system("pause");
?? ?//執(zhí)行清屏操作
?? ?system("cls");
}

//顯示聯(lián)系人
void showPerson(addressbook* abs) {
?? ?if (abs->m_Size == 0)
?? ?{
?? ??? ?cout << "當(dāng)前記錄為空" << endl;
?? ?}
?? ?else
?? ?{
?? ??? ?for (int i = 0; i < abs->m_Size; i++)
?? ??? ?{
?? ??? ??? ?cout << "姓名:" << abs->personArray[i].name << "\t";
?? ??? ??? ?cout << "性別:" << abs->personArray[i].sex << "\t";
?? ??? ??? ?cout << "年齡:" << abs->personArray[i].age << "\t";
?? ??? ??? ?cout << "電話:" << abs->personArray[i].number << "\t";
?? ??? ??? ?cout << "住址:" << abs->personArray[i].address << endl;
?? ??? ?}
?? ?}
?? ?system("pause");
?? ?system("cls");
}

//修改聯(lián)系人
void changePerson(addressbook* abs) {
?? ?string name;
?? ?int sex = 0;
?? ?int age;
?? ?int number;
?? ?string address;

?? ?cout << "請(qǐng)輸入聯(lián)系人姓名:" << endl;
?? ?cin >> name;
?? ?//判斷用戶輸入的聯(lián)系人是否存在
?? ?int ?p = findPerson(abs, name);
?? ?if (p != -1) {
?? ??? ?cout << "請(qǐng)輸入聯(lián)系人姓名:" << endl;
?? ??? ?cin >> name;
?? ??? ?abs->personArray[p].name = name;
?? ??? ?cout << "請(qǐng)輸入性別:" << endl;
?? ??? ?cout << "1 -- 男" << endl;
?? ??? ?cout << "2 -- 女" << endl;
?? ??? ?//性別
?? ??? ?while (true)
?? ??? ?{
?? ??? ??? ?cin >> sex;
?? ??? ??? ?if (sex == 1 || sex == 2)
?? ??? ??? ?{
?? ??? ??? ??? ?if (sex == 1) {
?? ??? ??? ??? ??? ?abs->personArray[p].sex = "男";
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?abs->personArray[p].sex = "女";
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?cout << "輸入有誤,請(qǐng)重新輸入";
?? ??? ?}

?? ??? ?//年齡
?? ??? ?cout << "請(qǐng)輸入年齡:" << endl;
?? ??? ?cin >> age;
?? ??? ?abs->personArray[p].age = age;

?? ??? ?//聯(lián)系電話
?? ??? ?cout << "請(qǐng)輸入聯(lián)系電話:" << endl;
?? ??? ?cin >> number;
?? ??? ?abs->personArray[p].number = number;

?? ??? ?//家庭住址
?? ??? ?cout << "請(qǐng)輸入家庭住址:" << endl;

?? ??? ?cin >> address;
?? ??? ?abs->personArray[p].address = address;

?? ??? ?cout << "修改成功" << endl;
?? ??? ?system("pause");
?? ??? ?//執(zhí)行清屏操作
?? ??? ?system("cls");
?? ?}
?? ?else
?? ?{
?? ??? ?cout << "該聯(lián)系人不存在!" << endl;
?? ??? ?system("pause");
?? ??? ?//執(zhí)行清屏操作
?? ??? ?system("cls");
?? ?}
}
//清空聯(lián)系人
void empty(addressbook* abs) {
?? ?abs->m_Size = 0;
?? ?cout << "通訊錄已清空" << endl;
?? ?system("pause");
?? ?system("cls");
}

int main() {
?? ?//初始化通訊錄
?? ?addressbook abs;
?? ?//初始化通訊錄人數(shù)為0
?? ?abs.m_Size = 0;

?? ?int flag = true;
?? ?int key = 0;
?? ?string name;
?? ?while (true)
?? ?{
?? ??? ?showMenu();
?? ??? ?cout << "請(qǐng)輸入要操作的功能" << endl;
?? ??? ?cin >> key;
?? ??? ?switch (key)
?? ??? ?{
?? ??? ?case 1:
?? ??? ??? ?//先判斷判斷通訊錄是否已滿,在判斷聯(lián)系人是否已存在
?? ??? ??? ?//最后進(jìn)行聯(lián)系人添加操作addPerson(addressbook *abs)
?? ??? ??? ?cout << "請(qǐng)輸入聯(lián)系人姓名" << endl;
?? ??? ??? ?cin >> name;
?? ??? ??? ?existsPerson(&abs, name);
?? ??? ??? ?break;
?? ??? ?case 2:
?? ??? ??? ?showPerson(&abs);
?? ??? ??? ?break;
?? ??? ?case 3:
?? ??? ??? ?deletePerson(&abs);
?? ??? ??? ?break;
?? ??? ?case 4:
?? ??? ??? ?cout << "請(qǐng)輸入聯(lián)系人姓名" << endl;
?? ??? ??? ?cin >> name;
?? ??? ??? ?findPerson(&abs, name);
?? ??? ??? ?system("pause");
?? ??? ??? ?//執(zhí)行清屏操作
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?case 5:
?? ??? ??? ?changePerson(&abs);
?? ??? ??? ?break;
?? ??? ?case 6:
?? ??? ??? ?empty(&abs);
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?cout << "歡迎下次使用!" << endl;
?? ??? ??? ?system("pause");
?? ??? ??? ?return 0;
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?cout << "請(qǐng)輸入正確的選項(xiàng)序號(hào):" << endl;
?? ??? ??? ?break;
?? ??? ?}
?? ?}

?? ?system("pause");

?? ?return 0;
}

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

相關(guān)文章

  • C++ 中重載和運(yùn)算符重載加號(hào)實(shí)現(xiàn)矩陣相加實(shí)例代碼

    C++ 中重載和運(yùn)算符重載加號(hào)實(shí)現(xiàn)矩陣相加實(shí)例代碼

    這篇文章主要介紹了C++ 中重載和運(yùn)算符重載加號(hào)實(shí)現(xiàn)矩陣相加實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • C++?AVL樹插入新節(jié)點(diǎn)后的四種調(diào)整情況梳理介紹

    C++?AVL樹插入新節(jié)點(diǎn)后的四種調(diào)整情況梳理介紹

    AVL樹是高度平衡的而二叉樹,它的特點(diǎn)是AVL樹中任何節(jié)點(diǎn)的兩個(gè)子樹的高度最大差別為1,本文主要給大家介紹了C++如何實(shí)現(xiàn)AVL樹,需要的朋友可以參考下
    2022-08-08
  • C++結(jié)構(gòu)體與類的區(qū)別詳情

    C++結(jié)構(gòu)體與類的區(qū)別詳情

    這篇文章主要介紹了C++結(jié)構(gòu)體與類的區(qū)別,C++中的struct對(duì)C中的struct進(jìn)行了擴(kuò)充,它已經(jīng)不再只是一個(gè)包含不同數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu)了,它已經(jīng)獲取了太多的功能。下面我們一起進(jìn)入文章倆姐具體內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • c++線程池實(shí)現(xiàn)方法

    c++線程池實(shí)現(xiàn)方法

    這篇文章主要介紹了c++線程池實(shí)現(xiàn)方法,實(shí)例分析了C++線程池的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • 一文總結(jié)C++運(yùn)算符的使用方法

    一文總結(jié)C++運(yùn)算符的使用方法

    這篇文章主要為大家詳細(xì)總結(jié)了C++中運(yùn)算符的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-05-05
  • C++多重繼承引發(fā)的重復(fù)調(diào)用問題與解決方法

    C++多重繼承引發(fā)的重復(fù)調(diào)用問題與解決方法

    這篇文章主要介紹了C++多重繼承引發(fā)的重復(fù)調(diào)用問題與解決方法,結(jié)合具體實(shí)例形式分析了C++多重調(diào)用中的重復(fù)調(diào)用問題及相應(yīng)的解決方法,需要的朋友可以參考下
    2018-05-05
  • C++入門教程之內(nèi)聯(lián)函數(shù)與extern?"C"詳解

    C++入門教程之內(nèi)聯(lián)函數(shù)與extern?"C"詳解

    C++中的內(nèi)聯(lián)函數(shù)與靜態(tài)函數(shù)靜態(tài)函數(shù)靜態(tài)函數(shù)的定義靜態(tài)函數(shù)又稱為內(nèi)部函數(shù),下面這篇文章主要給大家介紹了關(guān)于C++入門教程之內(nèi)聯(lián)函數(shù)與extern?"C"的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • C語言完全平方整數(shù)的判斷

    C語言完全平方整數(shù)的判斷

    大家好,本篇文章主要講的是C語言完全平方整數(shù)的判斷,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言編程入門之程序頭文件的簡要解析

    C語言編程入門之程序頭文件的簡要解析

    這篇文章主要介紹了C語言編程入門之程序頭文件的簡要解析,包括頭文件重復(fù)包含問題等方面的說明,需要的朋友可以參考下
    2015-12-12
  • C++析構(gòu)函數(shù)內(nèi)部工作機(jī)制詳解

    C++析構(gòu)函數(shù)內(nèi)部工作機(jī)制詳解

    析構(gòu)函數(shù)(Destructor)也是一種特殊的成員函數(shù),沒有返回值,不需要程序員顯式調(diào)用(程序員也沒法顯式調(diào)用),而是在銷毀對(duì)象時(shí)自動(dòng)執(zhí)行。構(gòu)造函數(shù)的名字和類名相同,而析構(gòu)函數(shù)的名字是在類名前面加一個(gè)~符號(hào)
    2023-02-02

最新評(píng)論