栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

注册和登录python实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

注册和登录python实现

一、构成

注册  ->   数据库(mysql)  -> 登录

注:若不能用mysql,可以用excel创建一个.CSV文件,使用Python的文件操作进行调取

import hashlib
str_user_name = input("请输入账号:")
str_password = input("请输入密码:")
p = open("user_password.csv","a")
hash_password = hashlib.md5(password.encode(encoding="UTF-8")).hexdigest()
p.write("{},{},{}n".format(user_name,password,hash_password))
p.close()

二、代码实现

import hashlib
import pymysql
def user_registration(): #注册
    """
    注册账户
    :return:
    """
    user_name=enter_user_name()
    if is_user_exist(user_name):
        password=enter_password()
        hash_password = hashlib.md5(password.encode(encoding="UTF-8")).hexdigest()
        insert_data((user_name,hash_password,"用户","申请中"))
    else:
        print("您输入账户已存在")
def is_user_exist(user_name):
    """
    判断账户存在
    :param user_name:账户
    :return: bool
    """
    tuple_user=data_obtained(user_name)
    for item in tuple_user:
        if user_name == item[0]:
            return False
    return True

def enter_user_name():
    """
    输入账户
    :return:格式正确的账户
    """
    while True:
        str_user_name = input("请输入账号:格式为双小写字母加8位数字")
        if len(str_user_name) == 10 and is_user_format(str_user_name):

            return str_user_name
        else:
            print("您的格式不正确,请重新输入10位账号")
            continue
def enter_user_name():
    """
    输入账户
    :return:格式正确的账户
    """
    while True:
        str_user_name = input("请输入账号:格式为双小写字母加8位数字")
        if len(str_user_name) == 10 and is_user_format(str_user_name):

            return str_user_name
        else:
            print("您的格式不正确,请重新输入10位账号")
            continue
def is_number(number):
    """
        判断数字
        :letter: 字符
        :return: bool
        """
    try:
        if 0 <= eval(number) <= 9:
            return True
        return False
    except:
        print()
        return False
def enter_password():
    """
    输入密码
    :return: 强密码
    """
    while True:
        str_password = input("请输入密码:包含大小写字母,数字,特殊字符并大于等于6位")
        if len(str_password) >= 6:

            if is_str_format(str_password) ==4:
                return str_password
            else:
                print("您的密码强度不够,请重新输入")
                continue
        else:
            print("密码的长度不够,请重新输入")
            continue
def is_str_format(str_password):
    """
    判断密码字符格式
    :param str_password: 密码
    :return:
    """
    count_big_letter = count_small_letter = count_num = count_special_character = 0
    for item in str_password:
        if is_big_letter(item):
            count_big_letter = 1
        elif is_small_letter(item):
            count_small_letter = 1
        elif is_number(item):
            count_num = 1
        elif is_special_character(item):
            count_special_character = 1
        else:
            print("有非法字符,请重新输入")
            return False
    return count_big_letter+count_num+count_small_letter+count_special_character

def is_big_letter(big_letter):
    """
    判断大写字母
    :big_letter:字符
    :return: Bool
    """
    if "A"<=big_letter<="Z":
        return True
    return False
def is_small_letter(small_letter):
    """
        判断小写字母
        :big_letter:字符
        :return: Bool
        """
    if "a"<= small_letter <="z":
        return True
    return False
def is_special_character(special_character):
    """
        判断特殊字符
        :big_letter:字符
        :return: Bool
        """
    if ord(special_character)<48 or  58 

下面代码设计到mysql 

def data_obtained(id):
    """
    调取数据
    :return:
    """
    conn=pymysql.connect(host="localhost",user="root",passwd="123456")
    conn.select_db("user")
    curcor = conn.cursor()
    sql = "select * from user where id=%s ;"
    curcor.execute(sql,(id))
    user = curcor.fetchall()
    return user
def insert_data(data):
    conn = pymysql.connect(host="localhost", user="root", passwd="123456")
    conn.select_db("user")
    curcor = conn.cursor()
    sql = "insert into user value (%s,%s,%s,%s)"
    curcor.execute(sql,(data[0],data[1],data[2],data[3]))
    print("操作成功")
    curcor.close()
    conn.commit()
    conn.close()
def update_passport(id,passport):
    """
    更新密码
    :param id:
    :param passport:
    :return:
    """
    conn = pymysql.connect(host="localhost", user="root", passwd="123456")
    conn.select_db("user")
    curcor = conn.cursor()
    sql = "update user set passport =%s where id=%s;"
    curcor.execute(sql,(passport,id))
    print("操作成功")
    curcor.close()
    conn.commit()
    conn.close()
