運行效果
思路分析
1.這是一個比較基礎的的項目,主要是把思路理清,利用switch實現就可以。
2.這裏採取的是利用指針進行函數傳從,把實參傳給形參的過程就好比定義一個指針的過程,在形參裏進行定義指針,把實參傳給形參的過程可以看成指針給指針賦值的過程,關於指針傳參不懂得,點擊這裏!!!
代碼
#include<iostream> #define MAX 1000 using namespace std; //設計聯繫人的結構體 struct Person { //姓名 string m_Name; //性別 1 男 2 女 int m_Sex; //年齡 int m_Age; //電話 string m_Phone; //住址 string m_Addr; }; //設計通訊錄結構體 struct Addressbooks { //通訊錄中保存的聯繫人數組 Person personArray[MAX]; //通訊錄中當前記錄的聯繫人數 int m_size; }; //1、添加聯繫人 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 << "請輸入性別: " << endl; cout << "1---男" << endl; cout << "2---女" << endl; int sex = 0; while (true) { //如果輸入的是1或者2,退出循環 //如果有誤,吃那個尋輸入 cin >> sex; if (sex == 1 || sex == 2) { abs->personArray[abs->m_size].m_Sex = sex; break; } cout << "輸入有誤,請重新輸入: " << endl; } //年齡 cout << "請輸入年齡: " << endl; int age = 0; cin >> age; abs->personArray[abs->m_size].m_Age = age; //電話 cout << "請輸入聯繫電話: " << endl; string phone; cin >> phone; abs->personArray[abs->m_size].m_Phone = phone; //地址 cout << "請輸入家庭住址: " << endl; string address; cin >> address; abs->personArray[abs->m_size].m_Addr = address; //更新通訊錄人數 abs->m_size++; cout << "添加成功 " << endl; system("pause");//請按任意鍵繼續 system("cls");//清屏操作 } } //2、顯示所有的聯繫人 void showPerson(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"; cout << "性別: " << (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 isExist(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(Addressbooks* abs) { cout << "請輸入您要刪除的聯繫人" << endl; string name; cin >> name; //ret == -1 未查到 //ret != -1 查到了 int ret = isExist(abs, name); if (ret != -1) { for (int i = ret; i < abs->m_size-1; i++) { //數據前移工作 abs->personArray[i] = abs->personArray[i + 1]; } //更新通訊錄中的人員數 abs->m_size--;//更新通訊錄中的人員數 cout << "刪除成功" << endl; } else { cout << "查無此人" << endl; } system("pause"); system("cls"); } //4、查找指定的聯繫人信息 void findPerson(Addressbooks* abs) { cout << "請輸入您要查找的聯繫人姓名: " << endl; string name; cin >> name; //首先判斷指定的聯繫人是否存在 int ret = isExist(abs, name); if (ret != -1)//找到聯繫人 { cout << "姓名: " << abs->personArray[ret].m_Name << "\t"; cout << "性別: " << abs->personArray[ret].m_Sex << "\t"; cout << "年齡: " << abs->personArray[ret].m_Age << "\t"; cout << "電話: " << abs->personArray[ret].m_Phone << "\t"; cout << "住址: " << abs->personArray[ret].m_Addr << endl; } else//未找到 { cout << "查無此人" << endl; } //任意鍵按下後,清屏 system("pause"); system("cls"); } //5、修改聯繫人信息 void modifyPerson(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; //性別 cout << "請輸入性別: " << endl; cout << "1---男" << endl; cout << "2---女" << endl; int sex = 0; while (true) { cin >> sex; if (sex == 1 || sex == 2) { //輸入正確 abs->personArray[ret].m_Sex = sex; break; } cout << "輸入有誤,請重新輸入" << endl; } //年齡 cout << "請輸入年齡: " << endl; int age = 0; cin >> age; abs->personArray[ret].m_Age = age; //電話 cout << "請輸入聯繫電話: " << endl; string phone; cin >> phone; abs->personArray[ret].m_Phone = phone; //住址 cout << "請輸入家庭住址: " << endl; string address; cin >> address; abs->personArray[ret].m_Addr = address; cout << "修改成功" << endl; } else//未找到 { cout << "查無此人" << endl; } //按任意鍵清屏 system("pause"); system("cls"); } //6|清空聯繫人 void cleanPerson(Addressbooks* abs) { abs->m_size = 0;//將當前記錄的聯繫人數量置爲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() { //創建通訊錄結構體變量 Addressbooks abs; //初始化通訊錄中當前的人員個數 abs.m_size = 0; int select = 0;//創建用戶選擇的輸入變量 while (true) { //菜單的調用 showMenu(); cin >> select; switch (select) { case 1://1、添加聯繫人 addPerson(&abs);//利用地址傳送,可以修改實參 break; case 2://2、顯示聯繫人 showPerson(&abs); break; case 3://3、刪除聯繫人 /*{ cout << "請輸入要刪除聯繫人的姓名: " << endl; string name; cin >> name; if (isexist(&abs, name) == -1) { cout << "查無此人" << endl; } else { cout << "找到此人" << endl; } }*/ 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; default: break; } } system("pause"); return 0; }
C++實戰項目-------通訊錄管理系統
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.