銀行系統實戰(九):解鎖

解鎖的邏輯和鎖定的邏輯是一樣的,把鎖定的代碼粘貼過來加以修改就可以了

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

代碼示例圖:

 

發佈了79 篇原創文章 · 獲贊 64 · 訪問量 8211
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章