手机通讯录系统设计与实现 内容:采用链式存储结构设计一个程序exp2-4.cpp,完成以下功能:(1)建立通讯录(2)增加联系人(3) 删除某位联系人(4)查找某位联系人(5)显示通讯录的内容
时间: 2024-10-11 08:07:28 浏览: 12
手机通讯录系统的设计与实现通常会基于数据结构和用户界面交互来考虑。在这个场景下,我们可以使用C++编程语言,结合链表数据结构来模拟通讯录的存储。
首先,我们需要创建一个`Contact`类,它包含姓名、电话号码等基本信息,作为节点的数据部分。然后可以定义一个`ContactList`类,使用单链表来存储`Contact`对象,每个节点代表一位联系人:
```cpp
class Contact {
public:
string name;
string phoneNumber;
// 构造函数,初始化联系人信息
Contact(string n, string p) : name(n), phoneNumber(p) {}
};
class ContactList {
private:
struct Node {
Contact contact;
Node* next;
};
Node* head;
public:
// 构造函数,初始化空列表
ContactList() : head(nullptr) {}
// 添加联系人
void addContact(const Contact& c) {
Node* newNode = new Node{c, head};
head = newNode;
}
// 删除联系人
bool removeContact(const string& name) {
if (!head) return false; // 如果为空则无法删除
for (Node* curr = head; curr; curr = curr->next) {
if (curr->contact.name == name) {
Node* temp = curr;
curr = curr->next;
delete temp;
return true;
}
}
return false; // 没找到该联系人
}
// 查找联系人
Contact findContact(const string& name) const {
for (const Node* curr = head; curr; curr = curr->next) {
if (curr->contact.name == name)
return curr->contact;
}
throw runtime_error("Contact not found"); // 如果找不到返回异常
return Contact{}; // 返回默认值或抛出异常后的占位符
}
// 显示通讯录内容
void displayContacts() const {
if (!head) {
cout << "No contacts in the address book.\n";
return;
}
for (const Node* curr = head; curr; curr = curr->next) {
cout << "Name: " << curr->contact.name << ", Phone: " << curr->contact.phoneNumber << endl;
}
}
};
```
接下来,你可以编写一个主函数来实现上述功能,如读取用户输入、操作通讯录并展示结果。记得处理可能出现的各种错误情况,例如删除不存在的联系人等。
阅读全文