0

0

简单的银行账户系统如何实现 类封装与交易记录管理

P粉602998670

P粉602998670

发布时间:2025-08-16 17:00:02

|

1033人浏览过

|

来源于php中文网

原创

实现一个简单的银行账户系统需要通过类封装账户信息和操作并管理交易记录,具体做法是使用python的类将账户属性和行为封装起来,利用受保护属性防止直接访问余额,通过私有方法自动记录每次交易的类型、金额、时间和余额,确保交易可追溯,同时提供存款、取款、查询余额和交易历史的安全接口,所有操作均在方法内部更新余额和记录,最终实现数据安全与操作统一的面向对象设计。

简单的银行账户系统如何实现 类封装与交易记录管理

实现一个简单的银行账户系统,核心在于使用类封装账户信息和操作,并妥善管理交易记录。下面通过 Python 示例说明如何设计这样一个系统,重点突出类的封装性和交易记录的管理方式。

1. 账户类的基本封装

使用类(Class)将账户的基本属性(如账号、户名、余额)和行为(如存款、取款、查询余额)封装起来,保证数据的安全性和操作的统一性。

class BankAccount:
    def __init__(self, account_number, owner_name, initial_balance=0):
        self.account_number = account_number
        self.owner_name = owner_name
        self._balance = initial_balance  # 使用 _ 表示受保护,不建议直接访问
        self._transaction_history = []   # 存储交易记录
        self._record_transaction("账户创建", initial_balance)
  • __init__
    初始化账户基本信息。
  • _balance
    是受保护的属性,外部不应直接修改。
  • _transaction_history
    用于保存每笔交易的记录,是列表结构,每条记录为字典。

2. 交易记录的管理方式

每次发生资金变动时,都应记录交易类型、金额、时间及余额快照。这样可以实现可追溯的账单功能。

    def _record_transaction(self, transaction_type, amount):
        """私有方法:记录交易"""
        from datetime import datetime
        record = {
            "type": transaction_type,
            "amount": amount,
            "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
            "balance": self._balance
        }
        self._transaction_history.append(record)

这个方法被内部调用,确保每次操作都自动记账,避免遗漏。

3. 提供安全的操作接口

通过公开方法实现存款、取款等操作,并在操作中自动更新余额和记录。

XPaper Ai
XPaper Ai

AI撰写论文、开题报告生成、AI论文生成器尽在XPaper Ai论文写作辅助指导平台

下载
    def deposit(self, amount):
        if amount <= 0:
            print("存款金额必须大于0")
            return False
        self._balance += amount
        self._record_transaction("存款", amount)
        print(f"成功存入 {amount} 元")
        return True

    def withdraw(self, amount):
        if amount <= 0:
            print("取款金额必须大于0")
            return False
        if amount > self._balance:
            print("余额不足")
            return False
        self._balance -= amount
        self._record_transaction("取款", amount)
        print(f"成功取出 {amount} 元")
        return True

    def get_balance(self):
        return self._balance

这些方法对外提供安全的操作入口,内部自动处理余额和记录。

4. 查询交易记录

用户可能需要查看自己的交易历史,系统应提供只读接口。

    def show_transaction_history(self):
        print(f"\n账户 {self.account_number} 的交易记录:")
        for record in self._transaction_history:
            print(f"[{record['timestamp']}] {record['type']} {record['amount']}元 | 余额: {record['balance']}元")

这样用户可以清晰看到每一笔操作的时间和结果。

5. 使用示例

# 创建账户
account = BankAccount("123456", "张三", 1000)

# 操作
account.deposit(500)
account.withdraw(200)
account.withdraw(1500)  # 余额不足

# 查看记录
account.show_transaction_history()

输出示例:

成功存入 500 元
成功取出 200 元
余额不足

账户 123456 的交易记录:
[2025-04-05 10:00:00] 账户创建 1000元 | 余额: 1000元
[2025-04-05 10:00:01] 存款 500元 | 余额: 1500元
[2025-04-05 10:00:02] 取款 200元 | 余额: 1300元
[2025-04-05 10:00:03] 取款 1500元 | 余额: 1300元

小结

  • 类封装保证了数据安全和行为统一。
  • 交易记录用列表存储字典,结构清晰,易于扩展。
  • 所有资金变动都通过方法控制,并自动记账。
  • 私有或受保护属性防止外部直接篡改余额。

基本上就这些,不复杂但能体现面向对象设计的核心思想。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

716

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

626

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

739

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1236

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

575

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

699

2023.08.11

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
VBScript教程
VBScript教程

共10课时 | 5.9万人学习

WordPress中文手册文档
WordPress中文手册文档

共54课时 | 38.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号