C++ 實(shí)現(xiàn)的通訊錄管理系統(tǒng)詳解
更新時(shí)間:2021年10月21日 11:47:36 作者:Gao_小豆
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
代碼如下:
#include<iostream> #include <sstream> using namespace std; #define Max 1000 //顯示菜單函數(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)系人實(shí)現(xiàn)步驟: * 1. 設(shè)計(jì)聯(lián)系人結(jié)構(gòu)體 * 2.設(shè)計(jì)通訊錄結(jié)構(gòu)體 * 3.在main函數(shù)中創(chuàng)建通訊錄 * 4.封裝添加聯(lián)系人函數(shù) * 5.測(cè)試 */ //設(shè)計(jì)聯(lián)系人結(jié)構(gòu)體 struct Person { string p_name; int p_sex; int p_age; string p_phone; string p_address; }; //通訊錄結(jié)構(gòu)體 struct PhoneBook { struct Person pArray[Max]; //設(shè)置最大值 int b_size;//通訊錄中實(shí)際存放聯(lián)系人個(gè)數(shù) }; //判斷字符串是否為數(shù)字函數(shù) bool isNum(string str) { stringstream sin(str); double d; char c; if (!(sin >> d)) return false; if (sin >> c) return false; return true; } //添加聯(lián)系人函數(shù) void addPerson(PhoneBook* pb) { //判斷通訊錄是否滿 if (pb->b_size == Max) { cout << "通訊錄已滿" << endl; return; }//添加 else { string name; cout << "請(qǐng)輸入姓名:" << endl; cin >> name; pb->pArray[pb->b_size].p_name = name;//插入到通訊錄數(shù)組,數(shù)組下標(biāo)為當(dāng)前通訊錄中實(shí)體個(gè)數(shù) int sex; cout << "請(qǐng)輸入性別" << endl; while (true) { cout << "1、男 2、女" << endl; cin >> sex; if (sex == 1 || sex == 2) { pb->pArray[pb->b_size].p_sex = sex; break; } else { cout << "輸入有誤,請(qǐng)按要求重新輸入" << endl; } } int age; cout << "請(qǐng)輸入年齡" << endl; cin >> age; pb->pArray[pb->b_size].p_age = age; string phone; long long p1;//用于檢驗(yàn)是否都輸入的數(shù)字 cout << "請(qǐng)輸入手機(jī)號(hào)" << endl; while (true) { cin >> phone; if (phone.size() != 11) { cout << "您輸入的手機(jī)號(hào)位數(shù)不對(duì),請(qǐng)重新輸入" << endl; } else if (!isNum(phone)) { cout << "您輸入的手機(jī)號(hào)格式不對(duì),請(qǐng)重新輸入" << endl; cout << "請(qǐng)正確輸入11位數(shù)字" << endl; } else { pb->pArray[pb->b_size].p_phone = phone; break; } } string addr; cout << "請(qǐng)輸入地址" << endl; cin >> addr; pb->pArray[pb->b_size].p_address = addr; //完成錄入后 通訊錄中數(shù)據(jù)個(gè)數(shù)增加 pb->b_size++; cout << "添加聯(lián)系人成功" << endl; system("pause"); system("cls");//清屏 重新返回菜單 } } //顯示聯(lián)系人 void printPerson(PhoneBook* pb) { int a = pb->b_size; if (a == 0) { cout << "通訊錄為空" << endl; } else { for (int i = 0; i < pb->b_size; i++) { cout << "姓名:" << pb->pArray[i].p_name; if (pb->pArray[i].p_sex == 1) { cout << "\t性別: " << "男"; } else { cout << "\t性別: " << "女"; } cout << "\t年齡: " << pb->pArray[i].p_age; cout << "\t電話: " << pb->pArray[i].p_phone; cout << "\t地址: " << pb->pArray[i].p_address << endl; } } system("pause"); system("cls"); } //檢測(cè)聯(lián)系人是否存在 //參數(shù)1 通訊錄 參數(shù)2 輸入的姓名 int isExist(PhoneBook* pb, string name) { for (int i = 0; i < pb->b_size; i++) { if (pb->pArray[i].p_name == name) { return i; //找到返回下標(biāo) } } return -1; } //刪除用戶 void deletePerson(PhoneBook* pb) { cout << "請(qǐng)輸入刪除聯(lián)系人的姓名" << endl; string name; cin >> name; int r = isExist(pb, name); if (r==-1) { cout << "查無(wú)此人" << endl; } else { for (int i = r; i < pb->b_size; i++) { pb->pArray[i] = pb->pArray[i + 1]; } pb->b_size--; cout << "刪除成功" << endl; } system("pause"); system("cls"); } //查找聯(lián)系人 void selectPerson(PhoneBook* pb) { cout << "請(qǐng)輸入姓名" << endl; string name; cin >> name; int r = isExist(pb, name); if (r != -1) { cout << "姓名:" << pb->pArray[r].p_name; if (pb->pArray[r].p_sex == 1) { cout << "\t性別: " << "男"; } else { cout << "\t性別: " << "女"; } cout << "\t年齡: " << pb->pArray[r].p_age; cout << "\t電話: " << pb->pArray[r].p_phone; cout << "\t地址: " << pb->pArray[r].p_address << endl; } else { cout << "查無(wú)此人" << endl; } system("pause"); system("cls"); } //修改 void updatePerson(PhoneBook* pb) { cout << "請(qǐng)輸入姓名" << endl; string name; cin >> name; int r = isExist(pb, name); if (r != -1) { string name; cout << "請(qǐng)輸入姓名:" << endl; cin >> name; pb->pArray[r].p_name = name;//插入到通訊錄數(shù)組,數(shù)組下標(biāo)為當(dāng)前通訊錄中實(shí)體個(gè)數(shù) int sex; cout << "請(qǐng)輸入性別" << endl; while (true) { cout << "1、男 2、女" << endl; cin >> sex; if (sex == 1 || sex == 2) { pb->pArray[r].p_sex = sex; break; } else { cout << "輸入有誤,請(qǐng)按要求重新輸入" << endl; } } int age; cout << "請(qǐng)輸入年齡" << endl; cin >> age; pb->pArray[r].p_age = age; string phone; long long p1;//用于檢驗(yàn)是否都輸入的數(shù)字 cout << "請(qǐng)輸入手機(jī)號(hào)" << endl; while (true) { cin >> phone; if (phone.size() != 11) { cout << "您輸入的手機(jī)號(hào)位數(shù)不對(duì),請(qǐng)重新輸入" << endl; } else if (!isNum(phone)) { cout << "您輸入的手機(jī)號(hào)格式不對(duì),請(qǐng)重新輸入" << endl; cout << "請(qǐng)正確輸入11位數(shù)字" << endl; } else { pb->pArray[r].p_phone = phone; break; } } string addr; cout << "請(qǐng)輸入地址" << endl; cin >> addr; pb->pArray[r].p_address = addr; cout << "修改聯(lián)系人成功" << endl; system("pause"); system("cls");//清屏 重新返回菜單 } else { cout << "查無(wú)此人" <<endl; } } void cleanPerson(PhoneBook* pb) { pb->b_size = 0; cout << "通訊錄已經(jīng)清空" << endl; system("pause"); system("cls"); } int main() { //創(chuàng)建通訊錄變量 PhoneBook pb; pb.b_size = 0; int select = 0; //用循環(huán)保證每次操作后依然能回到菜單頁(yè)面 while (true) { //顯示菜單 showMenu(); cout << "請(qǐng)輸入你需要的操作的數(shù)字代號(hào)" << endl; cin >> select; switch (select) { case 1: addPerson(&pb);//地址傳遞修飾實(shí)參 //1、添加聯(lián)系人 break; case 2: //顯示聯(lián)系人 printPerson(&pb); break; case 3: //3、刪除聯(lián)系人 deletePerson(&pb); break; case 4: selectPerson(&pb); // 4、查找聯(lián)系人 break; case 5: updatePerson(&pb); // 5、修改聯(lián)系人 break; case 6: cleanPerson(&pb); //6、清空聯(lián)系人 break; case 0: cout << "歡迎下次使用!" << endl; system("pause"); return 0; // 0、退出通訊錄 break; default: break; } } }
運(yùn)行圖如下:
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
您可能感興趣的文章:
- C++實(shí)現(xiàn)通訊錄管理系統(tǒng)
- C++實(shí)現(xiàn)簡(jiǎn)單通訊錄
- C++鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng)
- C++雙向鏈表實(shí)現(xiàn)簡(jiǎn)單通訊錄
- C++實(shí)現(xiàn)鏈表版本通訊錄
- C++實(shí)現(xiàn)簡(jiǎn)單通訊錄管理系統(tǒng)
- C++實(shí)現(xiàn)簡(jiǎn)易通訊錄
- C++容器vector實(shí)現(xiàn)通訊錄功能
- C++簡(jiǎn)易通訊錄系統(tǒng)實(shí)現(xiàn)流程詳解
- C++實(shí)現(xiàn)簡(jiǎn)單通訊錄系統(tǒng)
相關(guān)文章
程序員都不知道C語(yǔ)言中的這些小細(xì)節(jié)
本文通過(guò)7到實(shí)例題目給大家展示C語(yǔ)言中的一些小細(xì)節(jié),很少有朋友真正的掌握,感興趣的朋友跟隨小編一起看看吧2021-05-05C++中重載、重寫(覆蓋)和隱藏的區(qū)別實(shí)例分析
這篇文章主要介紹了C++中重載、重寫(覆蓋)和隱藏的區(qū)別,是C++面向?qū)ο蟪绦蛟O(shè)計(jì)非常重要的概念,需要的朋友可以參考下2014-08-08C語(yǔ)言解決字符串中插入和刪除某段字符串問(wèn)題
這篇文章主要介紹了C語(yǔ)言解決字符串中插入和刪除某段字符串問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02C語(yǔ)言統(tǒng)計(jì)輸入字符各個(gè)字母出現(xiàn)頻率的解題思路
這篇文章主要介紹了C語(yǔ)言統(tǒng)計(jì)輸入字符各個(gè)字母出現(xiàn)頻率的解題思路,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08