C++——通讯录管理系统
生活随笔
收集整理的這篇文章主要介紹了
C++——通讯录管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 一、系統中需要實現的功能
- 1、添加聯系人
- 2、顯示聯系人
- 3、刪除聯系人
- 4、查找聯系人
- 5、修改聯系人
- 6、清空聯系人
- 7、退出通訊錄
- 二、創建項目
- 1、創建新項目
- 2、添加文件
- 三、菜單功能
- 1、功能描述
- 2、步驟
- 2.1、封裝函數顯示該界面
- 2.2、在main函數中調用封裝好的函數
- 四、退出功能
- 1、功能描述
- 2、思路
- 3、代碼實現
- 五、添加聯系人功能
- 1、功能描述
- 2、步驟
- 2.1、設計聯系人結構體
- 2.2、設計通訊錄結構體
- 2.3、main函數中創建通訊錄
- 2.4、封裝添加聯系人函數
- 2.5、測試添加聯系人函數
- 六、顯示聯系人
- 1、功能
- 2、步驟
- 2.1、封裝顯示聯系人函數
- 2.2、測試顯示聯系人函數
- 七、刪除聯系人
- 1、功能
- 2、步驟
- 2.1、封裝檢測聯系人是否存在
- 2.2、封裝刪除聯系人函數
- 2.3、測試刪除聯系人函數
- 八、查找聯系人
- 1、功能
- 2、步驟
- 2.1、封裝查找聯系人的函數
- 2.2、測試查找聯系人的函數
- 九、修改聯系人
- 1、功能
- 2、步驟
- 2.1、封裝修改聯系人的函數
- 2.2、測試修改聯系人的函數
- 十、清空聯系人
- 1、功能
- 2、步驟
- 2.1、封裝清空聯系人的函數
- 2.2、測試清空聯系人的函數
- 附:完整代碼
- 至此通訊錄管理系統完成
- 本系統只是簡單的實現通訊錄管理,還有很多細節并沒有做,比如年齡的范圍判斷等,還有就是每次運行程序通訊錄都被清空了,不會保存,這點本人目前還不會做,后面學習了相關的知識再加上!
前言
通訊錄是一個可以記錄親人、好友信息的工具。
本文主要利用C++來實現一個通訊錄管理系統
一、系統中需要實現的功能
1、添加聯系人
向通訊錄中添加新人,信息包括(姓名、性別、年齡、聯系電話、家庭住址)最多記錄1000人
2、顯示聯系人
顯示通訊錄中所有聯系人信息
3、刪除聯系人
按照姓名進行刪除指定聯系人
4、查找聯系人
按照姓名查看指定聯系人信息
5、修改聯系人
按照姓名重新修改指定聯系人
6、清空聯系人
清空通訊錄中所有信息
7、退出通訊錄
退出當前使用的通訊錄
二、創建項目
1、創建新項目
2、添加文件
三、菜單功能
1、功能描述
用戶選擇功能的界面
2、步驟
2.1、封裝函數顯示該界面
2.2、在main函數中調用封裝好的函數
#include<iostream> #include<string>using namespace std;//菜單界面 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; } int main() {//菜單的調用showMenu();system("pause");return 0; }結果顯示:
四、退出功能
1、功能描述
退出通訊錄系統
2、思路
根據用戶不同的選擇,進入不同的功能,可以選擇switch分支結構,將整個架構進行搭建。當用戶選擇0時候,執行退出,選擇其他先不做操作,也不會退出程序。
3、代碼實現
//創建用戶選擇輸入的變量int select = 0; while (1){//菜單的調用showMenu();cin >> select;switch (select){case 1: //1、添加聯系人break;case 2: //2、顯示聯系人break;case 3: //3、刪除聯系人break;case 4: //4、查找聯系人break;case 5: //5、修改聯系人break;case 6: //6、清空聯系人break;case 0: //0、退出通訊錄cout << "歡迎下次使用" << endl;system("pause");return 0;break;}}五、添加聯系人功能
1、功能描述
實現添加聯系人功能,向通訊錄中添加新人,信息包括(姓名、性別、年齡、聯系電話、家庭住址),最多記錄1000人
2、步驟
2.1、設計聯系人結構體
struct Person {string m_Name;int m_Sex; //性別,1-男 2-女int m_Age;string m_Phone;string m_Addr;};2.2、設計通訊錄結構體
#define MAX 1000 //最大值 //通訊錄結構體 struct AddressBooks {struct Person personArray[MAX]; //通訊錄保存的聯系人數組int m_size; //通訊錄人員個數 };2.3、main函數中創建通訊錄
//創建通訊錄struct AddressBooks abs;abs.m_size = 0;2.4、封裝添加聯系人函數
void addPerson(struct 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;//性別int sex = 0;cout << "請輸入性別:1-男生 2-女生" << endl;cout << "1-男生" << endl;cout << "2-女生" << endl;while (1){//輸入1、2可退出循環,其余的則重新輸入cin >> sex;if (sex == 1 || sex == 2){abs->personArray[abs->m_size].m_Sex = sex;break;}cout << "輸入有誤,請重新輸入!" << endl;}//年齡int age;cout << "請輸入年齡:" << endl;cin >> age;abs->personArray[abs->m_size].m_Age = age;//電話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.5、測試添加聯系人函數
case 1: //1、添加聯系人addPerson(&abs);break;六、顯示聯系人
1、功能
顯示通訊錄中已有聯系人的信息
2、步驟
2.1、封裝顯示聯系人函數
void showPerson(struct AddressBooks * abs) {//判斷通訊錄中人數是否為0,為0,提示記錄為空//如果不為0,則顯示聯系人的信息if (abs->m_size == 0){cout << "當前通訊錄為空!" << endl;}else{for (int i = 0; i < abs->m_size; i++){cout << "姓名:" << abs->personArray[i].m_Name << "\t"<< "性別:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t"<< "年齡:" << abs->personArray[i].m_Age << "\t"<< "電話:" << abs->personArray[i].m_Phone << "\t"<< "家庭住址:" << abs->personArray[i].m_Addr << endl;}}system("pause");system("cls"); }2.2、測試顯示聯系人函數
case 2: //2、顯示聯系人showPerson(&abs);break;七、刪除聯系人
1、功能
按照姓名進行刪除指定聯系人
2、步驟
2.1、封裝檢測聯系人是否存在
int isExist(struct AddressBooks * abs, string name) {for (int i = 0; i < abs->m_size; i++){if (abs->personArray[i].m_Name == name){return i;//找到了,返回編號}}return -1; //如果遍歷完都沒有找到,返回-1 }2.2、封裝刪除聯系人函數
void deletePerson(struct AddressBooks * abs) {cout << "請輸入您要刪除的聯系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1){//查找到人,進行刪除操作for (int i = ret; i < abs->m_size; i++){//數據前移abs->personArray[i] = abs->personArray[i + 1];}abs->m_size--; //更新通訊錄人數cout << "刪除成功!" << endl; }else{cout << "查無此人" << endl;}system("pause");system("cls"); }2.3、測試刪除聯系人函數
八、查找聯系人
1、功能
按照姓名查看指定聯系人的信息
2、步驟
2.1、封裝查找聯系人的函數
void findPerson(struct AddressBooks * abs) {cout << "請輸入您要查找的聯系人:" << endl;string name;cin >> name;//判斷指定的聯系人是否在通訊錄中int ret = isExist(abs, name);if (ret != -1) //找到聯系人{cout << "姓名:" << abs->personArray[ret].m_Name << "\t"<< "性別:" << (abs->personArray[ret].m_Sex == 1 ? "男" : "女") << "\t"<< "年齡:" << abs->personArray[ret].m_Age << "\t"<< "電話:" << abs->personArray[ret].m_Phone << "\t"<< "家庭住址:" << abs->personArray[ret].m_Addr << endl;}else //未找到聯系人{cout << "查無此人!" << endl;}system("pause");system("cls"); }2.2、測試查找聯系人的函數
九、修改聯系人
1、功能
按照姓名重新修改指定聯系人的信息
2、步驟
2.1、封裝修改聯系人的函數
void modifyPerson(struct AddressBooks * abs) {cout << "請輸入您要修改的聯系人:" << endl;string name;cin >> name;//判斷指定的聯系人是否在通訊錄中int ret = isExist(abs, name);if (ret != -1) //找到聯系人{//姓名string name;cout << "請輸入姓名:" << endl;cin >> name;abs->personArray[ret].m_Name = name;//性別int sex = 0;cout << "請輸入修改后的性別:1-男生 2-女生" << endl;cout << "1-男生" << endl;cout << "2-女生" << endl;while (1){//輸入1、2可退出循環,其余的則重新輸入cin >> sex;if (sex == 1 || sex == 2){abs->personArray[ret].m_Sex = sex;break;}cout << "輸入有誤,請重新輸入!" << endl;}//年齡int age;cout << "請輸入修改后的年齡:" << endl;cin >> age;abs->personArray[ret].m_Age = age;//電話string Phone;cout << "請輸入修改后的聯系電話:" << endl;cin >> Phone;abs->personArray[ret].m_Phone = Phone;//家庭住址string Address;cout << "請輸入修改后的家庭住址:" << endl;cin >> Address;abs->personArray[ret].m_Addr = Address;cout << "修改成功!" << endl;}else //未找到聯系人{cout << "查無此人!" << endl;}system("pause");system("cls"); }2.2、測試修改聯系人的函數
修改前
修改過程
修改后
十、清空聯系人
1、功能
清空所有聯系人的信息
2、步驟
2.1、封裝清空聯系人的函數
實現思路:將通界錄所有聯系人信息清除掉,只要將通訊錄記錄的聯系人數量置為0,做邏輯清空即可。
void cleanPerson(struct AddressBooks * abs) {cout << "請問您是否真的要清空通訊錄?" << endl;cout << "1-是" << endl;cout << "2-否" << endl;int ret = 0;cin >> ret;if (ret == 1){abs->m_size = 0;cout << "通訊錄已清空!" << endl;}system("pause");system("cls"); }2.2、測試清空聯系人的函數
清空前
清空操作:程序會讓用戶確認下是否真的要清空。
清空后
附:完整代碼
#include<iostream> #include<string>using namespace std; #define MAX 1000 //最大值 //聯系人結構體 struct Person {string m_Name;int m_Sex; //性別,1-男 2-女int m_Age;string m_Phone;string m_Addr;}; //通訊錄結構體 struct AddressBooks {struct Person personArray[MAX]; //通訊錄保存的聯系人數組int m_size; //通訊錄人員個數 }; //1、添加聯系人 void addPerson(struct 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;//性別int sex = 0;cout << "請輸入性別:1-男生 2-女生" << endl;cout << "1-男生" << endl;cout << "2-女生" << endl;while (1){//輸入1、2可退出循環,其余的則重新輸入cin >> sex;if (sex == 1 || sex == 2){abs->personArray[abs->m_size].m_Sex = sex;break;}cout << "輸入有誤,請重新輸入!" << endl;}//年齡int age;cout << "請輸入年齡:" << endl;cin >> age;abs->personArray[abs->m_size].m_Age = age;//電話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、顯示聯系人 void showPerson(struct AddressBooks * abs) {//判斷通訊錄中人數是否為0,為0,提示記錄為空//如果不為0,則顯示聯系人的信息if (abs->m_size == 0){cout << "當前通訊錄為空!" << endl;}else{for (int i = 0; i < abs->m_size; i++){cout << "姓名:" << abs->personArray[i].m_Name << "\t"<< "性別:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t"<< "年齡:" << abs->personArray[i].m_Age << "\t"<< "電話:" << abs->personArray[i].m_Phone << "\t"<< "家庭住址:" << abs->personArray[i].m_Addr << endl;}}system("pause");system("cls"); } //檢測聯系人是否存在,如果存在,返回聯系人所在數組中的具體位置,不存在返回-1 int isExist(struct AddressBooks * abs, string name) {for (int i = 0; i < abs->m_size; i++){if (abs->personArray[i].m_Name == name){return i;//找到了,返回編號}}return -1; //如果遍歷完都沒有找到,返回-1 } //3、刪除指定的聯系人 void deletePerson(struct AddressBooks * abs) {cout << "請輸入您要刪除的聯系人:" << endl;string name;cin >> name;//判斷指定的聯系人是否在通訊錄中int ret = isExist(abs, name);if (ret != -1){//查找到人,進行刪除操作for (int i = ret; i < abs->m_size; i++){//數據前移abs->personArray[i] = abs->personArray[i + 1];}abs->m_size--; //更新通訊錄人數cout << "刪除成功!" << endl; }else{cout << "查無此人" << endl;}system("pause");system("cls"); } //4、查找指定的聯系人 void findPerson(struct AddressBooks * abs) {cout << "請輸入您要查找的聯系人:" << endl;string name;cin >> name;//判斷指定的聯系人是否在通訊錄中int ret = isExist(abs, name);if (ret != -1) //找到聯系人{cout << "姓名:" << abs->personArray[ret].m_Name << "\t"<< "性別:" << (abs->personArray[ret].m_Sex == 1 ? "男" : "女") << "\t"<< "年齡:" << abs->personArray[ret].m_Age << "\t"<< "電話:" << abs->personArray[ret].m_Phone << "\t"<< "家庭住址:" << abs->personArray[ret].m_Addr << endl;}else //未找到聯系人{cout << "查無此人!" << endl;}system("pause");system("cls"); } //5、修改指定的聯系人 void modifyPerson(struct AddressBooks * abs) {cout << "請輸入您要修改的聯系人:" << endl;string name;cin >> name;//判斷指定的聯系人是否在通訊錄中int ret = isExist(abs, name);if (ret != -1) //找到聯系人{//姓名string name;cout << "請輸入姓名:" << endl;cin >> name;abs->personArray[ret].m_Name = name;//性別int sex = 0;cout << "請輸入修改后的性別:1-男生 2-女生" << endl;cout << "1-男生" << endl;cout << "2-女生" << endl;while (1){//輸入1、2可退出循環,其余的則重新輸入cin >> sex;if (sex == 1 || sex == 2){abs->personArray[ret].m_Sex = sex;break;}cout << "輸入有誤,請重新輸入!" << endl;}//年齡int age;cout << "請輸入修改后的年齡:" << endl;cin >> age;abs->personArray[ret].m_Age = age;//電話string Phone;cout << "請輸入修改后的聯系電話:" << endl;cin >> Phone;abs->personArray[ret].m_Phone = Phone;//家庭住址string Address;cout << "請輸入修改后的家庭住址:" << endl;cin >> Address;abs->personArray[ret].m_Addr = Address;cout << "修改成功!" << endl;}else //未找到聯系人{cout << "查無此人!" << endl;}system("pause");system("cls"); } //6、清空聯系人 void cleanPerson(struct AddressBooks * abs) {cout << "請問您是否真的要清空通訊錄?" << endl;cout << "1-是" << endl;cout << "2-否" << endl;int ret = 0;cin >> ret;if (ret == 1){abs->m_size = 0;cout << "通訊錄已清空!" << endl;}system("pause");system("cls"); } //菜單界面 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; }int main() {//創建用戶選擇輸入的變量int select = 0; //創建通訊錄struct AddressBooks abs;abs.m_size = 0;while (1){//菜單的調用showMenu();cin >> select;switch (select){case 1: //1、添加聯系人addPerson(&abs);break;case 2: //2、顯示聯系人showPerson(&abs);break;case 3: //3、刪除聯系人deletePerson(&abs);break;case 4: //4、查找聯系人findPerson(&abs);break;case 5: //5、修改聯系人modifyPerson(&abs);break;case 6: //6、清空聯系人cleanPerson(&abs);break;case 0: //0、退出通訊錄cout << "歡迎下次使用!" << endl;system("pause");return 0;break;}}system("pause");return 0; }至此通訊錄管理系統完成
本系統只是簡單的實現通訊錄管理,還有很多細節并沒有做,比如年齡的范圍判斷等,還有就是每次運行程序通訊錄都被清空了,不會保存,這點本人目前還不會做,后面學習了相關的知識再加上!
總結
以上是生活随笔為你收集整理的C++——通讯录管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输入法不见了
- 下一篇: s3c2440移植MQTT