C++实现通讯录管理系统
生活随笔
收集整理的這篇文章主要介紹了
C++实现通讯录管理系统
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 前言
- 結(jié)構(gòu)體
- 聯(lián)系人結(jié)構(gòu)體
- 通訊錄結(jié)構(gòu)體
- 函數(shù)模塊
- 菜單
- 添加聯(lián)系人
- 顯示聯(lián)系人
- 判斷聯(lián)系人
- 刪除聯(lián)系人
- 查找聯(lián)系人
- 清空所有聯(lián)系人
- main函數(shù)
- 源代碼
- 運(yùn)行結(jié)果
前言
**
建議收藏,親手寫一遍代碼,感受指針神奇的魅力;
可以幫助你更好的鞏固知識體系,熟悉指針,結(jié)構(gòu)體與函數(shù)一起使用時(shí)的妙處
**
完成通訊錄管理系統(tǒng)所需知識體系
1.結(jié)構(gòu)體
2.指針
3.函數(shù)的封裝
4.指針與函數(shù)的結(jié)合使用
5.指針與結(jié)構(gòu)體的結(jié)合使用
結(jié)構(gòu)體
聯(lián)系人結(jié)構(gòu)體
struct person {string name;//姓名string sex; //性別int age; //年齡string phone;//手機(jī)號string home;//地址};通訊錄結(jié)構(gòu)體
struct addressbook {struct person personArray[MAX]; //通訊錄擴(kuò)展到100;int size=0; //當(dāng)前聯(lián)系人個(gè)數(shù)(后面就相當(dāng)于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ù)中為什么要使用指針?
因?yàn)橹祩鬟f中形參無法改變實(shí)參;
而利用指針的地址傳遞可以通過函數(shù)中的形參改變實(shí)參;
具體原理可以參考博主之前的指針基礎(chǔ)和指針進(jìn)階內(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{ //查到此人,進(jìn)行顯示操作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 << "是否確認(rèn)清空?" << endl;cout << "1 --- 是" << endl;cout << "2 --- 否" << endl;int a;cin >> a;if (a == 1){add->size = 0;//將當(dāng)前記錄聯(lián)系人數(shù)量置為0,做邏輯上的清空操作cout << "通訊錄已清空" << endl;}system("pause");system("cls"); }main函數(shù)
int main() {menu();addressbook add;//定義一個(gè)通訊錄int choice=1;while (choice != 0){cin >> choice;switch (choice)//選擇{case 1: putit(&add);break;case 2: showperson(&add);break;case 3: {cout << "請輸入你要?jiǎng)h除的人的名字" << 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;//手機(jī)號string home;//地址}; struct addressbook {struct person personArray[MAX]; //通訊錄擴(kuò)展到100;int size=0; //當(dāng)前聯(lián)系人個(gè)數(shù)(后面就相當(dāng)于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 << "請輸入你要?jiǎng)h除的人的名字" << 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{ //查到此人,進(jìn)行顯示操作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 << "是否確認(rèn)清空?" << endl;cout << "1 --- 是" << endl;cout << "2 --- 否" << endl;int a;cin >> a;if (a == 1){add->size = 0;//將當(dāng)前記錄聯(lián)系人數(shù)量置為0,做邏輯上的清空操作cout << "通訊錄已清空" << endl;}system("pause");system("cls"); }由于代碼量過大,建議大家可以試著分文件編寫代碼,也可以方便查看
運(yùn)行結(jié)果
點(diǎn)贊收藏,反復(fù)練習(xí)
總結(jié)
以上是生活随笔為你收集整理的C++实现通讯录管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区分浏览器,判断浏览器版本
- 下一篇: 视频教程-C/C++黑客编程入门教学视频