日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++实现通讯录管理系统

發布時間:2023/12/20 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++实现通讯录管理系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 前言
  • 結構體
    • 聯系人結構體
    • 通訊錄結構體
  • 函數模塊
    • 菜單
    • 添加聯系人
    • 顯示聯系人
    • 判斷聯系人
    • 刪除聯系人
    • 查找聯系人
    • 清空所有聯系人
  • main函數
  • 源代碼
  • 運行結果

前言

**

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

**

完成通訊錄管理系統所需知識體系
1.結構體
2.指針
3.函數的封裝
4.指針與函數的結合使用
5.指針與結構體的結合使用

結構體

聯系人結構體

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

通訊錄結構體

struct addressbook {struct person personArray[MAX]; //通訊錄擴展到100;int size=0; //當前聯系人個數(后面就相當于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( addressbook* add);//查找聯系人 void cleanperson(struct addressbook* add);//清空所有聯系人

菜單

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

添加聯系人

void putit(addressbook* add)//添加聯系人功能 {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 << "添加聯系人成功" << 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 << "請輸入您想要查找的聯系人:" << 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 << "聯系方式:" << add->personArray[i].phone << "\t";cout << "地址:" << add->personArray[i].home << endl;}//按任意鍵清屏system("pause");system("cls"); }

清空所有聯系人

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

main函數

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 100struct person {string name;//姓名string sex; //性別int age; //年齡string phone;//手機號string home;//地址}; struct addressbook {struct person personArray[MAX]; //通訊錄擴展到100;int size=0; //當前聯系人個數(后面就相當于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);//查找聯系人 void cleanperson(struct addressbook* add);//清空所有聯系人 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.添加聯系人:----------" << endl;cout << "---------2.顯示聯系人:---------" << endl;cout << "---------3.刪除聯系人:---------" << endl;cout << "---------4.查找聯系人:---------" << endl;cout << "---------5.修改聯系人:---------" << endl;cout << "---------6.清空聯系人:---------" << endl;cout << "---------0.退出通訊錄:---------" << endl;cout << "********************************" << endl; } void putit(addressbook* add)//添加聯系人功能 {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 << "添加聯系人成功" << 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 << "請輸入您想要查找的聯系人:" << 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 << "聯系方式:" << add->personArray[i].phone << "\t";cout << "地址:" << add->personArray[i].home << endl;}//按任意鍵清屏system("pause");system("cls"); } void cleanperson(struct addressbook* add)//清空所有聯系人 {cout << "是否確認清空?" << endl;cout << "1 --- 是" << endl;cout << "2 --- 否" << endl;int a;cin >> a;if (a == 1){add->size = 0;//將當前記錄聯系人數量置為0,做邏輯上的清空操作cout << "通訊錄已清空" << endl;}system("pause");system("cls"); }

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

運行結果



點贊收藏,反復練習

總結

以上是生活随笔為你收集整理的C++实现通讯录管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。