完成通讯录管理系统,具有以下功能:(1)增加联系人。 (2)删除联系人。 (3)可按联系人姓名、单位、电话,查找对应的联系人,如果查询结果有多个,输出所有结果。 (4)提供联系人信息的保存、读取功能。写代码
时间: 2024-12-22 11:17:16 浏览: 3
要实现一个简单的通讯录管理系统,我们可以使用Python的数据结构如字典或列表来存储联系人的信息。这里我将演示如何使用字典实现这个功能,并提供了相应的函数来完成上述要求的功能。我们将联系人信息表示为一个字典,其中包含姓名(name),单位(company),电话(phone)等字段。
```python
class AddressBook:
def __init__(self):
self.contacts = {}
# 添加联系人
def add_contact(self, name, company, phone):
if not self.contacts.get(name):
self.contacts[name] = {'company': company, 'phone': phone}
print(f"Contact '{name}' added successfully.")
else:
print("A contact with the same name already exists.")
# 删除联系人
def delete_contact(self, name):
if name in self.contacts:
del self.contacts[name]
print(f"Contact '{name}' deleted.")
else:
print("No such contact found.")
# 查找联系人
def search_contact(self, query):
results = [contact for contact in self.contacts.values() if any(query_field in contact for query_field in ['name', 'company', 'phone'])]
if results:
print("Search Results:")
for result in results:
print(f"- Name: {result['name']}, Company: {result['company']}, Phone: {result['phone']}")
else:
print("No matching contacts found.")
# 保存并读取联系人
def save_and_load(self, filename="contacts.json"):
try:
with open(filename, 'w') as file:
json.dump(self.contacts, file)
print("Contacts saved to", filename)
loaded_contacts = {}
if os.path.exists(filename):
with open(filename, 'r') as file:
loaded_contacts = json.load(file)
else:
print("No contacts file found.")
if loaded_contacts:
print("Loaded contacts:")
for contact in loaded_contacts.values():
print(f"- Name: {contact['name']}, Company: {contact['company']}, Phone: {contact['phone']}")
else:
print("No contacts loaded from the file.")
except Exception as e:
print("Error:", str(e))
# 创建实例并测试
address_book = AddressBook()
address_book.add_contact('John Doe', 'Google', '555-1234')
address_book.search_contact('John')
address_book.delete_contact('John Doe')
address_book.save_and_load()
```
在这个示例中,我们创建了一个`AddressBook`类,包含了添加、删除、搜索和保存/加载联系人的方法。数据被存储在字典中,然后可以通过JSON文件的形式进行持久化。请注意,实际项目中可能需要处理更复杂的错误情况以及优化搜索性能,比如使用哈希表或数据库存储大量数据。
阅读全文