import random,time
class Card:
def __init__(self,cardnum,password,money,islock=False):
self.cardnum = cardnum
self.password = password
self.money = money
self.islock = islock
class User:
def __init__(self,name,idcard,phonenum,card):
self.name = name
self.idcard = idcard
self.phonenum = phonenum
self.card = card
class ATM:
userDict = {}
islogin = False
@staticmethod
def welcome():
print('''
**********************
* *
* welcome to bank *
* *
**********************
''')
@staticmethod
def select():
print('''
**********************
* 1.登录 2.注册 *
* 3.查询 4.取款 *
* 5.存款 6.转账 *
* 7.改密 8.锁卡 *
* 9.解锁 0.退出 *
**********************
''')
num = input("请选择服务项目:")
return num
@staticmethod
def getcardnum():
cardnum = ""
for x in range(6):
cardnum += str(random.randrange(0,10))
return cardnum
@classmethod
def openUser(cls):
name = input("请输入您的姓名:")
idcard = input("请输入您的身份证号码:")
phonenum = input("请输入您的电话号码:")
psd = input("请设置您的密码:")
psd2 = input("请确认您的密码:")
if psd == psd2:
mon = int(input("请输入您的预存余额:"))
if mon>0:
print("注册中。。。")
time.sleep(1)
cardnum = cls.getcardnum()
card = Card(cardnum,psd,mon)
user = User(name,idcard,phonenum,card)
cls.userDict[cardnum] = user
print("注册成功,您的卡号为%s"%cardnum)
else:
print("预存余额非法,开卡失败...")
else:
print("密码错误,开卡失败...")
@classmethod
def login(cls):
cardnum = input("请输入您的卡号:")
if cls.userDict.get(cardnum).card.islock == False:
user = cls.userDict.get(cardnum)
if user:
psd = input("请输入您的密码:")
if psd == user.card.password:
print("登录中。。。")
time.sleep(1)
cls.islogin = cardnum
print("恭喜你,登录成功!!!")
else:
print("密码错误,登录失败。。。")
else:
print("卡号不存在,请查证后登录。。。")
else:
print('此卡已被锁定,请解锁后登陆')
@classmethod
def search(cls):
if cls.islogin:
print("查询中。。。")
time.sleep(1)
print("您当前的余额为%d"%(cls.userDict.get(cls.islogin).card.money))
else:
print("请登录后查询")
@classmethod
def getoutMoney(cls):
if cls.islogin:
mon = int(input('请输入取款金额:'))
if cls.userDict.get(cls.islogin).card.money >= mon and mon >0:
print('取款中。。。')
time.sleep(1)
cls.userDict.get(cls.islogin).card.money -= mon
print('取款成功,取款金额为%d,您当前余额为%d'%\
(mon,cls.userDict.get(cls.islogin).card.money))
elif mon < 0:
print('取款金额非法')
else:
print('余额不足')
else:
print('请先登录')
@classmethod
def inputMoney(cls):
if cls.islogin:
mon = int(input('请输入存款金额:'))
if mon > 0 and mon < 20000:
print('存款中。。。')
time.sleep(1)
cls.userDict.get(cls.islogin).card.money += mon
print('存款成功,存款金额为%d,您当前余额为%d' %\
(mon, cls.userDict.get(cls.islogin).card.money))
elif mon < 0:
print('存款金额非法')
else:
print('存款金额过大,请到前台进行存款')
else:
print('请先登录')
@classmethod
def changePsd(cls):
if cls.islogin:
newpsd1 = input('请输入更改后的密码:')
newpsd2 = input('请确认更改后的密码:')
if newpsd1 == newpsd2:
print('更改密码中...')
time.sleep(1)
cls.userDict.get(cls.islogin).card.password = newpsd1
print('密码更改成功,当前密码为:%s'%newpsd1)
else:
print('密码更改错误!!!')
else:
print('请先登录')
@classmethod
def transMoney(cls):
if cls.islogin:
newcardnum = input('请输入你要转入的卡号:')
keyList = cls.userDict.keys()
if newcardnum in keyList:
mon = int(input('请输入你要转入的金额:'))
if mon>0 and mon <= cls.userDict.get(cls.islogin).card.money:
print('正在转账...')
time.sleep(1)
cls.userDict.get(cls.islogin).card.money -= mon
cls.userDict.get(newcardnum).card.money += mon
print('转账成功,你当前余额为:%d' %\
cls.userDict.get(cls.islogin).card.money)
elif mon<0:
print('输入金额非法')
else:
print('余额不足,请存款后进行转账')
else:
print('此卡号不存在,请核实后进行转账')
else:
print('请先登录')
@classmethod
def lockcard(cls):
cardnum = input('请输入你要锁定的卡号:')
cardnumList = cls.userDict.keys()
if cardnum in cardnumList:
if cls.userDict.get(cardnum).card.islock == False:
psd = input('请输入密码:')
if cls.userDict.get(cardnum).card.password == psd:
print('正在锁卡。。。')
time.sleep(1)
cls.userDict.get(cardnum).card.islock = True
cls.islogin = False
print('锁卡成功!!!')
else:
print('密码错误,请确认密码后操作')
else:
print('此卡已被锁定')
else:
print('此卡号不存在,请查询后操作')
@classmethod
def unlockcard(cls):
cardnum = input('请输入你要解锁的卡号:')
cardnumList = cls.userDict.keys()
if cardnum in cardnumList:
if cls.userDict.get(cardnum).card.islock:
psd = input('请输入密码:')
if psd == cls.userDict.get(cardnum).card.password:
print('解锁中。。。')
time.sleep(1)
cls.userDict.get(cardnum).card.islock = False
print('解锁成功!!!')
else:
print('密码错误,请确认密码后操作')
else:
print('此卡号未被锁定')
else:
print('此卡号不存在,请查证后操作')
if __name__ == '__main__':
atm = ATM()
atm.welcome()
while True:
time.sleep(1)
print('已注册用户信息:',atm.userDict)
num = atm.select()
if num == "1":
atm.login()
elif num == "2":
atm.openUser()
elif num == "3":
atm.search()
elif num == '4':
atm.getoutMoney()
elif num == '5':
atm.inputMoney()
elif num == '6':
atm.transMoney()
elif num == '7':
atm.changePsd()
elif num == '8':
atm.lockcard()
elif num == '9':
atm.unlockcard()
elif num == "0":
print("正在退出。。。")
time.sleep(1)
print('欢迎下次光临!!!')
break
else:
time.sleep(1)
print("选择有误请重新选择...")
面向对象模拟简单ATM
最新推荐文章于 2023-07-21 14:26:33 发布