当前位置: 首页 > news >正文

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.lqws.cn/news/571483.html

相关文章:

  • 【百日精通JAVA | 语法篇】static关键字
  • CppCon 2017 学习:Undefined Behavior in 2017
  • idea运行到远程机器 和 idea远程JVM调试
  • x86 rop攻击理解2
  • 设计模式-外观模式、适配器模式
  • 设备健康状态实时监测:从技术原理到中讯烛龙的智能实践
  • X-Search:Spring AI实现的AI智能搜索
  • redis延时双删,为什么第一次删除
  • 检查达梦外部表
  • ROS的可视化工具rviz介绍
  • wpf的Binding之UpdateSourceTrigger
  • PaddleNLP
  • 桌面小屏幕实战课程:DesktopScreen 18 FONTPAINT
  • RAG检索增强生成在垂类AI应用效能优化中的应用
  • 【硬核数学】6. 升级你的线性代数:张量,深度学习的多维数据语言《从零构建机器学习、深度学习到LLM的数学认知》
  • 【Java EE初阶 --- 多线程(进阶)】锁策略
  • 构建创意系统:驾驭Audition与Photoshop的AI之力,洞悉原子化设计哲学
  • Cursor1.1.6安装c++插件
  • MyBatis实战指南(八)MyBatis日志
  • 【数据集处理】基于 3D-GloBFP建筑轮廓数据 栅格化建筑数据(完整Python代码)
  • Day.46
  • 水果维生素含量排名详表
  • 【硬核数学】9. 驯服“梯度下降”:深度学习中的优化艺术与正则化技巧《从零构建机器学习、深度学习到LLM的数学认知》
  • 【JavaSE】反射学习笔记
  • 中州养老:学会设计数据库表
  • WebRTC(十三):信令服务器
  • Spring事件驱动模型核心:ApplicationEventMulticaster初始化全解析
  • 图书管理系统练习项目源码-前后端分离-使用node.js来做后端开发
  • NV064NV065美光固态闪存NV067NV076
  • 申论审题训练