需求:
-
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代码,完成的内容较简单,请多多指教吖
-