帮我编写基于Python语言的桌面应用程序:个人记账系统的代码 具体要求: (1)使用类实现数据封装; (2)使用tkinter实现界面UI设计。 (3)使用文件保存数据。 (4)能实现用户登陆注册功能和实现数据的增加、修改、删除和查询操作。 (5)开发平台:Python 3.7以上版本等软件。 (6)项目选题:开题前需向任何教师确认题目及开发难度是否符合课程要求。 (7)作品要求:界面美观易操作,人机交互符合商业应用流程。
时间: 2024-03-10 14:45:19 浏览: 13
好的,以下是一个简单的个人记账系统的Python代码,使用了类实现数据封装和tkinter实现界面UI设计,同时使用文件保存数据。代码中实现了用户的登陆注册功能以及数据的增加、修改、删除和查询操作。请注意,这个代码只是一个示例,可能需要根据具体需求进行修改和调整。
```python
import tkinter as tk
import tkinter.messagebox as messagebox
import pickle
class Account():
def __init__(self, name, amount):
self.name = name
self.amount = amount
class User():
def __init__(self, username, password):
self.username = username
self.password = password
self.accounts = []
def add_account(self, account):
self.accounts.append(account)
def remove_account(self, account):
self.accounts.remove(account)
def modify_account(self, account, name, amount):
account.name = name
account.amount = amount
class AccountSystem():
def __init__(self):
self.users = []
def register(self, username, password):
for user in self.users:
if user.username == username:
messagebox.showwarning('注册失败', '该用户名已经被注册!')
return
self.users.append(User(username, password))
messagebox.showinfo('注册成功', '恭喜,注册成功!')
def login(self, username, password):
for user in self.users:
if user.username == username and user.password == password:
return user
return None
def save_data(self):
with open('data.pickle', 'wb') as f:
pickle.dump(self.users, f)
def load_data(self):
try:
with open('data.pickle', 'rb') as f:
self.users = pickle.load(f)
except FileNotFoundError:
pass
class AccountSystemUI():
def __init__(self):
self.account_system = AccountSystem()
self.account_system.load_data()
self.current_user = None
self.window = tk.Tk()
self.window.title('个人记账系统')
self.window.geometry('400x400')
self.username_label = tk.Label(self.window, text='用户名:')
self.username_label.pack()
self.username_entry = tk.Entry(self.window)
self.username_entry.pack()
self.password_label = tk.Label(self.window, text='密码:')
self.password_label.pack()
self.password_entry = tk.Entry(self.window, show='*')
self.password_entry.pack()
self.login_button = tk.Button(self.window, text='登录', command=self.login)
self.login_button.pack()
self.register_button = tk.Button(self.window, text='注册', command=self.register)
self.register_button.pack()
self.account_name_label = tk.Label(self.window, text='账户名称:')
self.account_name_label.pack()
self.account_name_entry = tk.Entry(self.window)
self.account_name_entry.pack()
self.account_amount_label = tk.Label(self.window, text='账户余额:')
self.account_amount_label.pack()
self.account_amount_entry = tk.Entry(self.window)
self.account_amount_entry.pack()
self.add_button = tk.Button(self.window, text='增加账户', command=self.add_account, state=tk.DISABLED)
self.add_button.pack()
self.modify_button = tk.Button(self.window, text='修改账户', command=self.modify_account, state=tk.DISABLED)
self.modify_button.pack()
self.remove_button = tk.Button(self.window, text='删除账户', command=self.remove_account, state=tk.DISABLED)
self.remove_button.pack()
self.query_button = tk.Button(self.window, text='查询账户', command=self.query_account, state=tk.DISABLED)
self.query_button.pack()
def login(self):
username = self.username_entry.get()
password = self.password_entry.get()
user = self.account_system.login(username, password)
if user is not None:
self.current_user = user
self.username_entry.config(state=tk.DISABLED)
self.password_entry.config(state=tk.DISABLED)
self.login_button.config(state=tk.DISABLED)
self.register_button.config(state=tk.DISABLED)
self.add_button.config(state=tk.NORMAL)
self.modify_button.config(state=tk.NORMAL)
self.remove_button.config(state=tk.NORMAL)
self.query_button.config(state=tk.NORMAL)
messagebox.showinfo('登录成功', '欢迎回来,{}!'.format(username))
else:
messagebox.showwarning('登录失败', '用户名或密码错误!')
def register(self):
username = self.username_entry.get()
password = self.password_entry.get()
self.account_system.register(username, password)
def add_account(self):
name = self.account_name_entry.get()
amount = float(self.account_amount_entry.get())
account = Account(name, amount)
self.current_user.add_account(account)
self.account_system.save_data()
messagebox.showinfo('增加账户', '账户{}已经成功增加!'.format(name))
def modify_account(self):
account = self.get_selected_account()
if account is None:
return
name = self.account_name_entry.get()
amount = float(self.account_amount_entry.get())
self.current_user.modify_account(account, name, amount)
self.account_system.save_data()
messagebox.showinfo('修改账户', '账户{}已经成功修改!'.format(name))
def remove_account(self):
account = self.get_selected_account()
if account is None:
return
self.current_user.remove_account(account)
self.account_system.save_data()
messagebox.showinfo('删除账户', '账户{}已经成功删除!'.format(account.name))
def query_account(self):
account = self.get_selected_account()
if account is None:
return
messagebox.showinfo('查询账户', '账户名称:{}\n账户余额:{}'.format(account.name, account.amount))
def get_selected_account(self):
selection = self.accounts_list.curselection()
if len(selection) == 0:
messagebox.showwarning('操作失败', '请先选择一个账户!')
return None
index = selection[0]
return self.current_user.accounts[index]
def run(self):
self.window.mainloop()
ui = AccountSystemUI()
ui.run()
```
希望这个代码能对你有所帮助,如果有任何问题或疑问,欢迎随时提出。