C++一阶--通讯录管理系统
照着黑马程序员C++视频敲的,可以快速回忆起当时上课学的东西。其实当时期末的那个设计我也是敲得这个”通讯录管理系统“,这算是我大学以及编程的第一个成就。再次完成亦有感慨。
先说我我想说的:
- 体会了结构体
- 增删改查的实现
- 冒泡排序
- 指针中”&“与”*“的区别
- 函数封装的妙处
结构体的定义及如何使用,用”.“来使用其成员
指针,&a指的是a(a是个值)的地址,*a指的是a(此a是个地址)的值
冒泡排序,有个第三者,中间量
增删改查,有数组,能隐约感受到数据结构的感觉,只是有那么一点感觉。
我敲的代码,实现上看不算精致,但功能都实现了

1 #include <iostream> 2 #include <string> 3 using namespace std; 4 #define MAX 3//最大人数 5 6 //1、菜单 7 //封装函数显示界面,void shouMenu() 8 void showMenu() 9 { 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<<"7、退出系统"<<endl; 17 } 18 19 //任务:添加联系人 20 //设计联系人结构体 21 struct Person 22 { 23 string m_Name;//姓名 24 int m_Sex;//性别 25 int m_age;//年龄 26 string m_Phone;//电话 27 string m_Add;//地址 28 }; 29 30 //设计通讯录结构体 31 struct Addressbooks 32 { 33 struct Person personArray[MAX];//通讯录中保存的联系人数组 34 int m_Size;//通讯录中人员个数 35 }; 36 //main函数中创建通讯录 37 38 //封装添加联系人函数 39 void addPerson(Addressbooks *abs) 40 { 41 //判断通讯录是否已满,如果满了就不再添加 42 if(abs->m_Size==MAX) 43 { 44 cout<<"通讯录已满!"<<endl; 45 return ; 46 } 47 else 48 { 49 //添加具体联系人 50 51 //姓名 52 string name; 53 cout<<"请输入姓名:"<<endl; 54 cin>>name; 55 abs->personArray[abs->m_Size].m_Name=name; 56 //性别 57 cout<<"请输入性别:"<<endl; 58 cout<<"1---男"<<endl; 59 cout<<"2---女"<<endl; 60 int sex = 0; 61 while(true){ 62 cin>>sex; 63 if(sex==1||sex==2) 64 { 65 abs->personArray[abs->m_Size].m_Sex=sex; 66 break; 67 }else 68 { 69 cout<<"输入有误!请再次输入"<<endl; 70 sex=0; 71 } 72 } 73 //年龄 74 cout<<"请输入年龄:"<<endl; 75 int age=0; 76 cin>>age; 77 abs->personArray[abs->m_Size].m_age=age; 78 //电话 79 cout<<"请输入电话号码:"<<endl; 80 string phone; 81 cin>>phone; 82 abs->personArray[abs->m_Size].m_Phone=phone; 83 //地址 84 cout<<"请输入地址:"<<endl; 85 string address; 86 cin>>address; 87 abs->personArray[abs->m_Size].m_Add=address; 88 abs->m_Size++; 89 cout<<"添加成功!"<<endl; 90 system("pause"); 91 system("cls"); 92 } 93 return; 94 } 95 96 //封装显示联系人函数 97 void showPerson(Addressbooks *abs) 98 { 99 if(abs->m_Size==0) 100 { 101 cout<<"当前联系人为空"<<endl; 102 } 103 else 104 { 105 cout<<"查询成功!"<<endl; 106 for(int i=0;i<abs->m_Size;i++){ 107 cout<<"\t姓名:"<<abs->personArray[i].m_Name; 108 cout<<"\t性别:"<<(abs->personArray[i].m_Sex==1?"男":"女"); 109 cout<<"\t年龄:"<<abs->personArray[i].m_age; 110 cout<<"\t电话:"<<abs->personArray[i].m_Phone; 111 cout<<"\t住址:"<<abs->personArray[i].m_Add<<endl; 112 } 113 } 114 115 system("pause"); 116 return; 117 } 118 119 //删除联系人 120 //1、封装检测联系人是否存在 121 //2、封装删除联系人函数 122 123 //检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1 124 int isExist(Addressbooks *abs,string name) 125 { 126 for(int i=0; i<abs->m_Size;i++){ 127 if(abs->personArray[i].m_Name==name) 128 { 129 return i; 130 } 131 } 132 return -1; 133 } 134 135 void deletePerson(Addressbooks *abs) 136 { 137 cout<<"输入你要删除的姓名:"<<"\t"; 138 string name; 139 cin>>name; 140 int ret=isExist(abs,name); 141 if(ret!=-1) 142 { 143 for(int i=ret;i<abs->m_Size;i++){ 144 abs->personArray[i]=abs->personArray[i+1]; 145 } 146 cout<<"删除成功"<<endl; 147 } 148 else 149 { 150 cout<<"查无此人"<<endl; 151 } 152 abs->m_Size--; 153 system("pause"); 154 } 155 156 void findPersion(Addressbooks *abs) 157 { 158 cout<<"请输入您要查找的联系人"<<endl; 159 string name; 160 cin>>name; 161 int ret=isExist(abs,name); 162 if(ret!=-1) 163 { 164 cout<<"\t姓名:"<<abs->personArray[ret].m_Name; 165 cout<<"\t性别:"<<(abs->personArray[ret].m_Sex==1?"男":"女"); 166 cout<<"\t年龄:"<<abs->personArray[ret].m_age; 167 cout<<"\t电话:"<<abs->personArray[ret].m_Phone; 168 cout<<"\t住址:"<<abs->personArray[ret].m_Add<<endl; 169 } 170 else 171 { 172 cout<<"查无此人!"<<endl; 173 } 174 } 175 176 void modifyPersion(Addressbooks *abs) 177 { 178 cout<<"请输入你要修改的联系人:\t"; 179 string name; 180 cin>>name; 181 int ret=isExist(abs,name); 182 if(ret!=-1) 183 { 184 cout<<"\t姓名:"<<abs->personArray[ret].m_Name; 185 cout<<"\t性别:"<<(abs->personArray[ret].m_Sex==1?"男":"女"); 186 cout<<"\t年龄:"<<abs->personArray[ret].m_age; 187 cout<<"\t电话:"<<abs->personArray[ret].m_Phone; 188 cout<<"\t住址:"<<abs->personArray[ret].m_Add<<endl; 189 cout<<"进行修改:"<<endl; 190 cout<<"请输入姓名:\t"; 191 cin>>name; 192 abs->personArray[ret].m_Name=name; 193 cout<<endl; 194 cout<<"请输入性别:"<<endl; 195 cout<<"1---男"<<endl; 196 cout<<"2---女"<<endl; 197 int sex = 0; 198 while(true){ 199 cin>>sex; 200 if(sex==1||sex==2) 201 { 202 abs->personArray[ret].m_Sex=sex; 203 break; 204 }else 205 { 206 cout<<"输入有误!请再次输入"<<endl; 207 sex=0; 208 } 209 } 210 //年龄 211 cout<<"请输入年龄:"<<endl; 212 int age=0; 213 cin>>age; 214 abs->personArray[ret].m_age=age; 215 //电话 216 cout<<"请输入电话号码:"<<endl; 217 string phone; 218 cin>>phone; 219 abs->personArray[ret].m_Phone=phone; 220 //地址 221 cout<<"请输入地址:"<<endl; 222 string address; 223 cin>>address; 224 abs->personArray[ret].m_Add=address; 225 cout<<"修改成功!"<<endl; 226 system("pause"); 227 } 228 else 229 { 230 cout<<"查无此人!"<<endl; 231 system("pause"); 232 } 233 } 234 235 void clearPersion(Addressbooks *abs) 236 { 237 abs->m_Size=0; 238 cout<<"通讯录已清空!"<<endl; 239 system("pause"); 240 } 241 242 int main() 243 { 244 int select=8; 245 Addressbooks abs; 246 abs.m_Size=0;//初始化也很重要 247 string name; 248 while(1){ 249 showMenu(); 250 cin>>select; 251 switch(select) 252 { 253 case 1://1、添加联系人 254 addPerson(&abs); 255 break; 256 case 2://2、显示联系人 257 showPerson(&abs); 258 break; 259 case 3://3、删除联系人 260 deletePerson(&abs); 261 break; 262 case 4://4、查找联系人 263 findPersion(&abs); 264 break; 265 266 case 5://5、修改联系人 267 modifyPersion(&abs); 268 break; 269 case 6://6、清空联系人 270 { 271 string sure; 272 cout<<"确定?(确定请输入Y/y,其他字符为取消)"<<endl; 273 cin>>sure; 274 if(sure=="Y"||sure=="y") 275 { 276 clearPersion(&abs); 277 } 278 else 279 { 280 cout<<"已取消"<<endl;; 281 } 282 break; 283 } 284 case 7://7、退出系统 285 cout<<"欢迎下次使用"<<endl; 286 system("pause"); 287 return 0; 288 break; 289 } 290 } 291 return 0; 292 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现