diff --git a/yinhang.py b/yinhang.py new file mode 100644 index 0000000..c21cb96 --- /dev/null +++ b/yinhang.py @@ -0,0 +1,167 @@ +import tkinter as tk +from tkinter import messagebox +from PIL import Image, ImageTk + + +class BankSystem: + def __init__(self): + self.accounts = {} + self.current_id = 0 + + def create_account(self, name, amount): + if name in self.accounts: + messagebox.showerror('错误', '帐户已存在.') + else: + self.current_id += 1 + self.accounts[name] = [self.current_id, float(amount)] + + def deposit(self, name, amount): + if name not in self.accounts: + messagebox.showerror('错误', '找不到帐户.') + else: + self.accounts[name][1] += float(amount) + messagebox.showinfo('成功', f'{amount} 元人民币存入帐户 {name}') + + def withdraw(self, name, amount): + if name not in self.accounts: + messagebox.showerror('错误', '找不到帐户..') + else: + if self.accounts[name][1] < float(amount): + messagebox.showerror('错误', '余额不足') + else: + self.accounts[name][1] -= float(amount) + messagebox.showinfo('成功', f'{amount} 元人民币从帐户中取出 {name}') + + def transfer(self, sender_name, receiver_name, amount): + if sender_name not in self.accounts or receiver_name not in self.accounts: + messagebox.showerror('错误', '账号不存在') + else: + if self.accounts[sender_name][1] < float(amount): + messagebox.showerror('错误', '余额不足') + else: + self.accounts[sender_name][1] -= float(amount) + self.accounts[receiver_name][1] += float(amount) + messagebox.showinfo('成功', f'{amount} 元人民币从帐户 {sender_name} 转出到帐户 {receiver_name}') + + def check_balance(self, name): + if name not in self.accounts: + messagebox.showerror('错误', '找不到帐户..') + else: + balance = self.accounts[name][1] + balance = int(balance) + messagebox.showinfo('Balance', f'账户 {name} 余额为 {balance} 元') + + +class BankGUI: + def __init__(self): + self.bank = BankSystem() + self.root = tk.Tk() + self.root.title('银行管理系统') + self.root.geometry('900x800') + + # 设置背景图片 + self.background_image = Image.open('background.jpg') + self.background_photo = ImageTk.PhotoImage(self.background_image) + self.background_label = tk.Label(self.root, image=self.background_photo) + self.background_label.place(x=0, y=0, relwidth=1, relheight=1) + + # 创建账户 + self.create_label = tk.Label(self.root, text='创建账户', font=('Arial', 16, 'bold')) + self.create_label.place(x=100, y=100) + self.name_label = tk.Label(self.root, text='账户名:') + self.name_label.place(x=100, y=150) + self.name_entry = tk.Entry(self.root) + self.name_entry.place(x=200, y=150) + self.amount_label = tk.Label(self.root, text='初始金额:') + self.amount_label.place(x=100, y=200) + self.amount_entry = tk.Entry(self.root) + self.amount_entry.place(x=200, y=200) + self.create_button = tk.Button(self.root, text='创建', command=self.create_account) + self.create_button.place(x=200, y=250) + + # 存款 + self.deposit_label = tk.Label(self.root, text='存款', font=('Arial', 16, 'bold')) + self.deposit_label.place(x=400, y=100) + self.deposit_name_label = tk.Label(self.root, text='账户名:') + self.deposit_name_label.place(x=400, y=150) + self.deposit_name_entry = tk.Entry(self.root) + self.deposit_name_entry.place(x=500, y=150) + self.deposit_amount_label = tk.Label(self.root, text='存款金额:') + self.deposit_amount_label.place(x=400, y=200) + self.deposit_amount_entry = tk.Entry(self.root) + self.deposit_amount_entry.place(x=500, y=200) + self.deposit_button = tk.Button(self.root, text='存款', command=self.deposit) + self.deposit_button.place(x=500, y=250) + + # 取款 + self.withdraw_label = tk.Label(self.root, text='取款', font=('Arial', 16, 'bold')) + self.withdraw_label.place(x=100, y=350) + self.withdraw_name_label = tk.Label(self.root, text='账户名:') + self.withdraw_name_label.place(x=100, y=400) + self.withdraw_name_entry = tk.Entry(self.root) + self.withdraw_name_entry.place(x=200, y=400) + self.withdraw_amount_label = tk.Label(self.root, text='取款金额:') + self.withdraw_amount_label.place(x=100, y=450) + self.withdraw_amount_entry = tk.Entry(self.root) + self.withdraw_amount_entry.place(x=200, y=450) + self.withdraw_button = tk.Button(self.root, text='取款', command=self.withdraw) + self.withdraw_button.place(x=200, y=500) + # 转账 + self.transfer_label = tk.Label(self.root, text='转账', font=('Arial', 16, 'bold')) + self.transfer_label.place(x=400, y=350) + self.transfer_sender_label = tk.Label(self.root, text='转出账户:') + self.transfer_sender_label.place(x=400, y=400) + self.transfer_sender_entry = tk.Entry(self.root) + self.transfer_sender_entry.place(x=500, y=400) + self.transfer_receiver_label = tk.Label(self.root, text='转入账户:') + self.transfer_receiver_label.place(x=400, y=450) + self.transfer_receiver_entry = tk.Entry(self.root) + self.transfer_receiver_entry.place(x=500, y=450) + self.transfer_amount_label = tk.Label(self.root, text='转账金额:') + self.transfer_amount_label.place(x=400, y=500) + self.transfer_amount_entry = tk.Entry(self.root) + self.transfer_amount_entry.place(x=500, y=500) + self.transfer_button = tk.Button(self.root, text='转账', command=self.transfer) + self.transfer_button.place(x=500, y=550) + + # 查询余额 + self.balance_label = tk.Label(self.root, text='查询余额', font=('Arial', 16, 'bold')) + self.balance_label.place(x=100, y=600) + self.balance_name_label = tk.Label(self.root, text='账户名:') + self.balance_name_label.place(x=100, y=650) + self.balance_name_entry = tk.Entry(self.root) + self.balance_name_entry.place(x=200, y=650) + self.balance_button = tk.Button(self.root, text='查询', command=self.check_balance) + self.balance_button.place(x=200, y=700) + + self.root.mainloop() + + def create_account(self): + name = self.name_entry.get() + amount = self.amount_entry.get() + self.bank.create_account(name, amount) + messagebox.showinfo('Success', f'创建成功 账号:{name} 账号余额:{amount}') + + def deposit(self): + name = self.deposit_name_entry.get() + amount = self.deposit_amount_entry.get() + self.bank.deposit(name, amount) + + def withdraw(self): + name = self.withdraw_name_entry.get() + amount = self.withdraw_amount_entry.get() + self.bank.withdraw(name, amount) + + def transfer(self): + sender = self.transfer_sender_entry.get() + receiver = self.transfer_receiver_entry.get() + amount = self.transfer_amount_entry.get() + self.bank.transfer(sender, receiver, amount) + + def check_balance(self): + name = self.balance_name_entry.get() + balance = self.bank.check_balance(name) + + +if __name__ == '__main__': + bank_gui = BankGUI()