解锁的逻辑和锁定的逻辑是一样的,把锁定的代码粘贴过来加以修改就可以了
import random
from user import User
from card import Card
class ATM(object):
def __init__(self):
self.allUser = {}
# 开户
def create_user(self):
"""
业务 输入信息,在字典中添加一对键值对。
:return:
"""
name = input('请输入您的姓名:')
id_card = input('请输入您的身份证号码:')
phone = input('请输入您的电话号码:')
# 预存款
pre_deposit = int(input('请输入预存款'))
if pre_deposit < 0:
print('预存款输入有误!!开户失败。。。。。。')
return -1
# 先预置一个密码
f_pwd = int(input('请设置密码 > > >'))
if not self.check_pwd(f_pwd):
print('密码输入错误,开户失败。。。')
return -1
# 卡号
card_id = self.random_card_id()
card = Card(card_id, f_pwd, pre_deposit)
user = User(name, id_card, phone, card)
# 存到字典
self.allUser[card_id] = user
print('开户成功!!!卡号为%s' % card_id)
print(self.allUser)
# 查询
def search_userInfo(self):
card_num = input("请输入您的卡号")
# 验证是否存在此卡
user = self.allUser.get(card_num)
if not user:
print('该卡号不存在,查询失败')
return -1
# 验证是否锁卡
if user.card.card_lock:
print('该卡已被锁定,请解锁后再进行操作!')
return -1
# 验证密码是否正确
if not self.check_pwd(user.card.card_pwd):
print('密码输入错误,查询失败')
user.card.card_lock = True
return -1
print('帐号:%s\n余额:%d' % (user.card.card_id, user.card.card_money))
def draw_money(self):
pass
# 存款
def deposit(self):
pass
# 转账
def transfer_accounts(self):
pass
# 改密
def change_pwd(self):
pass
# 锁定
def lock_user(self):
card_num = input("请输入您的卡号")
# 验证是否存在此卡
user = self.allUser.get(card_num)
if not user:
print('该卡号不存在,锁定失败')
return -1
if user.card.card_lock:
print('该卡已被锁定!!!请解锁后在使用其它功能。。。。。。')
# 验证密码是否正确
if not self.check_pwd(user.card.card_pwd):
print('密码输入错误,锁定失败')
return -1
temp_id = input('请输入您的身份证号码')
if temp_id != user.id_card:
print('身份证号码输入有误,锁定失败')
return -1
# 锁定
user.card.card_lock = True
print('锁定成功!!!')
# 解锁
def unlock_user(self):
card_num = input("请输入您的卡号")
# 验证是否存在此卡
user = self.allUser.get(card_num)
if not user:
print('该卡号不存在,解锁失败')
return -1
if not user.card.card_lock:
print('该卡未被锁定,请放心使用')
# 验证密码是否正确
if not self.check_pwd(user.card.card_pwd):
print('密码输入错误,解锁失败')
return -1
temp_id = input('请输入您的身份证号码')
if temp_id != user.id_card:
print('身份证号码输入有误,解锁失败')
return -1
# 锁定
user.card.card_lock = False
print('解锁成功!!!')
# 补卡
def new_card(self):
pass
# 销户
def kill_user(self):
pass
# 验证密码
def check_pwd(self, in_pwd):
for i in range(3):
temp_pwd = int(input('请输入密码'))
if temp_pwd == in_pwd:
return True
else:
print('密码输入错误')
return False
# 生成卡号
def random_card_id(self):
card_id = ''
for i in range(19):
a = random.randint(0, 9)
card_id += str(a)
if not self.allUser.get(str):
return card_id
代码示例图: