银行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("您输入的卡号不正确或不存在,请核对后输入!")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、引言 1.1 目的 本文档旨在描述银行ATM系统的需求规格,以便开发团队按照这些规格实现该系统。 1.2 范围 本文档适用于银行ATM系统的需求规格,包括该系统的功能、性能、使用界面等方面。 1.3 参考文献 无 二、总体描述 2.1 产品功能 银行ATM系统的主要功能如下: 1. 取款:用户可以使用银行卡在ATM上进行取款操作,ATM会根据用户输入的金额从用户的银行账户中扣除相应的金额,并输出相应的现金。 2. 存款:用户可以使用ATM进行存款操作,ATM会将用户存入的现金存入用户的银行账户中。 3. 查询余额:用户可以使用ATM查询自己的银行账户余额。 4. 转账:用户可以使用ATM进行转账操作,将自己的钱转到其他人的银行账户中。 5. 修改密码:用户可以使用ATM修改自己的银行卡密码。 6. 打印小票:用户可以选择打印一份取款、存款、转账等操作的小票。 2.2 用户特点 银行ATM系统的用户主要有以下特点: 1. 具有一定的财务知识,能够理解ATM的操作流程。 2. 需要保护个人信息和资金安全,对于ATM的安全性有一定的要求。 3. 对于使用ATM的便捷程度和操作界面的友好程度也有一定的要求。 2.3 运行环境 银行ATM系统需要运行在ATM硬件平台上,包括ATM主板、屏幕、键盘等硬件设备。它需要连接到银行的后台系统,以便进行银行账户的操作。 三、详细需求规格 3.1 功能性需求 1. 取款功能 1.1 用户可以从ATM上选择取款操作。 1.2 用户可以输入取款金额,ATM会扣除相应的金额并输出现金。 1.3 如果用户输入的金额超过银行账户余额,则ATM会提示用户账户余额不足。 1.4 如果ATM内现金不足,则不可以进行取款操作。 2. 存款功能 2.1 用户可以从ATM上选择存款操作。 2.2 用户可以输入存款金额,ATM会将相应的现金存入银行账户中。 2.3 如果ATM内存款金额超过限额,则不可以进行存款操作。 3. 查询余额功能 3.1 用户可以从ATM上选择查询余额操作。 3.2 ATM会显示用户的银行账户余额。 4. 转账功能 4.1 用户可以从ATM上选择转账操作。 4.2 用户可以输入收款人银行账户号码和转账金额,ATM会将相应的金额从用户的银行账户中扣除,并存入收款人的银行账户中。 4.3 如果输入的收款人银行账户号码不存在,则ATM会提示用户输入正确的账户号码。 5. 修改密码功能 5.1 用户可以从ATM上选择修改密码操作。 5.2 用户需要输入旧密码后,才能输入新密码进行修改。 5.3 用户需要输入新密码两次进行确认,以防止输入错误。 6. 打印小票功能 6.1 用户可以选择打印小票操作。 6.2 小票上需要显示取款、存款、转账等相关的操作信息。 3.2 性能需求 1. 响应时间 1.1 ATM的响应时间应该在5秒以内。 1.2 ATM的操作流程应该简单易懂,可以在5分钟以内完成一次简单操作。 2. 并发性能 2.1 ATM需要支持多个用户同时进行操作。 2.2 ATM的性能需要满足最大并发用户数的需求。 3. 安全性 3.1 ATM需要有一定的安全保障制,防止用户信息和资金被盗窃。 3.2 ATM需要支持密码输入错误次数限制和锁定制,以保护用户账户的安全。 3.3 ATM需要支持用户信息加密传输,以保护用户信息的安全。 3.4 ATM需要支持防伪和防欺诈的功能,以保障用户的资金安全。 3.5 ATM需要支持其他安全保障制,以保障用户信息和资金的安全。 四、用户界面需求 1. 用户界面应该友好、简单易懂。 2. 用户界面应该提供一定的指引,以帮助用户完成操作流程。 3. 用户界面应该提供错误提示和解决方案,以帮助用户解决操作过程中的问题。 4. 用户界面应该提供一定的操作历史记录和查询功能,以帮助用户查询历史操作记录。 五、附录 无。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值