标签:一个 top cout use nta clear psi books int
本项目涉及知识点:
1:宏定义与访问;
2:结构体数组;
3:指针;
4:值传递与引用传递;
5:任意键继续和清屏。
源代码:
1 //通信录最大储存人数 2 #define Max 1000 //最大人数 3 4 5 //定义一个联系人结构体 6 struct Contacts 7 { 8 string cName; //姓名 9 int cGender = 1; //性别 10 int cAge = 0; //年龄 11 string cPhone; //电话号码 12 string cAdd; //住址 13 }; 14 15 //定义一个通信录结构体 16 struct AddressBooks 17 { 18 Contacts contactsArry[Max]; //通信录联系人信息数组 19 int aCount = 0; //通信录中人员的个数 20 }; 21 22 //显示主菜单 23 void showMenu() 24 { 25 cout << "********************************" << endl; 26 cout << "***** 通 信 录 管 理 系 统 *****" << endl; 27 cout << "********************************" << endl; 28 cout << "***** 1、添加联系人 *****" << endl; 29 cout << "***** 2、显示联系人 *****" << endl; 30 cout << "***** 3、删除联系人 *****" << endl; 31 cout << "***** 4、查找联系人 *****" << endl; 32 cout << "***** 5、修改联系人 *****" << endl; 33 cout << "***** 6、清空联系人 *****" << endl; 34 cout << "***** 0、退出通信录 *****" << endl; 35 cout << "********************************" << endl; 36 cout << "***********Version1.0***********" << endl; 37 cout << "********************************" << endl; 38 } 39 40 //添加联系人 41 void AddContacts(AddressBooks* abs) 42 { 43 //判断是否满员 44 if (abs->aCount == Max) 45 { 46 cout << "通信录已满,无法添加!" << endl; 47 return; 48 } 49 else 50 { 51 //姓名 52 string name; 53 cout << "请输入姓名: " << endl; 54 cin >> name; 55 abs->contactsArry[abs->aCount].cName = name; 56 57 //性别 58 int gender; 59 cout << "请输入性别: " << endl; 60 cout << "1 ---- 男 " << endl; 61 cout << "2 ---- 女 " << endl; 62 63 while (true) 64 { 65 cin >> gender; 66 if (gender == 1 || gender == 2) 67 { 68 abs->contactsArry[abs->aCount].cGender = gender; 69 break; 70 } 71 cout << "输入有误请重新输入!" << endl; 72 } 73 74 //年龄 75 int age; 76 cout << "请输入年龄: " << endl; 77 cin >> age; 78 abs->contactsArry[abs->aCount].cAge = age; 79 80 //电话 81 string phone; 82 cout << "请输入电话: " << endl; 83 cin >> phone; 84 abs->contactsArry[abs->aCount].cPhone = phone; 85 86 //地址 87 string add; 88 cout << "请输入地址: " << endl; 89 cin >> add; 90 abs->contactsArry[abs->aCount].cAdd = add; 91 92 //个数加一 93 abs->aCount += 1; 94 cout << "添加成功!" << endl; 95 system("pause"); 96 //清屏 97 system("cls"); 98 } 99 100 } 101 102 //显示联系人 103 void ShowContacts(AddressBooks* abs) 104 { 105 if (abs->aCount == 0) 106 { 107 cout << "无联系人,请先添加一下吧!" << endl; 108 } 109 else 110 { 111 //显示所有联系人 112 for (int i = 0; i < abs->aCount; i++) 113 { 114 cout << "姓名:" << abs->contactsArry[i].cName << " 性别:" << (abs->contactsArry[i].cGender != 2 ? "男" : "女") << " 年龄:" << abs->contactsArry[i].cAge << " 电话:" << abs->contactsArry[i].cPhone << " 住址:" << abs->contactsArry[i].cAdd << endl; 115 } 116 } 117 system("pause"); 118 system("cls"); 119 } 120 121 //检测某人是否存在 122 int IsExit(AddressBooks* abs, string name) 123 { 124 for (int i = 0; i < abs->aCount; i++) 125 { 126 if (abs->contactsArry[i].cName == name) 127 { 128 return i; 129 } 130 } 131 return -1; 132 } 133 134 //删除联系人 135 void DeleteContacts(AddressBooks* abs) 136 { 137 //记录用户输入的姓名 138 string name; 139 cout << "请输入您要删除的用户姓名:" << endl; 140 cin >> name; 141 //判断联系人是否存在 142 int index = IsExit(abs, name); 143 //存在 144 if (index > -1) 145 { 146 for (int i = index; i < abs->aCount - 1; i++) 147 { 148 //往前移位操作 149 Contacts temp = abs->contactsArry[i]; 150 abs->contactsArry[i] = abs->contactsArry[i + 1]; 151 abs->contactsArry[i + 1] = temp; 152 } 153 //减少一个记录 154 abs->aCount--; 155 cout << "删除成功!" << endl; 156 } 157 else//不存在 158 { 159 cout << "查无此人" << endl; 160 } 161 system("pause"); 162 system("cls"); 163 } 164 165 //查找联系人 166 void GetContacts(AddressBooks* abs) 167 { 168 //记录用户输入的姓名 169 string name; 170 cout << "请输入您要查找的用户姓名" << endl; 171 cin >> name; 172 //判断联系人是否存在 173 int index = IsExit(abs, name); 174 if (index > -1) 175 { 176 //存在 177 cout << "姓名:" << abs->contactsArry[index].cName << endl; 178 cout << "性别:" << abs->contactsArry[index].cGender << endl; 179 cout << "年龄:" << abs->contactsArry[index].cAge << endl; 180 cout << "电话:" << abs->contactsArry[index].cPhone << endl; 181 cout << "住址:" << abs->contactsArry[index].cAdd << endl; 182 } 183 else 184 { 185 //不存在 186 cout << "查无此人" << endl; 187 } 188 system("pause"); 189 system("cls"); 190 191 } 192 193 //修改联系人 194 void ModefyContacts(AddressBooks* abs) 195 { 196 //记录用户输入的姓名 197 string name; 198 cout << "请输入您要修改的用户姓名" << endl; 199 cin >> name; 200 //判断联系人是否存在 201 int index = IsExit(abs, name); 202 if (index > -1) 203 { 204 //存在 205 //姓名 206 string name; 207 cout << "请输入修改后的姓名: " << endl; 208 cin >> name; 209 abs->contactsArry[index].cName = name; 210 211 //性别 212 int gender; 213 cout << "请输入修改后的性别: " << endl; 214 cout << "1 ---- 男 " << endl; 215 cout << "2 ---- 女 " << endl; 216 217 while (true) 218 { 219 cin >> gender; 220 if (gender == 1 || gender == 2) 221 { 222 abs->contactsArry[index].cGender = gender; 223 break; 224 } 225 cout << "输入有误请重新输入!" << endl; 226 } 227 228 //年龄 229 int age; 230 cout << "请输入修改后的年龄: " << endl; 231 cin >> age; 232 abs->contactsArry[index].cAge = age; 233 234 //电话 235 string phone; 236 cout << "请输入修改后的电话: " << endl; 237 cin >> phone; 238 abs->contactsArry[index].cPhone = phone; 239 240 //地址 241 string add; 242 cout << "请输入修改后的地址: " << endl; 243 cin >> add; 244 abs->contactsArry[index].cAdd = add; 245 cout << "修改成功!" << endl; 246 } 247 else 248 { 249 //不存在 250 cout << "查无此人" << endl; 251 } 252 system("pause"); 253 system("cls"); 254 } 255 256 //清空联系人 257 void ClearContacts(AddressBooks* abs) 258 { 259 string choose = "N"; 260 cout << "您确定要清空通信录吗?(Y 确认/N 取消)" << endl; 261 262 while (true) 263 { 264 cin >> choose; 265 if (choose == "Y" || choose == "N") 266 { 267 break; 268 } 269 else 270 { 271 cout << "输入有误请重新输入!!" << endl; 272 } 273 } 274 275 if (choose == "Y") 276 { 277 abs->aCount = 0; 278 cout << "清空成功!!" << endl; 279 } 280 else 281 { 282 cout << "操作已取消!!" << endl; 283 } 284 system("pause"); 285 system("cls"); 286 } 287 288 289 int main() 290 { 291 //记录用户输入的信息 292 int select = 0; 293 //定义一个通信录结构体 294 AddressBooks abs; 295 //设置当前人数为零 296 abs.aCount = 0; 297 298 while (true) 299 { 300 //显示主菜单 301 showMenu(); 302 303 cin >> select; 304 switch (select) 305 { 306 case 1://1、添加联系人 307 AddContacts(&abs); //地址传递 308 break; 309 case 2://2、显示联系人 310 ShowContacts(&abs); //地址传递 311 break; 312 case 3://3、删除联系人 313 DeleteContacts(&abs); 314 break; 315 case 4://4、查找联系人 316 GetContacts(&abs); 317 break; 318 case 5://5、修改联系人 319 ModefyContacts(&abs); 320 break; 321 case 6://6、清空联系人 322 ClearContacts(&abs); 323 break; 324 case 0://0、退出通信录 325 cout << "欢迎下次使用,再见!" << endl; 326 system("pause"); 327 return 0; 328 break; 329 default: 330 break; 331 } 332 } 333 334 335 system("pause");//按任意键继续 336 return 0; 337 }
运行效果:
作者:Jeremy.Wu
出处:https://www.cnblogs.com/jeremywucnblog/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
C/C++ - 指针操作结构体数组综合项目开发 - 通信录管理系统
标签:一个 top cout use nta clear psi books int
原文地址:https://www.cnblogs.com/jeremywucnblog/p/12510909.html