C++入门项目——通讯管理系统
生活随笔
收集整理的這篇文章主要介紹了
C++入门项目——通讯管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通訊管理系統
文章目錄
- 通訊管理系統
- 1、系統需求
- 2、菜單功能
- 3、退出功能
- 4、添加聯系人
- 4.1 設計聯系人結構體
- 4.2 設計通訊錄結構體
- 4.3 main函數創建通訊錄
- 4.4 封裝添加聯系人函數
- 5、顯示聯系人
- 6、刪除聯系人
- 6.1 檢測聯系人是否存在
- 6.2 封裝刪除聯系人函數
- 7、查找聯系人
- 8、修改聯系人
- 9 清空通訊錄
- 10 全部代碼
1、系統需求
說明:通訊錄是一個可以記錄親人、好友信息的工具
系統所需要的功能:
- (1)添加聯系人:向通訊錄添加新人,信息包括(姓名、性別、年齡、聯系電話、家庭住址).
- (2)顯示聯系人:顯示通訊錄中記錄聯系人信息
- (3)刪除聯系人:按照姓名進行刪除指定聯系人
- (4)查找聯系人:按照姓名查看指定聯系人信息
- (5)修改聯系人:按照姓名重新修改指定聯系人
- (6)清空聯系人:清空通訊錄所有信息
- (7)退出通訊錄:退出當前使用的通訊錄
2、菜單功能
作用:用戶選擇功能界面
步驟:
-
封裝函數顯示該界面:showMenu()
-
在main函數中調用
3、退出功能
作用:退出通訊錄系統
//退出通訊錄case 0: cout << "歡迎下次再來,拜拜!!!" << endl;system("pause");return 0;break;4、添加聯系人
作用:實現添加聯系人功能,聯系人上限為1000人,聯系人信息包括(姓名、性別、年齡、聯系電話、家庭住址)
添加聯系人步驟:
- (1)設計聯系人結構體
- (2)設計通訊錄結構體
- (3)main函數創建通訊錄
- (4)封裝添加聯系人函數
- (5)測試添加聯系人功能
4.1 設計聯系人結構體
//聯系人結構體 struct Person {string m_Name;//姓名//1、男;2、女int m_Sex;//性別int m_Age;//年齡string m_phone;//電話string m_Addr;//住址 };4.2 設計通訊錄結構體
//通訊錄結構體 struct Addressbooks {struct Person person[Max];int m_size;//通訊成員個數 };4.3 main函數創建通訊錄
case 1: addPerson(&abs);//地址傳遞,修改形參break;4.4 封裝添加聯系人函數
//1、添加聯系人 void addPerson(struct Addressbooks *abs)//利用指針接收地址 {//判斷通訊錄是否已滿,如果滿了就不要添加if (abs->m_size == Max){cout << "通訊錄已滿,添加失敗!" << endl;}else{//姓名string name;cout << "請輸入姓名:" << endl;cin >> name;abs->person[abs->m_size].m_Name = name;//性別cout << "請輸入性別:" << endl;cout << "1----代表男" << endl;cout << "2----代表女" << endl;int sex=0; while(true) {cin >> sex;if (sex == 1 || sex == 2){abs->person[abs->m_size].m_Sex = sex;if (sex == 1)cout << "你輸入通訊錄聯系人的性別是-男" << endl;else if(sex==2)cout << "你輸入通訊錄聯系人的性別是-女" << endl;break;}else{cout << "性別輸入有誤,請重新輸入!!" << endl;}}//年齡cout << "請輸入年齡:" << endl;int age;while (true){cin >> age;if (age > 0 && age < 100){abs->person[abs->m_size].m_Age = age;break;} elsecout << "你輸入的年齡有誤,請重新輸入:" << endl;}//電話cout << "請輸入電話:" << endl;string phone;while (true){cin >> phone;if (phone[0] != '1'){cout << "你輸入的電話號碼不是1開頭,請重新輸入!" << endl;continue;}abs->person[abs->m_size].m_phone = phone;break;}//地址cout << "請輸入地址:" << endl;string add;cin >> add;abs->person[abs->m_size].m_Addr = add;//更新通訊錄人數abs->m_size++;cout << "通訊錄聯系人添加成功!!";system("pause");//按任意鍵繼續system("cls");//清屏操作} }5、顯示聯系人
作用:顯示通訊錄已有的聯系人信息
顯示聯系人步驟:
- 封裝顯示聯系人函數
- 測試顯示聯系人功能
6、刪除聯系人
作用:按照姓名刪除聯系人
步驟:
- (1)封裝檢測聯系人是否存在
- (2)封裝刪除聯系人函數
- (3)測試刪除聯系人功能
6.1 檢測聯系人是否存在
說明:檢測聯系人是否存在,如果存在,返回聯系人所在數組具體位置,不存在返-1
int isExist(Addressbooks *abs, string name) {for (int i = 0; i < abs->m_size; i++){//找到用戶的姓名if (abs->person[i].m_Name == name){return i;}}return -1; }6.2 封裝刪除聯系人函數
void deletePerson(Addressbooks * abs) {cout << "請輸入要刪除聯系人的姓名:" << endl;string name;cin >> name;int ret=isExist(abs, name);if (ret == -1){cout << "通訊錄無該聯系人記錄!!" << endl;}else{for (int i = ret; i < abs->m_size; i++){//數據前移abs->person[i] = abs->person[i + 1];}abs->m_size--;cout << "刪除成功!!!" << endl;}system("pause");system("cls"); }7、查找聯系人
作用:按照姓名查找指定聯系人信息
void findPerson(Addressbooks *abs) {cout << "請輸入你要查找的聯系人:" << endl;string name;cin >> name;//判斷聯系人是否存在通訊錄int ret = isExist(abs, name);if (ret == -1){cout << "對不起,通訊錄無此人!!" << endl;}else{cout << "姓名: " << abs->person[ret].m_Name << "\t";cout << "性別: " << (abs->person[ret].m_Sex==1?"男":"女") << "\t";cout << "年齡: " << abs->person[ret].m_Age << "\t";cout << "電話: " << abs->person[ret].m_phone << "\t";cout << "住址: " << abs->person[ret].m_Addr << endl;}system("pause");system("cls"); }8、修改聯系人
作用:按照姓名重新修改指定聯系人
void modifyPerson(Addressbooks * abs) {cout << "請輸入要修改聯系人的姓名:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "對不起,你所要修改的聯系人并不在此通訊錄!!" << endl;}else{string name;cout << "請重新輸入要修改的姓名:" << endl;cin >> name;abs->person[ret].m_Name = name;int sex;cout << "請重新輸入要修改的性別:" << endl;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->person[ret].m_Sex = sex;break;}else{cout << "你輸入的有誤,請重新輸入:" << endl;}}int age;cout << "請重新輸入要修改的年齡:" << endl;cin >> age;abs->person[ret].m_Age = age;string phone;cout << "請重新輸入要修改的電話:" << endl;cin >> phone;abs->person[ret].m_phone = phone;string addre;cout << "請重新輸入要修改的地址:" << endl;cin >> addre;abs->person[ret].m_Addr = addre;cout << "修改成功了!!" << endl;}system("pause");system("cls"); }添加信息:
修改聯系人:
修改之后聯系人:
9 清空通訊錄
void cleanPerson(Addressbooks * abs) {cout << "你是否一定要清空:是輸入:Y/y,否輸入:N/n" << endl;char ch;while (true){cin >> ch;if (ch == 'Y' || ch == 'y'){//將當期記錄聯系人數量置為0,做邏輯清空操作abs->m_size = 0;cout << "通訊錄已經清空!" << endl;break;}else if (ch == 'N' || ch == 'n'){cout << "請重新操作:" << endl;break;}else{cout << "輸入錯誤,請重新輸入:" << endl;}}system("pause");system("cls"); }10 全部代碼
#include<iostream> #include<string> #define Max 10000 using namespace std; //聯系人結構體 struct Person {string m_Name;//姓名//1、男;2、女int m_Sex;//性別int m_Age;//年齡string m_phone;//電話string m_Addr;//住址 }; //通訊錄結構體 struct Addressbooks {struct Person person[Max];int m_size;//通訊成員個數 }; //1、添加聯系人 void addPerson(struct Addressbooks *abs)//利用指針接收地址 {//判斷通訊錄是否已滿,如果滿了就不要添加if (abs->m_size == Max){cout << "通訊錄已滿,添加失敗!" << endl;}else{//姓名string name;cout << "請輸入姓名:" << endl;cin >> name;abs->person[abs->m_size].m_Name = name;//性別cout << "請輸入性別:" << endl;cout << "1----代表男" << endl;cout << "2----代表女" << endl;int sex=0; while(true) {cin >> sex;if (sex == 1 || sex == 2){abs->person[abs->m_size].m_Sex = sex;if (sex == 1)cout << "你輸入通訊錄聯系人的性別是-男" << endl;else if(sex==2)cout << "你輸入通訊錄聯系人的性別是-女" << endl;break;}else{cout << "性別輸入有誤,請重新輸入!!" << endl;}}//年齡cout << "請輸入年齡:" << endl;int age;while (true){cin >> age;if (age > 0 && age < 100){abs->person[abs->m_size].m_Age = age;break;} elsecout << "你輸入的年齡有誤,請重新輸入:" << endl;}//電話cout << "請輸入電話:" << endl;string phone;while (true){cin >> phone;if (phone[0] != '1'){cout << "你輸入的電話號碼不是1開頭,請重新輸入!" << endl;continue;}abs->person[abs->m_size].m_phone = phone;break;}//地址cout << "請輸入地址:" << endl;string add;cin >> add;abs->person[abs->m_size].m_Addr = add;//更新通訊錄人數abs->m_size++;cout << "通訊錄聯系人添加成功!!";system("pause");//按任意鍵繼續system("cls");//清屏操作} } // 2、顯示聯系人 void showPerson(Addressbooks *abs) {//判斷通訊錄人數是否為0,如果是0,提示為空//如果不為0顯示聯系人cout <<"編號\t"<< "姓名\t" << "性別\t" << "年齡\t" << "電話\t" << "住址\t" << endl << endl;if (abs->m_size == 0){cout << "當前記錄為空!!" << endl;}else{for (int i = 0; i < abs->m_size; i++){cout << i+1<<"\t"<<abs->person[i].m_Name << "\t" << (abs->person[i].m_Sex == 1 ? "男" : "女") << "\t" << abs->person[i].m_Age << "\t" << abs->person[i].m_phone << "\t" << abs->person[i].m_Addr << endl;}}system("pause");system("cls"); } //菜單界面 void showMenu() {cout << "\t\t||-------------------------||"<< endl;cout << "\t\t|| 通訊錄管理系統 ||" << endl;cout << "\t\t||-------------------------||" << endl;cout << "\t\t*****************************" << endl;cout << "\t\t***** 1、添加聯系人 *****"<< endl;cout << "\t\t***** 2、顯示聯系人 *****" << endl;cout << "\t\t***** 3、刪除聯系人 *****" << endl;cout << "\t\t***** 4、查找聯系人 *****" << endl;cout << "\t\t***** 5、修改聯系人 *****" << endl;cout << "\t\t***** 6、清空聯系人 *****" << endl;cout << "\t\t***** 0、退出通訊錄 *****" << endl;cout << "\t\t*****************************" << endl; } //檢測聯系人是否存在,如果存在,返回聯系人所在數組具體位置,不存在返-1 int isExist(Addressbooks *abs, string name) {for (int i = 0; i < abs->m_size; i++){//找到用戶的姓名if (abs->person[i].m_Name == name){return i;}}return -1; } //刪除指定聯系人 void deletePerson(Addressbooks * abs) {cout << "請輸入要刪除聯系人的姓名:" << endl;string name;cin >> name;int ret=isExist(abs, name);if (ret == -1){cout << "通訊錄無該聯系人記錄!!" << endl;}else{for (int i = ret; i < abs->m_size; i++){//數據前移abs->person[i] = abs->person[i + 1];}abs->m_size--;cout << "刪除成功!!!" << endl;}system("pause");system("cls"); } //查找指定聯系人 void findPerson(Addressbooks *abs) {cout << "請輸入你要查找的聯系人:" << endl;string name;cin >> name;//判斷聯系人是否存在通訊錄int ret = isExist(abs, name);if (ret == -1){cout << "對不起,通訊錄無此人!!" << endl;}else{cout << "姓名: " << abs->person[ret].m_Name << "\t";cout << "性別: " << (abs->person[ret].m_Sex==1?"男":"女") << "\t";cout << "年齡: " << abs->person[ret].m_Age << "\t";cout << "電話: " << abs->person[ret].m_phone << "\t";cout << "住址: " << abs->person[ret].m_Addr << endl;}system("pause");system("cls"); } //修改指定的聯系人的信息 void modifyPerson(Addressbooks * abs) {cout << "請輸入要修改聯系人的姓名:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "對不起,你所要修改的聯系人并不在此通訊錄!!" << endl;}else{string name;cout << "請重新輸入要修改的姓名:" << endl;cin >> name;abs->person[ret].m_Name = name;int sex;cout << "請重新輸入要修改的性別:" << endl;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->person[ret].m_Sex = sex;break;}else{cout << "你輸入的有誤,請重新輸入:" << endl;}}int age;cout << "請重新輸入要修改的年齡:" << endl;cin >> age;abs->person[ret].m_Age = age;string phone;cout << "請重新輸入要修改的電話:" << endl;cin >> phone;abs->person[ret].m_phone = phone;string addre;cout << "請重新輸入要修改的地址:" << endl;cin >> addre;abs->person[ret].m_Addr = addre;cout << "修改成功了!!" << endl;}system("pause");system("cls"); } //清空所有聯系人 void cleanPerson(Addressbooks * abs) {cout << "你是否一定要清空:是輸入:Y/y,否輸入:N/n" << endl;char ch;while (true){cin >> ch;if (ch == 'Y' || ch == 'y'){//將當期記錄聯系人數量置為0,做邏輯清空操作abs->m_size = 0;cout << "通訊錄已經清空!" << endl;break;}else if (ch == 'N' || ch == 'n'){cout << "請重新操作:" << endl;break;}else{cout << "輸入錯誤,請重新輸入:" << endl;}}system("pause");system("cls"); } int main() {system("color 5E");int select;//創建通訊錄結構體變量Addressbooks abs;//初始化通訊錄中的個數abs.m_size = 0;cout << "我是賈維斯,歡迎來到通訊管理系統!" << endl;while (true){//顯示菜單showMenu();//輸入需要選擇的功能cout << "請輸入你要選擇的操作:" << endl;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;break;default: cout << "你輸入的不規范,請重新輸入" << endl;break;}}system("pause");return 0; }總結
以上是生活随笔為你收集整理的C++入门项目——通讯管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GitHub 上最火的开源项目 —— J
- 下一篇: 未定义标识符 stringc/c++(2