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

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

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

這個通訊錄管理系統(tǒng)是我聽課后做的筆記,都是很基礎(chǔ)的邏輯實現(xiàn),第一次動手寫了一個小案例感覺找到了一點方向,也希望能幫到一點忙!

1、系統(tǒng)需求

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

添加聯(lián)系人:向通訊錄中添加新人,信息包括(姓名、性別、年齡、聯(lián)系電話、家庭住址)最多記錄1000人 顯示聯(lián)系人:顯示通訊錄所有聯(lián)系人信息
刪除聯(lián)系人:按照姓名進行刪除指定聯(lián)系人 查找聯(lián)系人:按照姓名查看指定聯(lián)系人信息 修改聯(lián)系人:按照姓名重新修改指定聯(lián)系人
清空聯(lián)系人:清空通訊錄中所有信息 退出通訊錄:退出當(dāng)前使用的通訊錄

2、創(chuàng)建項目

3、菜單功能

功能描述:用戶選擇功能的界面

步驟:

封裝函數(shù)顯示該界面,如:void showMenu() 在main函數(shù)中調(diào)用封裝好的函數(shù)

void mean()
{
? ? cout << "1、創(chuàng)建聯(lián)系人" << endl;
? ? cout << "2、顯示練習(xí)人" << endl;
? ? cout << "3、刪除練習(xí)人" << endl;
? ? cout << "4、查找聯(lián)系人" << endl;
? ? cout << "5、修改聯(lián)系人" << endl;
? ? cout << "6、清空聯(lián)系人" << endl;
? ? cout << "0、退出通訊錄" << endl;
}

4、退出功能

功能描述:退出通訊錄系統(tǒng)

思路:根據(jù)用戶不同的選擇,進入不同的功能,可以選擇switch分支結(jié)構(gòu),將整個架構(gòu)進行搭建

當(dāng)用戶選擇0的時候,執(zhí)行退出,選擇其他先不做操作,也不會退出程序

cout << "歡迎下次使用系統(tǒng)" << endl;
? ? ? ? ? ? ? ? system("pause");
? ? ? ? ? ? ? ? return 0;

5、添加聯(lián)系人

功能描述:

實現(xiàn)添加聯(lián)系人功能,聯(lián)系人上限為1000人,聯(lián)系人信息包括(姓名、性別、年齡、聯(lián)系電話、家庭住址)

添加聯(lián)系人實現(xiàn)步驟:

設(shè)計聯(lián)系人結(jié)構(gòu)體

設(shè)計通訊錄結(jié)構(gòu)體

main函數(shù)中創(chuàng)建通訊錄

封裝添加聯(lián)系人函數(shù)

測試添加聯(lián)系人功能

5.1 設(shè)計聯(lián)系人結(jié)構(gòu)體

聯(lián)系人信息包括:姓名、性別、年齡、聯(lián)系電話、家庭住址

