C++Note 通讯录管理系统___案例
1 #include <iostream> 2 using namespace std; 3 #define MAX 1000//最大人数 4 5 //菜单界面 6 void showMenu() 7 { 8 cout << "**************************" << endl; 9 cout << "***** 1.添加联系人 *****" << endl; 10 cout << "***** 2.显示联系人 *****" << endl; 11 cout << "***** 3.删除联系人 *****" << endl; 12 cout << "***** 4.查找联系人 *****" << endl; 13 cout << "***** 5.修改联系人 *****" << endl; 14 cout << "***** 6.清空联系人 *****" << endl; 15 cout << "***** 0.退出通讯录 *****" << endl; 16 cout << "**************************" << endl; 17 } 18 //联系人结构体 string姓名 int性别 int年龄 string电话 string住址 19 struct Person 20 { 21 string m_Name;//姓名 22 int m_Sex;//性别 1 男 2 女 23 int m_Age;//年龄 24 string m_Phone;//电话 25 string m_Addr;//住址 26 }; 27 //通讯录结构体 28 struct Addressbooks 29 { 30 Person personArray[MAX];//通讯录中保存的联系人数组 31 int m_Size;//通讯录中人员个数 32 }; 33 //检测联系人是否存在 存在则返回联系人在数组中位置 不存在则返回 -1 34 int isPersonExist(Addressbooks* abs, string name) 35 { 36 for (int i = 0; i < abs->m_Size; i++) 37 { 38 //找到用户输入 39 if (abs->personArray[i].m_Name == name) 40 { 41 return i; 42 } 43 } 44 return -1;//未找到则返回 -1 45 } 46 //1.添加联系人 47 void addPerson(Addressbooks* abs) 48 { 49 //先判断通讯录是否满 已满不再添加 50 if (abs->m_Size == MAX) 51 { 52 cout << "人数已满,无法添加!"; 53 return; 54 } 55 else 56 { 57 //添加具体联系人 58 string name; 59 cout << "请输入联系人姓名: " << endl; 60 cin >> name; 61 abs->personArray[abs->m_Size].m_Name = name ; 62 cout << "请输入联系人性别: " << endl; 63 cout << "1 --- 男" << endl; 64 cout << "2 --- 女" << endl; 65 int sex = 0; 66 while (true) 67 { 68 //如果输入的是 1 或 2 可以退出循环 69 cin >> sex; 70 if (sex == 1 || sex == 2) 71 { 72 abs->personArray[abs->m_Size].m_Sex = sex; 73 break; 74 } 75 cout << "输入有误,请重新输入" << endl; 76 } 77 cout << "请输入联系人年龄: " << endl; 78 int age = 0; 79 while (true) 80 { 81 cin >> age; 82 if (age >= 0 && age <= 150) 83 { 84 abs->personArray[abs->m_Size].m_Age = age; 85 break; 86 } 87 cout << "输入有误,请重新输入" << endl; 88 } 89 cout << "请输入联系人电话: " << endl; 90 string phone; 91 cin >> phone; 92 abs->personArray[abs->m_Size].m_Phone = phone; 93 cout << "请输入联系人地址: " << endl; 94 string addr; 95 cin >> addr; 96 abs->personArray[abs->m_Size].m_Addr = addr; 97 //更新通讯录人数 98 abs->m_Size++; 99 cout << "联系人添加成功!" << endl; 100 system("pause");//请按任意键结束 101 system("cls");//清屏 102 } 103 } 104 //2.显示联系人 105 void showPerson(Addressbooks* abs) 106 { 107 if (abs->m_Size == 0)//判断通讯录人数是否为0 108 { 109 cout << "当前通讯录没有联系人!" << endl; 110 } 111 else 112 { 113 for (int i = 0; i < abs->m_Size; i++) 114 { 115 cout << "姓名:" << abs->personArray[i].m_Name; 116 if (abs->personArray[i].m_Sex == 1) 117 { 118 cout << " 性别:男"; 119 } 120 else 121 { 122 cout << " 性别:女"; 123 } 124 cout << " 年龄:" << abs->personArray[i].m_Age 125 << " 电话:" << abs->personArray[i].m_Phone 126 << " 地址:" << abs->personArray[i].m_Addr << endl; 127 } 128 } 129 system("pause"); 130 system("cls"); 131 } 132 //3.删除联系人 133 void deletePerson(Addressbooks* abs) 134 { 135 cout << "请输入要删除联系人的姓名:" << endl; 136 string name; 137 cin >> name; 138 int ret = isPersonExist(abs, name);// i为正数 则找到 i为 -1 则未找到联系人 139 if (ret != -1) 140 { 141 //删除一个数值 将后续的数值统一前移覆盖前一内容 然后数组大小减一 142 for (int i = ret; i < abs->m_Size; i++) 143 { 144 abs->personArray[i] = abs->personArray[i + 1];//数据前移 145 } 146 abs->m_Size--;//更新通讯录 147 cout << "删除成功!" << endl; 148 } 149 else 150 { 151 cout << "查无此人!" << endl; 152 } 153 system("pause"); 154 system("cls"); 155 } 156 //4.查找联系人 157 void findPerson(Addressbooks* abs) 158 { 159 cout << "请输入要查找联系人的姓名:" << endl; 160 string name; 161 cin >> name; 162 int ret = isPersonExist(abs, name);// i为正数 则找到 i为 -1 则未找到联系人 163 if (ret != -1) 164 { 165 cout << "姓名:" << abs->personArray[ret].m_Name; 166 if (abs->personArray[ret].m_Sex == 1) 167 { 168 cout << " 性别:男"; 169 } 170 else 171 { 172 cout << " 性别:女"; 173 } 174 cout << " 年龄:" << abs->personArray[ret].m_Age 175 << " 电话:" << abs->personArray[ret].m_Phone 176 << " 地址:" << abs->personArray[ret].m_Addr << endl; 177 } 178 else 179 { 180 cout << "查无此人!" << endl; 181 } 182 system("pause"); 183 system("cls"); 184 } 185 //5.修改联系人 186 void modifyPerson(Addressbooks* abs) 187 { 188 cout << "请输入要修改联系人的姓名:" << endl; 189 string name; 190 cin >> name; 191 int ret = isPersonExist(abs, name);// i为正数 则找到 i为 -1 则未找到联系人 192 if (ret != -1) 193 { 194 //修改联系人 195 string name; 196 cout << "请修改此联系人姓名: " << endl; 197 cin >> name; 198 abs->personArray[ret].m_Name = name; 199 cout << "请修改此联系人性别: " << endl; 200 cout << "1 --- 男" << endl; 201 cout << "2 --- 女" << endl; 202 int sex = 0; 203 while (true) 204 { 205 //如果输入的是 1 或 2 可以退出循环 206 cin >> sex; 207 if (sex == 1 || sex == 2) 208 { 209 abs->personArray[ret].m_Sex = sex; 210 break; 211 } 212 cout << "输入有误,请重新输入" << endl; 213 } 214 cout << "请修改此联系人年龄: " << endl; 215 int age = 0; 216 while (true) 217 { 218 cin >> age; 219 if (age >= 0 && age <= 150) 220 { 221 abs->personArray[ret].m_Age = age; 222 break; 223 } 224 cout << "输入有误,请重新输入" << endl; 225 } 226 cout << "请修改此联系人电话: " << endl; 227 string phone; 228 cin >> phone; 229 abs->personArray[ret].m_Phone = phone; 230 cout << "请修改此联系人地址: " << endl; 231 string addr; 232 cin >> addr; 233 abs->personArray[ret].m_Addr = addr; 234 } 235 else 236 { 237 cout << "查无此人!" << endl; 238 } 239 system("pause"); 240 system("cls"); 241 } 242 //6.清空联系人 243 void cleanPerson(Addressbooks* abs) 244 { 245 abs->m_Size = 0; 246 cout << "通讯录已清空!" << endl; 247 system("pause"); 248 system("cls"); 249 } 250 int main() 251 { 252 // 创建通讯录的结构体变量 253 Addressbooks abs; 254 abs.m_Size = 0; 255 int select = 0;//用户选择输入的变量 256 while (true) 257 { 258 showMenu();//菜单调用 259 cin >> select;//用户输入 260 switch (select) 261 { 262 case 1://添加联系人 263 addPerson(&abs);//地址传递 可以修改实参 264 break; 265 case 2://显示联系人 266 showPerson(&abs); 267 break; 268 case 3://删除联系人 269 deletePerson(&abs); 270 break; 271 case 4://查找联系人 272 findPerson(&abs); 273 break; 274 case 5://修改联系人 275 modifyPerson(&abs); 276 break; 277 case 6://清空联系人 278 { 279 cout << "确认是否清空通讯录:" << endl; 280 cout << "1 --- 是" << endl; 281 cout << "按任意键取消" << endl; 282 int i = 0; 283 cin >> i; 284 if (i == 1) 285 { 286 cleanPerson(&abs); 287 } 288 else 289 { 290 system("pause"); 291 system("cls"); 292 } 293 break; 294 } 295 case 0://退出通讯录 296 cout << "欢迎下次使用!" << endl; 297 system("pause"); 298 return 0; 299 //break; 300 default: 301 break; 302 } 303 } 304 system("pause"); 305 return 0; 306 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)