#__author: hasee #date: 2018/1/17 # 明确在程序执行期间,有哪些对象参与-取款机 # 分析对象的行为、数据属性 # 数据属性-所有用户的信息 # 行为属性-登陆校验、显示余额、取款服务、转账服务 # 定义类 class ATM: user_info = 0 def __init__(self): f = open('user_info.txt') ATM.user_info = f.readlines() f.close() def login_check(self, n, p): result = 0 for w, u in enumerate(ATM.user_info): # print(u) u1 = u.split() # print(u1) if u1[0] == n and u1[1] == p: result = 1 break elif u1[0] == n and u1[1] != p: result = 2 break else: result = 3 return result, u1, w def show_money(self, u): print('当前账户余额:%s' % u[2]) def get_money(self, u, w): print('请输入取款金额:') money = int(input()) if money % 50 != 0: print('金额不合法') elif money > 1000: print('不能超过单笔限额') elif money > int(u[2]): print('余额不足') else: u[2] = str(int(u[2]) - money) ATM.user_info[w] = ' '.join(u) + ' ' f = open('user_info.txt', 'w') f.writelines(ATM.user_info) f.close() def move_money(self, u, w): print("请输入收款账号:") name1 = input() result2 = 0 for w2, u2 in enumerate(ATM.user_info): u21 = u2.split() if u21[0] == name1: result2 = 1 break if result2 == 0: print('收款账号不存在') else: print('收款账号有效,开始进行转账交易') print('请输入转账金额') money2 = int(input()) if money2 > 2000: print('不能超过单笔限额') elif money2 > int(u21[2]): print('余额不足') else: print('金额有效,开始转账') u[2] = str(int(u[2]) - money2) #对列表的索引重新赋值 ATM.user_info[w] = ' '.join(u) + ' '
#将新的列表u通过join转换为字符串,通过前面的ATM.user_info[w]确定位置 u21[2] = str(int(u21[2]) + money2) ATM.user_info[w2] = ' '.join(u21) + ' ' f = open('user_info.txt', 'w') f.writelines(ATM.user_info) #writeline后面接的是列表 f.close() atm = ATM() # print(ATM.user_info) result1 = 0 while result1 != 1: print('请输入账号:') name = input() print('请输入密码:') password = input() result1, user1, w1 = atm.login_check(name, password) print(user1) if result1 == 1: print('登陆成功') elif result1 == 2: print('密码不正确') else: print('账号不存在') choice = None while choice != '0': print('请选择服务 1-查询余额 2-取款 3-转账 0-退出') choice = input() if choice == '1': atm.show_money(user1) if choice == '2': atm.get_money(user1, w1) atm.show_money(user1) if choice == '3': atm.move_money(user1, w1) atm.show_money(user1) if choice =='0': break