void addPerson(Arraybooks *abs)
{
? ? if(abs -> Size == MAX){
? ? ? ? cout <<"通訊錄已滿" << endl;
? ? ? ? return;
? ? }
? ? else{
? ? ? ? string name;
? ? ? ? cout << "輸入姓名" << endl;
? ? ? ? cin >> name;
? ? ? ? abs->ArrayList[abs->Size].name = name;

? ? ? ? cout << "輸入性別" << endl;
? ? ? ? cout <<"1---男" << endl;
? ? ? ? cout <<"2---女" <<endl;
? ? ? ? int sex;
? ? ? ? while(-1){
? ? ? ? ? ? cin >> sex;
? ? ? ? ? ? if(sex == 1 || sex == 2) {
? ? ? ? ? ? ? ? abs->ArrayList[abs->Size].Sex = sex;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? cout << "輸入有誤,請重新輸入";
? ? ? ? }

? ? ? ? cout << "請輸入年齡" << endl;
? ? ? ? int age = 0;
? ? ? ? cin >> age;
? ? ? ? abs->ArrayList[abs->Size].old = age;

? ? ? ? cout << "請輸入電話:" << endl;
? ? ? ? string phone = " ";
? ? ? ? cin >> phone;
? ? ? ? abs->ArrayList[abs->Size].phone = phone;

? ? ? ? cout << "請輸入地址" << endl;
? ? ? ? string address;
? ? ? ? cin >> address;
? ? ? ? abs->ArrayList[abs->Size].address = address;

? ? ? ? abs->Size++;

? ? ? ? cout << "添加成功" << endl;
? ? ? ? system("pause");
? ? ? ? system("cls");

? ? }
}

6、顯示聯(lián)系人

功能描述:顯示通訊錄中已有的聯(lián)系人信息

顯示聯(lián)系人實現(xiàn)步驟:

封裝顯示聯(lián)系人函數(shù)

測試顯示聯(lián)系人功能

void showPerson(Arraybooks *abs)
{
? ? if(abs->Size == 0){
? ? ? ? cout << "記錄為空" << endl;
? ? }
? ? else{
? ? ? ? for(int i = 0;i < abs->Size;i++){
? ? ? ? ? ? cout << "姓名:" << abs->ArrayList[i].name << "\t";
? ? ? ? ? ? cout << "性別:" << (abs->ArrayList[i].Sex == 1?"男":"女") ?<< "\t";
? ? ? ? ? ? cout << "年齡: " << abs->ArrayList[i].old << "\t";
? ? ? ? ? ? cout << "電話:" <<abs->ArrayList[i].phone << "\t";
? ? ? ? ? ? cout << "地址: " << abs->ArrayList[i].address << endl;

? ? ? ? }
? ? }
? ? system("pause");
? ? system("cls");
}

7、刪除聯(lián)系人

實現(xiàn)步驟:

1、封裝檢測聯(lián)系人是否存在

2、封裝刪除聯(lián)系人函數(shù)

3、測試刪除聯(lián)系人功能

7.1 封裝檢測聯(lián)系人是否存在

設(shè)計思路:

刪除聯(lián)系人前,我們需要先判斷用戶的聯(lián)系人是否存在,如果存在刪除,不存在提示用戶沒有要刪除的聯(lián)系人,因此我們可以把檢測聯(lián)系人是否存在封裝成一個函數(shù)中,如果存在,返回聯(lián)系人在通訊錄中的位置,不存在返回-1。

int isExist(Arraybooks * abs , string name)
{
? ? for (int i = 0; i < abs->Size; ++i) {
? ? ? ? if(abs->ArrayList[i].name == name){
? ? ? ? ? ? return i;
? ? ? ? }

? ? ? ? }
? ? return -1;
? ? }

7.2 封裝刪除聯(lián)系人函數(shù)

根據(jù)用戶輸入的聯(lián)系人判斷該通訊錄中是否有此人

查找到進行刪除,并提示刪除成功

查不到提示查無此人

void DalatePerson(Arraybooks *abs )
{
? ? cout << "輸入你要刪除的聯(lián)系人" << endl;
? ? string name;
? ? cin >> name;

? ? int ret = isExist(abs, name);
? ? if(ret != -1){
? ? ? ? for (int i = 0; i < abs->Size; ++i) {
? ? ? ? ? ? abs->ArrayList[i].name = abs->ArrayList[i+1].name;
? ? ? ? ? ? abs->Size--;
? ? ? ? }
? ? ? ? cout << "刪除成功" << endl;
? ? }
? ? else{
? ? ? ? cout << "查無此人" << endl;
? ? }

? ? system("pause");
? ? system("cls");
}

8、查找聯(lián)系人

功能描述:按照姓名查看指定聯(lián)系人信息
查找聯(lián)系人實現(xiàn)步驟

1、封裝查找聯(lián)系人函數(shù)

2、測試查找指定聯(lián)系人

8.1 封裝查找聯(lián)系人函數(shù)

實現(xiàn)思路:判斷用戶指定的聯(lián)系人是否存在,如果存在顯示信息,不存在則提示查無此人。

void findPerson(Arraybooks * abs)
{
? ? cout << "請輸入要查找的人:" << endl;
? ? string name;
? ? cin >> name;

? ? int ret = isExist(abs , name);
? ? if(ret != -1){
? ? ? ? cout << "姓名 : " << abs->ArrayList[ret].name<<endl;
? ? ? ? cout << "性別 : " ?<< abs->ArrayList[ret].Sex<< endl;
? ? ? ? cout << "年齡 : " << abs->ArrayList[ret].old <<endl;
? ? ? ? cout << "電話 : " << abs->ArrayList[ret].phone<<endl;
? ? ? ? cout << "地址 :" << abs->ArrayList[ret].address<<endl;

? ? }
? ? else{
? ? ? ? cout << "查無此人" <<endl;
? ? }

? ? system("pause");
? ? system("cls");
}

9、修改聯(lián)系人

功能描述:按照姓名重新修改指定聯(lián)系人
修改聯(lián)系人實現(xiàn)步驟

1、封裝修改聯(lián)系人函數(shù)

2、測試修改聯(lián)系人功能

9.1 封裝修改聯(lián)系人函數(shù)

實現(xiàn)思路:查找用戶輸入的聯(lián)系人,如果查找成功進行修改操作,查找失敗提示查無此人。

void modifyPerson(Arraybooks * abs) {
? ? cout << "輸入你要修改的聯(lián)系人" << endl;
? ? string name;
? ? cin >> name;

? ? int ret = isExist(abs, name);
? ? if (ret != -1) {

? ? ? ? cout << "請輸入姓名:" << endl;
? ? ? ? string name;
? ? ? ? cin >> name;
? ? ? ? abs->ArrayList[ret].name = name;

? ? ? ? cout << "請輸入性別:" << endl;
? ? ? ? cout << "1---男" << endl;
? ? ? ? cout << "2---女" << endl;
? ? ? ? int sex;
? ? ? ? cin >> sex;
? ? ? ? while (true) {
? ? ? ? ? ? if (sex == 1 || sex == 2) {
? ? ? ? ? ? ? ? abs->ArrayList[ret].Sex = sex;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? cout << "輸入錯誤" << endl;
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? cout << "輸入年齡:" << endl;
? ? ? ? int old = 0;
? ? ? ? cin >> old;
? ? ? ? abs->ArrayList[ret].old = old;

? ? ? ? cout << "輸入電話" << endl;
? ? ? ? string phone;
? ? ? ? cin >> phone;
? ? ? ? abs->ArrayList[ret].phone = phone;

? ? ? ? cout << "輸入地址" << endl;
? ? ? ? string address;
? ? ? ? cin >> address;
? ? ? ? abs->ArrayList[ret].address = address;

? ? ? ? cout << "修改成功" << endl;


? ? }
? ? else{
? ? ? ? cout << "查無此人" <<endl;
? ? }

? ? system("pause");
? ? system("cls");
}

10、清空聯(lián)系人

功能描述:清空通訊錄中所有信息
清空聯(lián)系人實現(xiàn)步驟

1、封裝清空聯(lián)系人函數(shù)

2、測試清空聯(lián)系人10.1封裝清空聯(lián)系人函數(shù)
實現(xiàn)思路:將通訊錄所有聯(lián)系人信息清楚掉,只要將通訊錄記錄的聯(lián)系人數(shù)量置為0,做邏輯清空即可。

void cleanPerson(Arraybooks * abs){
? ? abs->Size = 0;
? ? cout << "清空完成" << endl;
? ? system("pause");
? ? system("cls");
}

整段代碼:

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

struct Person
{
? ? string name;
? ? int Sex;
? ? int old;
? ? string phone;
? ? string address;
};

struct Arraybooks
{
? ? struct Person ArrayList[MAX];
? ? int Size;
};

void addPerson(Arraybooks *abs)
{
? ? if(abs -> Size == MAX){
? ? ? ? cout <<"通訊錄已滿" << endl;
? ? ? ? return;
? ? }
? ? else{
? ? ? ? string name;
? ? ? ? cout << "輸入姓名" << endl;
? ? ? ? cin >> name;
? ? ? ? abs->ArrayList[abs->Size].name = name;

? ? ? ? cout << "輸入性別" << endl;
? ? ? ? cout <<"1---男" << endl;
? ? ? ? cout <<"2---女" <<endl;
? ? ? ? int sex;
? ? ? ? while(-1){
? ? ? ? ? ? cin >> sex;
? ? ? ? ? ? if(sex == 1 || sex == 2) {
? ? ? ? ? ? ? ? abs->ArrayList[abs->Size].Sex = sex;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? cout << "輸入有誤,請重新輸入";
? ? ? ? }

? ? ? ? cout << "請輸入年齡" << endl;
? ? ? ? int age = 0;
? ? ? ? cin >> age;
? ? ? ? abs->ArrayList[abs->Size].old = age;

? ? ? ? cout << "請輸入電話:" << endl;
? ? ? ? string phone = " ";
? ? ? ? cin >> phone;
? ? ? ? abs->ArrayList[abs->Size].phone = phone;

? ? ? ? cout << "請輸入地址" << endl;
? ? ? ? string address;
? ? ? ? cin >> address;
? ? ? ? abs->ArrayList[abs->Size].address = address;

? ? ? ? abs->Size++;

? ? ? ? cout << "添加成功" << endl;
? ? ? ? system("pause");
? ? ? ? system("cls");

? ? }
}

void showPerson(Arraybooks *abs)
{
? ? if(abs->Size == 0){
? ? ? ? cout << "記錄為空" << endl;
? ? }
? ? else{
? ? ? ? for(int i = 0;i < abs->Size;i++){
? ? ? ? ? ? cout << "姓名:" << abs->ArrayList[i].name << "\t";
? ? ? ? ? ? cout << "性別:" << (abs->ArrayList[i].Sex == 1?"男":"女") ?<< "\t";
? ? ? ? ? ? cout << "年齡: " << abs->ArrayList[i].old << "\t";
? ? ? ? ? ? cout << "電話:" <<abs->ArrayList[i].phone << "\t";
? ? ? ? ? ? cout << "地址: " << abs->ArrayList[i].address << endl;

? ? ? ? }
? ? }
? ? system("pause");
? ? system("cls");
}

int isExist(Arraybooks * abs , string name)
{
? ? for (int i = 0; i < abs->Size; ++i) {
? ? ? ? if(abs->ArrayList[i].name == name){
? ? ? ? ? ? return i;
? ? ? ? }

? ? }
? ? return -1;
}


void DalatePerson(Arraybooks *abs )
{
? ? cout << "輸入你要刪除的聯(lián)系人" << endl;
? ? string name;
? ? cin >> name;

? ? int ret = isExist(abs, name);
? ? if(ret != -1){
? ? ? ? for (int i = 0; i < abs->Size; ++i) {
? ? ? ? ? ? abs->ArrayList[i].name = abs->ArrayList[i+1].name;
? ? ? ? ? ? abs->Size--;
? ? ? ? }
? ? ? ? cout << "刪除成功" << endl;
? ? }
? ? else{
? ? ? ? cout << "查無此人" << endl;
? ? }

? ? system("pause");
? ? system("cls");
}

void findPerson(Arraybooks * abs)
{
? ? cout << "請輸入要查找的人:" << endl;
? ? string name;
? ? cin >> name;

? ? int ret = isExist(abs , name);
? ? if(ret != -1){
? ? ? ? cout << "姓名 : " << abs->ArrayList[ret].name<<endl;
? ? ? ? cout << "性別 : " ?<< abs->ArrayList[ret].Sex<< endl;
? ? ? ? cout << "年齡 : " << abs->ArrayList[ret].old <<endl;
? ? ? ? cout << "電話 : " << abs->ArrayList[ret].phone<<endl;
? ? ? ? cout << "地址 :" << abs->ArrayList[ret].address<<endl;

? ? }
? ? else{
? ? ? ? cout << "查無此人" <<endl;
? ? }

? ? system("pause");
? ? system("cls");
}

void modifyPerson(Arraybooks * abs) {
? ? cout << "輸入你要修改的聯(lián)系人" << endl;
? ? string name;
? ? cin >> name;

? ? int ret = isExist(abs, name);
? ? if (ret != -1) {

? ? ? ? cout << "請輸入姓名:" << endl;
? ? ? ? string name;
? ? ? ? cin >> name;
? ? ? ? abs->ArrayList[ret].name = name;

? ? ? ? cout << "請輸入性別:" << endl;
? ? ? ? cout << "1---男" << endl;
? ? ? ? cout << "2---女" << endl;
? ? ? ? int sex;
? ? ? ? cin >> sex;
? ? ? ? while (true) {
? ? ? ? ? ? if (sex == 1 || sex == 2) {
? ? ? ? ? ? ? ? abs->ArrayList[ret].Sex = sex;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? cout << "輸入錯誤" << endl;
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? cout << "輸入年齡:" << endl;
? ? ? ? int old = 0;
? ? ? ? cin >> old;
? ? ? ? abs->ArrayList[ret].old = old;

? ? ? ? cout << "輸入電話" << endl;
? ? ? ? string phone;
? ? ? ? cin >> phone;
? ? ? ? abs->ArrayList[ret].phone = phone;

? ? ? ? cout << "輸入地址" << endl;
? ? ? ? string address;
? ? ? ? cin >> address;
? ? ? ? abs->ArrayList[ret].address = address;

? ? ? ? cout << "修改成功" << endl;


? ? }
? ? else{
? ? ? ? cout << "查無此人" <<endl;
? ? }

? ? system("pause");
? ? system("cls");
}

void cleanPerson(Arraybooks * abs){
? ? abs->Size = 0;
? ? cout << "清空完成" << endl;
? ? system("pause");
? ? system("cls");
}

void mean()
{
? ? cout << "1、創(chuàng)建聯(lián)系人" << endl;
? ? cout << "2、顯示練習(xí)人" << endl;
? ? cout << "3、刪除練習(xí)人" << endl;
? ? cout << "4、查找聯(lián)系人" << endl;
? ? cout << "5、修改聯(lián)系人" << endl;
? ? cout << "6、清空聯(lián)系人" << endl;
? ? cout << "0、退出通訊錄" << endl;
}

int main()
{
? ? Arraybooks abs;
? ? abs.Size = 0;
? ? int istream = 0;
? ? while(true){
? ? ? ? mean();
? ? ? ? cin >> istream;
? ? ? ? switch(istream){
? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? addPerson(&abs);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? showPerson(&abs);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? DalatePerson(&abs);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? findPerson(&abs);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 5:
? ? ? ? ? ? ? ? modifyPerson(&abs);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 6:
? ? ? ? ? ? ? ? cleanPerson(&abs);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 0:
? ? ? ? ? ? ? ? cout << "歡迎下次使用系統(tǒng)" << endl;
? ? ? ? ? ? ? ? system("pause");
? ? ? ? ? ? ? ? return 0;
? ? ? ? }
? ? }
? ? return 0;
}

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

相關(guān)文章

  • Qt實現(xiàn)抽獎小游戲的三種方式

    Qt實現(xiàn)抽獎小游戲的三種方式

    本文主要介紹了Qt實現(xiàn)抽獎小游戲的三種方式,主要包括while循環(huán),定時器,線程這三種方法,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • OpenGL中點Bresenham繪制直線算法

    OpenGL中點Bresenham繪制直線算法

    這篇文章主要為大家詳細(xì)介紹了OpenGL中點Bresenham繪制直線算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • QT中刪除信號于槽的連接的實現(xiàn)

    QT中刪除信號于槽的連接的實現(xiàn)

    本文主要介紹了QT中刪除信號于槽的連接的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C語言實現(xiàn)掃雷游戲小項目

    C語言實現(xiàn)掃雷游戲小項目

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)掃雷游戲小項目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語言SetConsoleCursorInfo函數(shù)使用方法

    C語言SetConsoleCursorInfo函數(shù)使用方法

    這篇文章介紹了C語言SetConsoleCursorInfo函數(shù)的使用方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • C++生成不重復(fù)的隨機整數(shù)

    C++生成不重復(fù)的隨機整數(shù)

    這篇文章主要為大家詳細(xì)介紹了C++生成不重復(fù)的隨機整數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C語言實現(xiàn)簡單計算器

    C語言實現(xiàn)簡單計算器

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡單計算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++高級數(shù)據(jù)結(jié)構(gòu)之二叉查找樹

    C++高級數(shù)據(jù)結(jié)構(gòu)之二叉查找樹

    這篇文章主要介紹了C++高級數(shù)據(jù)結(jié)構(gòu)之二叉查找樹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • STL中vector的使用你了解嗎

    STL中vector的使用你了解嗎

    這篇文章主要為大家詳細(xì)介紹了STL中vector的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • opencv檢測直線方法之形態(tài)學(xué)方法

    opencv檢測直線方法之形態(tài)學(xué)方法

    這篇文章主要為大家詳細(xì)介紹了opencv檢測直線方法之形態(tài)學(xué)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論