通訊錄管理系統
添加聯系人功能:聯系人上限1000人,信息(姓名、性別、年齡、聯系電話、住址)
實現步驟:
1.設計聯系人結構體
2.設計通訊錄結構體
3.main函數中創建通訊錄
4.封裝添加聯系人函數
5.測試添加聯系人功能
關於清屏操作:
system("pause"); //按任意鍵繼續
system("cls"); //清屏
刪除聯系人:
1.檢測是否存在聯系人
2.封裝刪除聯系人
3.測試刪除聯系人功能
源碼如下:
1 #include<iostream> 2 #include<string> 3 #include<iomanip> 4 using namespace std; 5 #define MAX 1000 //最大人數 6 7 //聯系人結構體 8 struct Person 9 { 10 string m_Name; //姓名 11 int m_Sex; //性別 1 - 男 2 - 女 12 int m_Age; //年齡 13 string m_Phone; //電話 14 string m_Address; //地址 15 }; 16 17 //通訊錄的結構體 18 struct Addressbooks 19 { 20 struct Person personArray[MAX]; //通訊錄中保存的聯系人數組 21 int m_Size; //通訊錄中人員個數 22 }; 23 24 void showMenu(); //菜單函數 25 void addPerson(Addressbooks* abs); //添加聯系人 26 void showPerson(Addressbooks* abs); //顯示所有聯系人 27 int isExist(Addressbooks* abs, string name); //檢測聯系人是否存在,參數一 通訊錄 參數二 對比姓名 28 void deletePerson(Addressbooks* abs); //刪除指定聯系人 29 void findPerson(Addressbooks* abs); //查找指定聯系人信息 30 void modifyPerson(Addressbooks* abs); //修改指定聯系人的信息 31 void cleanPerson(Addressbooks* abs); //清除所有聯系人 32 33 int main() 34 { 35 // 創建通訊錄結構體變量 36 Addressbooks abs; 37 //初始化通訊錄中當前人數 38 abs.m_Size = 0; 39 40 int select = 0; 41 while (true) 42 { 43 showMenu(); //調用菜單 44 cout << '\t'; 45 cin >> select; 46 switch (select) 47 { 48 case 1: //1、添加聯系人 49 addPerson(&abs); //利用地址傳遞,可以修改實參 50 break; 51 case 2: //2、顯示聯系人 52 showPerson(&abs); 53 break; 54 case 3: //3、刪除聯系人 55 deletePerson(&abs); 56 break; 57 case 4: //4、查找聯系人 58 findPerson(&abs); 59 break; 60 case 5: //5、修改聯系人 61 modifyPerson(&abs); 62 break; 63 case 6: //6、清空聯系人 64 cleanPerson(&abs); 65 break; 66 case 0: //0、退出通訊錄 67 cout << "\t歡迎下次使用!" << endl; 68 system("pause"); 69 return 0; 70 break; 71 default: 72 break; 73 } 74 } 75 return 0; 76 } 77 78 void showMenu() 79 { 80 cout << "\t****** 通訊錄管理系統 ******" << endl; 81 cout << "\t**** 1、添加聯系人 ****" << endl; 82 cout << "\t**** 2、顯示聯系人 ****" << endl; 83 cout << "\t**** 3、刪除聯系人 ****" << endl; 84 cout << "\t**** 4、查找聯系人 ****" << endl; 85 cout << "\t**** 5、修改聯系人 ****" << endl; 86 cout << "\t**** 6、清空聯系人 ****" << endl; 87 cout << "\t**** 0、退出通訊錄 ****" << endl; 88 cout << "\t***************************" << endl; 89 } 90 91 void addPerson(Addressbooks* abs) 92 { 93 //判斷通訊錄是否已滿 94 if (abs->m_Size == MAX) 95 { 96 cout << "\t通訊錄已滿,無法添加!" << endl; 97 return; 98 } 99 else 100 { 101 //添加聯系人 102 //姓名 103 string name; 104 cout << "\t請輸入姓名:"; 105 cin >> name; 106 abs->personArray[abs->m_Size].m_Name = name; 107 //性別 108 cout << "\t請輸入性別:(1-男,2-女) "; 109 int sex = 0; 110 while (true) 111 { 112 // 如果輸入1,2則退出,否則重新輸入 113 cin >> sex; 114 if (sex == 1 || sex == 2) 115 { 116 abs->personArray[abs->m_Size].m_Sex = sex; 117 break; 118 } 119 cout << "\t輸入有誤,請重新輸入!" << endl; 120 } 121 //年齡 122 int age = 0; 123 cout << "\t請輸入年齡:"; 124 cin >> age; 125 abs->personArray[abs->m_Size].m_Age = age; 126 //電話 127 cout << "\t請輸入聯系電話:"; 128 string phone; 129 cin >> phone; 130 abs->personArray[abs->m_Size].m_Phone = phone; 131 //住址 132 cout << "\t請輸入住址:"; 133 string address; 134 cin >> address; 135 abs->personArray[abs->m_Size].m_Address = address; 136 //更新通訊錄人數 137 abs->m_Size++; 138 cout << "\t添加成功!" << endl; 139 system("pause"); //按任意鍵繼續 140 system("cls"); //清屏 141 } 142 } 143 144 void showPerson(Addressbooks* abs) 145 { 146 //判斷通訊錄中人數是否為0 147 if (abs->m_Size == 0) 148 { 149 cout << "\t當前通訊錄的記錄為空!" << endl; 150 } 151 else 152 { 153 cout << "\t當前通訊錄信息:" << endl; 154 cout << "\t" << setw(5) << "序號" << setw(10) << "姓名" << setw(5) << "性別" << setw(5) << "年齡" << setw(15) << "聯系電話" << setw(15) << "聯系地址" << endl; 155 for (int i = 0; i < abs->m_Size; i++) 156 { 157 string ch; 158 if (abs->personArray[i].m_Sex == 1) 159 ch = "男"; 160 else 161 ch = "女"; 162 cout << "\t" << setw(5) << i + 1 << setw(10) << abs->personArray[i].m_Name << setw(5) << ch << setw(5) << abs->personArray[i].m_Age << setw(15) << abs->personArray[i].m_Phone << setw(15) << abs->personArray[i].m_Address << endl; 163 } 164 cout << "\t當前通訊錄中的人數為:" << abs->m_Size << "人。" << endl; 165 } 166 system("pause"); //按任意鍵繼續 167 system("cls"); //清屏 168 } 169 170 int isExist(Addressbooks* abs, string name) 171 { 172 for (int i = 0; i < abs->m_Size; i++) 173 { 174 //找到用戶輸入的姓名 175 if (abs->personArray[i].m_Name == name) 176 { 177 return i; //找到了返回數組下標 178 } 179 } 180 return -1; //如果遍歷結束沒找到返回-1 181 } 182 183 void deletePerson(Addressbooks* abs) 184 { 185 cout << "\t請輸入要輸入的聯系人:"; 186 string name; 187 cin >> name; 188 int ret = isExist(abs, name); 189 //ret == -1 沒查到 190 //ret != -1 查到 191 if (ret != -1) 192 { 193 //查找到,進行刪除操作 194 for (int i = ret; i < abs->m_Size; i++) 195 { 196 //數據前移 197 abs->personArray[i] = abs->personArray[i + 1]; 198 } 199 abs->m_Size--; //更新總人數 200 cout << "\t刪除成功!" << endl; 201 } 202 else 203 { 204 cout << "\t查無此人!" << endl; 205 } 206 system("pause"); //按任意鍵繼續 207 system("cls"); //清屏 208 } 209 210 void findPerson(Addressbooks* abs) 211 { 212 cout << "\t請輸入要查找的聯系人:"; 213 string name; 214 cin >> name; 215 //判斷輸入的聯系人姓名是否存在 216 int ret = isExist(abs, name); 217 if (ret != -1) 218 { 219 //找到了 220 cout << "\t姓名:" << abs->personArray[ret].m_Name << endl; 221 string ch; 222 if (abs->personArray[ret].m_Sex == 1) 223 ch = "男"; 224 else 225 ch = "女"; 226 cout << "\t性別:" << ch << endl; 227 cout << "\t年齡:" << abs->personArray[ret].m_Age << endl; 228 cout << "\t聯系電話:" << abs->personArray[ret].m_Phone << endl; 229 cout << "\t住址:" << abs->personArray[ret].m_Address << endl; 230 } 231 else 232 { 233 //未找到聯系人 234 cout << "\t查無此人!" << endl; 235 } 236 system("pause"); //按任意鍵繼續 237 system("cls"); //清屏 238 } 239 240 void modifyPerson(Addressbooks* abs) 241 { 242 cout << "\t請輸入要修改的聯系人姓名:"; 243 string name; 244 cin >> name; 245 int ret = isExist(abs, name); 246 if (ret != -1) 247 { 248 //找到指定聯系人 249 cout << "\t請輸入要修改的內容:(1.姓名 2.性別 3.年齡 4.電話 5.住址 0.修改結束)" << endl; 250 int choice; 251 while (true) 252 { 253 cout << "\tchoice = "; 254 cin >> choice; 255 switch (choice) 256 { 257 case 1: 258 {string nam; 259 cout << "\t請輸入姓名:"; 260 cin >> nam; 261 abs->personArray[ret].m_Name = nam; } 262 break; 263 case 2: 264 { 265 while(true) { 266 cout << "\t請輸入性別:(1 - 男,2 - 女)"; 267 int s = 0; 268 cin >> s; 269 if (s == 1 || s == 2) 270 { 271 abs->personArray[ret].m_Sex = s; 272 break; 273 } 274 else 275 { 276 cout << "\t輸入有誤,請重新輸入!" << endl; 277 } 278 } 279 } 280 break; 281 case 3: 282 { 283 cout << "\t請輸入年齡:"; 284 int a; 285 cin >> a; 286 abs->personArray[ret].m_Age = a; 287 } 288 break; 289 case 4: 290 { 291 cout << "\t請輸入聯系電話:"; 292 string p; 293 cin >> p; 294 abs->personArray[ret].m_Phone = p; 295 } 296 break; 297 case 5: 298 { 299 cout << "\t請輸入住址:"; 300 string add; 301 cin >> add; 302 abs->personArray[ret].m_Address = add; 303 } 304 break; 305 case 0: 306 break; 307 default: 308 cout << "\t輸入內容有誤!請重新輸入!" << endl; 309 } 310 if (choice == 0) 311 break; 312 } 313 } 314 else //未找到聯系人 315 { 316 cout << "\t查無此人!" << endl; 317 } 318 system("pause"); 319 system("cls"); 320 } 321 322 void cleanPerson(Addressbooks* abs) 323 { 324 325 char falg; 326 cout << "\t是否清空" << abs->m_Size << "條聯系人信息!" << endl; 327 cout << "\tY. 確定 N. 放棄" << endl; 328 cout << "\t請輸入你的選擇:"; 329 while (true) { 330 cin >> falg; 331 if (falg == 'Y') 332 { 333 abs->m_Size = 0; //將當前人數置零,邏輯上的清空操作 334 cout << "\t通訊錄已清空!" << endl; 335 break; 336 } 337 else if (falg == 'N') 338 { 339 cout << "\t您已放棄清空操作!" << endl; 340 break; 341 } 342 else 343 { 344 cout << "\t輸入有誤!請重新輸入!" << endl; 345 } 346 } 347 system("pause"); 348 system("cls"); 349 }