|
|
@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
from user import User
|
|
|
|
|
|
|
|
from card import Card
|
|
|
|
|
|
|
|
class ATM:
|
|
|
|
|
|
|
|
def __init__(self, alluser):
|
|
|
|
|
|
|
|
self.alluser = alluser
|
|
|
|
|
|
|
|
def randomiCardId(self):
|
|
|
|
|
|
|
|
import random
|
|
|
|
|
|
|
|
while True:
|
|
|
|
|
|
|
|
str_data = '' # 存储卡号
|
|
|
|
|
|
|
|
for i in range(6):
|
|
|
|
|
|
|
|
ch = chr(random.randrange(ord('0'), ord('9') + 1))
|
|
|
|
|
|
|
|
str_data += ch
|
|
|
|
|
|
|
|
if not self.alluser.get(str): # 判断卡号是否重复
|
|
|
|
|
|
|
|
return str_data
|
|
|
|
|
|
|
|
def creatUser(self):
|
|
|
|
|
|
|
|
name = input("请输入姓名:")
|
|
|
|
|
|
|
|
Uid = input("请输入身份证号:")
|
|
|
|
|
|
|
|
phone = input("请输入手机号:")
|
|
|
|
|
|
|
|
prestMoney = float(input("请输入预存金额:"))
|
|
|
|
|
|
|
|
if prestMoney <= 0:
|
|
|
|
|
|
|
|
print("预存款输入有误,开户失败")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
oncePwd = input("请输入密码:")
|
|
|
|
|
|
|
|
passWord = input("请再次输入密码:")
|
|
|
|
|
|
|
|
if passWord != oncePwd:
|
|
|
|
|
|
|
|
print("两次密码输入不同......")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
print("密码设置成功,请牢记密码: %s " % passWord)
|
|
|
|
|
|
|
|
cardId = self.randomiCardId()
|
|
|
|
|
|
|
|
card = Card(cardId, oncePwd, prestMoney) # 创建卡
|
|
|
|
|
|
|
|
user = User(name, Uid, phone, card) # 创建用户
|
|
|
|
|
|
|
|
self.alluser[cardId] = user # 存入用户字典
|
|
|
|
|
|
|
|
print("您的开户已完成,请牢记开户账号: %s" % cardId)
|
|
|
|
|
|
|
|
def checkpwg(self, realPwd):
|
|
|
|
|
|
|
|
for i in range(3):
|
|
|
|
|
|
|
|
psd2 = input("请输入密码:")
|
|
|
|
|
|
|
|
if realPwd == psd2:
|
|
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
print("密码输错三次,系统自动退出......")
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
def lockCard(self):
|
|
|
|
|
|
|
|
inptcardId = input("请输入您的卡号:")
|
|
|
|
|
|
|
|
user = self.alluser.get(inptcardId)
|
|
|
|
|
|
|
|
if not self.alluser.get(inptcardId):
|
|
|
|
|
|
|
|
print("此卡号不存在...锁定失败!")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
if user.card.cardLock:
|
|
|
|
|
|
|
|
print("该卡已经被锁定,无需再次锁定!")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
if not self.checkpwg(user.card.cardPwd): # 验证密码
|
|
|
|
|
|
|
|
print("密码错误...锁定失败!!")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
user.card.cardLock = True
|
|
|
|
|
|
|
|
print("该卡被锁定成功!")
|
|
|
|
|
|
|
|
def searchUser(self, base=1):
|
|
|
|
|
|
|
|
if base == 2:
|
|
|
|
|
|
|
|
inptcardId = input("请输入转出主卡号:")
|
|
|
|
|
|
|
|
elif base == 3:
|
|
|
|
|
|
|
|
inptcardId = input("请输入转入卡号:")
|
|
|
|
|
|
|
|
elif base == 1:
|
|
|
|
|
|
|
|
inptcardId = input("请输入您的卡号:")
|
|
|
|
|
|
|
|
user = self.alluser.get(inptcardId)
|
|
|
|
|
|
|
|
# 如果卡号不存在,下面代码就会执行
|
|
|
|
|
|
|
|
if not self.alluser.get(inptcardId):
|
|
|
|
|
|
|
|
print("此卡号不存在...查询失败!")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
if user.card.cardLock:
|
|
|
|
|
|
|
|
print("该用户已经被锁定...请解卡后使用!")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
if not self.checkpwg(user.card.cardPwd): # 验证密码
|
|
|
|
|
|
|
|
print("密码错误过多...卡已经被锁定,请解卡后使用!")
|
|
|
|
|
|
|
|
user.card.cardLock = True
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
if not base == 3: #查询转入账户 不打印余额
|
|
|
|
|
|
|
|
print("账户: %s 余额: %.2f " % (user.card.cardId, user.card.money))
|
|
|
|
|
|
|
|
return user
|
|
|
|
|
|
|
|
def getMoney(self):
|
|
|
|
|
|
|
|
userTF = self.searchUser()
|
|
|
|
|
|
|
|
if userTF != -1:
|
|
|
|
|
|
|
|
if userTF.card.cardId != '':
|
|
|
|
|
|
|
|
inptMoney = float(input("请输入取款金额:"))
|
|
|
|
|
|
|
|
if inptMoney > float(userTF.card.money):
|
|
|
|
|
|
|
|
print("输入的金额大于余额,请先查询余额!")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
userTF.card.money = float(userTF.card.money) - inptMoney
|
|
|
|
|
|
|
|
print("取款成功! 账户: %s 余额: %.2f " % (userTF.card.cardId, userTF.card.money))
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
def saveMoney(self):
|
|
|
|
|
|
|
|
userTF = self.searchUser()
|
|
|
|
|
|
|
|
if userTF != -1:
|
|
|
|
|
|
|
|
if not userTF.card.cardLock == True:
|
|
|
|
|
|
|
|
if userTF.card.cardId != '':
|
|
|
|
|
|
|
|
inptMoney = float(input("请输入要存入得金额:"))
|
|
|
|
|
|
|
|
if inptMoney < 0:
|
|
|
|
|
|
|
|
print("请输入正确金额")
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
userTF.card.money += inptMoney
|
|
|
|
|
|
|
|
print("存款成功! 账户: %s 余额: %.2f " %
|
|
|
|
|
|
|
|
(userTF.card.cardId, userTF.card.money))
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
def transferMoney(self):
|
|
|
|
|
|
|
|
MasterTF = self.searchUser(base=2)
|
|
|
|
|
|
|
|
if (MasterTF == -1):
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
userTF = self.searchUser(base=3)
|
|
|
|
|
|
|
|
if (userTF == -1):
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
in_tr_Money = float(input("请输入转账金额:"))
|
|
|
|
|
|
|
|
if MasterTF.card.money >= in_tr_Money:
|
|
|
|
|
|
|
|
str = input("您确认要继续转账操作吗(Y/N)?:")
|
|
|
|
|
|
|
|
if str == "Y":
|
|
|
|
|
|
|
|
MasterTF.card.money -= in_tr_Money
|
|
|
|
|
|
|
|
print("转账成功! 账户: %s 余额: %.2f " %
|
|
|
|
|
|
|
|
(MasterTF.card.cardId, MasterTF.card.money))
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
print("转账失败,中止了操作")
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
print("转账失败,余额不足! 账户: %s 余额: %.2f " %
|
|
|
|
|
|
|
|
(MasterTF.card.cardId, MasterTF.card.money))
|
|
|
|
|
|
|
|
def unlockCard(self):
|
|
|
|
|
|
|
|
inptcardId = input("请输入您的卡号:")
|
|
|
|
|
|
|
|
user = self.alluser.get(inptcardId)
|
|
|
|
|
|
|
|
while 1:
|
|
|
|
|
|
|
|
if not self.alluser.get(inptcardId):
|
|
|
|
|
|
|
|
print("此卡号不存在...解锁失败!")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
elif not user.card.cardLock:
|
|
|
|
|
|
|
|
print("该卡未被锁定,无需解锁!")
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
elif not self.checkpwg(user.card.cardPwd):
|
|
|
|
|
|
|
|
print("密码错误...解锁失败!!")
|
|
|
|
|
|
|
|
return -1
|
|
|
|
|
|
|
|
user.card.cardLock = False # 解锁
|
|
|
|
|
|
|
|
print("该卡 解锁 成功!")
|
|
|
|
|
|
|
|
break
|