python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!

2023-11-07

前言&思维导图

用户登录模块是最基本的模块之一,主要设计的有当前用户存在判断,用户注册,用户登录名和密码的保存,用户信息输出等等;

在这里插入图片描述

1.判断首次启动

通过判断flag.txt是否存在,判断是不是首次启动;

这是一种简单而常见的手法,常在程序初始化的时候会有这样的需求。

判断一个特定文件存在与否,或者判断配置文件的值是否改变;

就能够判断出来当前是不是首次启动,是的话,初始化程序,不是则不变等等

(这是后续了,根据需求来,记住这个小方法即可!)

这里是判断flag.txt是否存在

2.用户注册

用户信息单独文件保存

# 用户注册 用户信息单独文件保存
def user_register():
    user_id = input('输入账户id:')
    user_pwd = input('输入用户密码:')
    user_name = input('输入用户昵称:')
    user = {'u_id': user_id, 'u_pwd': user_pwd, 'u_name': user_name}
    user_path = "./users/" + user_id # 新建文件夹保存信息
    file_user = open(user_path, 'w')  
    file_user.write(str(user))  
    file_user.close()  

在文件中保存的信息如下:
在这里插入图片描述

3、管理员信息&登录

管理员身份是写死的 名称 root 密码 123456

身份信息同样是新建一个文件,保存
在这里插入图片描述

# 初始化管理员
def init():
    if os.path.exists('users') == False:
        file = open('u_root.txt', 'w') 
        root = {'rnum': 'root', 'rpwd': "123456"}
        file.write(str(root)) 
        file.close()  
        os.mkdir('users')  

管理员登录;

# 管理员登陆
def root_login():
    while True:
        print('****管理员登陆****')
        root_number = input('请输入管理员账户名:')
        root_password = input('请输入管理员密码:')
        file_root = open('u_root.txt', 'r')  # 只读打开文件
        root = eval(file_root.read())  # 读取账户信息
     
        if root_number == root['rnum'] and root_password == root['rpwd']:
            print('管理员登陆成功!')
            break
        else:
            print('很遗憾!验证失败')

4.用户登录

选择是注册还是登录;

注册和 上述2 一样

登录和管理员登录类似,匹配信息就好了

# 普通用户登录
def user_login():
    while True:
        print('****普通用户登录****')
        user_id = input('请输入账户名')
        user_pwd = input('请输入密码:')

        user_list = os.listdir('./users')  # 遍历元组,判断user_id是否在元组中
        flag = 0
        for user in user_list:
            if user == user_id:
                flag = 1
                print('登录中····')
                # 打开文件
                file_name = './users/' + user_id
                file_user = open(file_name)
                # 获取文件内容
                user_info = eval(file_user.read())
                if user_pwd == user_info['u_pwd']:
                    print('登录成功!')
                    # 此处根据需求,可以跳转到登陆成功之后的操作
                    break

        if flag == 1:
            break
        elif flag == 0:
            print('您并没有注册!请您先注册用户')
            break

在这里插入图片描述

users文件夹下,就会新增 qqqqqq 用户的信息了!
在这里插入图片描述

在这里插入图片描述

5.完整代码

# 文件存储管理信息
import os

# 判断是否首次使用系统
def is_first_use():
    if os.path.exists('flag.txt') == False:
        print('首次启动')
        flag = open('flag.txt', 'w+')
        flag.write('1')
        flag.close()  # 关闭文件
        init()  # 初始化资源
        print_login_menu()  # 打印登录菜单
        user_select()  # 选择用户
    else:
        flag = open('flag.txt', 'r')
        word = flag.read()
        if len(word) == 1:
            init()  # 初始化资源
            print_login_menu()  # 打印登录菜单
            user_select()  # 选择用户


# 初始化管理员
def init():
    if os.path.exists('users') == False:
        file = open('u_root.txt', 'w')  # 创建并打开管理员账户文件
        root = {'rnum': 'root', 'rpwd': "123456"}
        file.write(str(root))  # 写入管理员信息
        file.close()  # 关闭管理员账户文件

        os.mkdir('users')  # 创建普通用户文件夹


# 打印登录菜单
def print_login_menu():
    print('----用户登录----')
    print('1-管理员登陆')
    print('2-普通用户登陆')
    print('--------------')
    print('请选择您的登陆身份')



