0


[巩固培元]Python文件操作案例——用户登录

✅作者简介:大家好,我是Philosophy7?让我们一起共同进步吧!🏆
📃个人主页:Philosophy7的csdn博客
🔥系列专栏:Python
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博>主哦🤞

在这里插入图片描述

登录案例

一、前言

在上一小节,我们介绍了文件的基本操作以及数据交换的格式,为了巩固我们上一节文件操作的知识。
在这里我们做一个最基本的案例:

用户登录

二、案例:用户登录

许多的应用都涉及数据的存储和使用,作为存储数据的基本形式,文件与应用密不可分。

1.案例分析

用户登录模块可分为管理员和用户登录,若使用该软件或浏览器中,系统就会判断用户是否为首次使用:若是首次使用,则进行初始化,否则进入用户类型选择。若选择管理员登录,则直接登录。如果是用户,那么就给用户提示是否需要注册登录。

根据以上分析,用户管理模块包含以下几个文件

  • 标识位文件flag 用于检测是否初次登录,初识数据为0,首次启动程序为将其中数据修改为1
  • 管理员账户文件u_root。用于保存管理员的账户信息
  • 普通用户账户文件。用于保存普通用户注册的账户。

2.程序设计

  • main()程序的入口
  • c_flag : 标识位文件更改
  • init 信息初始化
  • print_login_menu 打印登录菜单
  • user_select 用户选择
  • root_login 管理员登录
  • user_register 用户注册
  • user_login 普通用户登录

2.1 main()

该函数是程序的入口,这里需要做的就是判断是否是首次使用该系统,保证读取到的为同一个标志位对象,这里将标志位对象的数值存储到文件flag中,每次启动程序时都先调用main函数 该函数应先打开flag文件,从其中读取数据进行判断,根据表示文件的数据来进行执行不同的分支。

defmain():
    flag =open("flag")
    word = flag.read()if word =="0":print("首次登录")
        flag.close()
        c_flag()#标识为1
        init()# 初始化
        print_login_menu()#打印登录菜单
        user_select()# 选择用户elif word =="1":#不是首次登录print("欢迎回来")
        print_login_menu()
        user_select()else:print("初始化异常...")

2.2 c_flag()

该函数用于修改flag文件中的内容

defc_flag():file=open("flag","w")file.write("1")file.close()

2.3 init()

初次启动系统时,需要创建管理员账户和用户文件

#3.初始化 创建管理员文件和普通用户目录definit():file=open("u_root","w")# 创建并打开管理员账户文件
    root ={"username":"root","pwd":"123456"}file.write(str(root))file.close()
    os.mkdir("users")

2.4 print_login_menu()

该函数用于打印菜单

2.5 user_select()

系统根据用户输入,选择执行不同的流程。

用户输入1 调用root_login函数进行管理员登录等等

defuser_select():whileTrue:
        user_type_select =input("请输入选择用户类型:")if user_type_select =="1":
            root_login()breakelif user_type_select =="2":whileTrue:
                select =input("是否需要注册?(y/n)")if select =="y"or select =="Y":print("---用户注册---")
                    user_register()# 用户注册breakelif select =="n"or select =="N":print("用户登录")breakelse:print("输入有误 重新选择")
            user_login()#用户登录    breakelif user_type_select =="0":returnelse:print("输入有误,请重新选择")

2.6 root_login()

实现管理员登录

defroot_login():whileTrue:print("管理员登录")
        root_user =input("请输入账户:")
        root_pwd =input("请输入密码")
        file_root =open("u_root")#只读的方式打开
        root =eval(file_root.read())#读取账户信息#信息校验if root_user == root["username"]and root_pwd == root["pwd"]:print("登录成功")breakelse:print("校验失败")

2.7 user_register()

用户注册函数

defuser_register():
    user_id =input("请输入用户名:")
    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()#保存关闭

2.8 user_login()

