通讯录管理系统1).在TXT文件中存储联系人的资料格式如下:(一) 序号 姓名 手机号 001 王 XX 1370000000 002 李 XX 1360000000 2).能够读取联系人的资料,合理的展现在界面上 3)能够实现联系人资料的更新(其中包括修改联系人资料和删除联系人资料),并将更新后的结果写入到文件中。 4.能够实现对指定联系人资料的查询(其中包括精确查询、模糊查询,例如输入王*,可以查找出所有姓王的联系人资料,并显示在界面上。 5.保证程序的可靠性以及界面的易操作性。使用面向对象编程思想,构造窗体用户界面(即,通过窗体界面进行输入和输出)用python要求有注释
时间: 2024-02-13 21:01:45 浏览: 140
好的,这是一个通讯录管理系统的需求描述,需要实现以下功能:
1. 读取联系人信息:从TXT文件中读取联系人信息,并在界面上展现。
2. 更新联系人信息:可以修改已有联系人的信息或删除联系人,更新后的结果需要写入文件中。
3. 查询联系人信息:可以进行精确或模糊查询,例如输入“王*”,可以查找出所有姓王的联系人信息。
4. 程序可靠性和界面易操作性:使用面向对象编程思想,构造窗体用户界面,保证程序的可靠性和界面的易操作性。
下面是一个Python代码的示例,用于实现这个通讯录管理系统的功能:
```python
import tkinter as tk
class Contact:
def __init__(self, id, name, phone):
self.id = id
self.name = name
self.phone = phone
class ContactList:
def __init__(self):
self.contacts = []
self.load_contacts()
def load_contacts(self):
try:
with open('contacts.txt', 'r') as f:
for line in f:
id, name, phone = line.strip().split('\t')
self.contacts.append(Contact(id, name, phone))
except FileNotFoundError:
pass
def save_contacts(self):
with open('contacts.txt', 'w') as f:
for contact in self.contacts:
f.write(f"{contact.id}\t{contact.name}\t{contact.phone}\n")
def add_contact(self, name, phone):
id = str(len(self.contacts) + 1).zfill(3)
self.contacts.append(Contact(id, name, phone))
self.save_contacts()
def update_contact(self, id, name, phone):
for contact in self.contacts:
if contact.id == id:
contact.name = name
contact.phone = phone
break
self.save_contacts()
def delete_contact(self, id):
self.contacts = [contact for contact in self.contacts if contact.id != id]
self.save_contacts()
def search_contacts(self, keyword):
result = []
for contact in self.contacts:
if contact.name.startswith(keyword):
result.append(contact)
return result
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title('通讯录管理系统')
self.create_widgets()
self.contact_list = ContactList()
def create_widgets(self):
self.search_label = tk.Label(self.master, text='搜索:')
self.search_label.grid(row=0, column=0)
self.search_entry = tk.Entry(self.master)
self.search_entry.grid(row=0, column=1)
self.search_button = tk.Button(self.master, text='查询', command=self.search_contacts)
self.search_button.grid(row=0, column=2)
self.add_label = tk.Label(self.master, text='添加联系人')
self.add_label.grid(row=1, column=0)
self.name_label = tk.Label(self.master, text='姓名:')
self.name_label.grid(row=2, column=0)
self.name_entry = tk.Entry(self.master)
self.name_entry.grid(row=2, column=1)
self.phone_label = tk.Label(self.master, text='电话:')
self.phone_label.grid(row=3, column=0)
self.phone_entry = tk.Entry(self.master)
self.phone_entry.grid(row=3, column=1)
self.add_button = tk.Button(self.master, text='添加', command=self.add_contact)
self.add_button.grid(row=4, column=1)
self.contact_listbox = tk.Listbox(self.master)
self.contact_listbox.grid(row=5, column=0, columnspan=3)
self.load_contacts()
self.update_label = tk.Label(self.master, text='修改联系人')
self.update_label.grid(row=6, column=0)
self.id_label = tk.Label(self.master, text='ID:')
self.id_label.grid(row=7, column=0)
self.id_entry = tk.Entry(self.master)
self.id_entry.grid(row=7, column=1)
self.update_name_label = tk.Label(self.master, text='姓名:')
self.update_name_label.grid(row=8, column=0)
self.update_name_entry = tk.Entry(self.master)
self.update_name_entry.grid(row=8, column=1)
self.update_phone_label = tk.Label(self.master, text='电话:')
self.update_phone_label.grid(row=9, column=0)
self.update_phone_entry = tk.Entry(self.master)
self.update_phone_entry.grid(row=9, column=1)
self.update_button = tk.Button(self.master, text='修改', command=self.update_contact)
self.update_button.grid(row=10, column=1)
self.delete_label = tk.Label(self.master, text='删除联系人')
self.delete_label.grid(row=11, column=0)
self.delete_id_label = tk.Label(self.master, text='ID:')
self.delete_id_label.grid(row=12, column=0)
self.delete_id_entry = tk.Entry(self.master)
self.delete_id_entry.grid(row=12, column=1)
self.delete_button = tk.Button(self.master, text='删除', command=self.delete_contact)
self.delete_button.grid(row=13, column=1)
def load_contacts(self):
for contact in self.contact_list.contacts:
self.contact_listbox.insert(tk.END, f"{contact.name}\t{contact.phone}")
def search_contacts(self):
keyword = self.search_entry.get()
self.contact_listbox.delete(0, tk.END)
for contact in self.contact_list.search_contacts(keyword):
self.contact_listbox.insert(tk.END, f"{contact.name}\t{contact.phone}")
def add_contact(self):
name = self.name_entry.get()
phone = self.phone_entry.get()
self.contact_list.add_contact(name, phone)
self.contact_listbox.insert(tk.END, f"{name}\t{phone}")
def update_contact(self):
id = self.id_entry.get()
name = self.update_name_entry.get()
phone = self.update_phone_entry.get()
self.contact_list.update_contact(id, name, phone)
self.contact_listbox.delete(0, tk.END)
self.load_contacts()
def delete_contact(self):
id = self.delete_id_entry.get()
self.contact_list.delete_contact(id)
self.contact_listbox.delete(0, tk.END)
self.load_contacts()
root = tk.Tk()
app = Application(master=root)
app.mainloop()
```
这个代码中定义了三个类:`Contact`类用于表示一个联系人,`ContactList`类用于管理联系人列表,`Application`类用于构造窗体用户界面。其中,`ContactList`类中的`load_contacts`方法用于从文件中读取联系人信息,`save_contacts`方法用于将联系人信息写入文件。`Application`类中的`create_widgets`方法用于创建窗体界面,包括查询、添加、修改和删除联系人的功能。整个程序使用了面向对象编程思想,保证了程序的可靠性和界面的易操作性。
阅读全文