通讯录管理系统1).在TXT文件中存储联系人的资料格式如下:(一) 序号 姓名 手机号 001 王 XX 1370000000 002 李 XX 1360000000 2).能够读取联系人的资料,合理的展现在界面上 3)能够实现联系人资料的更新(其中包括修改联系人资料和删除联系人资料),并将更新后的结果写入到文件中。 4.能够实现对指定联系人资料的查询(其中包括精确查询、模糊查询,例如输入王*,可以查找出所有姓王的联系人资料,并显示在界面上。 5.保证程序的可靠性以及界面的易操作性。用python写出代码要求使用面向对象编程思想,构造窗体用户界面(即,通过窗体界面进行输入和输出)有注释
时间: 2024-02-13 14:06:18 浏览: 145
好的,这是一个关于通讯录管理系统的问题。以下是基于Python的面向对象编程思想的代码:
```
import tkinter as tk
class Contact:
def __init__(self, id, name, phone):
self.id = id
self.name = name
self.phone = phone
class ContactBook:
def __init__(self):
self.contacts = []
def add_contact(self, id, name, phone):
contact = Contact(id, name, phone)
self.contacts.append(contact)
def remove_contact(self, id):
for contact in self.contacts:
if contact.id == id:
self.contacts.remove(contact)
def update_contact(self, id, name, phone):
for contact in self.contacts:
if contact.id == id:
contact.name = name
contact.phone = phone
def search_contact(self, keyword):
results = []
for contact in self.contacts:
if contact.name.startswith(keyword):
results.append(contact)
return results
def load_from_file(self, filename):
with open(filename, 'r') as f:
for line in f:
fields = line.strip().split()
if len(fields) == 3:
id, name, phone = fields
self.add_contact(id, name, phone)
def save_to_file(self, filename):
with open(filename, 'w') as f:
for contact in self.contacts:
f.write(f"{contact.id} {contact.name} {contact.phone}\n")
class ContactBookUI:
def __init__(self):
self.contact_book = ContactBook()
self.window = tk.Tk()
self.window.title("Contact Book")
self.create_widgets()
def create_widgets(self):
tk.Label(self.window, text="ID").grid(row=0, column=0)
tk.Label(self.window, text="Name").grid(row=0, column=1)
tk.Label(self.window, text="Phone").grid(row=0, column=2)
self.id_entry = tk.Entry(self.window)
self.name_entry = tk.Entry(self.window)
self.phone_entry = tk.Entry(self.window)
self.id_entry.grid(row=1, column=0)
self.name_entry.grid(row=1, column=1)
self.phone_entry.grid(row=1, column=2)
self.add_button = tk.Button(self.window, text="Add", command=self.add_contact)
self.remove_button = tk.Button(self.window, text="Remove", command=self.remove_contact)
self.update_button = tk.Button(self.window, text="Update", command=self.update_contact)
self.search_button = tk.Button(self.window, text="Search", command=self.search_contact)
self.add_button.grid(row=2, column=0)
self.remove_button.grid(row=2, column=1)
self.update_button.grid(row=2, column=2)
self.search_button.grid(row=3, column=0)
self.results_listbox = tk.Listbox(self.window)
self.results_listbox.grid(row=4, column=0, columnspan=3)
def add_contact(self):
id = self.id_entry.get()
name = self.name_entry.get()
phone = self.phone_entry.get()
self.contact_book.add_contact(id, name, phone)
self.contact_book.save_to_file("contacts.txt")
self.id_entry.delete(0, tk.END)
self.name_entry.delete(0, tk.END)
self.phone_entry.delete(0, tk.END)
def remove_contact(self):
id = self.id_entry.get()
self.contact_book.remove_contact(id)
self.contact_book.save_to_file("contacts.txt")
self.id_entry.delete(0, tk.END)
def update_contact(self):
id = self.id_entry.get()
name = self.name_entry.get()
phone = self.phone_entry.get()
self.contact_book.update_contact(id, name, phone)
self.contact_book.save_to_file("contacts.txt")
self.id_entry.delete(0, tk.END)
self.name_entry.delete(0, tk.END)
self.phone_entry.delete(0, tk.END)
def search_contact(self):
keyword = self.name_entry.get()
self.results_listbox.delete(0, tk.END)
results = self.contact_book.search_contact(keyword)
for contact in results:
self.results_listbox.insert(tk.END, f"{contact.id} {contact.name} {contact.phone}")
def run(self):
self.contact_book.load_from_file("contacts.txt")
self.window.mainloop()
if __name__ == '__main__':
ui = ContactBookUI()
ui.run()
```
这个程序实现了一个简单的通讯录管理系统,包括添加、删除、更新和查询联系人。联系人的信息存储在一个文本文件中。程序使用了Tkinter库来创建窗口用户界面。
阅读全文