扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
用C++实现一个通讯录管理系统,实现
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
0、退出通讯录
以上七个功能。
提示:以下是本篇文章正文内容,下面案例可供参考
void showMenu(){cout<< "***********************"<< endl;
cout<< "***** 1、添加联系人 *****"<< endl;
cout<< "***** 2、显示联系人 *****"<< endl;
cout<< "***** 3、删除联系人 *****"<< endl;
cout<< "***** 4、查找联系人 *****"<< endl;
cout<< "***** 5、修改联系人 *****"<< endl;
cout<< "***** 6、清空联系人 *****"<< endl;
cout<< "***** 0、退出通讯录 *****"<< endl;
cout<< "***********************"<< endl;
}
2. 添加联系人实现步骤:设计联系人结构体,设计通讯录结构体,main函数中创建通讯录,封装添加联系人函数,测试添加联系人功能。
#include#includeusing namespace std;
const int MAX = 1000;
//联系人结构体
struct Person{string m_Name;
int m_Sex;
int m_Age;
string m_Phone;
string m_Addr;
};
//通讯录结构体
struct AddressBooks{struct Person personArray[MAX];
int m_size;
};
//添加联系人
void addPerson(AddressBooks *abs){if(abs->m_size == MAX){cout<< "通讯录已满,无法添加"<< endl;
return;
}
else{cout<< "请输入姓名: "<< endl;
string name;
cin >>name;
abs->personArray[abs->m_size].m_Name = name;
cout<< "请输入性别: "<< endl;
cout<< "1:男 "<< endl;
cout<< "2:女 "<< endl;
int sex = 0;
while(true){cin >>sex;
if(sex == 1 or sex == 2){abs->personArray[abs->m_size].m_Sex = sex;
break;
}
else{cout<< "输入有误,请重新输入"<< endl;
}
}
cout<< "请输入年龄: "<< endl;
int age = 0;
while(true){cin >>age;
if(age >= 0 and age<= 200){abs->personArray[abs->m_size].m_Age = age;
break;
}
else{cout<< "输入有误,请重新输入"<< endl;
}
}
cout<< "请输入电话: "<< endl;
string phone;
cin >>phone;
abs->personArray[abs->m_size].m_Phone = phone;
cout<< "请输入地址: "<< endl;
string address;
cin >>address;
abs->personArray[abs->m_size].m_Addr = address;
}
//更新通信录
abs->m_size ++;
cout<< "添加成功!"<< endl;
system("cls"); //清空界面
}
int main() {// 创建通讯录
AddressBooks abs;
// 初始化通讯录中人数
abs.m_size = 0;
while(true){showMenu();
int select = 0;
cin >>select;
switch(select){case 1:
addPerson(&abs);
break;
case 2:
showPerson(&abs);
break;
case 3:
deletePerson(&abs);
break;
case 4:
findPerson(&abs);
break;
case 5:
modifyPerson(&abs);
break;
case 6:
cleanPerson(&abs);
break;
case 0:
cout<< "欢迎下次使用"<< endl;
return 0;
break;
}
}
return 0;
}
注意事项:通信录大容量为MAX = 1000,且每次更新完需要将通信录size加1.
3.显示联系人代码如下:
//显示联系人
void showPerson(AddressBooks * abs){if(abs->m_size == 0){cout<< "通信录为空,请添加联系人"<< endl;
}
for(int i = 0; i< abs->m_size; i ++){cout<< "姓名: "<< abs->personArray[i].m_Name<< "\t";
cout<< "性别: "<< (abs->personArray[i].m_Sex == 1 ? "男" : "女")<< "\t";
cout<< "年龄: "<< abs->personArray[i].m_Age<< "\t";
cout<< "电话: "<< abs->personArray[i].m_Phone<< "\t";
cout<< "住址: "<< abs->personArray[i].m_Addr<< endl;
}
system("cls"); //清空界面
}
4.删除联系人实现步骤:先通过名字判断该联系人是否在通讯录中存在,若存在,则删除,若不存在,则提示不存在。
由于删除联系人、查找联系人、修改联系人都需要提前判断联系人是否存在,所以将判断是否存在写成一个函数isExit()
函数来进行判断。
代码如下:
//判断联系人是否存在
int isExit(AddressBooks * abs, string name){for(int i = 0; i< abs->m_size; i ++){if(abs->personArray[i].m_Name == name){return i;
}
}
return -1;
}
//删除联系人
void deletePerson(AddressBooks * abs){cout<< "请输入要删除的联系人姓名"<< endl;
string name;
cin >>name;
int ret = isExit(abs, name);
if(ret == -1){cout<< "通讯录中此人不存在"<< endl;
}
else{for(int i = ret; i< abs->m_size; i ++){abs->personArray[i] = abs->personArray[i+1];
}
cout<< "查找到此人,删除成功"<< endl;
}
abs->m_size--;
system("cls"); //清空界面
}
注意事项:isExit()
函数输入通信录地址和查找的联系人姓名,若联系人存在,则返回联系人所对应的下标,若不存在,则返回-1。
使用该语句:abs->personArray[i] = abs->personArray[i+1];
,将从下标(即需要删除的联系人)开始后的联系人,依次覆盖前一个下标,即完成了删除操作。
代码如下:
void findPerson(AddressBooks * abs){cout<< "请输入要查找的联系人姓名"<< endl;
string name;
cin >>name;
int ret = isExit(abs, name);
if(ret == -1){cout<< "通讯录中此人不存在"<< endl;
}
else{cout<< "查找到此人"<< endl;
cout<< "姓名: "<< abs->personArray[ret].m_Name<< "\t";
cout<< "性别: "<< (abs->personArray[ret].m_Sex == 1 ? "男" : "女")<< "\t";
cout<< "年龄: "<< abs->personArray[ret].m_Age<< "\t";
cout<< "电话: "<< abs->personArray[ret].m_Phone<< "\t";
cout<< "住址: "<< abs->personArray[ret].m_Addr<< endl;
}
system("cls"); //清空界面
}
6.修改联系人代码如下:
//修改联系人
void modifyPerson(AddressBooks * abs){cout<< "请输入要修改的联系人姓名"<< endl;
string name;
cin >>name;
int ret = isExit(abs, name);
if(ret == -1){cout<< "通讯录中此人不存在"<< endl;
}
else{cout<< "查找到此人"<< endl;
string name;
cout<< "请重新输入姓名: "<< endl;
cin >>name;
abs->personArray[ret].m_Name = name;
int sex;
cout<< "请重新输入性别: "<< endl;
cout<< "1:男 "<< endl;
cout<< "2:女 "<< endl;
cin >>sex;
abs->personArray[ret].m_Sex = sex;
int age;
cout<< "请重新输入年龄: "<< endl;
cin >>age;
abs->personArray[ret].m_Age = age;
string phone;
cout<< "请重新输入电话: "<< endl;
cin >>phone;
abs->personArray[ret].m_Phone = phone;
string address;
cout<< "请重新输入地址: "<< endl;
cin >>address;
abs->personArray[ret].m_Addr = address;
}
system("cls"); //清空界面
}
7.清空联系人代码如下:
//清空联系人
void cleanPerson(AddressBooks * abs){abs->m_size = 0;
system("cls"); //清空界面
}
将通信录的size置为0,即完成清空操作。
以上则使用C++完成了一个简单的通信录管理系统。完整代码见链接通信录管理系统。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流