解鎖的邏輯和鎖定的邏輯是一樣的,把鎖定的代碼粘貼過來加以修改就可以了
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
代碼示例圖: