通讯录管理系统(C++)
目錄
1. 功能分析與實現步驟
2. 代碼編寫
2.1 聯系人和通訊錄結構體設計
2.2 通訊錄頁面
2.3 添加聯系人
2.4 顯示所有聯系人
2.5 檢測聯系人? ??
2.6 刪除指定聯系人
2.7 查找指定聯系人
2.8 更改指定聯系人
2.9 清空所有聯系人
3. 源碼
黑馬c++學習:黑馬程序員匠心之作|C++教程從0到1入門編程,學習編程不再難_嗶哩嗶哩_bilibili
1. 功能分析與實現步驟
需要的功能:
?? ?1.添加聯系人:姓名,性別,年齡,聯系電話,家庭住址(最多紀錄1000人)
?? ?2.顯示聯系人:顯示通訊錄中所有聯系人信息
?? ?3.刪除聯系人:按照姓名刪除指定聯系人
?? ?4.查找聯系人:按照姓名查看指定聯系人信息
?? ?5.修改聯系人:按照姓名重新修改指定聯系人
?? ?6.清空聯系人:清空通訊錄中所有信息
?? ?7.退出通訊錄
步驟:
?? ?1.菜單頁面的制作
?? ?2.對按鍵的判斷
?? ??? ?2.1 退出的設計
?? ??? ?2.2 添加聯系人
?? ??? ??? ??? ?設計聯系人結構體
?? ??? ??? ??? ?設計通訊錄結構體
?? ??? ??? ??? ?main函數中創建通訊錄
?? ??? ??? ??? ?封裝添加聯系人函數
?? ??? ??? ??? ?測試添加聯系人功能
?? ??? ?2.3 顯示聯系人
?? ??? ?2.4 刪除聯系人
?? ??? ??? ??? ?需要先實現找到指定聯系人的功能
?? ??? ?2.5 查找聯系人
?? ??? ?2.6 修改聯系人
?? ??? ?2.7 清空通訊錄
?? ??? ??? ??? ?刪除所有聯系人信息,只需要將通訊的聯系人數量置為0,做邏輯清空即可?? ??? ??? ?
2. 代碼編寫
2.1 聯系人和通訊錄結構體設計
// 設計聯系人結構體 struct Person {// 姓名string m_Name;// 性別 1:男 2:女int m_sex;// 年齡int m_age;// 電話string m_Phone;// 住址string m_Addr; };struct Addressbooks {// 通訊錄中保存的聯系人數組struct Person personArray[MAX];// 通訊錄中當前記錄聯系人個數int m_size; };2.2 通訊錄頁面
// 1.菜單頁面 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; }2.3 添加聯系人
// 2.添加聯系人 void addPerson(Addressbooks* abs) {// 判斷通訊錄是否已滿if (abs->m_size == MAX){cout << "通訊錄已滿,無法添加" << endl;return;}else{// 姓名string name;cout << "請輸入姓名:" << endl;cin >> name;abs->personArray[abs->m_size].m_Name = name;// 性別cout << "請輸入性別(1:男 2:女):" << endl;int sex = 0;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->personArray[abs->m_size].m_sex = sex;break;}cout << "輸入有誤,請重新輸入" << endl;}// 年齡int age;cout << "請輸入年齡:" << endl;while (true){cin >> age;if (age >= 0 && age <= 120){abs->personArray[abs->m_size].m_age = age;break;}cout << "輸入有誤,請重新輸入" << endl;}// 電話string phone;cout << "請輸入電話:" << endl;cin >> phone;abs->personArray[abs->m_size].m_Phone = phone;// 地址string address;cout << "請輸入地址:" << endl;cin >> address;abs->personArray[abs->m_size].m_Addr = address;// 更新通訊錄人數abs->m_size++;cout << "添加成功" << endl;system("pause"); // 按下任意鍵繼續system("cls"); // 清屏} }2.4 顯示所有聯系人
// 顯示聯系人 void showPerson(Addressbooks* abs) {// 判斷通訊錄中人數是否為0if (abs->m_size == 0){cout << "通訊錄為空" << endl;return;}else{for (int i = 0; i < abs->m_size; i++){cout << "姓名:" << abs->personArray[i].m_Name << "\t";cout << "性別(1:男 2:女):" << (abs->personArray[i].m_sex == 1 ? "男" : "女") << "\t";cout << "年齡:" << abs->personArray[i].m_age << "\t";cout << "電話:" << abs->personArray[i].m_Phone << "\t";cout << "地址" << abs->personArray[i].m_Addr << endl;}}system("pause");system("cls");2.5 檢測聯系人? ??
????????刪除和查找指定聯系人都需要一個檢測聯系人是否存在的模塊
// 檢測聯系人是否存在,存在返回編號,不存在返回-1 int isExit(Addressbooks* abs, string name) {for (int i = 0; i < abs->m_size; i++){if (abs->personArray[i].m_Name == name){return i;}}return -1; }2.6 刪除指定聯系人
// 刪除指定聯系人 void deletePerson(Addressbooks* abs) {cout << "請輸入刪除聯系人姓名:" << endl;string name;cin >> name;int judge;judge = isExit(abs, name);if(judge == -1){cout << "查無此人" << endl;}else{// 數據前移for (int i = judge; i < abs->m_size; i++){abs->personArray[i] = abs->personArray[i + 1];}abs->m_size--;cout << "刪除成功" << endl;}system("pause");system("cls"); }2.7 查找指定聯系人
// 查找指定聯系人 void findPerson(Addressbooks* abs) {cout << "請輸入查找的聯系人姓名:" << endl;string name;cin >> name;int judge;judge = isExit(abs, name);if (judge == -1){cout << "查無此人" << endl;}else{cout << "姓名:" << abs->personArray[judge].m_Name << endl;cout << "性別(1:男 2:女):" << (abs->personArray[judge].m_sex == 1 ? "男" : "女") << endl;cout << "年齡:" << abs->personArray[judge].m_age << endl;cout << "電話:" << abs->personArray[judge].m_Phone << endl;cout << "地址" << abs->personArray[judge].m_Addr << endl;}system("pause");system("cls"); }2.8 更改指定聯系人
// 更改指定聯系人 void modifyPerson(Addressbooks* abs) {cout << "請輸入更改的聯系人姓名:" << endl;string name;cin >> name;int judge;judge = isExit(abs, name);if (judge == -1){cout << "查無此人" << endl;}else{while (true){cout << "姓名:" << abs->personArray[judge].m_Name << endl;cout << "性別(1:男 2:女):" << (abs->personArray[judge].m_sex == 1 ? "男" : "女") << endl;cout << "年齡:" << abs->personArray[judge].m_age << endl;cout << "電話:" << abs->personArray[judge].m_Phone << endl;cout << "地址" << abs->personArray[judge].m_Addr << "\n" << endl;cout << "請輸入要修改的內容\n1:姓名\t2:性別\t3:年齡\t4:電話\t5:地址\t0:退出" << endl;int rev;cin >> rev;switch (rev){case 1:{cout << "請輸入更改后的姓名" << endl;string new_name;cin >> new_name;abs->personArray[judge].m_Name = new_name;break;}case 2:{cout << "請輸入更改后的性別" << endl;int new_sex;while (true){cin >> new_sex;if (new_sex == 1 || new_sex == 2){abs->personArray[judge].m_sex = new_sex;break;}cout << "輸入有誤,請重新輸入" << endl;}break;}case 3:{int new_age;cout << "請輸入更改后的年齡:" << endl;while (true){cin >> new_age;if (new_age >= 0 && new_age <= 120){abs->personArray[judge].m_age = new_age;break;}cout << "輸入有誤,請重新輸入" << endl;}break;}case 4:{string new_phone;cout << "請輸入更改后的電話:" << endl;cin >> new_phone;abs->personArray[judge].m_Phone = new_phone;break;}case 5:{// 地址string new_address;cout << "請輸入地址:" << endl;cin >> new_address;abs->personArray[judge].m_Addr = new_address;break;}case 0:{cout << "修改完成" << endl;system("pause");system("cls");return;}default:break;}system("pause");system("cls");}} }2.9 清空所有聯系人
// 清空所有聯系人 void cleanPerson(Addressbooks* abs) {cout << "是否確認清空,確認請按1,返回請按0" << endl;int nub;cin >> nub;while (true){if (nub == 1){abs->m_size = 0;cout << "所有聯系人已清空" << endl;system("pause");system("cls");return;}else if (nub == 0){cout << "返回主菜單" << endl;system("pause");system("cls");return;}else{cout << "請重新輸入,確認請按1,返回請按0" << endl;cin >> nub;}} }3. 源碼
#include<iostream> using namespace std; #include<string> #define MAX 1000// 設計聯系人結構體 struct Person {// 姓名string m_Name;// 性別 1:男 2:女int m_sex;// 年齡int m_age;// 電話string m_Phone;// 住址string m_Addr; };struct Addressbooks {// 通訊錄中保存的聯系人數組struct Person personArray[MAX];// 通訊錄中當前記錄聯系人個數int m_size; };// 1.菜單頁面 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; }// 2.添加聯系人 void addPerson(Addressbooks* abs) {// 判斷通訊錄是否已滿if (abs->m_size == MAX){cout << "通訊錄已滿,無法添加" << endl;return;}else{// 姓名string name;cout << "請輸入姓名:" << endl;cin >> name;abs->personArray[abs->m_size].m_Name = name;// 性別cout << "請輸入性別(1:男 2:女):" << endl;int sex = 0;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->personArray[abs->m_size].m_sex = sex;break;}cout << "輸入有誤,請重新輸入" << endl;}// 年齡int age;cout << "請輸入年齡:" << endl;while (true){cin >> age;if (age >= 0 && age <= 120){abs->personArray[abs->m_size].m_age = age;break;}cout << "輸入有誤,請重新輸入" << endl;}// 電話string phone;cout << "請輸入電話:" << endl;cin >> phone;abs->personArray[abs->m_size].m_Phone = phone;// 地址string address;cout << "請輸入地址:" << endl;cin >> address;abs->personArray[abs->m_size].m_Addr = address;// 更新通訊錄人數abs->m_size++;cout << "添加成功" << endl;system("pause"); // 按下任意鍵繼續system("cls"); // 清屏} }// 顯示聯系人 void showPerson(Addressbooks* abs) {// 判斷通訊錄中人數是否為0if (abs->m_size == 0){cout << "通訊錄為空" << endl;return;}else{for (int i = 0; i < abs->m_size; i++){cout << "姓名:" << abs->personArray[i].m_Name << "\t";cout << "性別(1:男 2:女):" << (abs->personArray[i].m_sex == 1 ? "男" : "女") << "\t";cout << "年齡:" << abs->personArray[i].m_age << "\t";cout << "電話:" << abs->personArray[i].m_Phone << "\t";cout << "地址" << abs->personArray[i].m_Addr << endl;}}system("pause");system("cls"); }// 檢測聯系人是否存在,存在返回編號,不存在返回-1 int isExit(Addressbooks* abs, string name) {for (int i = 0; i < abs->m_size; i++){if (abs->personArray[i].m_Name == name){return i;}}return -1; }// 刪除指定聯系人 void deletePerson(Addressbooks* abs) {cout << "請輸入刪除聯系人姓名:" << endl;string name;cin >> name;int judge;judge = isExit(abs, name);if(judge == -1){cout << "查無此人" << endl;}else{// 數據前移for (int i = judge; i < abs->m_size; i++){abs->personArray[i] = abs->personArray[i + 1];}abs->m_size--;cout << "刪除成功" << endl;}system("pause");system("cls"); }// 查找指定聯系人 void findPerson(Addressbooks* abs) {cout << "請輸入查找的聯系人姓名:" << endl;string name;cin >> name;int judge;judge = isExit(abs, name);if (judge == -1){cout << "查無此人" << endl;}else{cout << "姓名:" << abs->personArray[judge].m_Name << endl;cout << "性別(1:男 2:女):" << (abs->personArray[judge].m_sex == 1 ? "男" : "女") << endl;cout << "年齡:" << abs->personArray[judge].m_age << endl;cout << "電話:" << abs->personArray[judge].m_Phone << endl;cout << "地址" << abs->personArray[judge].m_Addr << endl;}system("pause");system("cls"); }// 更改指定聯系人 void modifyPerson(Addressbooks* abs) {cout << "請輸入更改的聯系人姓名:" << endl;string name;cin >> name;int judge;judge = isExit(abs, name);if (judge == -1){cout << "查無此人" << endl;}else{while (true){cout << "姓名:" << abs->personArray[judge].m_Name << endl;cout << "性別(1:男 2:女):" << (abs->personArray[judge].m_sex == 1 ? "男" : "女") << endl;cout << "年齡:" << abs->personArray[judge].m_age << endl;cout << "電話:" << abs->personArray[judge].m_Phone << endl;cout << "地址" << abs->personArray[judge].m_Addr << "\n" << endl;cout << "請輸入要修改的內容\n1:姓名\t2:性別\t3:年齡\t4:電話\t5:地址\t0:退出" << endl;int rev;cin >> rev;switch (rev){case 1:{cout << "請輸入更改后的姓名" << endl;string new_name;cin >> new_name;abs->personArray[judge].m_Name = new_name;break;}case 2:{cout << "請輸入更改后的性別" << endl;int new_sex;while (true){cin >> new_sex;if (new_sex == 1 || new_sex == 2){abs->personArray[judge].m_sex = new_sex;break;}cout << "輸入有誤,請重新輸入" << endl;}break;}case 3:{int new_age;cout << "請輸入更改后的年齡:" << endl;while (true){cin >> new_age;if (new_age >= 0 && new_age <= 120){abs->personArray[judge].m_age = new_age;break;}cout << "輸入有誤,請重新輸入" << endl;}break;}case 4:{string new_phone;cout << "請輸入更改后的電話:" << endl;cin >> new_phone;abs->personArray[judge].m_Phone = new_phone;break;}case 5:{// 地址string new_address;cout << "請輸入地址:" << endl;cin >> new_address;abs->personArray[judge].m_Addr = new_address;break;}case 0:{cout << "修改完成" << endl;system("pause");system("cls");return;}default:break;}system("pause");system("cls");}} }// 清空所有聯系人 void cleanPerson(Addressbooks* abs) {cout << "是否確認清空,確認請按1,返回請按0" << endl;int nub;cin >> nub;while (true){if (nub == 1){abs->m_size = 0;cout << "所有聯系人已清空" << endl;system("pause");system("cls");return;}else if (nub == 0){cout << "返回主菜單" << endl;system("pause");system("cls");return;}else{cout << "請重新輸入,確認請按1,返回請按0" << endl;cin >> nub;}} }int main() {// 創建通訊錄結構體變量Addressbooks abs;// 初始化通訊錄中當前人員個數abs.m_size = 0;int select = 0; // 用戶選擇變量while (true){showMenu();cin >> select;switch (select){case 1: // 添加聯系人addPerson(&abs);break;case 2: // 顯示聯系人showPerson(&abs);break;case 3: // 刪除聯系人deletePerson(&abs);break;case 4: // 查找聯系人findPerson(&abs);break;case 5: // 修改聯系人modifyPerson(&abs);break;case 6: // 清空聯系人cleanPerson(&abs);break;case 0: // 退出通訊錄{cout << "歡迎下次使用" << endl;system("pause");return 0;}default:break;}} }總結
以上是生活随笔為你收集整理的通讯录管理系统(C++)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联邦学习开山之作:Communicati
- 下一篇: windows server 2003