用面向对象的方法编写通讯录管理系统(包括:姓名,电话号码,QQ,Emall)。 籍贯等信息)。 增加(注意:姓名、电话号码、QQ是唯一的。不能有重复记录存在。) 删除(可以按照姓名、电话号码、QQ进行操作) 修改(可
时间: 2024-02-11 18:10:04 浏览: 22
好的,以下是一个可能的通讯录管理系统的代码实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 定义联系人类
class Contact {
public:
Contact(string name, string phone, string qq, string email, string birthplace)
: name(name), phone(phone), qq(qq), email(email), birthplace(birthplace) {}
string getName() const { return name; }
string getPhone() const { return phone; }
string getQQ() const { return qq; }
string getEmail() const { return email; }
string getBirthplace() const { return birthplace; }
private:
string name;
string phone;
string qq;
string email;
string birthplace;
};
// 定义通讯录类
class AddressBook {
public:
// 添加联系人
void addContact(const Contact& contact) {
// 判断该联系人是否已经存在
auto iter = find_if(contacts.begin(), contacts.end(), [&](const Contact& c) {
return (c.getName() == contact.getName()) || (c.getPhone() == contact.getPhone()) || (c.getQQ() == contact.getQQ());
});
if (iter != contacts.end()) {
cout << "该联系人已经存在!" << endl;
} else {
contacts.push_back(contact);
cout << "添加联系人成功!" << endl;
}
}
// 删除联系人
void removeContact(const string& keyword) {
auto iter = find_if(contacts.begin(), contacts.end(), [&](const Contact& c) {
return (c.getName() == keyword) || (c.getPhone() == keyword) || (c.getQQ() == keyword);
});
if (iter != contacts.end()) {
contacts.erase(iter);
cout << "删除联系人成功!" << endl;
} else {
cout << "没有找到匹配的联系人!" << endl;
}
}
// 修改联系人
void modifyContact(const string& keyword) {
auto iter = find_if(contacts.begin(), contacts.end(), [&](const Contact& c) {
return (c.getName() == keyword) || (c.getPhone() == keyword) || (c.getQQ() == keyword);
});
if (iter != contacts.end()) {
Contact& contact = *iter;
cout << "请输入新的联系人信息:" << endl;
string name, phone, qq, email, birthplace;
cout << "姓名:";
cin >> name;
cout << "电话号码:";
cin >> phone;
cout << "QQ:";
cin >> qq;
cout << "Email:";
cin >> email;
cout << "籍贯:";
cin >> birthplace;
// 更新联系人信息
contact = Contact(name, phone, qq, email, birthplace);
cout << "修改联系人成功!" << endl;
} else {
cout << "没有找到匹配的联系人!" << endl;
}
}
// 显示所有联系人
void showContacts() const {
cout << "所有联系人信息如下:" << endl;
for (const auto& contact : contacts) {
cout << "姓名:" << contact.getName() << endl;
cout << "电话号码:" << contact.getPhone() << endl;
cout << "QQ:" << contact.getQQ() << endl;
cout << "Email:" << contact.getEmail() << endl;
cout << "籍贯:" << contact.getBirthplace() << endl;
cout << endl;
}
}
private:
vector<Contact> contacts;
};
// 主函数
int main() {
AddressBook addressBook;
while (true) {
cout << "**************************************" << endl;
cout << "***** 请输入要执行的操作: *****" << endl;
cout << "***** 1. 添加联系人 *****" << endl;
cout << "***** 2. 删除联系人 *****" << endl;
cout << "***** 3. 修改联系人 *****" << endl;
cout << "***** 4. 显示所有联系人 *****" << endl;
cout << "***** 0. 退出通讯录 *****" << endl;
cout << "**************************************" << endl;
int choice;
cin >> choice;
switch (choice) {
case 0:
cout << "感谢使用通讯录,再见!" << endl;
return 0;
case 1:
cout << "请输入联系人信息:" << endl;
string name, phone, qq, email, birthplace;
cout << "姓名:";
cin >> name;
cout << "电话号码:";
cin >> phone;
cout << "QQ:";
cin >> qq;
cout << "Email:";
cin >> email;
cout << "籍贯:";
cin >> birthplace;
addressBook.addContact(Contact(name, phone, qq, email, birthplace));
break;
case 2:
cout << "请输入要删除的联系人的姓名、电话号码或QQ:" << endl;
string keyword;
cin >> keyword;
addressBook.removeContact(keyword);
break;
case 3:
cout << "请输入要修改的联系人的姓名、电话号码或QQ:" << endl;
string keyword2;
cin >> keyword2;
addressBook.modifyContact(keyword2);
break;
case 4:
addressBook.showContacts();
break;
default:
cout << "无效的操作!请重新输入。" << endl;
break;
}
}
}
```
这个程序实现了按照姓名、电话号码、QQ进行增加、删除、修改联系人的功能,并且保证了姓名、电话号码、QQ是唯一的,不能有重复记录存在。