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

15分钟学Python 第26天 : Python标准库简易银行系统

Day 26: Python标准库 - 简易银行系统

课程目标

本节课旨在通过构建一个简易银行系统来介绍Python标准库的使用。学生将学习如何使用文件操作、异常处理以及数据结构等来管理银行账户信息,实现基本的银行操作。

学习大纲

  1. 系统需求分析
  2. 设计银行账户类
  3. 实现基本银行操作
  4. 文件操作与数据持久化
  5. 异常处理
  6. 系统测试与验证
  7. 总结与扩展

1. 系统需求分析

我们的简易银行系统需要实现以下功能:

功能描述
创建账户用户可以创建新的银行账户
查询余额用户可以查询账户的余额
存款用户可以向账户存款
取款用户可以从账户取款
账户信息管理存储和读取账户信息

需求分析示例

我们将通过一个Python类 BankAccount 来实现账户功能,每个账户具有一个唯一的账户ID、账户持有人姓名和账户余额。


2. 设计银行账户类

首先我们定义银行账户类的基本结构:

class BankAccount:def __init__(self, account_id, owner, balance=0):self.account_id = account_idself.owner = ownerself.balance = balancedef deposit(self, amount):if amount > 0:self.balance += amountreturn self.balanceelse:raise ValueError("存款金额必须大于0")def withdraw(self, amount):if 0 < amount <= self.balance:self.balance -= amountreturn self.balanceelse:raise ValueError("取款金额无效")def get_balance(self):return self.balancedef __str__(self):return f"账户ID: {self.account_id}, 持有人: {self.owner}, 余额: {self.balance}"

解释代码

  • __init__ 方法用于初始化账户信息。
  • depositwithdraw 方法用于处理存款和取款操作。
  • get_balance 方法用于查询余额。
  • __str__ 方法用于打印账户信息,方便调试。

3. 实现基本银行操作

我们可以实现一个简单的用户界面来与系统交互。以下是一个示例:

def main():accounts = {}while True:action = input("请选择操作: 1. 创建账户 2. 存款 3. 取款 4. 查询余额 5. 退出\n")if action == '1':account_id = input("请输入账户ID: ")owner = input("请输入持有人姓名: ")accounts[account_id] = BankAccount(account_id, owner)print(f"账户创建成功: {accounts[account_id]}")elif action == '2':account_id = input("请输入账户ID: ")amount = float(input("请输入存款金额: "))if account_id in accounts:new_balance = accounts[account_id].deposit(amount)print(f"存款成功, 新余额: {new_balance}")else:print("账户不存在")elif action == '3':account_id = input("请输入账户ID: ")amount = float(input("请输入取款金额: "))if account_id in accounts:try:new_balance = accounts[account_id].withdraw(amount)print(f"取款成功, 新余额: {new_balance}")except ValueError as e:print(e)else:print("账户不存在")elif action == '4':account_id = input("请输入账户ID: ")if account_id in accounts:print(f"当前余额: {accounts[account_id].get_balance()}")else:print("账户不存在")elif action == '5':print("退出系统")breakelse:print("无效操作,请重试")if __name__ == "__main__":main()

运行流程图

以下是系统操作的流程图,展示了不同操作的逻辑流程:

┌───────────────┐
│  开始         │
└─────┬─────────┘│▼
┌───────────────┐
│  选择操作     │
└─────┬─────────┘│┌────┴─────┐│          │▼          ▼
创建账户   查询余额│          ││          ▼│       账户存在?▼          │
存款操作   ┌─────┐│          │  是 │└─────────>│显示││       └─────┘
取款操作      ││       ┌─────┐│       │  否 ││       └─────┘│          │ ┌────▼────┐    ││获取余额 │<───┘└─────────┘│┌────▼────┐│   退出  │└─────────┘

4. 文件操作与数据持久化

为了实现数据的持久化,我们需要将账户信息写入文件。我们可以使用Python的 csv 模块来完成这一功能。

示例代码 - 文件操作

