.利用适当的容器类实现电话簿类 PhoneBook,要求如下。 (1) 联系人信息包括:姓名,电话号码。 (2)支持添加新联系人、删除联系人。 (3)支持双向查找:给定姓名查找电话号码,给定电话号码查找姓名。 (4)支持电话簿导出到文本文件,导出的文件每行存储一条联系人记录,姓名和电话号码之间用空白分隔。 (5) 支持从文本文件导入电话簿;文件中每行有一条联系人记录,姓名和电话号码之间用空白分隔。
时间: 2024-02-25 09:57:47 浏览: 75
容器类实现的电话本
好的,我了解了您的问题。以下是一个可能的实现:
```python
class Contact:
def __init__(self, name, phone_number):
self.name = name
self.phone_number = phone_number
class PhoneBook:
def __init__(self):
self.contacts = []
def add_contact(self, name, phone_number):
contact = Contact(name, phone_number)
self.contacts.append(contact)
def remove_contact(self, name):
for contact in self.contacts:
if contact.name == name:
self.contacts.remove(contact)
return
def find_by_name(self, name):
for contact in self.contacts:
if contact.name == name:
return contact.phone_number
def find_by_phone_number(self, phone_number):
for contact in self.contacts:
if contact.phone_number == phone_number:
return contact.name
def export_to_file(self, file_name):
with open(file_name, 'w') as f:
for contact in self.contacts:
f.write(contact.name + ' ' + contact.phone_number + '\n')
def import_from_file(self, file_name):
with open(file_name, 'r') as f:
for line in f:
name, phone_number = line.strip().split(' ')
self.add_contact(name, phone_number)
```
在这个实现中,我们定义了两个类:Contact 表示一个联系人,PhoneBook 表示电话簿。PhoneBook 类包含了添加、删除、查找联系人的方法,以及导入和导出电话簿的功能。
我们使用一个列表来存储电话簿中的联系人,每个联系人是一个 Contact 对象。添加联系人时,我们创建一个新的 Contact 对象,然后将其添加到列表中。删除联系人时,我们遍历列表,找到与给定姓名匹配的联系人,然后将其从列表中删除。查找联系人时,我们遍历列表,找到与给定姓名或电话号码匹配的联系人,然后返回相应的信息。导入和导出电话簿时,我们使用文件 I/O 操作来读取和写入文件。
这个实现只是一个简单的示例,实际应用中可能需要更复杂的数据结构和算法来实现更高效的操作。
阅读全文