def update_conditions(id,conditions="正常"):
    """
    更新账号状态
    :param id:账号
    :param conditions:状态,正常,
    :return:
    """
    conn = pymysql.connect(host="localhost", user="root", passwd="123456")
    conn.select_db("user")
    curcor = conn.cursor()
    sql = "update user set conditions =%s where id=%s;"
    curcor.execute(sql,(conditions,id))
    print("操作成功")
    curcor.close()
    conn.commit()
    conn.close()
def register():#登录
    """
    登录
    :return: bool
    """
    count = 0
    while True:
        user_name=enter_user_name()
        password=enter_password()
        if count != 3:
            if is_user_password_equality(user_name,password) and is_user_conditions(user_name):
                print("登录成功")
                if data_obtained(user_name)[0][-2] =="管理员":
                    if administrator_mean() == False:
                        return False
                else:
                    mean()
            else:
                count +=1
                continue
        else:
            update_conditions(user_name, conditions="锁定")
            print("输入超过3次,账号已锁定,请联系管理员解锁!")
def is_user_password_equality(user_name,password):
    """
    判断账户密码相对应
    :user_name:账户
    :return: bool
    """
    tuple_user=data_obtained(user_name)[0]
    hash_password = hashlib.md5(password.encode(encoding="UTF-8")).hexdigest()
    if user_name == tuple_user[0] and hash_password == tuple_user[1]:
        return True
    print("您输入账户不存在或密码错误,请重新输入")
    return False
def is_user_conditions(id):
    """
    判断用户状态
    :param id: 用户名
    :return: bool
    """
    tuple_user = data_obtained(id)[0]
    if tuple_user[-1] =="正常":
        return True
    print("你的用户处于申请中,请联系管理员")
    return False
def delete_data(user_name):
    conn = pymysql.connect(host="localhost", user="root", passwd="123456")
    conn.select_db("user")
    curcor = conn.cursor()
    sql = "delete from user where user_name=%s;"
    curcor.execute(sql,(user_name))
    curcor.close()
    conn.commit()
    conn.close()
def data_all_obtained():
    """
    调取所有数据
    :return:
    """
    conn=pymysql.connect(host="localhost",user="root",passwd="123456")
    conn.select_db("user")
    curcor = conn.cursor()
    sql = "select * from user  ;"
    curcor.execute(sql)
    user = curcor.fetchall()
    print("{:<12}t{:<70}t{:<5}t{:<5}".format("账户","密码","性质","状态"))
    for items in user:
        print("{:<12}t{:<70}t{:<5}t{:<5}".format(items[0],items[1],items[2],items[3]))
def data_falue_conditions():
    """
    调取状态异常数据
    :return:
    """
    conn=pymysql.connect(host="localhost",user="root",passwd="123456")
    conn.select_db("user")
    curcor = conn.cursor()
    sql = "select * from user where conditions <>'正常';"
    curcor.execute(sql)
    user = curcor.fetchall()
    print("{:<12}t{:<5}".format("账户","状态"))
    for items in user:
        print("{:<12}t{:<5}".format(items[0],items[-1]))

def register_mean():
    """
    菜单

    """

    while True:
        try:
            int_choice = int(input("""
            **********菜单**********
            1.注册
            2.登录
            3.退出
            """))
        except:
            print("指令错误,请重新输入")
            continue
        if int_choice == 1:
            user_registration()
            continue
        elif int_choice ==2:
            register()
            continue
        elif int_choice ==3:
            print("程序结束,谢谢使用")
            return False
def administrator_mean():
    print("欢迎进入墨非墨所创信息系统,该模块为管理员模块,欢迎使用")
    while True:
        try:
            int_choice = int(input("""
            **********菜单**********
                    1.查看用户
                    2.修改密码
                    3.用户确认
                    4.删除用户
                    5.退出
            **********墨非墨**********
            """))
        except:
            print("指令错误,请重新输入")
            continue

        if int_choice == 1:
            data_all_obtained()
            continue
        elif int_choice == 2:
            id=input("账户")
            passport = input("修改的密码")
            update_passport(id,passport)
            continue
        elif int_choice == 3:
            data_falue_conditions()
            id = input("账户")
            update_conditions(id)
            continue
        elif int_choice == 4:
            id = input("请输入删除账户")
            delete_data(id)
            print("此功能尚在开发,代码已完成")
            continue
        elif int_choice == 5:
            print("返回上级菜单")
            return False
        else:
            print("指令错误,请重新输入")
            continue

def mean():
    print("欢迎进入墨非墨所创信息系统,该模块待完善,敬请期待")
    return False

register_mean()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323511.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号