# 用户选择
def user_select():
    while True:
        user_type_select = input('请选择用户类型')
        if user_type_select == '1':  # 管理员登陆验证
            root_login()
            break
        elif user_type_select == '2':  # 普通用户
            while True:
                select = input('是否需要注册?(y/n):')
                if select == 'y' or select == 'Y':
                    print('----用户注册----')
                    user_register()  # 用户注册
                    break
                elif select == 'n' or select == 'N':
                    print('----用户登录----')
                    break
                else:
                    print('输入有误,请重新选择')
            user_login()  # 用户登录
            break
        else:
            print('输入有误,请重新选择')


# 管理员登陆
def root_login():
    while True:
        print('****管理员登陆****')
        root_number = input('请输入管理员账户名:')
        root_password = input('请输入管理员密码:')
        file_root = open('u_root.txt', 'r')  # 只读打开文件
        root = eval(file_root.read())  # 读取账户信息
        # 信息匹配
        if root_number == root['rnum'] and root_password == root['rpwd']:
            print('管理员登陆成功!')
            break
        else:
            print('很遗憾!验证失败')


# 用户注册 用户信息单独文件保存
def user_register():
    user_id = input('输入账户id:')
    user_pwd = input('输入用户密码:')
    user_name = input('输入用户昵称:')
    user = {'u_id': user_id, 'u_pwd': user_pwd, 'u_name': user_name}
    user_path = "./users/" + user_id # 新建文件夹保存信息
    file_user = open(user_path, 'w')
    file_user.write(str(user))
    file_user.close()


# 普通用户登录
def user_login():
    while True:
        print('****普通用户登录****')
        user_id = input('请输入账户名')
        user_pwd = input('请输入密码:')

        user_list = os.listdir('./users')  # 遍历元组,判断user_id是否在元组中
        flag = 0
        for user in user_list:
            if user == user_id:
                flag = 1
                print('登录中····')
                # 打开文件
                file_name = './users/' + user_id
                file_user = open(file_name)
                # 获取文件内容
                user_info = eval(file_user.read())
                if user_pwd == user_info['u_pwd']:
                    print('登录成功!')
                    # 此处根据需求,可以跳转到登陆成功之后的操作
                    break

        if flag == 1:
            break
        elif flag == 0:
            print('您并没有注册!请您先注册用户')
            break


if __name__ == '__main__':
    is_first_use()

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

python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现! 的相关文章

  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 使用 kivy textinput 的 'input_type' 属性的问题

    您好 我在使用 kivy 的文本输入小部件的 input type 属性时遇到问题 问题是我制作了两个自定义文本输入 其中一个称为 StrText 其中设置了 input type text 然后是第二个文本输入 名为 NumText 其
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • import matplotlib.pyplot 给出 AttributeError: 'NoneType' 对象没有属性 'is_interactive'

    我尝试在 Pycharm 控制台中导入 matplotlib pyplt import matplotlib pyplot as plt 然后作为回报我得到 Traceback most recent call last File D Pr
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • Python:XML 内所有标签名称中的字符串替换(将连字符替换为下划线)

    我有一个格式不太好的 XML 标签名称内有连字符 我想用下划线替换它 以便能够与 lxml objectify 一起使用 我想替换所有标签名称 包括嵌套的子标签 示例 XML
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我

