银行ATM机工作流程

银行ATM机工作流程

# 定义方法business(n),n为卡号下标
def business(n):
    times[card[card.index(card_No)]] = 3    # 将当前卡号的密码输入次数重置为3次
    print("登录成功!当前账户余额为:%s" % (money[card[n]]))     # 提示用户当前余额
    for a in range(101):    # 共执行100次循环体
        if a == 100:    # 当执行到第100次时,次数达到上限,自动退卡
            print("连续操作次数已达上限,即将自动退卡!")
            break
        num = int(input("1.存款 2.取款 3.退卡\n请输入您要办理的业务序号:"))
        if num == 1:    # 存款算法
            money_add = int(input("请输入整数存款金额:"))
            money[card[n]] += money_add
            print("存款成功!当前余额为:" + str(money[card[n]]) + "元")
        elif num == 2:  # 取款算法
            money_div = int(input("请输入整数取款金额:"))
            if money_div > money[card[n]]:
                print("余额不足!")
            else:
                money[card[n]] -= money_div
                print("取款成功!当前余额为:" + str(money[card[n]]) + "元")
        elif num == 3:  # 退卡:提示用户并结束循环
            print("退卡成功!")
            break
        else:   # 提示用户输入序号不正确
            print("您输入的业务序号不正确!")


# 银行ATM系统工作流程
card = 1001, 1002, 1003     # 定义元组:储存用户卡号
password = {card[0]: 159632, card[1]: 147852, card[2]: 520229}   # 定义字典:储存每个卡号对应的密码
money = {card[0]: 15472, card[1]: 8351, card[2]: 12487}  # 定义字典:储存每个卡号对应的余额
times = {card[0]: 3, card[1]: 3, card[2]: 3}    # 定义字典:每张卡连续输入错误次数默认为3
frozen = {card[0]: False, card[1]: False, card[2]: False}  # 定义字典:储存每张卡对应的初始冻结状态为否

while True:     # 无限执行循环体
    card_No = int(input("请输入4位数银行卡号:"))
    if card_No in card:   # 判断用户输入的卡号是否存在
        if frozen[card[card.index(card_No)]]:   # 判断用户输入的卡号是否处于冻结状态
            print("您的账户已锁定!详情请持本人相关证件前往本行柜台咨询!")
        else:
            while times[card[card.index(card_No)]] < 4:    # 控制用户输入密码不需要重新输入银行卡号,且输入密码次数为3次
                password_No = int(input("请输入密码:"))
                if password_No == password[card[0]] and card_No == card[0]:    # 判断用户输入的密码是否为对应卡号的密码
                    business(0)     # 执行business(n)方法
                    break
                elif password_No == password[card[1]] and card_No == card[1]:
                    business(1)
                    break
                elif password_No == password[card[2]] and card_No == card[2]:
                    business(2)
                    break
                else:
                    times[card[card.index(card_No)]] -= 1   # 将当前卡号的密码剩余输入次数减1
                    if times[card[card.index(card_No)]] == 0:   # 若当前卡号的密码剩余输入次数为0时,将对应的冻结状态设置为True
                        frozen[card[card.index(card_No)]] = True
                        print("您已连续输错3次密码,账户已自动锁定!详情请前往本行柜台咨询!")
                        break
                    print("密码错误!您还剩余%d次输入机会!" % times[card[card.index(card_No)]])
    else:
        print("您输入的卡号不正确或不存在,请核对后输入!")

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值