python建通信录管理系统1).在TXT 文件中存储联系人的资料格式如下: (一) 序号 姓名 手机号 001 王 XX 1370000000 002 李 XX 1350000000 2)能够读取联系人的资料,合理的展现在界面上 3)能够实现联系人资料的更新(其中包括修改联系人资料和删除联系人资料),并将更新后的结果写入到交件中。 4.能够实现对指定联系人资料的查询 (其中包括精确查询、模糊查询,例如输入王*,可以查找出所有姓王的联系人资料,并显示在界面上。 5.保证程序的可靠性以及界面的易操作性。 6.使用面向对象编程思想,构造窗体用户界面(即通过窗体界面进行输入和输出) 代码的每一行添加注释
时间: 2024-02-16 09:59:51 浏览: 146
很好,这是一个关于Python构建通讯录管理系统的问题。
以下是一个基本的Python实现,按照您的要求包括读取、更新、查询等功能。代码中注释已经添加,以帮助您理解代码实现。
```python
import re
# 定义一个类 Contact,用于存储联系人信息
class Contact:
def __init__(self, id, name, phone):
self.id = id
self.name = name
self.phone = phone
def __str__(self):
return f"{self.id} {self.name} {self.phone}"
# 定义一个类 ContactBook,用于实现通讯录管理系统
class ContactBook:
def __init__(self, file):
self.contacts = []
self.file = file
self.load() # 加载通讯录
# 加载通讯录
def load(self):
with open(self.file, "r") as f:
for line in f:
# 使用正则表达式匹配每一行中的信息
match = re.match(r"(\d+)\s+(\S+)\s+(\d+)", line)
if match:
id = match.group(1)
name = match.group(2)
phone = match.group(3)
contact = Contact(id, name, phone)
self.contacts.append(contact)
# 更新通讯录
def update(self):
with open(self.file, "w") as f:
for contact in self.contacts:
f.write(str(contact) + "\n")
# 显示通讯录
def display(self):
for contact in self.contacts:
print(contact)
# 添加联系人
def add(self, name, phone):
# 找到最大的 id
max_id = 0
for contact in self.contacts:
if contact.id > max_id:
max_id = contact.id
# 创建新的联系人
new_contact = Contact(max_id + 1, name, phone)
self.contacts.append(new_contact)
self.update()
# 修改联系人
def update_contact(self, id, name, phone):
for contact in self.contacts:
if contact.id == id:
contact.name = name
contact.phone = phone
break
self.update()
# 删除联系人
def delete_contact(self, id):
for contact in self.contacts:
if contact.id == id:
self.contacts.remove(contact)
break
self.update()
# 精确查询联系人
def find_exact(self, name):
for contact in self.contacts:
if contact.name == name:
print(contact)
# 模糊查询联系人
def find_fuzzy(self, name):
for contact in self.contacts:
if contact.name.startswith(name):
print(contact)
# 定义一个 ContactBookGUI 类,用于实现通讯录管理系统的 GUI 界面
class ContactBookGUI:
def __init__(self):
self.book = ContactBook("contacts.txt")
self.display()
# 显示通讯录
def display(self):
print("通讯录:")
self.book.display()
print()
# 添加联系人
def add_contact(self, name, phone):
self.book.add(name, phone)
self.display()
# 修改联系人
def update_contact(self, id, name, phone):
self.book.update_contact(id, name, phone)
self.display()
# 删除联系人
def delete_contact(self, id):
self.book.delete_contact(id)
self.display()
# 精确查询联系人
def find_exact(self, name):
print(f'查询结果(精确查询):')
self.book.find_exact(name)
print()
# 模糊查询联系人
def find_fuzzy(self, name):
print(f'查询结果(模糊查询):')
self.book.find_fuzzy(name)
print()
# 创建 ContactBookGUI 实例并运行程序
gui = ContactBookGUI()
gui.add_contact("张三", "12345678")
gui.update_contact(1, "李四", "87654321")
gui.delete_contact(2)
gui.find_exact("张三")
gui.find_fuzzy("王")
```
在上述代码中,我们首先定义了一个 Contact 类,用于表示通讯录中的联系人信息。然后定义了一个 ContactBook 类,用于实现通讯录管理功能,包括加载通讯录、更新通讯录、显示通讯录、添加联系人、修改联系人、删除联系人、精确查询联系人和模糊查询联系人等功能。
接着,我们定义了一个 ContactBookGUI 类,用于实现通讯录管理系统的 GUI 界面。在该类的构造函数中,我们创建了一个 ContactBook 实例,并显示了通讯录。然后,我们实现了添加联系人、修改联系人、删除联系人、精确查询联系人和模糊查询联系人等功能,并在每次操作后显示更新后的通讯录。
最后,我们创建了一个 ContactBookGUI 实例,并运行程序。在程序运行时,我们首先显示了通讯录,然后依次执行了添加联系人、修改联系人、删除联系人、精确查询联系人和模糊查询联系人等操作,并在每次操作后显示了更新后的通讯录和查询结果。
阅读全文