随机推荐

  • 在Linux中配置Samba服务器实现网盘

    在Linux中配置Samba服务器实现网盘 文章目录 在Linux中配置Samba服务器实现网盘 1 安装与基本配置 2 在Windows中使用共享文件夹 3 高级配置 3 1 smb cfg 文件详解 3 2 多用户 多用户组 3 3 典
  • Python网络爬虫实战:爬取携程网酒店评价信息

    这个爬虫是在一个小老弟的委托之下写的 他需要爬取携程网上的酒店的评价数据 来做一些分词和统计方面的分析 然后来找我帮忙 爬这个网站的时候也遇到了一些有意思的小麻烦 正好整理一下拿出来跟大家分享一下 这次爬取过程稍微曲折 各种碰壁 最终成功的
  • Java时间格式化

    Java中的时间格式化是将时间对象转换为指定格式的字符串 或将字符串解析为时间对象 Java提供了丰富的时间格式化API 可以帮助我们方便地处理时间格式化 本篇技术博客将详细介绍Java时间格式化的定义 使用和示例代码 时间格式化 Java
  • 【JavaEE初阶】第八节.多线程(基础篇)阻塞队列(案例二)

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 JavaEE初阶 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 一 阻塞队列概论 1 1 阻塞队列的概念与作用 1 2 阻塞队列的应用场景 生产者消费者模
  • Mac 不是私密连接,拒绝访问

    备忘 1 鼠标停在该页面 直接键盘输入 输入时没有任何显示 thisisunsafe 2 刷新页面 参考 Mac chrome 提示您的连接不是私密连接 没有继续访问 20201116更新 同样适用于在打开git图片时 thisisunsa
  • 最简单的大屏适配解决方案---autofit.js

    在工作开发当中 我们避免不了要去做大屏 那么做大屏其实最难的点和最核心的问题就是适配 下面为大家介绍最好用的大屏解决方案 autofit js 一行代码搞定 开袋即食 效果图展示 可根据窗口大小进行自动适配 使用方法 1 npm下载 npm
  • 元代理模型可迁移对抗攻击

    1 引言 该论文是关于黑盒攻击可迁移性的文章 在当前大量的研究中 许多方法直接攻击代理模型并获得的可迁移性的对抗样本来欺骗目标模型 但由于代理模型和目标模型之间的不匹配 使得它们的攻击效果受到局限 在该论文中 作者从一个新颖的角度解决了这个
  • centos 8 配置LVS+ keepalived 高可用

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 树高千尺 落叶归根人生不易 人间真情 前言 现在的努力的程度就是以后生活的好坏 目录
  • 【GPU】显卡算力对比表

    参考链接 英伟达GPU算力表 https developer nvidia com cuda gpus 显卡算力对比表
  • 用paltform框架的驱动形式,编写驱动,应用层程序,在应用层通过ioctl控制LED灯流水,当按键KEY1按下,让风扇转动

    驱动文件 include
  • 期权保证金算法

    看涨期权保证金算法 股指期权当日结算价 沪深300当日收盘价 max 股指期权保证金调整系数 虚值额 沪深300当日收盘价 股指期权保证金调整系数 最低保障系数 合约乘数 看涨期权虚值额 max 股指期权行权价格 沪深300当日收盘价 0
  • pytorch做自己的目标检测模型(训练部分)

    pytorch做自己的目标检测模型 先放上代码的百度云链接 链接 https pan baidu com s 1ms12 2aUvm5M9hjofP8UHA 提取码 8xpf 第一章 制作数据集 要训练自己的pytorch目标检测模型 第一
  • YOLOV7训练自己的数据集(只需四步快速上手)

    论文地址 https arxiv org abs 2207 02696 源码地址 https github com WongKinYiu yolov7 一 数据集 直接把YOLOV5的数据集复制到根目录下 Images文件夹中是图片 Lab
  • coverity代码检测工具介绍_微服务测试之静态代码扫描

    静态代码扫描为整个发展组织增加价值 无论您在开发组织中发挥的作用如何 静态代码扫描解决方案都具有附加价值 拥有软件开发中所需要的尖端功能 最大限度地提高质量并管理软件产品中的风险 背景 微服务架构模式具有服务间独立 可独立开发部署等特点 独
  • 函数调用约定(整理稿)

    函数调用约定 整理稿 Function calling convention 在C语言中 假设我们有这样的一个函数 int function int a int b 调用时只要用result function 1 2 这样的方式就可以使用这
  • 【华为OD机试】仿 LISP 运算 (C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 语言限定 C clang11 C clang 11 Pascal fpc 3 0 2 Java jav
  • 机器学习实战:Python基于K近邻KNN进行分类预测(四)

    文章目录 1 前言 1 1 K近邻的介绍 1 2 K近邻的应用 2 二维数据集演示 2 1 导入函数 2 2 导入数据 2 3 训练模型及可视化 3 莺尾花数据集全数据演示 3 1 导入函数 3 2 导入数据 3 3 训练模型及预测 4 模
  • Linux 平台一种进程代码注入方法

    Linux 平台一种进程代码注入方法 Posted on 2012年06月7日 用于在目标程序的 main 函数执行前完成一些操作 特定情况下用来调试还是不错的 源代码 fakemain c Heiher
  • 开发H5项目在手机查看

    一 电脑的防火墙关掉 二 cmd输入 ipconfig 获取自己电脑ip 三 电脑和手机要在同一wifi下 不过最好连自己热点 项目启动 手机网址打开 例 http ip 3000
  • python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!

    用户登录模块 前言 思维导图 1 判断首次启动 2 用户注册 3 管理员信息 登录 4 用户登录 5 完整代码 前言 思维导图 用户登录模块是最基本的模块之一 主要设计的有当前用户存在判断 用户注册 用户登录名和密码的保存 用户信息输出等等