初学python 模拟ATM注册,登录,存款,取款,转账相关代码

需求:

  • ATM注册功能,判断用户是否已注册;注册账户密码需做简单校验
    ATM登录功能,未注册账户不能登录;已注册账户需输入正确密码才可登录
    ATM查询,存款,取款,转账相关操作
    
    
    ​​​注册的时候,用户名是8-13位字母,密码是数字字母混合构成6-12位,手机号码为11位数字,并且是以1开头,默认余额为0
    注册成功的用户使用字典保存
  • user_dict = {"zhangwuji": ['123456', '18359131782', 3000.0], "zhouzhiruo": ['123456', '18359131781', 1000.0]}
    
    
    def login():
        user = input("请输入用户名:")
        count=0
        # 控制循环次数
        for i in range(1, 4):
            # 如果用户名存在,再输入密码
            if user in user_dict:
                pwd = input("请输入密码: ")
                # 输入密码与源密码做比较
                if pwd == user_dict[user][0]:
                    print("登录成功!!!")
                    # 若登录成功,则可以让用户名选择,存款、取款、余额、转账等
                    login_main(user)
                else:
                    print("密码输入错误,请重新输入")
                    count =3-i
                    print(f"当前用户密码输入次数还剩:{count}次")
                    continue
            else:
                if len(user) < 8 or len(user) > 13 or user.isalpha() == False:
                    print("您输入的用户名不合法,请重新输入")
                    break
                else:
                    print("您输入的用户名不存在,请先注册")
                    break
    def login_main(uname):
        print("*******************欢迎来到登录首页******************")
        while True:
            f = int(input("请输入您的选择:1.存款 2.取款 3.查询余额 4.转账 5.退出:\n"))
            if f == 1:
                deposit(uname)
            elif f == 2:
                withdraw_money(uname)
            elif f == 3:
                check_balances(uname)
            elif f == 4:
                transfer(uname)
            else:
                print("输入的选项不合法,请重新输入")
                continue
    
    
    # 转账
    def transfer(name, tname=None):
        tname="zhouzhiruo"
        print((f"被转入账户名:{tname}"))
        if name in user_dict.keys():
            # 判断余额是否大于转账金额,判断密码是否正确
            m = float(input("请输入转账金额:"))
            if user_dict[name][-1] >= m:
                print(f"您的账户余额为:{user_dict[name][-1]}")
                # 自己的账户对应扣钱
                user_dict[name][-1] -= m
                # 转入账户对应加钱
                user_dict[tname][-1] += m
                print(f"转账成功!!!您的账户余额为:{user_dict[name][-1]}")
            else:
                print("当前您的账户,余额不足,请重新操作")
                login_main(name)
        else:
            print("转入账户不存在,请重新选择操作即可")
            login_main(name)
    
    
    # 查询余额,查询需知道当前的账户,所以需要传参操作,查询余额之前需先知道登录的具体账户
    def check_balances(name):
        print(f"当前账户的余额为:{user_dict[name][-1]}")
        login_main(name)
    
    
    # 取款
    def withdraw_money(name):
        # 输入取款金额
        money = float(input("输入您的取款金额:"))
        # 取出当前账户的账户余额,账户余额大于取款金额,才可以取值
        if user_dict[name][-1] >= money:
            # 账户余额-取款金额 然后重新赋值
            user_dict[name][-1] -= money
            print(f"当前您的账户余额为:{user_dict[name][-1]}")
        else:
            print("账户余额不足!!!")
            # 如果余额不足,则直接跳转到登录后的页面函数,可以重新选择操作
            login_main(name)
    
    
    # 存款
    def deposit(name):
        money = float(input("输入您的存款金额:"))
        # 账户余额+存款金额 然后重新赋值
        user_dict[name][-1] += money
        print(f"存款完成,当前您的账户余额为:{user_dict[name][-1]}")
    
    
    # 注册功能
    def regist():
        username = input("请输入用户名:")
        #pwd = input("请输入密码:")
        #phone_num = input("请输入手机号码:")
        while True:
            if len(username) >= 8 and len(username) <= 13 and username.isalpha():
                print("输入的用户名格式长度正确")
                # 判断用户名是否已经存在
                if username in user_dict:
                    print("用户名已经存在,请重新输入")
                    continue
                else:
                    print("用户名可用!!!")
                    # 输入密码
                    pwd = input("请输入密码:")
                    while True:
                        if len(pwd) >= 6 and len(pwd) <= 12 and pwd.isalnum():
                            print("密码格式正确")
                            # 确认密码
                            passwd = input("请输入确认密码:")
                            if pwd == passwd:
                                print("确认密码输入正确")
                                phone_num = input("请输入手机号码:")
                                while  True:
                                    if len(phone_num) == 11 and phone_num.startswith("1") and phone_num.isdigit():
                                        print("手机号码格式正确")
                                        # 将信息写入字典
                                        user_dict[username] = [pwd, phone_num, 0.0]
                                        print("注册成功!!!")
                                        ATM_Main()
                                    else:
                                        print("手机号码格式错误")
                                        phone_num = input("请重新输入手机号码:")
                            else:
                                print("两次密码不一致,请重新输入")
                                #print(input("请重新输入密码:"))
    
                        else:
                            print(f"密码格式不正确")
                            pwd = input("请重新输入密码:")
    
    
            else:
                print("输入的用户名格式有误")
                ATM_Main()
    # ATM主界面功能
    def ATM_Main():
        while True:
            print("******************欢迎使用ATM**********************")
            flage = int(input("请选择你的操作:1.登录 2.注册3.退出 \n:"))
            if flage == 1:
                login()
            elif flage == 2:
                regist()
            elif flage == 3:
                exit()
            else:
                print("输入的选项不合法,请重新输入")
    
    
    if __name__ == '__main__':
        ATM_Main()

    初次编写python代码,完成的内容较简单,请多多指教吖

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值