C++實例1--通訊錄管理系統 1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 #define MAX 1000 // 最大人數 7 8 // 通訊錄管理系統 9 10 // 主菜單 11 void showM ...
C++實例1--通訊錄管理系統
1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 #define MAX 1000 // 最大人數 7 8 // 通訊錄管理系統 9 10 // 主菜單 11 void showMenu() { 12 13 cout << "************************************" << endl; 14 cout << "********** 1、添加聯繫人 *********" << endl; 15 cout << "********** 2、顯示聯繫人 *********" << endl; 16 cout << "********** 3、刪除聯繫人 *********" << endl; 17 cout << "********** 4、查找聯繫人 *********" << endl; 18 cout << "********** 5、修改聯繫人 *********" << endl; 19 cout << "********** 6、清空聯繫人 *********" << endl; 20 cout << "********** 0、退出通訊錄 *********" << endl; 21 cout << "************************************" << endl; 22 } 23 24 // 聯繫人結構體 25 struct Person { 26 string m_Name; // 姓名 27 int m_Sex; // 性別:1男,2女 28 int m_Age; // 年齡 29 string m_Phone; // 手機 30 string m_Addr; // 住址 31 }; 32 33 // 通訊錄結構體 34 struct Addressbooks { 35 struct Person personArray[MAX]; // 通訊錄中保存的聯繫人數組 36 int m_Size; // 通訊錄中人員個數 37 }; 38 39 // 添加聯繫人 40 void addPerson(Addressbooks* abs) { 41 // 判斷通訊錄是否已滿,如果滿了就不再添加 42 if (abs->m_Size == MAX) { 43 cout << "通訊錄已滿,無法添加!" << endl; 44 return; 45 } 46 else { 47 // 添加具體聯繫人 48 49 // 姓名 50 string name; 51 cout << "請輸入姓名:" << endl; 52 cin >> name; 53 abs->personArray[abs->m_Size].m_Name = name; 54 55 // 性別 56 int sex = 0; 57 cout << "請輸入性別:" << endl; 58 cout << "1 --- 男 2 --- 女" << endl; 59 while (true) 60 { 61 // 如果輸入的是1或2可以退出迴圈,因為輸入的是正確值 62 // 如果輸入有誤,重新輸入 63 cin >> sex; 64 if (sex == 1 || sex == 2) { 65 abs->personArray[abs->m_Size].m_Sex = sex; 66 break; 67 } 68 cout << "輸入有誤,請重新輸入!" << endl; 69 } 70 71 // 年齡 72 cout << "請輸入年齡:" << endl; 73 int age = 0; 74 cin >> age; 75 abs->personArray[abs->m_Size].m_Age = age; 76 77 // 手機號 78 cout << "請輸入電話:" << endl; 79 string phone; 80 cin >> phone; 81 abs->personArray[abs->m_Size].m_Phone = phone; 82 83 // 地址 84 cout << "請輸入住址:" << endl; 85 string addr; 86 cin >> addr; 87 abs->personArray[abs->m_Size].m_Addr = addr; 88 89 // 更新通訊錄人數 90 abs->m_Size++; 91 92 cout << "添加成功!" << endl; 93 94 system("pause"); 95 system("cls"); 96 97 } 98 } 99 100 // 顯示聯繫人 101 void showPerson(Addressbooks* abs) { 102 // 判斷通訊錄中人數是否為0,如果為0,提示記錄為空 103 // 如果不為0,顯示記錄的聯繫人信息 104 if (abs->m_Size == 0) { 105 cout << "當前記錄為空" << endl; 106 } 107 else 108 { 109 for (int i = 0; i < abs->m_Size; i++) { 110 cout << "姓名:" << abs->personArray[i].m_Name << "\t"; 111 cout << "性別:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t"; 112 cout << "年齡:" << abs->personArray[i].m_Age << "\t"; 113 cout << "電話:" << abs->personArray[i].m_Phone << "\t"; 114 cout << "住址:" << abs->personArray[i].m_Addr << endl; 115 } 116 } 117 118 system("pause"); 119 system("cls"); 120 } 121 122 // 刪除聯繫人 123 // 1.檢測聯繫人是否存在 124 // 存在,返回聯繫人在數組中的位置,不存在返回-1 125 int isExit(Addressbooks* abs, string name) { 126 // 參數解釋:參數1:通訊錄; 參數2:對比姓名 127 for (int i = 0; i < abs->m_Size; i++) { 128 // 尋找用戶輸入的姓名 129 if (abs->personArray[i].m_Name == name) { 130 return i; // 找到了,返回該聯繫人在數組中的下標編號 131 } 132 } 133 return -1; // 遍歷完,沒找到,返回-1; 134 } 135 136 // 2.刪除指定聯繫人信息 137 void deletePerson(Addressbooks* abs) { 138 cout << "請輸入要刪除的聯繫人姓名:" << endl; 139 string name; 140 cin >> name; 141 142 // ret == -1 未查到; ret != -1 查到了 143 int ret = isExit(abs, name); 144 145 if (ret != -1) { 146 // 查到了,進行刪除 147 for (int i = ret; i < abs->m_Size; i++) { 148 // 數據前移,實現刪除 149 abs->personArray[i] = abs->personArray[i + 1]; 150 } 151 abs->m_Size--; // 更新通訊錄的人數 152 cout << "刪除成功!" << endl; 153 } 154 else 155 { 156 cout << "查無此人!" << endl; 157 } 158 system("pause"); 159 system("cls"); 160 } 161 162 // 查找聯繫人 163 void findPerson(Addressbooks* abs) { 164 cout << "請輸入查找的聯繫人姓名:" << endl; 165 string name; 166 cin >> name; 167 168 // 判斷指定的聯繫人是否在通訊錄中 169 int ret = isExit(abs, name); 170 if (ret != -1) { // 找到聯繫人 171 cout << "姓名:" << abs->personArray[ret].m_Name << "\t"; 172 cout << "性別:" << (abs->personArray[ret].m_Sex == 1 ? "男" : "女") << "\t"; 173 cout << "年齡:" << abs->personArray[ret].m_Age << "\t"; 174 cout << "電話:" << abs->personArray[ret].m_Phone << "\t"; 175 cout << "住址:" << abs->personArray[ret].m_Addr << endl; 176 } 177 else // 找不到聯繫人 178 { 179 cout << "查無此人!" << endl;; 180 } 181 182 system("pause"); 183 system("cls"); 184 185 } 186 187 // 修改聯繫人 188 void modifyPerson(Addressbooks* abs) { 189 cout << "請輸入要修改的聯繫人姓名:" << endl; 190 string name; 191 cin >> name; 192 193 // 查找要修改的聯繫人是否存在 194 int ret = isExit(abs, name); 195 196 if (ret != -1) { // 找到了聯繫人 197 // 姓名 198 string name; 199 cout << "請輸入姓名:" << endl; 200 cin >> name; 201 abs->personArray[ret].m_Name = name; 202 203 // 性別 204 int sex = 0; 205 cout << "請輸入性別:" << endl; 206 cout << "1 --- 男 2 --- 女" << endl; 207 while (true) 208 { 209 // 如果輸入的是1或2可以退出迴圈,因為輸入的是正確值 210 // 如果輸入有誤,重新輸入 211 cin >> sex; 212 if (sex == 1 || sex == 2) { 213 abs->personArray[ret].m_Sex = sex; 214 break; 215 } 216 cout << "輸入有誤,請重新輸入!" << endl; 217 } 218 219 // 年齡 220 cout << "請輸入年齡:" << endl; 221 int age = 0; 222 cin >> age; 223 abs->personArray[ret].m_Age = age; 224 225 // 手機號 226 cout << "請輸入電話:" << endl; 227 string phone; 228 cin >> phone; 229 abs->personArray[ret].m_Phone = phone; 230 231 // 地址 232 cout << "請輸入住址:" << endl; 233 string addr; 234 cin >> addr; 235 abs->personArray[ret].m_Addr = addr; 236 237 cout << "修改成功!" << endl; 238 } 239 else { // 未找到聯繫人 240 cout << "查無此人!" << endl; 241 } 242 system("pause"); 243 system("cls"); 244 } 245 246 // 清空聯繫人 247 void cleanPerson(Addressbooks* abs) { 248 abs->m_Size = 0; 249 cout << "通訊錄已清空" << endl; 250 system("pause"); 251 system("cls"); 252 } 253 254 int main() { 255 256 // 創建通訊錄結構體變數 257 Addressbooks abs; 258 259 // 初始化通訊錄中當前人員個數 260 abs.m_Size = 0; 261 262 // 創建用戶選擇變數 263 int select = 0; 264 265 while (true) 266 { 267 // 主菜單調用 268 showMenu(); 269 270 // 功能選擇 271 cin >> select; 272 273 switch (select) 274 { 275 case 1: // 1、添加聯繫人 276 addPerson(&abs); // ;利用地址傳遞,可以修飾實參 277 break; 278 case 2: // 2、顯示聯繫人 279 showPerson(&abs); 280 break; 281 case 3: // 3、刪除聯繫人 282 deletePerson(&abs); 283 break; 284 case 4: // 4、查找聯繫人 285 findPerson(&abs); 286 break; 287 case 5: // 5、修改聯繫人 288 modifyPerson(&abs); 289 break; 290 case 6: // 6、清空聯繫人 291 cleanPerson(&abs); 292 break; 293 case 0: // 0、退出通訊錄 294 cout << "歡迎下次使用!" << endl; 295 system("pause"); 296 return 0; 297 break; 298 default: 299 break; 300 } 301 } 302 303 system("pause"); 304 305 return 0; 306 307 }
參考《黑馬程式員》C++教程