You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
7.5 KiB

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()