15分钟学Python 第25天 :小项目简易银行系统

Day 25 小项目:简易银行系统

1. 项目概述

在这个项目中,我们将创建一个简易的银行系统,它支持账户的创建、存款、取款和查询余额等基本功能。该系统将使用面向对象编程的方法来组织代码,使其可扩展且易于维护。

1.1 项目目标

  • 实现一个基本的银行账户类
  • 支持存款、取款和查询余额功能
  • 确保数据的有效性与安全性

2. 系统设计

2.1 类图

我们将创建一个BankAccount类,它代表银行账户。该类的属性和方法如下:

属性类型描述
account_idstr账户ID
balancefloat账户余额
account_holderstr账户持有人
方法描述
__init__()构造函数,初始化账户ID、持有人和余额
deposit(amount)存款方法,增加余额
withdraw(amount)取款方法,减少余额
get_balance()查询余额方法,返回当前余额
__str__()返回账户信息的字符串表示

2.2 代码结构

项目的代码结构如下:

bank_system/
    ├── bank_account.py
    ├── main.py

3. 代码实现

3.1 bank_account.py

以下是BankAccount类的实现。

# bank_account.py
class BankAccount:
    def __init__(self, account_id, account_holder):
        self.account_id = account_id
        self.account_holder = account_holder
        self.balance = 0.0

    def deposit(self, amount):
        if amount <= 0:
            raise ValueError("存款金额必须大于0")
        self.balance += amount
        print(f"已存入: {amount}. 当前余额: {self.balance}")

    def withdraw(self, amount):
        if amount <= 0:
            raise ValueError("取款金额必须大于0")
        if amount > self.balance:
            raise ValueError("余额不足,无法取款")
        self.balance -= amount
        print(f"已取出: {amount}. 当前余额: {self.balance}")

    def get_balance(self):
        return self.balance

    def __str__(self):
        return f"账户ID: {self.account_id},账户持有人: {self.account_holder},余额: {self.balance}"

3.2 main.py

main.py中,我们将实现银行系统的主逻辑,包括用户交互。

# main.py
from bank_account import BankAccount

def main():
    print("欢迎来到简易银行系统")
    
    # 创建账户
    account_id = input("请输入账户ID: ")
    account_holder = input("请输入账户持有人姓名: ")
    account = BankAccount(account_id, account_holder)
    
    while True:
        print("\n请选择操作: ")
        print("1. 存款")
        print("2. 取款")
        print("3. 查询余额")
        print("4. 退出")
        
        choice = input("请输入操作编号: ")

        if choice == '1':
            amount = float(input("请输入存款金额: "))
            account.deposit(amount)

        elif choice == '2':
            amount = float(input("请输入取款金额: "))
            try:
                account.withdraw(amount)
            except ValueError as e:
                print(e)

        elif choice == '3':
            print(f"当前余额: {account.get_balance()}")

        elif choice == '4':
            print("谢谢使用,欢迎下次光临!")
            break

        else:
            print("无效选择,请重试.")

if __name__ == "__main__":
    main()

4. 代码运行流程图

以下是系统运行的简化流程图:

 +-------------------+
 |   启动程序        |
 +-------------------+
           |
           v
 +-------------------+
 |   创建银行账户    |
 +-------------------+
           |
           v
 +-------------------+
 |   选择操作        |
 +-------------------+
           |
  +--------+--------+--------+--------+
  |        |        |        |        |
  v        v        v        v        v
存款      取款     查询余额     退出
  |        |        |        |
  v        v        v        v
 +-------------------+
 |   继续操作还是退出? |
 +-------------------+

5. 项目功能详解

5.1 特性一:存款功能

用户可以输入存款金额,程序将检查金额的有效性(必须大于零),然后将金额添加到账户余额中并更新。

def deposit(self, amount):
    if amount <= 0:
        raise ValueError("存款金额必须大于0")
    self.balance += amount
    print(f"已存入: {amount}. 当前余额: {self.balance}")
5.2 特性二:取款功能

用户可以输入取款金额,程序会进行有效性检查(必须大于零且余额要足够),成功后从余额中扣除对应金额。

def withdraw(self, amount):
    if amount <= 0:
        raise ValueError("取款金额必须大于0")
    if amount > self.balance:
        raise ValueError("余额不足,无法取款")
    self.balance -= amount
    print(f"已取出: {amount}. 当前余额: {self.balance}")
5.3 特性三:查询余额

用户可以随时查询当前余额,程序将直接返回当前的账户余额。

def get_balance(self):
    return self.balance

6. 改进建议

虽然这个简易银行系统实现了基本功能,但我们可以进一步扩展和改进:

  1. 数据持久化

    • 将账户信息存储到文件或数据库中,以便下次运行时能够恢复。
  2. 多账户支持

    • 允许用户创建多个账户,通过账户ID进行管理。
  3. 用户认证

    • 实现登录和注册功能,以保障账户安全。
  4. 图形界面

    • 使用Tkinter或其他库创建图形用户界面,使用户操作更加直观。

7. 练习题

练习1:实现账户转账功能

添加一个方法transfer(self, target_account, amount),实现从当前账户向另一个账户转账的功能,确保转账金额的有效性。

def transfer(self, target_account, amount):
    self.withdraw(amount)
    target_account.deposit(amount)
练习2:添加账户历史记录

BankAccount类中添加一个transactions属性,保存每一笔交易的记录,实现get_transaction_history方法返回交易记录。

def __init__(self, account_id, account_holder):
    ...
    self.transactions = []

def deposit(self, amount):
    ...
    self.transactions.append(f"存款: {amount}")

def withdraw(self, amount):
    ...
    self.transactions.append(f"取款: {amount}")

def get_transaction_history(self):
    return self.transactions

8. 小结

通过本项目的实现,我们掌握了基本的面向对象设计思想,学会了如何使用类和方法组织代码,从而构建一个简单而功能完备的银行系统。该项目不仅使我们对Python的面向对象编程有了更深入的理解,还为实际的应用开发提供了良好的基础。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值