Python

[Pt_01] Python循环结构案例:模拟银行存取款业务,设

2019-03-09  本文已影响22人  Fighting_001

目录结构

一、案例描述
二、需求分析
    1. 业务流程图
    2. 业务项&测试场景
三、代码实现
四、用例设计&执行(简化模式)
    1. 登录业务
    2. 存款业务
    3. 取款业务
    4. 退卡业务
    5. 存款、取款、退卡-交叉业务

案例:利用循环结构语法,实现模拟银行存款&取款业务

一、案例描述

  1. 模拟3张银行卡,卡号分别为:1001、1002、1003,分别设置有密码、初始余额
  2. 提示用户输入卡号和密码
  3. 银行卡登录场景
    (1)若用户输入正确,则提示让用户选择具体的操作业务(取款|存款|退出),并提示当前余额数目
    (2)若用户输入错误,则提示重新输入卡号密码
    (3)若连续3次输入错误的账号密码,则提示银行卡已被锁定,不能继续交易
  4. 登录后的业务操作场景
    (1)取款业务:提示输入取款额度。若输入超出余额,则提示余额不足;否则,在余额上减掉输入的取款金额
    (2)存款业务:提示输入存款金额。余额加上存款金额,提示当前余额的数目
    (3)退出操作:提示重新输入卡号和密码

二、需求分析

1. 业务流程图
2. 业务项&测试场景
1. 登录验证业务

1)正确匹配,登录成功
①首次输入即正确匹配
②输入错误1次,再次输入正确
③连续输入错误2次,再次输入正确
2)输入错误超出次数限制,登录失败(退出程序)
①连续输入错误3次

2. 存款业务

1)存款成功
①输入非0的正整数
2)存款失败
①输入非数字
②输入负数
③输入0
④不输入,直接提交

3. 取款业务

1)取款成功
①输入非0的正整数,且输入的数字=账户余额
②输入非0的正整数,且输入的数字<账户余额
2)取款失败
①输入非数字
②输入负数
③输入0
④不输入,直接提交
⑤取款金额>账户余额

4. 退卡业务

①登录成功后,业务选择“退卡”,不作其他交易

5. 存款、取款、退卡-交叉业务

①存款,退卡
②存款,存款,退卡
③存款,取款,退卡
④存款,存款,取款,取款,存款,退卡
⑤取款,退卡
⑥取款,取款,退卡
⑦取款,取款,存款,存款,取款,退卡

三、代码实现

bankTest.py

# 定义3张银行卡,分别设置密码、初始余额
card1="1001"
pwd1="111"
bal1=100

card2="1002"
pwd2="222"
bal2=200

card3="1003"
pwd3="333"
bal3=300

# 开启登录、存取款业务
print("------Welcome to Python Bank------")
times=0 # 控制输错的连续次数
while True: # while永久循环
    # 提示用户输入卡号和密码
    card=input("请输入银行卡号:")
    pwd=input("请输入密码:")
    bal=0   # 余额

    # 对卡号密码匹配判断-登录业务
    if card==card1 and pwd==pwd1:   # 将卡号密码-余额进行关联
        bal=bal1
        print("Welcome User:",card)
    elif card==card2 and pwd==pwd2:
        bal=bal2
        print("Welcome User:",card)
    elif card==card3 and pwd==pwd3:
        bal=bal3
        print("Welcome User:",card)
    else:   # 卡号密码不匹配的处理
        times=times+1
        if times<3:
            print("卡号or密码输入错误,请重新输入!")
            continue    # 跳出当前循环,继续下一次循环:输入卡号密码
        else:
            print("已连续3次输入错误,请联系银行柜台解锁")
            break

    # 登录银行账户后,进行存取款业务
    while True:
        num=input("请选择办理的业务[1-存款 2-取款 3-退卡]:")
        # 存款业务
        if num=="1":
            while True:
                # 与整数比较,变量需要为int类型;强转int只对数字型字符串有效
                # 输入可能有整数、小数、字母字符等
                deposit=input("请输入存款金额:")
                if deposit.isnumeric() and int(deposit)>0:
                    bal=bal+int(deposit)
                    print("存款成功!\n存入:",deposit,"\t账户余额:",bal)
                    break   # 终止当前while循环,进入上一层循环(若有):选择业务
                else:
                    print("存款金额必须为正整数,请重新输入!")
                    continue    # 跳出本次循环,进入下一次循环:继续输入存款金额
        # 取款业务
        elif num=="2":
            while True:
                withdraw=input("请输入取款金额:")
                if withdraw.isnumeric():
                    if int(withdraw)>0 and int(withdraw)<=bal:
                        bal=bal-int(withdraw)
                        print("取款成功!\n取出:",withdraw,"\t账户余额:",bal)
                        break
                    elif int(withdraw)>bal:
                        print("余额不足,请重新输入!")
                        continue
                    else:
                        print("取款金额必须为正整数,请重新输入!")
                        continue
                else:
                    print("取款金额必须为正整数,请重新输入!")
                    continue
        # 退卡业务
        elif num=="3":
            print("退卡成功!")
            exit()  # 退出程序
        else:
            print("输入有误,请重新选择!")
            continue    # 跳出本次循环,进行下一次循环:选择业务

