Python实现用户注册登录功能

2023-05-16

一.环境:

        python3 + vscode

二. 文件:

  1. 【程序文件】用户/管理员~注册/登陆.py
  2. 【启动标记文件】flag.txt  ->  文件内容:0

三.程序步骤分块:

  1.  主程序入口
  2. 初次启动后,初始化文件更改标记

  3. 启动后信息初始化

  4. 打印登陆菜单

  5. 用户选择

  6. 管理员登陆

  7. 用户注册

  8. 用户登陆

四.程序:

import os

# 定义一个全局变量保存名字
file_name = '普通用户变量保存名字'


# 程序入口
def main():
    # 打开文件
    with open(r'flag.txt', mode='rt', encoding='utf-8') as flag:
        # 读取文件
        word = flag.read()
    if word == '0':
        print('首次启动!')
        c_flag()                                                                        # 更改标记为1
        init()                                                                          # 初始化资源
        print_login_menu()                                                              # 打印登陆菜单
        user_selsct()                                                                   # 选择用户
    elif word == '1':
        print('欢迎会回来!')
        print_login_menu()
        user_selsct()
    else:
        print('初始化参数错误!')


# 初次启动后,标记文件更改
def c_flag():
    with open(r'flag.txt', mode='wt', encoding='utf-8') as flag:
        flag.write('1')


# 启动后信息初始化
def init():
    root = {'r_name': 'zcy', 'r_pwd': '117'}                                            # 字典存放管理员账号信息
    with open(r'u_root.txt', mode='wt', encoding='utf-8') as u_root:                    # 创建并打开管理员账号的文件
        u_root.write(str(root))                                                         # 写入管理员信息
    if not os.path.exists(file_name):                                                   # 判断是否存在存放普通用户信息的文件夹
        os.mkdir(file_name)                                                             # 没有则创建


# 打印登陆菜单
def print_login_menu():
    print('用户选择'.center(10, '-'))
    print('1.管理员登陆')
    print('2.普通用户登陆')
    print(''.center(10, '-'))


# 用户选择
def user_selsct():
    while True:
        user_type_selext = input('请选择用户类型:').strip()
        if user_type_selext == '1':
            root_login()                                            # 管理员登陆
            break
        elif user_type_selext == '2':                               # 普通用户登陆
            while True:
                select = input('是否需要注册?(y/n):').strip()
                if select == 'y' or select == 'Y':
                    # print('用户注册')
                    user_register()                                # 用户注册
                    user_login()
                    break
                elif select == 'n' or select == 'N':
                    # print('用户登陆')
                    user_login()                                  # 用户登陆
                    break
                else:
                    print('输入有误,请重新输入')
            break
        else:
            print('请输入已有的编号')


# 管理员登陆
def root_login():
    while True:
        print('---管理员登陆---')
        root_number = input('请输入你的账号:').strip()
        root_password = input('请输入你的密码:').strip()
        with open('u_root.txt', mode='rt', encoding='utf-8') as u_root:                     # 打开存放管理员信息的文件
            root = eval(u_root.read())                                                      # 读取管理员信息,并把读取成字符串的信息转换成字典
        # 账号信息验证
        if root_number == root['r_name'] and root_password == root['r_pwd']:
            print('登陆成功')
            break
        else:
            print('验证失败!')


# 用户注册
def user_register():
    print('---用户注册---')
    while True:
        user_id = input('请输入你的账号:').strip()
        user_pwd = input('请输入你的密码:').strip()
        user_name = input('请输入你的昵称:')
        # 获取file_name目录中所有的文件,os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
        user_list = os.listdir(file_name)
        # 遍历列表,判断user_id是否在列表中
        if user_id not in user_list:
            user = {"u_id": user_id, "u_pwd": user_pwd, "u_name": user_name}
            user_path = file_name + '/' + user_id                                       # 创建用户文件
            with open(user_path, mode='wt', encoding='utf-8') as user_file:             # 写入用户信息
                user_file.write(str(user))
            break
        else:
            print('账号已存在,请重新注册!')


