C++ 實現的通訊錄管理系統詳解
代碼如下:
#include<iostream> #include <sstream> using namespace std; #define Max 1000 //顯示菜單函數 void showMenu() { 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; } /* * 添加聯系人實現步驟: * 1. 設計聯系人結構體 * 2.設計通訊錄結構體 * 3.在main函數中創建通訊錄 * 4.封裝添加聯系人函數 * 5.測試 */ //設計聯系人結構體 struct Person { string p_name; int p_sex; int p_age; string p_phone; string p_address; }; //通訊錄結構體 struct PhoneBook { struct Person pArray[Max]; //設置最大值 int b_size;//通訊錄中實際存放聯系人個數 }; //判斷字符串是否為數字函數 bool isNum(string str) { stringstream sin(str); double d; char c; if (!(sin >> d)) return false; if (sin >> c) return false; return true; } //添加聯系人函數 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;//插入到通訊錄數組,數組下標為當前通訊錄中實體個數 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;//用於檢驗是否都輸入的數字 cout << "請輸入手機號" << endl; while (true) { cin >> phone; if (phone.size() != 11) { cout << "您輸入的手機號位數不對,請重新輸入" << endl; } else if (!isNum(phone)) { cout << "您輸入的手機號格式不對,請重新輸入" << endl; cout << "請正確輸入11位數字" << 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; //完成錄入後 通訊錄中數據個數增加 pb->b_size++; cout << "添加聯系人成功" << endl; system("pause"); system("cls");//清屏 重新返回菜單 } } //顯示聯系人 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"); } //檢測聯系人是否存在 //參數1 通訊錄 參數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 << "請輸入刪除聯系人的姓名" << 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"); } //查找聯系人 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;//插入到通訊錄數組,數組下標為當前通訊錄中實體個數 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;//用於檢驗是否都輸入的數字 cout << "請輸入手機號" << endl; while (true) { cin >> phone; if (phone.size() != 11) { cout << "您輸入的手機號位數不對,請重新輸入" << endl; } else if (!isNum(phone)) { cout << "您輸入的手機號格式不對,請重新輸入" << endl; cout << "請正確輸入11位數字" << endl; } else { pb->pArray[r].p_phone = phone; break; } } string addr; cout << "請輸入地址" << endl; cin >> addr; pb->pArray[r].p_address = addr; cout << "修改聯系人成功" << endl; system("pause"); system("cls");//清屏 重新返回菜單 } else { cout << "查無此人" <<endl; } } void cleanPerson(PhoneBook* pb) { pb->b_size = 0; cout << "通訊錄已經清空" << endl; system("pause"); system("cls"); } int main() { //創建通訊錄變量 PhoneBook pb; pb.b_size = 0; int select = 0; //用循環保證每次操作後依然能回到菜單頁面 while (true) { //顯示菜單 showMenu(); cout << "請輸入你需要的操作的數字代號" << endl; cin >> select; switch (select) { case 1: addPerson(&pb);//地址傳遞修飾實參 //1、添加聯系人 break; case 2: //顯示聯系人 printPerson(&pb); break; case 3: //3、刪除聯系人 deletePerson(&pb); break; case 4: selectPerson(&pb); // 4、查找聯系人 break; case 5: updatePerson(&pb); // 5、修改聯系人 break; case 6: cleanPerson(&pb); //6、清空聯系人 break; case 0: cout << "歡迎下次使用!" << endl; system("pause"); return 0; // 0、退出通訊錄 break; default: break; } } }
運行圖如下:
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!