银行系统实战(九):解锁

解锁的逻辑和锁定的逻辑是一样的,把锁定的代码粘贴过来加以修改就可以了

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

代码示例图:

发布了59 篇原创文章 · 获赞 49 · 访问量 6081

猜你喜欢

转载自blog.csdn.net/weixin_38114487/article/details/104177311