diff --git a/atm.py b/atm.py new file mode 100644 index 0000000..b12e285 --- /dev/null +++ b/atm.py @@ -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