**
**
import time
class View():
def init(self,admin = ‘root’,password = ‘123456’):
self.admin = admin
self.password = password
def interface(self):
print("¥"*40)
print('¥ ¥')
print('¥ ¥')
print('¥ ¥')
print('¥ 屌丝银行自动取款机 ¥')
print('¥ ¥')
print('¥ ¥')
print('¥ ¥')
print("¥" * 40)
def func(self):
print("¥" * 40)
print('¥ ¥')
print('¥ 1.开户 2.查询 ¥')
print('¥ 3.取钱 4.存钱 ¥')
print('¥ 5.转账 6.改密 ¥')
print('¥ 7.解锁 8.锁定 ¥')
print('¥ 9.补卡 10.销户 ¥')
print('¥ 0.退出 ¥')
print("¥" * 40)
**
**
import random
from ATM机.person import Person
from ATM机.card import Card
class atm():
# 测试使用
# def __init__(self):
# self.User = {}
def __init__(self,allUser):
self.User = allUser
# 开户
def CreateUser(self):
user_name = input("请输入您的姓名:")
user_ID = input("请输入您的身份证号:")
user_phone = input("请输入您的手机号:")
# 设置姓名、身份证号和手机号的输入条件
if (user_name != '' and ' ' not in user_name) and (user_ID != '' and ' ' not in user_ID) and (user_phone != '' and ' ' not in user_phone):
user_money = int(input("请输入您要存入的金额(最低100):"))
if user_money >= 100:
while True:
user_card_password = input("请设置银行卡密码:")
if user_card_password != '' and ' ' not in user_card_password:
repeat_password = input("请确认银行卡密码:")
if repeat_password == user_card_password:
cardID = self.CreateCardNum()
user = {}
user['姓名:'] = user_name
user['身份证号:'] = user_ID
user['手机号:'] = user_phone
user['卡号:'] = cardID
user['密码:'] = user_card_password
user['金额:'] = user_money
user['状态:'] = 0
self.User[cardID] = user
print(self.User)
break
else:
print("两次密码不一致,请重新输入密码!")
else:
print('密码不能为空!')
else:
print('存入金额有误,无法开户!')
else:
print("您输入的姓名、身份证号或者手机号不符合格式!")
# 查询
def CheckCard(self):
CardId = input("请输入卡号:")
if self.User.get(CardId):
if self.User.get(CardId)["状态:"] == 0:
count = 0
while count < 3:
CardPassword = input("请输入密码:")
if CardPassword == self.User.get(CardId).get("密码:"):
print('账号:%s,余额:%s'%(CardId,self.User.get(CardId).get('金额:')))
print(self.User)
break
else:
count += 1
print("账号:%s 的密码错误,请重新输入!"%(CardId))
if count == 3:
self.User.get(CardId)['状态:'] = 1
print("账号已被锁定,无法执行该操作!")
print(self.User)
else:
print("该账号已被锁定,不能执行此操作!")
else:
print('卡号不存在,查询失败。。。。')
# 取款
def GetMoney(self):
CardId = input("请输入卡号:")
if self.User.get(CardId):
if self.User.get(CardId)["状态:"] == 0:
count = 0
while count < 3:
CardPassword = input("请输入密码:")
if CardPassword == self.User.get(CardId).get("密码:"):
getMoney = int(input("请输入取款金额:"))
if getMoney >= 100:
Money = self.User.get(CardId).get("金额:")
# print(Money,type(Money))
if getMoney <= Money:
Money -= getMoney
self.User.get(CardId)["金额:"] = Money
print('账号:%s 取款成功,余额还有:%s!'%(CardId,Money))
print(self.User)
break
else:
print('账号:%s 的余额不足,取款失败!'%(CardId))
break
else:
print('取款金额不足100,取款失败!')
break
else:
count += 1
print("账号:%s 的密码错误,请重新输入!" % (CardId))
if count == 3:
self.User.get(CardId)['状态:'] = 1
print("账号已被锁定,无法执行该操作!")
print(self.User)
else:
print('该账号已被锁定,不能执行此操作!')
else:
print('账号:%s 卡号不存在,取款失败!' % (CardId))
# 存钱
def SaveMoney(self):
CardId = input("请输入卡号:")
if self.User.get(CardId):
if self.User.get(CardId)["状态:"] == 0:
saveMoney = int(input('请输入需要存入的金额:'))
if saveMoney > 0:
Money = self.User.get(CardId).get("金额:")
Money += saveMoney
self.User.get(CardId)["金额:"] = Money
print('账号:%s 存款成功,现今余额:%s!' % (CardId, Money))
print(self.User)
else:
print('存入金额有误,存钱失败!')
else:
print('该账号已被锁定,不能执行此操作!')
else:
print("账号:%s 不存在,存款失败!" % (CardId))
# 转账
def TransferMoney(self):
OutId = input('输入转出的账号:')
if self.User.get(OutId):
if self.User.get(OutId)["状态:"] == 0:
count = 0
while count < 3:
Password_OutId = input("请输入密码:")
if Password_OutId == self.User.get(OutId).get('密码:'):
while True:
InId = input('请输入转入的账号:')
# 不能给自己转账
if OutId != InId:
if self.User.get(InId):
if self.User.get(InId)["状态:"] == 0:
transferMoney = int(input("请输入需要转出的金额:"))
Money = self.User.get(OutId).get("金额:")
money = self.User.get(InId).get('金额:')
if transferMoney <= Money and transferMoney > 0:
Money -= transferMoney
money += transferMoney
self.User.get(OutId)['金额:'] = Money
self.User.get(InId)['金额:'] = money
print('转账成功。。。。')
print(self.User)
count = 3
break
else:
print("转账金额有误,转账失败!")
break
else:
print('该账号已被锁定,不能向它转账!')
break
else:
print('转入的账号:%s 不存在!'%(InId))
else:
print('不能给自己转账!')
else:
count += 1
print("账号:%s 的密码错误,请重新输入!" % (OutId))
if count == 3:
self.User.get(OutId)['状态:'] = 1
print("账号已被锁定,无法执行该操作!")
print(self.User)
else:
print('该账号已被锁定,不能执行此操作!')
else:
print('转出账号:%s 的不存在,转出失败!'%(OutId))
# 改密
def ChangePassword(self):
CardId = input('请输入需要改密的账号:')
if self.User.get(CardId):
if self.User.get(CardId)["状态:"] == 0:
CardPassword = input('请输入需要改密账号的密码:')
if CardPassword == self.User.get(CardId).get('密码:'):
# 验明身份
ID = input("请输入该账号的身份证号:")
if ID == self.User.get(CardId)['身份证号:']:
NewPassword = input('请输入新密码:')
if NewPassword != CardPassword:
NewPassword1 = input("请确认新密码:")
if NewPassword == NewPassword1:
self.User.get(CardId)['密码:'] = NewPassword
print('改密成功!')
print(self.User)
else:
print('两次密码不一致,改密失败!')
else:
print('新密码与原密码一样,改密失败!')
else:
print('身份验证失败,无法改密!')
else:
print('卡号密码匹配不上,,不能修改!')
else:
print('该账号已被锁定,不能执行此操作!')
else:
print('账号不存在,不能改密!')
# 解锁
def UnLockCard(self):
CardId = input("请输入需要解锁的账号:")
if self.User.get(CardId):
if self.User.get(CardId)["状态:"] != 0:
CardPassword = input('请输入需要解锁账号的密码:')
if CardPassword == self.User.get(CardId)['密码:']:
ID = input('请输入解锁账号的身份证号:')
if ID == self.User.get(CardId)['身份证号:']:
self.User.get(CardId)['状态:'] = 0
print(self.User)
print('该账号解锁成功!')
else:
print('身份验明失败,无法解锁!')
else:
print('该账号未被锁定,无法解锁!')
else:
print("账号不存在,无法解锁!")
# 锁卡
def LockCard(self):
CardId = input('请输入需要锁定的卡号:')
if self.User.get(CardId):
if self.User.get(CardId)['状态:'] == 0:
CardPassword = input('请输入密码:')
if CardPassword == self.User.get(CardId).get('密码:'):
# 验明身份
ID = input("请输入该账号的身份证号:")
if ID == self.User.get(CardId)['身份证号:']:
self.User.get(CardId)['状态:'] = 1
print(self.User)
print('账号密码正确,该账号已被锁定!')
else:
print('身份验证失败,无法锁卡!')
else:
print('密码错误,锁卡失败!')
else:
print('该账号已被锁定!')
else:
print('卡号不存在,无法锁定!')
# 补卡
def NewCard(self):
CardId = input('请输入需要补卡的账号:')
if self.User.get(CardId):
CardPassword = input('请输入密码:')
if CardPassword == self.User.get(CardId)['密码:']:
# 验明身份
ID = input("请输入该账号的身份证号:")
if ID == self.User.get(CardId)['身份证号:']:
# 新旧卡号的替换 就是更换字典中的key值
newCard = self.CreateCardNum()
self.User[newCard] = self.User.pop(CardId)
self.User.get(newCard)['卡号:'] = newCard
print('补卡成功!')
print(self.User)
else:
print('身份验证失败,无法锁卡!')
else:
print('原卡密码错误,无法补办!')
else:
print('该账号不存在,无法补办!')
# 销户
def ClearUser(self):
CardId = input("请输入需要销户的账号:")
if self.User.get(CardId):
CardPassword = input('请输入销户的密码:')
if CardPassword == self.User.get(CardId)['密码:']:
ID = input('请输入销户的身份证号:')
if ID == self.User.get(CardId)['身份证号:']:
self.User.pop(CardId)
print('销户成功!')
print(self.User)
else:
print('身份验证不通过,无法销户!')
else:
print('销户账号的密码错误,无法销户!')
else:
print('账号不存在,无法销户!')
# 设置随机银行卡号
def CreateCardNum(self):
CardID = ''
key = self.User.keys()
while True:
num = random.randint(1, 9)
CardID += str(num)
if len(CardID) == 5 and CardID not in key:
break
return CardID
**
**
from ATM机.view import View
from ATM机.atm import atm
import time
import pickle
import os
def main():
# 实例化一个窗体对象
admin = View()
# 打开时间
res = time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime())
print(res)
a = 0
while a == 0:
Admin = input(“请输入账户:”)
Password = input(“请输入登陆密码:”)
# 调用视图,显示银行名和功能提示
if Admin == admin.admin and Password == admin.password:
admin.interface()
admin.func()
time.sleep(2)
try:
fillPath = os.path.join(‘F:\Python项目\Python练习\class\ATM机\user.txt’)
f = open(fillPath,’rb’)
allUser = pickle.load(f)
print(allUser)
f.close()
# 实例化一个atm机
a1 = atm(allUser)
except Exception :
allUser = {}
a1 = atm(allUser)
while True:
admin.func()
num = int(input(“请输入功能选项:”))
print(allUser)
# 开户
if num == 1:
a1.CreateUser()
# 查询
elif num == 2:
a1.CheckCard()
# 取款
elif num == 3:
a1.GetMoney()
# 存款
elif num == 4:
a1.SaveMoney()
# 转账
elif num == 5:
a1.TransferMoney()
# 改密
elif num == 6:
a1.ChangePassword()
# 解锁
elif num == 7:
a1.UnLockCard()
# 锁卡
elif num == 8:
a1.LockCard()
# 补卡
elif num == 9:
a1.NewCard()
# 销户
elif num == 10:
a1.ClearUser()
# 结束
elif num == 0:
with open('F:\Python项目\Python练习\class\ATM机\\user.txt', 'wb') as f:
pickle.dump(allUser, f)
a = 1
break
else:
print('功能选项输入有误,请重新输入!')
else:
print('管理员账号或密码错误!')
if name == ‘main‘:
main()
此代码比较浅显易懂,当然在一些方面还可以再精进一些,大家有想法的话,可以自己加上!