简易用户登录系统【Python】

功能:

         用户注册、登录、密码修改

LoginSystem.py

源码:

from Ueser import *
from time import sleep
from random import randint

class UserLongin(object):
    def __init__(self):
        # 创建存储用户信息列表
        self.user_list = []
    # 一 程序入口函数
    def run(self):
        # 1 加载文件中的用户数据
        self.load_users()
        while True:
            # 2 显示功能菜单
            self.show_menu()
            # 3 用户输入功能选项
            menu = int(input('请输入选项:'))
            # 4 根据选项执行对应功能
            if menu == 1:
                self.login()
            elif menu == 2:
                self.register()
            elif menu ==3:
                self.change_pwd()
            elif menu == 0:
                print('谢谢使用!')
                break
            else:
                print('无该功能!!!')
    # 二 系统功能函数
    # 2.1显示菜单函数
    @ staticmethod  # 申明静态方法
    def show_menu():
        print('\t\t欢迎使用XXX用户登录系统')
        print('\t1-->登录')
        print('\t2-->没有账号?去注册')
        print('\t3-->忘记密码?去找回')
        print('\t0-->退出系统')
    # 2.2 登录函数
    def login(self):
        print('\t欢迎来到登录界面')
        name = input('用户名(账号):')
        password = input('密 码:')
        for u in self.user_list:
            if u.name == name:
                if u.password == password:
                    print('登录成功!')
                    print('1秒后退出系统……')
                    sleep(1)
                    return   # 登录成功直接退出
                else:
                    print('账号或密码错误!')
                    return
        else:
            print('账号或密码错误')
            return
        sleep(1)
    # 2.3 注册函数
    def register(self):
        print('欢迎来到注册界面')
        i = 0
        name = input('请设置用户名:')
        while True:
            for u in self.user_list:
                if i == 3:
                    print('多次设置不符合要求__1秒后返回主界面……')
                    sleep(1)
                    return
                elif u.name == name:
                    print('此用户名已被占用!换一个吧!')
                    name = input('请设置用户名:')
                    i += 1
                    break
            else:
                break
        i = 0
        while True:
            # 两次校验密码
            password = input('请设置您用户密码:')
            password_time2 = input('请再确认一次密码:')
            if password == password_time2:
                break
            elif i == 3 :
                print('多次设置不符合要求__2秒后返回主界面……')
                sleep(1)
                return
            else:
                i += 1
                print('两次输入密码不一致哦!请重新设置!')
        tel = input('输入手机号以绑定您的手机:')
        ver_code = self.verification_code(6)    # 生成6位验证码用于用户身份验证
        print(f'已向尾号为{tel[7:]}的手机用户发送了验证码!……')
        sleep(0.5)
        print(ver_code)
        i = 0
        while i < 3:
            ver_code_userinput = input('请输入验证码:')
            if ver_code_userinput == ver_code:
                break
            if i == 3:
                print('多次设置不符合要求__1秒后返回主界面……')
                sleep(1)
                return
            else:
                print('验证码错误,重新输入!')
                i += 1
        new_user = User(name,password,tel)  # 创建用户对象并赋值属性
        self.user_list.append(new_user)     # 向用户列表添加该用户
        self.save_info()    # 保存用户信息到文件
        sleep(1)
        print('恭喜您注册成功')

    # 2.4 修改密码函数
    def change_pwd(self):
        """
        通过用户名寻找要修改密码的用户
        然后通过手机验证码获取改密码权限
        """
        user_name = input('请输入用户名:')
        for u in self.user_list:
            if u.name == user_name:
                user_tel = u.tel
                break
        else:
            print('无该用户!')
            return
        print(f'已向尾号为{user_tel[7:]}的手机用户发送了验证码!……')
        ver_code = self.verification_code(6)
        sleep(0.5)
        print(ver_code)
        i = 0
        while i < 3:
            ver_code_userinput = input('请输入验证码:')
            if ver_code_userinput != ver_code:
                print('验证码错误,重新输入!')
                i += 1
            else:
                break
        else:
            return
        i = 0
        while True:
            password = input('请设置您新密码:')
            password_time2 = input('请再确认一次密码:')
            if password == password_time2:
                break
            elif i == 3:
                print('多次设置不符合要求__2秒后返回主界面……')
                sleep(2)
                return
            else:
                i += 1
                print('两次输入密码不一致哦!请重新设置!')
        u.password = password
        self.save_info()
        sleep(1)
        print('修改成功!')

    # 2.5 保存用户信息
    def save_info(self):
        f = open('Users.data','w')
        new_user_list = [i.__dict__ for i in self.user_list]    # 将列表元素转化为字典(推导式写法)
        f.write(str(new_user_list))
        f.close()

    # 2.6 加载用户信息
    def load_users(self):
        try:
            f = open('Users.data','r')
        except:
            f = open('Users.data','w')
        else:
            data = f.read()
            new_list = eval(data)   # 读取到的数据中字符串列表转化为列表
            self.user_list = [User(i['name'],i['password'],i['tel'])for i in new_list] # 将列表中的字典转化为对象
        finally:
            f.close()

    # 生成随机验证码
    @staticmethod
    def verification_code(n):
        """
        通过传入的参数生成指定位数的随机数
        通过每次生成一个0~9的数字
        然后把它们转化为字符并拼接起来
        :param n:要求生成随机数的位数
        :return: 生成的随机数
        """
        code = ''  # 创建空字符串一会存储验证码
        for i in range(n):
            num = randint(0,9)
            code += str(num)
        return code
main.py

from LoginSystem import UserLongin

if __name__ == '__main__':
    user_system = UserLongin()
    user_system.run()
User.py
class User():
    def __init__(self,name,password,tel):
        # 用户名
        self.name = name
        # 密码
        self.password = password
        # 手机号
        self.tel = tel

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.魚肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值