import csvdef save_accounts(accounts):with open('accounts.csv', mode='w', newline='') as file:writer = csv.writer(file)for account in accounts.values():writer.writerow([account.account_id, account.owner, account.balance])def load_accounts():accounts = {}try:with open('accounts.csv', mode='r') as file:reader = csv.reader(file)for row in reader:account_id, owner, balance = rowaccounts[account_id] = BankAccount(account_id, owner, float(balance))except FileNotFoundError:pass  # 文件不存在时返回空字典return accounts

解释代码

  • save_accounts 方法将现有账户信息写入 accounts.csv 文件。
  • load_accounts 方法从文件读取账户信息并重新创建 BankAccount 对象。

在主程序中调用

main 函数开始时,我们可以调用 load_accounts() 加载之前保存的账户数据,在退出前调用 save_accounts(accounts) 保存账户数据。

def main():accounts = load_accounts()# 其余代码...

5. 异常处理

我们在程序中开设了一些异常处理机制,以确保程序的健壮性。例如,在存款和取款时,我们检查金额的有效性;在读取账户信息时,我们捕获文件未找到的异常。

完善异常处理的示例

def withdraw(self, amount):if amount <= 0:raise ValueError("取款金额必须大于0")if amount > self.balance:raise ValueError("余额不足")self.balance -= amountreturn self.balance

6. 系统测试与验证

在完成系统的实现后,我们需要进行测试以确保各个功能模块的正确性。测试包括:

  1. 创建账户
  2. 存款和取款操作
  3. 查询余额
  4. 文件读写操作

测试用例示例

测试用例序号测试内容预期结果
1创建新账户账户创建成功
2存款500余额应为500
3取款200余额应为300
4查询余额返回300
5存款-100抛出异常
6取款400抛出异常

7. 总结与扩展

本课小结

本次课程通过构建简易银行系统,深入了解了Python标准库在文件操作、数据结构和异常处理方面的应用。同时也学习了如何实现一个简单的命令行用户交互程序。

扩展思考

未来,我们可以将此系统扩展为一个支持多用户并发操作的应用程序。例如,通过引入数据库(如SQLite)来存储账户信息,或使用Flask等框架构建Web应用,提供更加灵活的用户界面。此外,还可以加入用户身份验证、交易记录等更复杂的功能。

结束语

希望同学们通过本节课的学习能够掌握Python标准库的使用,并能在实际项目中灵活应用这些知识。


练习题

  1. 请扩展银行系统,加入账户信息修改功能。
  2. 请实现账户交易记录功能,记录每次存取款的详细信息。
  3. 尝试将此系统封装为一个模块,以便在其他项目中重用。

怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!


http://www.mrgr.cn/news/38070.html

相关文章:

  • 华为OD机试 - 密钥格式化(Python/JS/C/C++ 2024 E卷 100分)
  • 越来越卷,事无巨细的日报、周报难为死IT牛马们了!如何破局?
  • 【anki】显示 “连接超时,请更换网络后重试” 怎么办
  • 【代码模板】Python Decorator / 装饰器
  • AI产品经理学习路径:从零基础到精通,从此篇开始!
  • 前端框架对比与选择:Vue.js、React、Angular及其他
  • 信号处理: Block Pending Handler 与 SIGKILL/SIGSTOP 实验
  • MySQL 临时表
  • Java | Leetcode Java题解之第441题排列硬币
  • HarmonyOS故障恢复实践
  • 时间安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞
  • springboot农产品销售信息微信小程序—计算机毕业设计源码35557
  • 既然有HTTP协议,为什么还要有RPC?
  • VGA/HDMI/DP接口和USB、串口通信协议
  • manim中获取并定位不规则页面的中心位置
  • Pandas空值识别,空值填充,空值过滤方法超详细解读
  • Java | Leetcode Java题解之第442题数组中重复的数据
  • OLMo - 训练和使用AI2 模型
  • 一款革命性的AI写作工具——文字游侠AI大模型重大升级,创作效率提高高达20倍,小白也能轻松实现月入过万!
  • Leetcode 740. 删除并获得点数