Python銀行管理系統01升級(適合初學者)

目錄

框架如下:

1. Account類 - 賬戶數據模型

2. Bank類 - 銀行業務邏輯

3. BankApp類 - 圖形用戶界面

關鍵概念解析(適合初學者)

1. 面向對象編程(OOP)概念

2. Tkinter GUI編程基礎

3. 數據持久化

4. 輸入驗證

學習建議

系統功能概覽

完整代碼: 


在Python銀行管理系統01的基礎上,做一個完整的有有界面的銀行管理系統。

框架如下:

  1. 賬戶類(Account) - 存儲賬戶信息

  2. 銀行類(Bank) - 處理銀行業務邏輯

  3. 圖形界面類(BankApp) - 提供用戶界面

  4. 主程序入口 - 啟動應用

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86742.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為防火墻雙向NAT實驗

如圖所示&#xff0c; 企業內網有一臺Server2&#xff0c;通過在FW1上配置nat server&#xff0c;將Server2的www端口映射到了公網&#xff1b; 實驗環境中&#xff0c;內網和外網都使用外網的server1提供的DNS服務&#xff0c;在DNS服務器上添加A記錄&#xff0c;www.baidu.c…

前端路由的基石:深度剖析 Hash 與 History 模式的本質差異與實戰抉擇

在單頁面應用&#xff08;SPA&#xff09;統治現代Web開發的今天&#xff0c;前端路由已成為構建流暢用戶體驗的核心技術。而hash和history作為兩種主流實現方案&#xff0c;其設計理念和技術細節的差異直接影響著應用架構的選擇。本文將深入解析二者的技術本質&#xff0c;通過…

微機系統 - 緒論

緒論: 一:微處理器,微型計算機和微型計算機系統: 分類: 按照系統結構和基本工作原理.計算機分為5大部分:運算器,控制器,存儲器,輸入設備,輸出設備 按照體積,性能和價格分5類:巨型機,大型機,中型機,小型機,微型計算機(單板機,單片機) 微型計算機的特點:集成度高,體積小,重量輕…

基于Java+Springboot的寵物健康咨詢系統

源碼編號&#xff1a;S564 源碼名稱&#xff1a;基于Springboot的寵物健康咨詢系統 用戶類型&#xff1a;多角色&#xff0c;用戶、顧問、管理員 數據庫表數量&#xff1a;12 張表 主要技術&#xff1a;Java、Vue、ElementUl 、SpringBoot、Maven 運行環境&#xff1a;Win…

SpringBoot+MySQL寵物貓店管理系統

概述 基于SpringBootMySQL開發的寵物貓店管理系統完整源碼。該系統功能完善&#xff0c;包含前后臺完整功能模塊&#xff0c;代碼規范易于二次開發&#xff0c;是學習SpringBoot項目實戰的優秀范例。 主要內容 前臺功能展示 系統前臺設計簡潔實用&#xff0c;主要包含以下核…

UE5 - 制作《塞爾達傳說》中林克的技能 - 16 - 遙控炸彈(一)

讓我們繼續《塞爾達傳說》中林克技能的制作&#xff01;&#xff01;&#xff01; 本章節的核心目標&#xff1a;素材導入與遙控炸彈的外觀 先讓我們看一下完成后的效果&#xff1a; 基本流程&#xff1a;素材準備->C類開發->藍圖配置->場景部署 1.素材準備&#xff1…

HTTP中常見的Content-Type

Content-Type&#xff0c;也稱為互聯網媒體類型或MIME類型&#xff0c;是HTTP協議中的一個頭部字段&#xff0c;用于指定處理請求和響應中的媒體類型信息。它告訴服務器如何處理請求的數據&#xff0c;同時也指導客戶端&#xff08;通常是瀏覽器&#xff09;如何解析響應的數據…

Android11 wifi開啟源碼分析

目錄 一、APP層源碼分析 1.1、尋找頁面activity 1.2、尋找頁面開關按鈕布局 二&#xff0c;framework層代碼分析 2.1 開啟wifi入口 2.2 WiFiNative 三&#xff0c;HAL層代碼分析 這段時間擼了WIFI開啟流程源碼&#xff0c;本著前人栽樹后人乘涼的原則&#xff0c;有志于…

R語言使用nonrandom包進行傾向評分匹配

傾向評分匹配&#xff08;Propensity Score Matching&#xff0c;簡稱PSM&#xff09;是一種統計學方法&#xff0c;用于處理觀察研究&#xff08;Observational Study&#xff09;的數據&#xff0c;在SCI文章中應用非常廣泛。在觀察研究中&#xff0c;由于種種原因&#xff0…

LeetCode Hot 100 找到字符串中所有字母異位詞

