ATM系统编写
一、要求
1、编写一个简单的ATM注册和登录功能:
a)利用两个列表,一个存放用户名,一个存放密码,下标位置一一对应好。注册时,判断用户名是否已经存在,密码长度要大于等于6位,如果输入错误要有相应提示,并退出系统。
b)如果用户注册成功,则提示用户进行登录。要求用户输入用户名和密码,只有当前用户名和密码均正确才能提示用户登录成功,否则提示用户名或密码错误,并退出系统。
2、在上题的基础上加入错误重试功能,不管是注册阶段还是登录阶段,一旦用户输入错误,都提示用户重新输入,直到正确为止。
3、在前面的蜗牛ATM项目的基础上进一步进行改进,要求使用一个二维列表来保存用户名和密码,二维列表如:
users = [[‘zhangsan’,’123456’],[‘lisi’,’admin123’],[‘admin’,’adminadmin’]
并且添加如下操作主菜单:
========欢迎来到ATM系统**********
========请选择操作菜单*************
=======1.注册 2.登录 3.退卡*********
用户选择相应的操作,每次操作完后继续进入主菜单,用户输入3之后可以结束并退出应用。
4、在3题的基础上改进,要求使用一个列表加字典的形式来保存用户的信息,并增加一个余额信息项。
用户信息的存储格式如下:
user_list =[{‘user’:’’,’password’:’’,’balance’:0},{},{},…]
添加如下主菜单:
=========欢迎来到ATM系统**********
=========请选择操作菜单*************
======1.注册 2.登录 3.余额 4.退卡*****
用户选择相应的操作,每次操作完后继续进入主菜单,用户输入4之后可以结束并退出应用。用户注册成功后奖励3000元账户余额。
5、继续改进ATM功能,功能要求如下
================欢迎来到ATM系统******************
==================请选择操作菜单*****************
==1.注册 2.登录 3.查询余额 4.存款 5.取款 6.转账 7.退卡***
实现增加菜单的功能。
二、代码
import sys
user_list =[{'user':'','password':'','balance':0},]
def register():
print('欢迎注册')
print('请输入用户名:')
user=input()
for name in user_list:
if name['user'] == user:
print('该用户名已注册,请重新输入!')
user=input()
while 1:
print('请输入密码(密码长度要大于等于6位):')
password=input()
if len(password) < 6:
print('密码长度不符合要求,请重新输入:')
else:
balance=0
print('注册成功!')
print('奖励3000元!')
balance += 3000
account={'user':user,'password':password,'balance':balance}
user_list.append(account)
menu()
def login():
flag=1
while flag:
print('请输入用户名:')
user=input()
print('请输入密码:')
password=input()
for account in user_list:
if account['user']==user:
if account['password']==password:
print('用户名和密码正确,登录成功!')
flag = 0
break
else:
print('用户名或密码错误,请重新输入...')
zhuJiemian()
def balance():
while 1:
print('请输入用户名:')
user=input()
for account in user_list:
if user==account['user']:
print('账户余额:',account['balance'])
zhuJiemian()
else:
print('用户名输入错误,请重试')
def deposit():
while 1:
print('请输入用户名:')
user=input()
for account in user_list:
if user==account['user']:
print('账户余额:',account['balance'])
print('请输入存款金额:')
money=int(input())
account['balance'] += money
print('当前账户余额:',account['balance'])
zhuJiemian()
else:
print('用户名输入错误,请重试')
def withdrawMoney():
while 1:
print('请输入用户名:')
user=input()
for account in user_list:
if user==account['user']:
print('账户余额:',account['balance'])
print('请输入取款金额:')
money=int(input())
if money < account['balance']:
account['balance'] -= money
print('当前账户余额:',account['balance'])
zhuJiemian()
else:
print('账户余额不足,请重试!')
print('请输入取款金额:')
money=int(input())
else:
print('用户名输入错误,请重试')
def transfer():
while 1:
print('请输入用户名:')
user=input()
for account in user_list:
if user==account['user']:
print('当前账户余额',account['balance'])
while 1:
print('请输入被转账用户的用户名:')
user2 =input()
if user2 ==user:
print('不能给自己转账!')
else:
for account2 in user_list:
if user2 in account2.values():
while 1:
print('请输入转账金额:')
money=int(input())
if money < account['balance']:
account['balance'] -= money
account2['balance'] += money
print('当前账户余额:',account['balance'])
zhuJiemian()
else:
print('账户余额不足,请重试!')
else:
print('该用户不存在,请重试')
else:
print('用户名输入错误,请重试')
def exit():
print('正在退出ATM系统...')
sys.exit()
def menu():
while 1:
print('***********欢迎来到ATM系统***********')
print('************请选择操作菜单***********')
print('*********1.注册 2.登录 3.退卡********')
function = input()
if function == '1':
register()
elif function == '2':
login()
elif function =='3':
exit()
else:
print('输入错误,请重新输入!')
def zhuJiemian():
while 1:
print('***********欢迎来到ATM系统***********')
print('************请选择操作菜单***********')
print('**1.余额 2.存款 3.取款 4.转账 5.退卡 **')
function = input()
if function == '1':
balance()
elif function == '2':
deposit()
elif function == '3':
withdrawMoney()
elif function == '4':
transfer()
elif function == '5':
exit()
else:
print('输入错误,请重新输入!')
menu()