# 用户登陆
def user_login():
    while True:
        print('---用户登陆---')
        user_id = input('请输入你的账号:').strip()
        user_pwd = input('请输入你的密码:').strip()
        # 获取file_name目录中所有的文件,os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
        user_list = os.listdir(file_name)
        # 遍历列表,判断user_id是否在列表中
        if user_id in user_list:
            print('登陆中...')
            # 构建用户路径
            user_path = user_path = file_name + '/' + user_id
            # 打开路径对应用户文件,读取,转换字典,关键字取密码进行判断
            if user_pwd == eval(open(user_path, mode='rt', encoding='utf-8').read())['u_pwd']:
                print('登陆成功')
                break
            else:
                print('登陆失败,账号或密码错误,请重新输入')
        else:
            print('账号不存在,请先注册!')
            break


if __name__ == '__main__':
    main()

【注】:此为个人学习作业练习

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python实现用户注册登录功能 的相关文章

  • 远程桌面--某些设置由你的组织管理

    解决某些设置由你的组织管理 在cmd的运行里输入 gpedit msc 选择 计算机配置 gt 选择 管理模块 gt 选择 Windows组件 gt 选择 远程桌面服务 gt 选择 远程 桌面会话主机 gt 选择 连接 gt 右击 允许用户
  • 数据结构--第三章--栈和队列--知识点回顾

    第三章 栈和队列 一 基本知识点 1 栈 队列和线性表的异同 2 顺序栈的基本运算算法设计 3 链栈的基本运算算法设计 4 顺序队的基本运算算法设计 5 环形队列和非环形队列的特点 6 链队的基本运算算法设计 7 利用栈 队列求解复杂的应用
  • 实验四 SQL连接查询

    一 实验目的 xff1a 掌握SQL连接查询语句 二 实验内容和主要步骤 xff1a 查询每个学生及其选修成绩的情况 select sno cno Grade from sc 分别用左外连接和右外连接实现查询所有学生信息及其选修成绩的情况
  • wsl+opencv——清除旧版并安装新版,实测有效

    写在前面 我用的是cmake方式编译安装的opencv xff0c 但一直弄不好contrib这个东西 xff0c 索性先不用老版本的opencv我把源文件都删掉了 xff0c 没法用网上的一些方法make uninstall 卸载清除旧版
  • JAVA编程——父子类

    编程需求 需求如下 xff1a 编写父类People xff0c 子类Student继承自People类 父类People具有姓名 xff0c 性别 xff0c 年龄等性质 xff0c 还具有吃和说的行为 子类Student继承父类Peop
  • 部署zabbix6.2

    zabbix6 2安装步骤 配置阿里云源 注意本机的操作系统的centos8 span class token punctuation span root 64 localhost span class token operator spa
  • zabbix功能介绍

    1 zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix能监视各种网络参数 xff0c 保证服务器系统的安全运营 xff1b 并提供灵活的通知机制以让系统管理员快速定位
  • haproxy部署安装

    haproxy简介 HAProxy是一个使用C语言编写的自由及开放源代码软件 xff0c 其提供高可用性 负载均衡 xff0c 以及基于TCP和HTTP的应用程序代理 HAProxy特别适用于那些负载特大的web站点 xff0c 这些站点通
  • KVM虚拟化介绍和安装使用方法

    一 KVM虚拟化介绍 虚拟化 xff1a 在一台计算机上虚拟出多个逻辑的计算机 xff0c 而且每个逻辑计算机 它可以是不同操作系统 虚拟化技术 xff1a 可以扩大硬件容量 xff0c 单个cpu模拟出多个cpu并行 xff0c 允许一个
  • nginx反向代理与负载均衡以及高可用

    nginx反向代理介绍 nginx通常被用作后端服务器的反向代理 xff0c 这样就可以很方便的实现动静分离以及负载均衡 xff0c 从而大大提高服务器的处理能力 nginx实现动静分离 xff0c 其实就是在反向代理的时候 xff0c 如
  • Ceph 配置URL访问s3 Bucket

    一 创建json文件 xff0c 用于编辑policy xff0c 文件内容如下 xff08 Version并不重要 xff09 xff0c Action存在多种选择 如步骤三所示 xff0c 并且允许同时选择多个 xff0c 本文只是通过
  • nginx做负载均衡服务器,配置动静分离

    nginx做负载均衡服务器 xff0c 配置动静分离 1 题目要求 xff1a 后端RS服务器 台部署LNMP nginx1 22 43 mysql8 0 43 php8 1 xff0c 台部署 httpd 要求nginx和php使 编译安
  • 常用自动化运维工具简介和Ansible安装

    自动化运维工具 Puppet Puppet是历史悠久的运维 具之 它是 种基础架构即代码 xff08 IaC xff09 具 xff0c 使 户可以定 义其 基础架构所需的状态 xff0c 并使系统 动化以实现相同状态 Puppet可监视
  • Python之变量、数据类型、类型转换、运算符

    Python学习笔记2022 1 10 pycharmSettingsFont 设置字体字形 大小 行距Keymap 设置快捷键project 变量 xff0c 容器 格式 xff1a 变量名 61 值变量名命名规范 xff1a 数据类型i
  • 强连通分量分解详解 超级详细

    xff08 写的有点小多 xff0c 慢慢看 xff0c 会有收获的 xff09 xff08 1 xff09 首先我们得了解 xff0c 什么是强连通 xff1f 如果在一个有向图顶点子集内 xff0c 任取两个点 u 和 v xff0c
  • c语言中%d %%d %%%d和\\%d的区别

    1 d xff0c 表示按整型输出后面给出的变量的值 2 d xff0c 这就会被拆成两部分看待 xff0c 一是 在C语言中就是输出一个 xff0c 而是 d 就是一个普通字符 xff0c 所以当 d 在一起时 xff0c 其含义就是输出
  • 无法找到模块“vue-json-viewer””的声明文件。

    报错信息 xff1a 无法找到模块 vue json viewer 的声明文件 Users pins Desktop 运营平台 joinpins infomation sysytem node modules vue json viewer
  • VIM-配置-.vimrc

    前言 在使用vim的时候我们可以输入 xff1a set nu 显示行号 xff0c 但每次都输一遍操作就显得冗余 将这段命令写入vimrc就可以避免重复操作 在linux环境下 xff0c 配置文件一般都叫 rc xff0c rc是 ru
  • mysql中关联json字段查询,将json存储的数组转换成一张临时表

    mysql中的json字段中存了一个数组 要将这个数组中符合条件的数据取出来 xff0c 数据库结构如下 xff1a CREATE TABLE 96 school 96 96 id 96 bigint NOT NULL AUTO INCRE
  • 树莓派入坑笔记

    一 安装树莓派官方操作系统Raspbian stretch步骤 xff1a 准备好SD卡 xff08 大小一般16GB及以上 xff09 准备SD卡的读卡器 准备树莓派的镜像 xff1a 链接 xff1a https pan baidu c

