基于字典嵌套
import time
import json
info = """
ATM柜员管理系统
1,登陆系统
2,注册帐号
3,冻结帐号
4,显示已经注册的用户
5,退出
"""
logininfo = """ #登录成功后显示的界面
1,取款
2,存款
3,转账
4,查询余额
5,修改密码
6,查看账户信息
7,退出该界面
"""
def enroll(x): #注册用户
info = ['passwd', 'money']
cardin = raw_input("请输入注册的id:")
d = readfile()
if cardin not in d:
x['cardid'] = cardin
x['status'] = 0
for j in info:
input = raw_input("请输入用户的%s:" % j)
x[j] = input
else:
print "注册成功"
return cardin,x
else:
print '用户已经存在'
print d.get(cardin)
main1()
def login(cardin,passwd): #用户登录函数
print logininfo
select1 = raw_input("输入你需要的选项:")
d=readfile()
if select1 == '1':
money3 = input("请输入取款金额:")
x=d.get(cardin).get('money')
if int(x) < money3:
print "余额不足"
login(cardin,passwd)
else:
x1 = d.get(cardin).get('money')
y1=int(x1)-money3
d[cardin].update({'money': str(y1)})
addfile(d)
print time.ctime(),"取款成功"
login(cardin,passwd)
elif select1 == '2':
money2 = input("请输入存款金额:")
x2=d.get(cardin).get('money')
y2=int(x2)+money2
print time.ctime(),"存款成功"
d[cardin].update({'money': str(y2)})
addfile(d)
login(cardin,passwd)
elif select1 == '3':
cardid2 = raw_input("请输入要转账的账户id:")
if cardid2 in d.keys():
money1 = input("请输入转账的金额:")
if int(d.get(cardin).get('money')) < money1:
print "余额不足"
login(cardin)
else:
x3=int(d.get(cardin).get('money'))
y3= x3 - money1
d[cardin].update({'money':str(y3)})
x4=int(d.get(cardid2).get('money'))
y4=x4+money1
d[cardid2].update({'money': str(y4)})
print time.ctime(),"转账成功"
addfile(d)
login(cardin,passwd)
else:
print "该用户不存在"
login(cardin,passwd)
elif select1 == '4':
print "用户余额:{0}元".format(d.get(cardin).get('money'))
login(cardin,passwd)
elif select1 == '5':
newpass = raw_input("请输入新密码:")
if newpass == d.get(cardin).get('passwd'):
print "与旧密码重复"
login(cardin,passwd)
else:
d[cardin].update({'passwd': newpass})
addfile(d)
print "成功修改密码"
login(cardin,passwd)
elif select1 == '6':
print d.get(cardin)
login(cardin,passwd)
else:
print "请输入正确的选项"
main1()
def mask(): #用户冻结函数
d=readfile()
cardin = raw_input("输入将要冻结的卡号:")
if cardin in d.keys():
if d.get(cardin).get('status') == 1:
froze=raw_input("该用户已经被冻结,是否要解除冻结?是输入1,否输入0:")
if froze == 0:
main1()
elif froze == '1':
d[cardin].update({'status':0})
addfile(d)
print "成功解除冻结"
main1()
else:
print "请输入正确的选项"
mask()
else:
passwd = raw_input("请输入该用户的密码")
if passwd == d.get(cardin).get('passwd'):
d[cardin].update({'status': 1})
addfile(d)
print "用户冻结成功"
main1()
else:
print "密码错误"
mask()
else:
print "此用户不存在"
def addfile(x): #将信息写入文件
filename = 'atm.txt'
with open(filename,'w') as f_atm:
json.dump(x,f_atm)
def readfile(): #从文件中读取信息
filename = 'atm.txt'
with open(filename) as f_atm:
x = json.load(f_atm)
return x
def main1(): #定义的主函数
print info
while True:
option = input("请输入需要的功能:")
if option == 1:
cardin = raw_input("请输入你要登陆的卡号:")
d = readfile()
if cardin in d.keys():
if d.get(cardin).get('status') == 1:
print "该用户已经被冻结"
main1()
else:
passwd = raw_input("请输入该用户的密码:")
if passwd == d.get(cardin).get('passwd'):
print time.ctime(),"登陆成功"
login(cardin,passwd)
else:
print "密码错误"
main1()
else:
print "该用户不存在请先注册"
print info
elif option == 2:
n = {}
c,d1=enroll(n)
d = readfile()
d[c] = d1
addfile(d)
main1()
elif option == 3:
mask()
main1()
elif option == 4:
if d.keys():
print d.keys()
main1()
else:
print "目前还没有用户注册"
main1()
elif option == 5:
exit()
else:
print "请输入正确的选项"
main1()