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