四、用例设计&执行(简化模式)

1. 登录业务
编号 用例描述 预期结果
01 首次输入卡号密码正确 登录成功,出现对应卡号的欢迎信息
02 输入错误1次,再次输入正确 输入错误:登录失败,系统提示“卡号or密码输入错误,请重新输入!”
输入正确:登录成功,出现对应卡号的欢迎信息
03 连续输入错误2次,再次输入正确 输入错误:登录失败,系统提示“卡号or密码输入错误,请重新输入!”
输入正确:登录成功,出现对应卡号的欢迎信息
04 连续输入错误3次 连续第1/2次输入错误:登录失败,系统提示“卡号or密码输入错误,请重新输入!”
连续第3次输入错误:登录失败,系统提示“已连续3次输入错误,请联系银行柜台解锁”

执行结果:

2. 存款业务

预置条件:使用银行卡1001,初始账户余额=100

编号 用例描述 预期结果
01 输入非0的正整数:1000 系统提示“存款成功! 存入:1000 账户余额:1100”
02 输入非数字:abc100 系统提示“存款金额必须为正整数,请重新输入!”
03 输入负数:-200 系统提示“存款金额必须为正整数,请重新输入!”
04 输入0 系统提示“存款金额必须为正整数,请重新输入!”
05 不输入,直接提交 系统提示“存款金额必须为正整数,请重新输入!”

执行结果:

3. 取款业务

预置条件:使用银行卡1002,初始账户余额=200

编号 用例描述 预期结果
01 输入非0的正整数,且输入的数字(150)<账户余额 取款成功,系统提示“取款成功! 取出:150 账户余额:50”
02 输入非0的正整数,且输入的数字(50)=账户余额 取款成功,系统提示“取款成功! 取出:50 账户余额:0”
03 输入非数字:aaabbb 取款失败,系统提示“取款金额必须为正整数,请重新输入!”
04 输入负数:-100 取款失败,系统提示“取款金额必须为正整数,请重新输入!”
05 输入0 取款失败,系统提示“取款金额必须为正整数,请重新输入!”
06 不输入,直接提交 取款失败,系统提示“取款金额必须为正整数,请重新输入!”
07 取款金额(300)>账户余额 取款失败,系统提示“余额不足,请重新输入!”

执行结果:

4. 退卡业务
编号 用例描述 预期结果
01 登录成功后,业务选择“退卡”,不作其他交易 系统提示“退卡成功!”,并退出程序

执行结果:

5. 存款、取款、退卡-交叉业务

预置条件:使用银行卡1003,初始账户余额=300

编号 用例描述 预期结果
01 存款,退卡 存款:存款成功,并显示存入金额、账户余额
退卡:系统提示“退卡成功!”,并退出程序
02 存款,存款,退卡 <描述省略>
03 存款,取款,退卡 <描述省略>
04 存款,存款,取款,取款,存款,退卡 <描述省略>
05 取款,退卡 取款:取款成功,并显示取出金额、账户余额
退卡:系统提示“退卡成功!”,并退出程序
06 取款,取款,退卡 <描述省略>
07 取款,取款,存款,存款,取款,退卡 <描述省略>

执行结果:

上一篇下一篇

猜你喜欢

热点阅读