Python 简单银行系统

在这里插入图片描述

1. 函数方法

import datetime


balance = 1000
account_log = []

def validate(func):
    def wrapper(*args,**kwargs):
        amount = str(args[0])
        # 123.456 , 100.01 , 100  index .
        index = amount.index(".")
        if len(amount) - index - 1 > 2:
            print("输入格式有误,小数点后最多保留2位")
        else:
            func(*args,**kwargs)
    return wrapper

@validate
def deposit(amount):
    """
    存款操作
    :param amount: 存入金额
    :return: None
    """
    global balance
    balance += amount
    write_log(amount,"存入")

@validate
def withdrawal(amount):
    """
    取款
    :param amount: 金额
    :return: None
    """
    global balance
    if amount > balance:
        print("余额不足")
    else:
        balance -= amount
    write_log(amount,"取出")

def write_log(amount,type):
    """
    写入日志
    :param amount: 金额
    :param type: 存入 或者是 取出
    :return: None
    """
    now = datetime.datetime.now()
    create_time = now.strftime("%Y-%m-%d %H:%M:%S")
    data = [create_time,type,amount,f"{balance:.2f}"]
    account_log.append(data)


def print_log():
    """
    查看流水
    :return: None
    """
    print(account_log)

def show_menu():
    menu = """
操作菜单
0:退出
1:存款
2:取款
3:打印交易信息    
    """
    print(menu)

while True:
    show_menu()
    num = int(input("请根据菜单编号输入:"))
    if num == 0:
        print("您已退出系统")
        break
    elif num == 1:
        print("存款")
        amount = float(input("请输入存款金额"))
        deposit(amount)
        print(f"当前余额是{balance:.2f}")
    elif num == 2:
        print("取款")
        amount = float(input("请输入取款金额"))
        withdrawal(amount)
        print(f"当前余额是{balance:.2f}")
    elif num == 3:
        print("查看记录")
        print_log()
    else:
        print("输入有误")

2. 面向对象方法

import datetime

def validate(func):
    def wrapper(self,*args,**kwargs):
        amount = str(args[0])
        # 123.456 , 100.01 , 100  index .
        index = amount.index(".")
        if len(amount) - index - 1 > 2:
            print("输入格式有误,小数点后最多保留2位")
        else:
            func(self,*args,**kwargs)
    return wrapper

class Bank(object):
    account_log = []

    def __init__(self,name):
        self.name = name

    @validate
    def deposit(self,amount):
        user.balance += amount
        self.write_log("存入",amount)

    @validate
    def withdrawal(self,amount):
        if amount > user.balance:
            print("余额不足")
        else:
            user.balance -= amount
        self.write_log("取出",amount)

    def write_log(self,type,amount):
        now = datetime.datetime.now()
        create_time = now.strftime("%Y-%m-%d %H:%M:%S")
        data = [self.name,user.username,create_time,type,amount,f"{user.balance:.2f}"]
        Bank.account_log.append(data)

class ZhaoShang(Bank):
    def __init__(self,name):
        self.name = name

class JianShe(Bank):
    def __init__(self,name):
        self.name = name

class User(object):
    def __init__(self,username,balance):
        self.username = username
        self.balance = balance

    def print_log(self):
        print(Bank.account_log)

# bank = Bank("招商银行")
bank = ZhaoShang("招商银行股份有限公司")
user = User("andy",1000)


def show_menu():
    menu = """
操作菜单
0:退出
1:存款
2:取款
3:打印交易信息    
    """
    print(menu)

while True:
    show_menu()
    num = int(input("请根据菜单编号输入:"))
    if num == 0:
        print("您已退出系统")
        break
    elif num == 1:
        print("存款")
        amount = float(input("请输入存款金额"))
        bank.deposit(amount)
        print(f"当前余额是{user.balance:.2f}")
    elif num == 2:
        print("取款")
        amount = float(input("请输入取款金额"))
        bank.withdrawal(amount)
        print(f"当前余额是{user.balance:.2f}")
    elif num == 3:
        print("查看记录")
        user.print_log()
    else:
        print("输入有误")


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值