银行管理系统,正则,time,random,超全注释

本文详细介绍了使用Python构建银行管理系统的实践,重点讲解了正则表达式在验证用户输入合法性方面的应用,以及如何利用random模块生成随机数进行模拟交易。代码中提供全面注释,帮助读者理解每个关键步骤。
摘要由CSDN通过智能技术生成

银行管理需求,正则,time,random,超全注释

import time # time的导包 不导包无法使用time语句
import random   # 随机数的导包  不导包无法使用随机数语句
import re  # 正则的导包 不导包无法使用正则语句

class Preson(object):                     #用户类:
    def __init__(self):
        self.name = ''
        self.idNum = ''
        self.phoneNum = ''
        self.cardNum = ""
        self.cardPass_word = ''
        self.cardCode = 0
        self.money = 0
class Bank(object):                     #银行类
    dict1 = {}    #
    list1 = []    #
    def shuijikahao(self):   #生成11位随机卡号
        str = "1234567890"   #
        str1 = ""
        while True:  # 死循环判断
            for x in range(11):  # 遍历X 依次拿11个
                str1 += random.choice(str) # 随机拿一个数放入 str1字符串里
            if str1 not in Bank.list1:  # 判断 如果str1没有存在于这个列表里
                Bank.list1.append(str1) # 往列表里加入str1
                break   # 结束循环
        return str1 # 返回值
    def open(self):        #开户方法
        per1 = Preson()     # 调用Preson类,给类里的变量赋值

        while 1:    # 死循环姓名输入的条件   1代表True
            per1.name = input("请输入姓名(支持数字字母下划线汉字):")    # 用户录入
            match_obj = re.fullmatch(r"\w+",per1.name)  # 写入姓名输入的条件进行判断 \w表示数字 字母 下划线  +表示可以有多个 注意此处不能用* *是0个或者多个 名字不能为0个
            if match_obj:   # 如果输入正确
                break       # 结束本次循环  注意 要在这里结束循环,而不是else,因为在else结束就达不到继续重新输入信息了
            else:           # 如果输入不正确
                print("*****名字不合法,请输入正确的姓名*****")  # 输出提示语句  继续上去循环
        while 1:     # 死循环身份证输入的条件
            per1.idNum = input("请输入身份证号:")  # 用户录入
            match_obj = re.fullmatch(r"\d{18}", per1.idNum) # 写入身份证输入的条件进行判断 \d代表仅允许数字 {18}表示数字长度的范围,
            if match_obj:   # 如果输入正确
                break       # 结束本次循环
            else:            # 如果输入不正确
                print("*****身份证不合法,请注意输入正确的18位身份证号*****") # 输出提示语句  继续上去循环
        while 1:     # 死循环密码输入的条件
            per1.cardPass_word = input("请输入6位数的数字组合登录密码:")   # 用户录入
            match_obj = re.fullmatch(r"\d{6}", per1.cardPass_word)  # 写入密码输入的条件进行判断 \d代表纯数字 {6}表示数字的长度范围
            if match_obj:  # 如果输入正确
                a = input("请确认登录密码:")  # 用户再次录入密码
                if a == per1.cardPass_word:   # 内判断 判断第一次录入与第二次录入是否一致
                    break       # 结果一致从这里结束循环
                else:           # 如果输入不正确
                    print("*****两次密码不一致,请重新开始设置*****") # 输出提示语句   重新开始循环
            else:               # 如果输入不正确
                print("*****请输入正确符合规范的密码*****") # 输出提示语句   重新开始循环

        while 1:     # 死循环电话输入的条件
            per1.phoneNum = input("请输入联系电话(13|15|18)开头:")   # 用户录入
            match_obj = re.fullmatch("(13|18|15)\d{9}", per1.phoneNum)
            # 写入手机号输入的条件进行判断 注意:fullmatch语句写入必须绝对正确  (13|18|15)表示数字的绝对开头 |是或者间隔符 ()是一个分组 {}里输入的数字要适当的减去前面所占的位置
            if match_obj:     # 如果输入正确
                break         # 结束本次循环
            else:             # 如果输入不正确
                print("*****请输入正确的电话号码*****") # 输出提示语句   重新开始循环
        while True:    # True=1  这里与while 1 的用法一致   # 死循环存款输入的条件
            per1.money = int(input("请输入预存款金额:"))     # 用户录入
            if per1.money <= 0:     # 如果金额小于等于0
                print("预存款金额必须大于0") # 提示语句  继续返回录入循环
            else: # 如果if语句判断不正确走这里
                break # 结束本次循环  注意break写在这里  因为这里才是判断语句是否正确的地方
        c = Bank.shuijikahao(self) # 随机一个银行卡号 找个变量接收 调用上面写好的方法
        per1.cardNum = c # 把随机的银行卡号 赋值给用户类里
        Bank.dict1[c] = per1    # 把用户类里的数据赋值给bank类里的dict1字典
        print(f"开户成功,您的卡号为{c},请牢记您的卡号")  # 提示开户成功  返回用户一个卡号
    def see(self):           #查询方法
        a = input("请输入您的卡号")
        if a not in Bank.dict1.keys():       #判断是否存在卡号
            print("卡号不存在,返回上一级")
            time.sleep(1)       # 做延时的
            return -1           # return表示返回上一级别
        if Bank.dict1[a].cardCode >= 3:      #判断错误次数是否已有三次
            print("已错误3次,卡已被冻结,请解冻后再试")
            print("返回上一级...........")
            time.sleep(1)        # 做延时的
            retu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值