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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 图片修复与…