第三次作业(ATM)

#ATM功能

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

  

原文地址:https://www.cnblogs.com/datatool/p/13416196.html