目錄
框架如下:
1. Account類 - 賬戶數據模型
2. Bank類 - 銀行業務邏輯
3. BankApp類 - 圖形用戶界面
關鍵概念解析(適合初學者)
1. 面向對象編程(OOP)概念
2. Tkinter GUI編程基礎
3. 數據持久化
4. 輸入驗證
學習建議
系統功能概覽
完整代碼:
在Python銀行管理系統01的基礎上,做一個完整的有有界面的銀行管理系統。
框架如下:
-
賬戶類(Account) - 存儲賬戶信息
-
銀行類(Bank) - 處理銀行業務邏輯
-
圖形界面類(BankApp) - 提供用戶界面
-
主程序入口 - 啟動應用
1. Account類 - 賬戶數據模型
class Account:def __init__(self, name, password, balance=0, status="normal"):self.name = name # 賬戶名self.password = password # 密碼self.balance = balance # 賬戶余額self.status = status # 賬戶狀態(normal/locked)def __str__(self):return "--- 賬戶信息 ---\n" \"賬戶: {}\n" \"余額: ¥{}\n" \"狀態: {}".format(self.name, self.balance, self.status)
-
作用:存儲單個賬戶的信息
-
重要特性:
-
__init__
:構造函數,初始化賬戶屬性 -
__str__
:定義賬戶信息的顯示格式 -
賬戶狀態可以是"normal"(正常)或"locked"(鎖定)
-
2. Bank類 - 銀行業務邏輯
class Bank:def __init__(self):self.accounts = {} # 存儲所有賬戶的字典self.filename = "bank.txt" # 數據存儲文件# 賬戶驗證方法def verify(self, name, password):# 檢查用戶名和密碼是否匹配# 創建賬戶方法def create_account(self, name, password):# 檢查賬戶是否已存在# 查詢賬戶方法def query_account(self, name):# 返回賬戶信息字符串# 取款方法def withdraw(self, name, amount):# 檢查賬戶狀態和余額# 執行取款邏輯# 存款方法def deposit(self, name, amount):# 檢查賬戶狀態# 執行存款邏輯# 轉賬方法def transfer(self, name1, name2, amount):# 檢查兩個賬戶狀態# 檢查轉出賬戶余額# 執行轉賬邏輯# 鎖定賬戶方法def lock_account(self, name):# 設置賬戶狀態為locked# 解鎖賬戶方法def unlock_account(self, name):# 設置賬戶狀態為normal# 保存數據方法def save(self):# 使用pickle保存賬戶數據到文件# 加載數據方法def load(self):# 從文件加載賬戶數據
-
作用:處理所有銀行業務邏輯
-
重要特性:
-
使用字典存儲所有賬戶
-
使用pickle模塊實現數據持久化
-
每個方法都包含錯誤檢查(賬戶是否存在、狀態是否正常等)
-
3. BankApp類 - 圖形用戶界面
class BankApp:def __init__(self, root):# 初始化主窗口# 創建銀行實例# 加載數據# 創建標簽頁界面# 創建登錄標簽頁def create_login_tab(self):# 用戶名和密碼輸入框# 登錄按鈕# 創建注冊標簽頁def create_register_tab(self):# 新賬戶信息輸入框# 創建賬戶按鈕# 創建操作標簽頁def create_operations_tab(self):# 各種操作按鈕(查詢、存款、取款等)# 結果展示區域# 創建賬戶信息標簽頁def create_account_info_tab(self):# 所有賬戶信息展示# 創建關于標簽頁def create_about_tab(self):# 系統信息和使用說明# 登錄功能def login(self):# 驗證用戶名密碼# 設置當前用戶# 創建賬戶功能def create_account(self):# 驗證輸入信息# 調用bank.create_account# 其他功能方法...
-
作用:提供圖形用戶界面,連接用戶操作和銀行業務邏輯
-
重要特性:
-
使用ttk.Notebook實現標簽頁界面
-
每個標簽頁對應一個功能模塊
-
使用StringVar綁定狀態欄變量
-
使用scrolledtext顯示多行文本
-
關鍵概念解析(適合初學者)
1. 面向對象編程(OOP)概念
# 類定義
class Account:# 構造函數def __init__(self, name, password, balance=0, status="normal"):# 屬性初始化self.name = nameself.password = passwordself.balance = balanceself.status = status# 創建對象
account = Account("張三", "123456", 1000)
-
類(Class):藍圖或模板(如Account)
-
對象(Object):類的實例(如account)
-
屬性(Attribute):對象的狀態(如name, balance)
-
方法(Method):對象的行為(如deposit, withdraw)
2. Tkinter GUI編程基礎
# 創建主窗口
root = tk.Tk()
root.title("銀行管理系統")
root.geometry("900x600")# 創建框架
frame = ttk.Frame(root)
frame.pack()# 創建標簽
label = ttk.Label(frame, text="用戶名:")
label.pack()# 創建輸入框
entry = ttk.Entry(frame)
entry.pack()# 創建按鈕
button = ttk.Button(frame, text="登錄", command=login)
button.pack()# 啟動主循環
root.mainloop()
-
Tk():創建主窗口
-
組件:Label(標簽), Entry(輸入框), Button(按鈕)等
-
布局管理:pack(), grid(), place()
-
事件處理:command參數綁定函數
3. 數據持久化
# 保存數據
def save(self):with open(self.filename, 'wb') as file:pickle.dump(self.accounts, file)# 加載數據
def load(self):if os.path.exists(self.filename):with open(self.filename, 'rb') as file:self.accounts = pickle.load(file)
-
pickle模塊:Python對象序列化工具
-
wb/rb模式:二進制寫入/讀取
-
os.path.exists:檢查文件是否存在
4. 輸入驗證
def get_amount(self, title, prompt):while True:try:amount = simpledialog.askfloat(title, prompt, minvalue=0.01)if amount is None: # 用戶取消return Noneif amount <= 0:message