給定兩個字符串 s 和 p&#xff0c;找到 s 中所有 p 的 異位詞 的子串&#xff0c;返回這些子串的起始索引。不考慮答案輸出的順序。 示例 1: 輸入: s "cbaebabacd", p "abc" 輸出: [0,6] 解釋: 起始索引等于 0 的子串是 "cba", 它是 "a…

關于廬山派多視頻層(layer)和bind_layer的應用

嘉立創分了適配層和OSD&#xff08;我稱它為圖片層&#xff09;顧名思義&#xff0c;一個是能顯示視頻流到LCD屏幕&#xff0c;一個是只能顯示照片&#xff0c;也就是你可以對不同層進行操作而不影響其他層&#xff0c;解決的場景就是用于你畫了一個正方形在照片上&#xff0c;…

多傳感器標定簡介

目錄 標定內容及方法 雷達內參標定 IMU內參標定 編碼器內參標定 相機內參標定 雷達和相機外參標定 多雷達外參標定 手眼標定 融合中標定 總結 連續時間 標定內容及方法 雷達內參標定 1) 目的 由于安裝原因&#xff0c;線束之間的夾角和設計不一致&#xff0c;會導致…

day46/60

浙大疏錦行 DAY 46 通道注意力(SE注意力) 知識點回顧&#xff1a; 不同CNN層的特征圖&#xff1a;不同通道的特征圖什么是注意力&#xff1a;注意力家族&#xff0c;類似于動物園&#xff0c;都是不同的模塊&#xff0c;好不好試了才知道。通道注意力&#xff1a;模型的定義和插…

提升創作效率:輕松調用固定素材與模板

日常工作和生活中&#xff0c;我們經常需要復制粘貼不同類型的數據&#xff0c;如文本、圖片、文件等。使用剪切板管理工具可以快速訪問之前復制的內容&#xff0c;而無需反復切換應用進行復制操作。 這款綠色便攜版應用&#xff0c;無需安裝&#xff0c;雙擊即開&#xff0c;…

【C++】組合模式

目錄 一、模式核心概念與結構二、C 實現示例&#xff1a;文件系統三、組合模式的關鍵特性四、應用場景五、組合模式與其他設計模式的關系六、C 標準庫中的組合模式應用七、優缺點分析八、實戰案例&#xff1a;圖形編輯器九、實現注意事項如果這篇文章對你有所幫助&#xff0c;渴…

C++包管理工具:conan2持續集成 (CI) 教程

1.持續集成 (CI) ? 這是一個高級主題&#xff0c;需要具備 Conan 的基礎知識。請先閱讀并練習用戶教程。本節面向設計和實施涉及 Conan 包的生產 CI 管道的 DevOps 和構建工程師。如果不是這種情況&#xff0c;您可以跳過本節。 持續集成 (CI) 對不同用戶和組織有不同的含義…

免費SSL證書一鍵申請與自動續期

免費SSL證書申請與自動續期教程 本文介紹如何通過樂此加密&#xff08;www.letsencrypt.top) 實現免費SSL證書一鍵配置和自動續期 一、準備工作 服務器要求 Linux 系統&#xff08;推薦 Ubuntu/CentOS&#xff09;已安裝 curl 和 crontab擁有 sudo 權限的用戶 域名驗證 確保域…

【NLP】自然語言項目設計

目錄 項目簡介 要求 需要考慮的問題 硬件需求和環境配置 n卡驅動配置 以cuda11.8 版本為例 下載對應的cudnn(version11) 安裝GPU版本的torch 安裝gpu版本的TensorFlow 檢查cuda安裝情況 項目簡介 訓練一個模型&#xff0c;實現歌詞仿寫生成 任務類型&#xff1a;文本…

設計模式:觀察者模式 (Observer) 案例詳解

目錄 一、引言&#xff1a;為什么需要觀察者模式&#xff1f; 二、觀察者模式的核心原理 1. 角色劃分 2. 類圖關系 三、經典案例解析 案例1&#xff1a;天氣監測系統 案例2&#xff1a;股票價格監控系統 案例3&#xff1a;MVC架構中的模型-視圖分離 案例4&#xff1a;J…

CTF-Misc:開啟全方位解題之旅

目錄 一、CTF-Misc 入門指引二、基礎技能儲備2.1 文件格式識別2.2 基礎工具使用 三、信息搜集技巧3.1 搜索引擎技巧3.2 網絡信息挖掘 四、編碼轉換奧秘4.1 常見編碼類型4.2 編碼轉換工具 五、隱寫分析秘籍5.1 圖片隱寫5.1.1 LSB 隱寫5.1.2 顏色通道與 Exif 信息5.1.3 圖片修復與…