在日常开发中,通讯录管理系统是一个很常见的功能,尤其是在管理联系人时,可以通过一些简单的操作增删查改联系人信息。本文将带你逐步了解如何使用 C++ 实现一个基本的通讯录管理系统,主要分为两个核心模块:联系人管理类 和 用户菜单操作。
1. 项目结构
我们将通讯录管理系统分为三个主要文件:
- phone_book.h:声明联系人管理类
Contact
及其成员函数。 - phone_book.cpp:实现
Contact
类的各个成员函数。 - main.cpp:包含主函数,提供用户操作菜单,调用
Contact
类来实现通讯录管理。
2. Contact
类的定义
首先,我们需要定义一个联系人管理类 Contact
,负责管理联系人信息(如姓名、性别、电话号码)及相关操作功能(如增加、删除、查找联系人等)。我们在 phone_book.h
文件中声明类,并在 phone_book.cpp
文件中实现它的具体逻辑。
phone_book.h
#ifndef PHONE_BOOK_H
#define PHONE_BOOK_H
#include <string>
#include <vector>
class Contact
{
std::string name;
std::string gender;
std::string phone;
public:
// 增加联系人
void add_Contact();
// 按名字删除联系人
void delete_ContactByName();
// 按名字修改联系人信息
void modify_ContactByName();
// 查找联系人,按姓名或电话,支持模糊查找
void search_Contact();
// 显示所有联系人信息
void display_AllContacts();
};
#endif
在上面的声明中,Contact
类包含了联系人信息的三个私有属性:姓名 (name
)、性别 (gender
) 和电话号码 (phone
)。同时,它定义了五个公有的成员函数,用于管理联系人操作。
phone_book.cpp
#include<iostream>
#include "phone_book.h"
std::vector<Contact> contacts; // 用于存储联系人
// 增加联系人
void Contact::add_Contact()
{
if (contacts.size() >= 50) {
std::cout << "通讯录已满,无法添加新联系人。" << std::endl;
return;
}
Contact newContact;
std::cout << "请输入联系人姓名、性别和电话:" << std::endl;
std::cin >> newContact.name >> newContact.gender >> newContact.phone;
contacts.push_back(newContact);
std::cout << "联系人添加成功。" << std::endl;
}
// 按名字删除联系人
void Contact::delete_ContactByName()
{
std::string nameToDelete;
std::cout << "请输入要删除的联系人的姓名:" << std::endl;
std::cin >> nameToDelete;
bool found = false;
for (auto it = contacts.begin(); it != contacts.end(); ++it) {
if (it->name == nameToDelete) {
found = true;
contacts.erase(it);
std::cout << "联系人删除成功。" << std::endl;
break;
}
}
if (!found) {
std::cout << "未找到该联系人。" << std::endl;
}
}
// 按名字修改联系人信息
void Contact::modify_ContactByName()
{
std::string nameToModify;
std::cout << "请输入要修改的联系人的姓名:" << std::endl;
std::cin >> nameToModify;
bool found = false;
for (auto& contact : contacts) {
if (contact.name == nameToModify) {
found = true;
std::cout << "请输入新的姓名、性别和电话:" << std::endl;
std::cin >> contact.name >> contact.gender >> contact.phone;
std::cout << "联系人信息修改成功。" << std::endl;
break;
}
}
if (!found) {
std::cout << "未找到该联系人。" << std::endl;
}
}
// 查找联系人
void Contact::search_Contact()
{
std::string query;
std::cout << "请输入要查找的姓名或电话:" << std::endl;
std::cin >> query;
bool found = false;
for (const auto& contact : contacts) {
if (contact.name.find(query) != std::string::npos || contact.phone.find(query) != std::string::npos) {
found = true;
std::cout << "姓名:" << contact.name << " 性别:" << contact.gender << " 电话:" << contact.phone << std::endl;
}
}
if (!found) {
std::cout << "未找到相关联系人。" << std::endl;
}
}
// 显示所有联系人信息
void Contact::display_AllContacts()
{
if (contacts.empty()) {
std::cout << "通讯录为空。" << std::endl;
return;
}
std::cout << "所有联系人信息:" << std::endl;
for (const auto& contact : contacts) {
std::cout << "姓名:" << contact.name << " 性别:" << contact.gender << " 电话:" << contact.phone << std::endl;
}
}
3. 用户菜单操作
为了方便用户与系统交互,我们提供一个菜单,用户可以选择增加联系人、删除联系人、查找联系人等功能。以下是 main.cpp
文件的实现,它提供了一个简单的循环菜单。
main.cpp
#include<iostream>
#include "phone_book.h"
void menu()
{
int choice;
Contact contactBook;
do {
std::cout << "通讯录管理系统\n";
std::cout << "1. 增加联系人\n";
std::cout << "2. 按名字删除联系人\n";
std::cout << "3. 按名字修改联系人信息\n";
std::cout << "4. 查找联系人\n";
std::cout << "5. 显示所有联系人信息\n";
std::cout << "6. 退出系统\n";
std::cout << "请输入您的选择:\n";
std::cin >> choice;
switch (choice) {
case 1:
contactBook.add_Contact();
break;
case 2:
contactBook.delete_ContactByName();
break;
case 3:
contactBook.modify_ContactByName();
break;
case 4:
contactBook.search_Contact();
break;
case 5:
contactBook.display_AllContacts();
break;
case 6:
std::cout << "退出系统。\n";
break;
default:
std::cout << "无效的选择,请重新输入。\n";
}
} while (choice != 6);
}
int main()
{
menu();
return 0;
}
4. 运行效果
用户通过该菜单系统,可以很方便地进行以下操作:
- 增加联系人:输入姓名、性别、电话后,新联系人将会添加到通讯录中。
- 删除联系人:通过输入联系人姓名,找到匹配项后即可删除联系人。
- 修改联系人:通过输入要修改的联系人姓名,更新其信息。
- 查找联系人:输入姓名或电话,系统支持模糊查找。
- 显示所有联系人:显示通讯录中所有联系人的详细信息。
5. 总结
通过本文,你学习了如何使用 C++ 实现一个基本的通讯录管理系统。我们定义了一个 Contact
类用于管理联系人信息,并通过主菜单系统实现了对通讯录的增删查改功能。这是一个很好的练习项目,可以帮助你熟悉 C++ 类的设计和基本的 I/O 操作。
你可以在这个基础上进一步扩展功能,比如增加联系人分组、排序、数据持久化等功能,提升系统的实用性。