1。工作流程
2。模拟自动存取款机的操作
代码如下:
进口msvcrt、系统、操作系统 #定义用星号隐藏密码输入的函数 def psw_input (): 李=[] 而真正的: ch=msvcrt.getch () #回车 如果ch==b“\ r”: msvcrt.putch (b ' \ n ') 打破 #退格 elif ch==b“\ (”: 如果李: li.pop () msvcrt.putch (b \ b) msvcrt。显示字符(b ' ') msvcrt.putch (b \ b) # Esc elif ch==b“\ x1b”: 打破 其他: li.append (ch) msvcrt.putch (b‘*’) 返回李 #定义CSDN银行ATM欢迎界面的函数 def ATM (): ''' CSDN银行ATM欢迎界面的函数 ''' 打印("=" * 14日“CSDN银行”,“=" * 14日“\ n”) 打印(“{:^ 42}”.format (ATM)、“\ n”) 打印("=" * 14日“CSDN银行”,“=" * 14日“\ n”) # CSDN银行用户列表信息,用户信息包含:姓,名余额,密码(6位),银行卡号(19位) user_list=[{" name ": "张三”,“平衡”:10000年,“密码”:“000000”,“数量”:“0000000000000000000”}, {" name ": "李四”、“平衡”:20000年,“密码”:“111111”,“数量”:“1111111111111111111”}, {" name ": "王五”、“平衡”:30000年,“密码”:“222222”,“数量”:“2222222222222222222”}] #定义验证银行卡号与密码匹配的函数 def检查(user_name user_password): ''' 验证银行卡号与密码匹配的函数 ''' 因为我在范围(len (user_list)): 如果user_name==user_list[我][“数字”)和user_password==user_list[我](“密码”): 返回我#银行卡号与密码匹配则返回该用户在ATM系统内的ID值,否则返回没有值 #定义用户登录成功后操作界面的函数 def接口(): ''' 用户登录成功后操作界面的函数 ''' 打印("=" * 14,“用户操作界面”,“=" * 14日“\ n”) 打印(“{0:2}{1:12}{12}{12}”。格式(“”、“1。查询”、“2。取款”、“3。存款”),“\ n”) 打印(“{0:2}{1:10}{12}”。格式(4”“。”修改密码”、“5。退出”),“\ n”) 打印("=" * 42岁,“\ n”) #定义用户查询信息的函数 def查询(user_id): ''' 用户查询信息的函数 ''' 打印("=" * 14日“账号查询界面”,“=" * 14日“\ n”) 打印(“| {0:& lt; 4} | {1: & lt; 18} | {2: & lt; 9} | \ n”.format(“账户名”,“卡”号,“余额(元)”)) 打印(“| {0:& lt; 5} | {1: & lt; 20} | {2: & lt; 11} | \ n”.format (user_list [user_id](“名字”),user_list [user_id](“数字”),user_list [user_id](“平衡”))) #定义用户取款的函数 def撤军(数量): ''' 用户取款的函数 ''' 我=user_list user_id(“平衡”)int(数量) 如果i>=0: user_list [user_id][“平衡”)-=int(数量) 其他: 打印(“账户余额不足\ n”) #定义用户存款的函数 def存款(数量): ''' 用户存款的函数 ''' user_list [user_id][“平衡”)+=int(数量) #定义用户修改密码的函数 def change_password (old_password new_password1 new_password2): ''' 用户修改密码的函数 ''' 如果old_password==user_list [user_id](“密码”): 如果new_password1==new_password2: user_list [user_id]["密码"]=new_password1 打印(“新密码修改成功\ n”) 返回1 其他: 打印(“修改密码失败,您2次输入的新密码不一致\ n”) 返回2 其他: 打印(“旧密码输入错误\ n”) 返回0 #用户登录界面,输入银行卡号和密码 3次机会=3 #允许用户名或密码输入错误 而真正的: ATM () user_name=输入(“请输入您的银行卡卡号:”) 打印(" ") 打印(“请输入您的银行卡密码:”,结束=' ',冲洗=True) . join (psw_input user_password=b ()) .decode () 打印(" ") user_id=检查(user_name user_password) #验证银行卡号与密码是否匹配 如果user_id !=没有: 打印(“登录成功\ n”) 而真正的: 界面() key_word=输入(“请输入操作选项:”) 打印(" ") 如果key_word==?”: 查询(user_id) 输入(“按任意键返回上一级目录:”) 打印(" ") elif key_word==?”: 打印("=" * 14日“账号取款界面”,“=" * 14日“\ n”) 数量=输入(“请输入取款金额:“) 打印(" ") 退出(数量) 查询(user_id) 输入(“按任意键返回上一级目录:”) 打印(" ") elif key_word==?”: 打印("=" * 14日“账号存款界面”,“=" * 14日“\ n”) 数量=输入(“请输入存款金额:“) 打印(" ") 存款(数量) 查询(user_id) 输入(“按任意键返回上一级目录:”) 打印(" ") elif key_word==?”: 打印("=" * 14,”密码管理界面”,“=" * 14日“\ n”) 打印(“请输入旧密码:”,结束=' ',冲洗=True) . join (psw_input old_password=b ()) .decode () 打印(" ") 打印(“请输入新密码:”,结束=' ',冲洗=True) . join (psw_input new_password1=b ()) .decode () 打印(" ") 打印(“请再次输入新密码:”,结束=' ',冲洗=True) . join (psw_input new_password2=b ()) .decode () 打印(" ") 保存=change_password (old_password new_password1 new_password2) #如何检测到旧密码输入有误,将直接退出 如果保存==0: 打破 elif key_word==?”: 打印("=" * 14,”欢迎下次光临”,“=" * 14日“\ n”) 打破 其他: 打印("=" * 14,“没有该选项”,“=" * 14日“\ n”) 其他: 如果机会比;1: 打印(“用户名或密码错误,您还有”,chance-1,“次机会,请重新输入\ n”) 机会-=1 其他: 打印(“对不起,您输入用户名或密码错误已达3次”) 打破Python模拟自动存取款机的查询,存取款,修改密码等操作