随机推荐

  • yolov5知识笔记

    1 在yolov的同等目录下创建一个自己的数据集文件夹 xff0c 存放自己的数据集 xff08 dataset xff09 xff1b 2 在dataset数据文件夹里 xff08 coco128 xff09 创建 train2017 存
  • Ceph安装步骤2——ceph存储池

    Ceph安装步骤1完成之后 xff0c 即可进行该步骤的操作 本文中以对sas池进行操作为例 一 创建Ceph Pool 1 计算每个池所需要的PG数目 在创建池之前 xff0c 首先需要计算PG数目 xff08 简单来说 xff0c PG
  • scrapy安装笔记并使用

    1 安装方法 xff1a Linux Mac xff1a pip install scrapy windows 简单使用直接pip install scrapy即可 1 pip install wheel 用于安装twisted 2 下载t
  • rosbag库的安装

    Output 1 python3 m pip install bagpy 2 python3 m pip install roslz4 extra index url https rospypi github io simple 1 安装a
  • 下载安装dingding

    百度搜索钉钉官网 xff1a https page dingtalk com wow z dingtalk simple ddhomedownlaod 下载安装包 xff1a com alibabainc dingtalk 1 4 0 20
  • su认证失败

    sudo passwd
  • 2021.12.30遇到的错误:No module named ‘paddle‘

    实际上已经安装了paddlepaddle xff0c 但不知为何又报这个错误 根据提示可知原因为未安装paddle 于是又去安装百度飞桨官网安装paddle 安装命令为 python span class token operator sp
  • 计组第六课

    汇编语言的组成 1 汇编指令 xff1a 机器码的助记符 xff0c 有对应机器码 2 伪指令 xff1a 无对应机器码 xff0c 由编译器执行 xff0c 没有对应机器码 3 其他符号 xff1a 如 43 等 xff0c 由编译器识别
  • GitLab秘钥添加

    前提 xff1a 下载Git Bash软件 xff0c 并拥有GitLab账号 1 选择用户主目录 xff08 C 用户 用户名 xff09 下 xff0c 新建一个文件夹 直接修改其文件名为 ssh会提示 必须输入文件名 xff0c 修改
  • C++/C sort函数用法(详细),cmp的构造--一学就会,一用就对

    sort函数 sort是c 43 43 STL标准库中提到的基于快速排序的排序函数 xff0c 在做题的时候使用sort函数很方便 xff0c 使用sort要使用 include 快速排序具有不稳定性 不稳定性是指 xff0c 对于指定区域
  • 远程桌面蓝屏解决办法

    远程桌面蓝屏解决方法 原理 xff1a 重新启动远程桌面进程 操作 xff1a Ctrl Alt End 进入任务管理器 选择expolrer exe结束进程 切换到C盘的Windows目录 运行expolrer exe
  • DPU环境配置

    DPU 型号 xff1a MBF2M516A CEEOT xff08 全高半长 xff08 FHHL xff09 DPU xff09 DPU 类型 xff1a NVIDIA BlueField 2 Ethernet DPU 操作系统 xff
  • s3cmd安装及配置

    一 安装s3cmd 安装命令如下所示 xff1a yum y install python pip pip install s3cmd 二 配置s3cmd 配置s3cmd有两种方式 xff1a 1 使用s3cmd configure方式配置
  • C++中cin输入过程中如何处理ctrl+c输入

    引子 今天在写一个while true 循环程序 xff0c 程序中有用到SetConsoleCtrlHandler函数处理CTRL 43 C输入 xff0c 用到cin输入时不小心按下ctrl 43 c进入了无限循环 xff0c cin不
  • 如果正确修改数据库编码为utf8仍然无法插入中文可以试试用Navicat插入数据

    我的MySQL编码已经修改为utf8 但是仍然无法插入中文数据 如下 这是我的MySQL编码格式 此时插入中文数据就会报错 我的解决办法是使用Navicat插入数据 使用eclipse连接并输出后可以正常执行 lt 64 page lang
  • 如何用LaTeX写一个PPT

    如何用LaTeX写一个PPT 说到写PPT大家一般会想到的是微软的Microsoft PowerPoint xff0c 因为他更易于制作并且拥有丰富的动画 xff0c 但是当你需要制作一个学术相关的ppt时 xff0c 你需要更好的排版以及
  • Ubuntu 22.04图形界面的卸载

    如果你想在 Ubuntu 上卸载图形界面 xff0c 可以按照以下步骤操作 xff1a 进入终端界面 xff1a 按下 Ctrl 43 Alt 43 F3 xff08 或者其他 F1 F6 xff09 可以切换到终端界面 xff0c 然后使
  • 百鸡百钱问题

    我国古代数学家张丘建在 算经 一书中曾提出过著名的 百钱买百鸡 问题 该问题叙述如下 xff1a 鸡翁一 xff0c 值钱五 xff1b 鸡母一 xff0c 值钱三 xff1b 鸡雏三 xff0c 值钱一 xff1b 百钱买百鸡 xff0c
  • 2.【已修复】windows10更新:你的设备中缺少重要的安全和质量修复。

    问题 xff1a 由于自己给笔记本重装Windows10 专业版系统 xff0c 用一段时间后发现系统更新失败 xff0c 更新错误 xff1a 你的设备中缺少重要的安全和质量修复 危 xff1a 电脑有问题先备份资料 解决问题 xff1a
  • Python实现用户注册登录功能

    一 环境 python3 43 vscode 二 文件 xff1a 程序文件 用户 管理员 注册 登陆 py 启动标记文件 flag txt gt 文件内容 xff1a 0 三 程序步骤分块 xff1a 主程序入口 初次启动后 xff0c