1 #include<iostream> 2 using namespace std; 3 #define MAX 1000 4 #include <string> 5 6 //菜单界面 7 void showmenu() 8 { 9 cout << "******通讯录管理系统******" << endl; 10 cout << "***** 1、添加联系人 *****" << endl; 11 cout << "***** 2、显示联系人 *****" << endl; 12 cout << "***** 3、删除联系人 *****" << endl; 13 cout << "***** 4、查找联系人 *****" << endl; 14 cout << "***** 5、修改联系人 *****" << endl; 15 cout << "***** 6、清空联系人 *****" << endl; 16 cout << "***** 0、退出通讯录 *****" << endl; 17 } 18 19 //通讯录成员结构体 20 struct People 21 { 22 string name; //姓名 23 string phone;//电话 24 string addr;//地址 25 int age;//年龄 26 int sex;//1男2女 27 }; 28 29 //通讯录结构体 30 struct Book 31 { 32 //保存的联系人数组 33 struct People people[MAX]; 34 35 //通讯录中当前记录联系人个数 36 int booksize; 37 }; 38 39 //添加联系人 40 void addPeople(Book * book) 41 { 42 //判断通讯录是否满,满则不再添加 43 if (book->booksize == MAX) 44 { 45 cout << "通讯录已满,无法添加!" << endl; 46 return; 47 } 48 else 49 { 50 //添加具体联系人 51 52 //姓名 53 cout << "请输入姓名:" << endl; 54 string name; 55 cin >> name; 56 book->people[book->booksize].name = name; //booksize表示通讯录中序号 57 58 //性别 59 cout << "请输入性别" << endl; 60 cout << "1 ---- 男" << endl; 61 cout << "2 ---- 女" << endl; 62 int sex = 0; 63 while (true) 64 { 65 cin >> sex; 66 //如果输入1或2则退出表示正确 67 if (sex == 1 || sex == 2) 68 { 69 book->people[book->booksize].sex = sex; 70 break; 71 } 72 cout << "输入有误,请重新输入!" << endl; 73 } 74 //年龄 75 cout << "请输入年龄:" << endl; 76 int age = 0; 77 cin >> age; 78 book->people[book->booksize].age = age; 79 //电话 80 cout << "请输入电话:" << endl; 81 string phone; 82 cin >> phone; 83 book->people[book->booksize].phone = phone; 84 //地址 85 cout << "请输入地址:" << endl; 86 string addr; 87 cin >> addr; 88 book->people[book->booksize].addr = addr; 89 90 //更新通讯录人数 91 book->booksize++; 92 cout << "添加成功!" << endl; 93 } 94 system("pause");//按任意键继续 95 system("cls");//清屏 96 } 97 98 //显示联系人 99 void showPeople(Book * book) 100 { 101 if (book->booksize == 0) 102 { 103 cout << "当前通讯录为空!" << endl; 104 system("pause"); 105 return; 106 } 107 else 108 { 109 for (int i = 0; i < book->booksize; i++) 110 { 111 cout << book->people[i].name << "\t" << (book->people[i].sex == 1 ? "男":"女") << "\t" << book->people[i].age << "\t" << book->people[i].phone << "\t" << book->people[i].addr << endl; 112 } 113 } 114 115 system("pause"); 116 system("cls"); 117 } 118 119 //检测联系人是否存在 120 int isExist(Book * book, string name) 121 { 122 for (int i = 0; i < book->booksize; i++) 123 { 124 if (book->people[i].name == name) 125 { 126 return i; //找到则返回下标 127 } 128 } 129 return -1; //遍历结束没有找到返回-1 130 } 131 132 //删除联系人 133 void deletePeople(Book * book) 134 { 135 cout << "请输入删除联系人的姓名:" << endl; 136 string name; 137 cin >> name; 138 int res = isExist(book, name); 139 if (res == -1) 140 { 141 cout << "未在通讯录中查找到此人!" << endl; 142 } 143 else 144 { 145 //查找到此人! 146 for (int i = res; i < book->booksize; i++) 147 { 148 book->people[i] = book->people[i + 1]; //数据前移 149 } 150 book->booksize--;//更新通讯录中人员数 151 cout << "删除成功!" << endl; 152 } 153 system("pause"); 154 system("cls"); 155 } 156 157 //查找联系人 158 void findPeople(Book * book) 159 { 160 cout << "请输入您要查找的联系人:" << endl; 161 string name; 162 cin >> name; 163 int res = isExist(book, name); 164 if (res != -1)//找到联系人 165 { 166 cout << "姓名: " << book->people[res].name << " 性别: " << (book->people[res].sex == 1 ? "男":"女") << " 年龄: " << book->people[res].age << " 地址: " << book->people[res].addr << " 电话: " << book->people[res].phone << endl; 167 } 168 else 169 { 170 cout << "通讯录无此人!" << endl; 171 } 172 system("pause"); 173 system("cls"); 174 } 175 176 //修改联系人 177 void modifyPeople(Book * book) 178 { 179 cout << "请输入要修改的联系人: " << endl; 180 string name; 181 cin >> name; 182 183 int res = isExist(book, name); 184 if (res != -1)//存在联系人 185 { 186 string name; 187 cout << "请输入姓名:" << endl; 188 cin >> name; 189 book->people[res].name = name; 190 191 cout << "请输入性别" << endl; 192 cout << "1 ---- 男" << endl; 193 cout << "2 ---- 女" << endl; 194 int sex = 0; 195 while (true) 196 { 197 cin >> sex; 198 if (sex == 1 || sex == 2) 199 { 200 book->people[res].sex = sex; 201 break; 202 } 203 cout << "输入有误,请重新输入!" << endl; 204 } 205 206 cout << "请输入年龄:" << endl; 207 int age = 0; 208 cin >> age; 209 book->people[res].age = age; 210 211 cout << "请输入地址:" << endl; 212 string addr; 213 book->people[res].addr = addr; 214 215 cout << "请输入电话:" << endl; 216 string phone; 217 book->people[res].phone = phone; 218 219 } 220 else 221 { 222 cout << "未找到此人!" << endl; 223 } 224 system("pause"); 225 system("cls"); 226 } 227 228 //清空联系人 229 void clear(Book * book) 230 { 231 book->booksize = 0; 232 cout << "通讯录已清空" << endl; 233 system("pause"); 234 system("cls"); 235 } 236 237 //主函数 238 int main() 239 { 240 int select; //创建用户选择输入变量 241 242 //通讯录结构体变量 243 Book book; 244 book.booksize = 0; //通讯录数量初始化0 245 246 247 while (true) 248 { 249 //菜单调用 250 showmenu(); 251 252 cin >> select; 253 switch (select) 254 { 255 case 1://1、添加联系人 256 addPeople(&book); //地址传递改变实参 257 break; 258 case 2://2、显示联系人 259 showPeople(&book); 260 break; 261 case 3://3、删除联系人 262 deletePeople(&book); 263 break; 264 case 4://4、查找联系人 265 findPeople(&book); 266 break; 267 case 5://5、修改联系人 268 modifyPeople(&book); 269 break; 270 case 6://6、清空联系人 271 clear(&book); 272 break; 273 case 0://0、退出通讯录 274 cout << "欢迎下次使用" << endl; 275 system("pause"); 276 return 0; 277 break; 278 default: 279 break; 280 } 281 } 282 283 system("pause"); 284 return 0; 285 }
原文:https://www.cnblogs.com/yuxuliang/p/14803862.html