实现用户登录函数,校验文件中的数据和输入的数据

defuser_login():whileTrue:print("普通用户登录")
        user_id =input("请输入账户名:")
        user_pwd =input("请输入密码")#获取users目录下的所有文件
        user_list = os.listdir("./users")#遍历列表 判断user_id是否在列表中
        flag =0for user in user_list:if user == user_id:
                flag =1print("登录中....")#打开文件
                file_name ="./users"+ user_id
                file_user =open(file_name)#获取文件内容
                user_info =eval(file_user.read())if user_pwd == user_info["u_pwd"]:print("登录成功")breakif flag ==1:breakelif flag ==0:print("没有该用户 请先注册")break

到这里用户登录案例就完成了

最后在程序中添加如下代码:

if __name__ =="__main__":
    main()

3.功能演示

在程序目录中创建flag文件,并在其中输入0,保存退出,执行程序

在这里插入图片描述

代码汇总
import os
#3.初始化 创建管理员文件和普通用户目录definit():file=open("u_root","w")# 创建并打开管理员账户文件
    root ={"username":"root","pwd":"123456"}file.write(str(root))file.close()
    os.mkdir("users")#4.打印登录菜单defprint_login_menu():print("-----用户选择-----")print("-----1.管理员登录-----")print("-----2.普通用户登录-----")print("-----0.退出-----")print("-"*30)#6.管理员登录defroot_login():whileTrue:print("管理员登录")
        root_user =input("请输入账户:")
        root_pwd =input("请输入密码")
        file_root =open("u_root")#只读的方式打开
        root =eval(file_root.read())#读取账户信息#信息校验if root_user == root["username"]and root_pwd == root["pwd"]:print("登录成功")breakelse:print("校验失败")#7.普通用户注册 在我们的分析当中 没有提前创建好文件用于保存用户信息 所以需要注册defuser_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()#保存关闭#8.用户注册完毕之后 登录用户defuser_login():whileTrue:print("普通用户登录")
        user_id =input("请输入账户id:")
        user_pwd =input("请输入密码")#获取users目录下的所有文件
        user_list = os.listdir("./users")#遍历列表 判断user_id是否在列表中
        flag =0for user in user_list:if user == user_id:
                flag =1print("登录中....")#打开文件
                file_name ="./users/"+ user_id
                file_user =open(file_name)#获取文件内容
                user_info =eval(file_user.read())if user_pwd == user_info["u_pwd"]:print("登录成功")breakif flag ==1:breakelif flag ==0:print("没有该用户 请先注册")breakdefuser_select():whileTrue:
        user_type_select =input("请输入选择用户类型:")if user_type_select =="1":
            root_login()breakelif user_type_select =="2":whileTrue:
                select =input("是否需要注册?(y/n)")if select =="y"or select =="Y":print("---用户注册---")
                    user_register()#用户注册breakelif select =="n"or select =="N":print("用户登录")breakelse:print("输入有误 重新选择")
            user_login()#用户登录    breakelif user_type_select =="0":returnelse:print("输入有误,请重新选择")#2.用于修改flag文件中内容 初次启动系统被调用defc_flag():file=open("flag","w")file.write("1")file.close()# 1.#判断是否为首次使用函数defmain():
    flag =open("flag")
    word = flag.read()if word =="0":print("首次登录")
        flag.close()
        c_flag()#标识为1
        init()# 初始化
        print_login_menu()#打印登录菜单
        user_select()# 选择用户elif word =="1":#不是首次登录print("欢迎回来")
        print_login_menu()
        user_select()else:print("初始化异常...")if __name__ =="__main__":
    main()

⭐收藏 👍点赞 🌹关注


本文转载自: https://blog.csdn.net/ChengXuTeng/article/details/124540163
版权归原作者 Philosophy7 所有, 如有侵权,请联系我们删除。

“[巩固培元]Python文件操作案例——用户登录”的评论:

还没有评论