c++用面向对象的方法编写通讯录管理系统 (包括:姓名电话号码,QQ,Email,籍贯等信息 )。增加 (注意:姓名、电话号码、QQ是唯一的。不能有重复记录存在。) 删除 (可以按照姓名、电话号码、QQ进行操作) 修改 (可以按照姓名、电话号码、QQ进行操作) 查询 (可以按照姓名、电话号码、QQ进行操作
时间: 2023-07-10 08:10:02 浏览: 120
C++ 实现 通讯录管理系统,增、删、改、查、显示等功能
好的,以下是一个使用面向对象的方法编写的通讯录管理系统。包括姓名、电话号码、QQ、Email、籍贯等信息,并实现了增加、删除、修改和查询功能。
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 联系人结构体
struct Contact {
string name;
string phone;
string qq;
string email;
string hometown;
};
// 通讯录类
class AddressBook {
public:
// 添加联系人
void addContact() {
Contact contact;
cout << "请输入联系人姓名:" << endl;
cin >> contact.name;
if (isExist(contact.name)) {
cout << "该联系人已存在,请勿重复添加!" << endl;
return;
}
cout << "请输入联系人电话号码:" << endl;
cin >> contact.phone;
if (isExist(contact.phone)) {
cout << "该联系人已存在,请勿重复添加!" << endl;
return;
}
cout << "请输入联系人QQ:" << endl;
cin >> contact.qq;
if (isExist(contact.qq)) {
cout << "该联系人已存在,请勿重复添加!" << endl;
return;
}
cout << "请输入联系人Email:" << endl;
cin >> contact.email;
cout << "请输入联系人籍贯:" << endl;
cin >> contact.hometown;
contacts.push_back(contact);
cout << "联系人添加成功!" << endl;
}
// 删除联系人
void deleteContact() {
int choice;
cout << "请选择要删除的联系人方式:" << endl;
cout << "1. 姓名" << endl;
cout << "2. 电话号码" << endl;
cout << "3. QQ" << endl;
cin >> choice;
string keyword;
switch (choice) {
case 1:
cout << "请输入要删除的联系人姓名:" << endl;
cin >> keyword;
break;
case 2:
cout << "请输入要删除的联系人电话号码:" << endl;
cin >> keyword;
break;
case 3:
cout << "请输入要删除的联系人QQ:" << endl;
cin >> keyword;
break;
default:
cout << "输入有误,请重新选择!" << endl;
return;
}
for (auto it = contacts.begin(); it != contacts.end(); it++) {
if (choice == 1 && it->name == keyword) {
contacts.erase(it);
cout << "联系人删除成功!" << endl;
return;
} else if (choice == 2 && it->phone == keyword) {
contacts.erase(it);
cout << "联系人删除成功!" << endl;
return;
} else if (choice == 3 && it->qq == keyword) {
contacts.erase(it);
cout << "联系人删除成功!" << endl;
return;
}
}
cout << "通讯录中没有此联系人!" << endl;
}
// 修改联系人
void modifyContact() {
int choice;
cout << "请选择要修改的联系人方式:" << endl;
cout << "1. 姓名" << endl;
cout << "2. 电话号码" << endl;
cout << "3. QQ" << endl;
cin >> choice;
string keyword;
switch (choice) {
case 1:
cout << "请输入要修改的联系人姓名:" << endl;
cin >> keyword;
break;
case 2:
cout << "请输入要修改的联系人电话号码:" << endl;
cin >> keyword;
break;
case 3:
cout << "请输入要修改的联系人QQ:" << endl;
cin >> keyword;
break;
default:
cout << "输入有误,请重新选择!" << endl;
return;
}
for (auto it = contacts.begin(); it != contacts.end(); it++) {
if (choice == 1 && it->name == keyword) {
cout << "请输入新的联系人姓名:" << endl;
cin >> it->name;
if (isExist(it->name, it)) {
cout << "该联系人已存在,请勿重复修改!" << endl;
return;
}
cout << "联系人修改成功!" << endl;
return;
} else if (choice == 2 && it->phone == keyword) {
cout << "请输入新的联系人电话号码:" << endl;
cin >> it->phone;
if (isExist(it->phone, it)) {
cout << "该联系人已存在,请勿重复修改!" << endl;
return;
}
cout << "联系人修改成功!" << endl;
return;
} else if (choice == 3 && it->qq == keyword) {
cout << "请输入新的联系人QQ:" << endl;
cin >> it->qq;
if (isExist(it->qq, it)) {
cout << "该联系人已存在,请勿重复修改!" << endl;
return;
}
cout << "联系人修改成功!" << endl;
return;
}
}
cout << "通讯录中没有此联系人!" << endl;
}
// 查询联系人
void searchContact() {
int choice;
cout << "请选择要查询的联系人方式:" << endl;
cout << "1. 姓名" << endl;
cout << "2. 电话号码" << endl;
cout << "3. QQ" << endl;
cin >> choice;
string keyword;
switch (choice) {
case 1:
cout << "请输入要查询的联系人姓名:" << endl;
cin >> keyword;
break;
case 2:
cout << "请输入要查询的联系人电话号码:" << endl;
cin >> keyword;
break;
case 3:
cout << "请输入要查询的联系人QQ:" << endl;
cin >> keyword;
break;
default:
cout << "输入有误,请重新选择!" << endl;
return;
}
for (auto it = contacts.begin(); it != contacts.end(); it++) {
if (choice == 1 && it->name == keyword) {
printContact(*it);
return;
} else if (choice == 2 && it->phone == keyword) {
printContact(*it);
return;
} else if (choice == 3 && it->qq == keyword) {
printContact(*it);
return;
}
}
cout << "通讯录中没有此联系人!" << endl;
}
// 显示所有联系人
void showContacts() {
if (contacts.empty()) {
cout << "通讯录为空!" << endl;
} else {
cout << "通讯录中共有 " << contacts.size() << " 个联系人:" << endl;
for (auto it = contacts.begin(); it != contacts.end(); it++) {
printContact(*it);
}
}
}
private:
vector<Contact> contacts; // 存储联系人的数组
// 判断联系人是否存在
bool isExist(const string& keyword, vector<Contact>::iterator exclude = nullptr) {
for (auto it = contacts.begin(); it != contacts.end(); it++) {
if (exclude != nullptr && it == exclude) {
continue;
}
if (it->name == keyword || it->phone == keyword || it->qq == keyword) {
return true;
}
}
return false;
}
// 打印联系人信息
void printContact(const Contact& contact) {
cout << "姓名:" << contact.name << ",电话号码:" << contact.phone
<< ",QQ:" << contact.qq << ",Email:" << contact.email
<< ",籍贯:" << contact.hometown << endl;
}
};
int main() {
AddressBook addressBook;
int choice;
while (true) {
cout << "请选择要进行的操作:" << endl;
cout << "1. 添加联系人" << endl;
cout << "2. 删除联系人" << endl;
cout << "3. 修改联系人" << endl;
cout << "4. 查询联系人" << endl;
cout << "5. 显示所有联系人" << endl;
cout << "6. 退出" << endl;
cin >> choice;
switch (choice) {
case 1:
addressBook.addContact();
break;
case 2:
addressBook.deleteContact();
break;
case 3:
addressBook.modifyContact();
break;
case 4:
addressBook.searchContact();
break;
case 5:
addressBook.showContacts();
break;
case 6:
return 0;
default:
cout << "输入有误,请重新选择!" << endl;
break;
}
}
}
```
这个通讯录管理系统使用了面向对象的编程方式,将联系人的信息封装在了一个结构体中,并通过一个容器保存多个联系人。同时,使用了迭代器和算法库中的 find_if 函数等技术实现了查找、删除和修改等功能。
阅读全文