c++用面向对象的方法编写通讯录管理系统(包括:姓名,电话号码,QQ,Email籍贯等信息) 增加(注意:姓名、电话号码、QQ是唯一的,不能有重复记录存在。) 刪除(可以按照姓名、电话号码、QQ进行操作) 修改(可以按照姓名、电话号码、QQ进行操作) 查询(可以按照姓名、电话号码、QQ进行操作)请在类内进行原型声明。函数定义写在类的外部,运用较为简单的结构
时间: 2023-07-10 15:12:03 浏览: 50
好的,以下是一个简单的通讯录管理系统的面向对象设计:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Contact {
public:
Contact(string name, string phone, string qq, string email, string hometown);
string getName() const;
string getPhone() const;
string getQQ() const;
string getEmail() const;
string getHometown() const;
void setName(string name);
void setPhone(string phone);
void setQQ(string qq);
void setEmail(string email);
void setHometown(string hometown);
void printInfo() const;
private:
string name_;
string phone_;
string qq_;
string email_;
string hometown_;
};
class ContactList {
public:
void addContact(string name, string phone, string qq, string email, string hometown);
void deleteContact(string key, string value);
void modifyContact(string key, string value, string newName, string newPhone, string newQQ, string newEmail, string newHometown);
void queryContact(string key, string value) const;
private:
vector<Contact> contacts_;
};
Contact::Contact(string name, string phone, string qq, string email, string hometown):
name_(name), phone_(phone), qq_(qq), email_(email), hometown_(hometown) {}
string Contact::getName() const {
return name_;
}
string Contact::getPhone() const {
return phone_;
}
string Contact::getQQ() const {
return qq_;
}
string Contact::getEmail() const {
return email_;
}
string Contact::getHometown() const {
return hometown_;
}
void Contact::setName(string name) {
name_ = name;
}
void Contact::setPhone(string phone) {
phone_ = phone;
}
void Contact::setQQ(string qq) {
qq_ = qq;
}
void Contact::setEmail(string email) {
email_ = email;
}
void Contact::setHometown(string hometown) {
hometown_ = hometown;
}
void Contact::printInfo() const {
cout << name_ << "\t" << phone_ << "\t" << qq_ << "\t" << email_ << "\t" << hometown_ << endl;
}
void ContactList::addContact(string name, string phone, string qq, string email, string hometown) {
for (auto& contact : contacts_) {
if (contact.getName() == name || contact.getPhone() == phone || contact.getQQ() == qq) {
cout << "联系人已存在" << endl;
return;
}
}
contacts_.push_back(Contact(name, phone, qq, email, hometown));
cout << "联系人已添加" << endl;
}
void ContactList::deleteContact(string key, string value) {
for (auto it = contacts_.begin(); it != contacts_.end(); ++it) {
if (key == "name" && it->getName() == value) {
contacts_.erase(it);
cout << "联系人已删除" << endl;
return;
} else if (key == "phone" && it->getPhone() == value) {
contacts_.erase(it);
cout << "联系人已删除" << endl;
return;
} else if (key == "qq" && it->getQQ() == value) {
contacts_.erase(it);
cout << "联系人已删除" << endl;
return;
}
}
cout << "联系人不存在" << endl;
}
void ContactList::modifyContact(string key, string value, string newName, string newPhone, string newQQ, string newEmail, string newHometown) {
for (auto& contact : contacts_) {
if (key == "name" && contact.getName() == value) {
contact.setName(newName);
contact.setPhone(newPhone);
contact.setQQ(newQQ);
contact.setEmail(newEmail);
contact.setHometown(newHometown);
cout << "联系人已修改" << endl;
return;
} else if (key == "phone" && contact.getPhone() == value) {
contact.setName(newName);
contact.setPhone(newPhone);
contact.setQQ(newQQ);
contact.setEmail(newEmail);
contact.setHometown(newHometown);
cout << "联系人已修改" << endl;
return;
} else if (key == "qq" && contact.getQQ() == value) {
contact.setName(newName);
contact.setPhone(newPhone);
contact.setQQ(newQQ);
contact.setEmail(newEmail);
contact.setHometown(newHometown);
cout << "联系人已修改" << endl;
return;
}
}
cout << "联系人不存在" << endl;
}
void ContactList::queryContact(string key, string value) const {
for (auto& contact : contacts_) {
if (key == "name" && contact.getName() == value) {
contact.printInfo();
return;
} else if (key == "phone" && contact.getPhone() == value) {
contact.printInfo();
return;
} else if (key == "qq" && contact.getQQ() == value) {
contact.printInfo();
return;
}
}
cout << "联系人不存在" << endl;
}
```
在这个设计中,我们定义了两个类:`Contact` 和 `ContactList`。`Contact` 类表示一个联系人,包含姓名、电话号码、QQ、电子邮件和籍贯等信息,并且实现了访问器和修改器方法,用于获取和设置联系人信息,以及打印联系人信息的 `printInfo` 方法。`ContactList` 类表示一个联系人列表,包含多个联系人,并且实现了增加、删除、修改和查询联系人的方法。
在 `ContactList` 类中,我们使用了 STL 中的 `vector` 容器来存储联系人列表。在增加联系人时,我们遍历已有的联系人列表,判断是否有重复的记录,如果有,则不添加,并打印提示信息。在查询、删除和修改联系人时,我们根据指定的键和值来查找特定的联系人,如果找到了,则进行相应的操作,并打印提示信息,否则打印联系人不存在的提示信息。
这个设计还可以进一步完善,例如:增加保存和读取联系人信息的功能,增加搜索联系人的功能等等。