#__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) + '\n'
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) + '\n'
#将新的列表u通过join转换为字符串,通过前面的ATM.user_info[w]确定位置
u21[2] = str(int(u21[2]) + money2)
ATM.user_info[w2] = ' '.join(u21) + '\n'
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