目录
框架如下:
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