用C++基础实现通讯录管理系统 包括以下功能: 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系方式、家庭住住) 显示联系人:显示通讯录中所有联系人信息 删除联系人:按照姓名进行删除指定联系人 查找联系人:按照姓名查看指定联系人信息 修改联系人:按照姓名重新修改指定联系人 清空联系人:清空通讯录中所有信息 退出通讯录:退出当前使用的通讯录 录结构体实现添加联系人功能,包括输入检查和内存管理 在C++中,我们可以创建一个结构体来表示联系人的信息,如下: ```cpp struct Contact { string name; char gender; int age; string phone; string address; }; ``` 接着,为了存储这些联系人,我们需要一个数据结构来保存它们。考虑到通讯录的最大容量为1000人,我们可以使用动态数组或`std::vector`来实现: ```cpp vector<Contact> addressBook; ``` 添加联系人的功能需要获取用户输入并检查其有效性。我们可以定义一个函数`addContact`来处理这个过程: ```cpp void addContact() { if (addressBook.size() >= 1000) { cout << "通讯录已满,无法添加更多联系人!" << endl; return; } Contact newContact; cout << "请输入姓名:" << endl; cin >> newContact.name; // 其他信息的输入类似,例如性别、年龄、电话和地址 // 添加到通讯录 addressBook.push_back(newContact); } ``` 6. 显示联系人 显示所有联系人信息的功能可以遍历`addressBook`并打印每个联系人的信息: ```cpp void displayContacts() { if (addressBook.empty()) { cout << "通讯录为空!" << endl; } else { for (const auto& contact : addressBook) { cout << "姓名:" << contact.name << endl; cout << "性别:" << contact.gender << endl; cout << "年龄:" << contact.age << endl; cout << "联系电话:" << contact.phone << endl; cout << "家庭住址:" << contact.address << endl; cout << "-------------------------" << endl; } } } ``` 7. 删除联系人 删除联系人需要根据姓名查找并移除匹配的联系人。我们可以使用`std::find_if`和自定义的谓词来实现: ```cpp bool removeContact(const string& name) { auto it = find_if(addressBook.begin(), addressBook.end(), [&](const Contact& c) { return c.name == name; }); if (it != addressBook.end()) { addressBook.erase(it); return true; } else { cout << "未找到名为 " << name << " 的联系人!" << endl; return false; } } ``` 8. 查找联系人 查找联系人可以遍历`addressBook`,找到匹配的联系人并打印其信息: ```cpp void findContact(const string& name) { auto it = find_if(addressBook.begin(), addressBook.end(), [&](const Contact& c) { return c.name == name; }); if (it != addressBook.end()) { cout << "找到名为 " << name << " 的联系人:" << endl; // 打印联系人信息 } else { cout << "未找到名为 " << name << " 的联系人!" << endl; } } ``` 9. 修改联系人 修改联系人需要先找到联系人,然后更新其信息: ```cpp void updateContact(const string& oldName, const Contact& newContact) { auto it = find_if(addressBook.begin(), addressBook.end(), [&](const Contact& c) { return c.name == oldName; }); if (it != addressBook.end()) { *it = newContact; cout << "联系人信息已更新!" << endl; } else { cout << "未找到名为 " << oldName << " 的联系人!" << endl; } } ``` 10. 清空联系人 清空联系人只需要清空`addressBook`即可: ```cpp void clearContacts() { addressBook.clear(); cout << "通讯录已清空!" << endl; } ``` 将上述功能与主程序中的菜单选择相结合,就可以完成一个简单的C++通讯录管理系统。这个系统虽然简单,但涵盖了C++基本的输入输出、数据结构操作和流程控制,是学习C++编程的良好实践项目。在实际应用中,可以考虑增加错误处理、文件存储等功能以提高实用性。
剩余8页未读,继续阅读
- 粉丝: 6
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于一个简单的学生管理系统网站,基于前端+flask框架+mysql数据库详细文档+全部资料+高分项目.zip
- 300桶全自动灌装机sw19可编辑全套技术资料100%好用.zip
- 基于MATLAB的指纹识别源码+GUI界面+文档说明(高分项目).zip
- 板件柔韧性测试机sw2019可编辑全套技术资料100%好用.zip
- 半导体线路板上下料设备stp全套技术资料100%好用.zip
- SMT行业通用移栽接驳台(sw16可编辑+工程图)全套技术资料100%好用.zip
- 棒料平端面设备sw2020可编辑全套技术资料100%好用.zip
- 不合格下料移动平台sw17全套技术资料100%好用.zip
- 半自动热熔胶粘合机sw16可编辑全套技术资料100%好用.zip
- 电池集成线 半自动装配线step全套技术资料100%好用.zip
- 教育学小组作业 随便组.pptx
- 【创新无忧】基于阿基米德优化算法AOA优化广义神经网络GRNN实现电机故障诊断附matlab代码.rar
- 【创新无忧】基于阿基米德优化算法AOA优化广义神经网络GRNN实现数据回归预测附matlab代码.rar
- 【创新无忧】基于阿基米德优化算法AOA优化广义神经网络GRNN实现光伏预测附matlab代码.rar
- 【创新无忧】基于阿基米德优化算法AOA优化极限学习机KELM实现故障诊断附matlab代码.rar
- 【创新无忧】基于阿基米德优化算法AOA优化相关向量机RVM实现北半球光伏数据预测附matlab代码.rar