C++ 實現(xiàn)的通訊錄管理系統(tǒng)詳解
更新時間:2021年10月21日 11:47:36 作者:Gao_小豆
這篇文章主要為大家詳細介紹了C++實現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
代碼如下:
#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)系人實現(xiàn)步驟: * 1. 設(shè)計聯(lián)系人結(jié)構(gòu)體 * 2.設(shè)計通訊錄結(jié)構(gòu)體 * 3.在main函數(shù)中創(chuàng)建通訊錄 * 4.封裝添加聯(lián)系人函數(shù) * 5.測試 */ //設(shè)計聯(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;//通訊錄中實際存放聯(lián)系人個數(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 << "請輸入姓名:" << endl; cin >> name; pb->pArray[pb->b_size].p_name = name;//插入到通訊錄數(shù)組,數(shù)組下標為當(dāng)前通訊錄中實體個數(shù) int sex; cout << "請輸入性別" << 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 << "輸入有誤,請按要求重新輸入" << endl; } } int age; cout << "請輸入年齡" << endl; cin >> age; pb->pArray[pb->b_size].p_age = age; string phone; long long p1;//用于檢驗是否都輸入的數(shù)字 cout << "請輸入手機號" << endl; while (true) { cin >> phone; if (phone.size() != 11) { cout << "您輸入的手機號位數(shù)不對,請重新輸入" << endl; } else if (!isNum(phone)) { cout << "您輸入的手機號格式不對,請重新輸入" << endl; cout << "請正確輸入11位數(shù)字" << endl; } else { pb->pArray[pb->b_size].p_phone = phone; break; } } string addr; cout << "請輸入地址" << endl; cin >> addr; pb->pArray[pb->b_size].p_address = addr; //完成錄入后 通訊錄中數(shù)據(jù)個數(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"); } //檢測聯(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; //找到返回下標 } } return -1; } //刪除用戶 void deletePerson(PhoneBook* pb) { cout << "請輸入刪除聯(lián)系人的姓名" << endl; string name; cin >> name; int r = isExist(pb, name); if (r==-1) { cout << "查無此人" << 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 << "請輸入姓名" << 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 << "查無此人" << endl; } system("pause"); system("cls"); } //修改 void updatePerson(PhoneBook* pb) { cout << "請輸入姓名" << endl; string name; cin >> name; int r = isExist(pb, name); if (r != -1) { string name; cout << "請輸入姓名:" << endl; cin >> name; pb->pArray[r].p_name = name;//插入到通訊錄數(shù)組,數(shù)組下標為當(dāng)前通訊錄中實體個數(shù) int sex; cout << "請輸入性別" << endl; while (true) { cout << "1、男 2、女" << endl; cin >> sex; if (sex == 1 || sex == 2) { pb->pArray[r].p_sex = sex; break; } else { cout << "輸入有誤,請按要求重新輸入" << endl; } } int age; cout << "請輸入年齡" << endl; cin >> age; pb->pArray[r].p_age = age; string phone; long long p1;//用于檢驗是否都輸入的數(shù)字 cout << "請輸入手機號" << endl; while (true) { cin >> phone; if (phone.size() != 11) { cout << "您輸入的手機號位數(shù)不對,請重新輸入" << endl; } else if (!isNum(phone)) { cout << "您輸入的手機號格式不對,請重新輸入" << endl; cout << "請正確輸入11位數(shù)字" << endl; } else { pb->pArray[r].p_phone = phone; break; } } string addr; cout << "請輸入地址" << endl; cin >> addr; pb->pArray[r].p_address = addr; cout << "修改聯(lián)系人成功" << endl; system("pause"); system("cls");//清屏 重新返回菜單 } else { cout << "查無此人" <<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)保證每次操作后依然能回到菜單頁面 while (true) { //顯示菜單 showMenu(); cout << "請輸入你需要的操作的數(shù)字代號" << endl; cin >> select; switch (select) { case 1: addPerson(&pb);//地址傳遞修飾實參 //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; } } }
運行圖如下:
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語言統(tǒng)計輸入字符各個字母出現(xiàn)頻率的解題思路
這篇文章主要介紹了C語言統(tǒng)計輸入字符各個字母出現(xiàn)頻率的解題思路,具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-08-08