有手就行系列:python文件操作之用户登入

基于python的用户登入

以前只是用c语言文件操作打过用户登入,学了几天的python我感觉我又行了。。。。
咳咳,首先,我们得先理清楚逻辑关系,然后列出该有子函数模块,再进行编写的就会方便很多了。
目前先列出以下几个函数

  1. 判断是否是首次使用系统。
  2. 然后你得进行信息初始化对吧。
  3. 打印登录界面的菜单,这个一定得有吧,不然咋看啥。
  4. 用户一般分管理员、普通用户。还得有注册选项。所以你得搞一个用户的选择函数吧!
  5. 然后依次编写:管理员登录函数。
  6. 普通用户登录函数。
  7. 还有用户的注册函数。

这些搞完俺觉得才算得上一个基本的用户登录模块。嘿嘿,为了方便理解哈,本木木直接画个流程图出来,根据流程图的顺序,一步一步的编写,这就方便很多了。啊哈哈哈哈哈

在这里插入图片描述

细心的孩子已经发现了,没错,这就是word文档画出来的,啊哈哈哈哈哈
这不是重点,咳咳,接下来开始进行代码编写。


#  ------这是打印出登录菜单--------
def print_login_menu():
    print("-----用户选择-----")
    print("1-管理员登录")
    print("2-普通用户登录")
    print("------------------")

  • 这应该大家都看得出来吧,是不是感觉自己python已经无敌了。啊哈哈哈哈哈
  • 咳咳,这个就是简单的登录界面啦,当然啦,如果你喜欢花里胡哨一点的也可以的,自己慢慢搞就是了,毕竟咱们不是美工满。咳咳,继续继续

#  ------内部数据的初始化--------
def init():
    file = open("u_root.txt","w")
    root = {"rnum":"root","rpwd":"123456"}
    file.write(str(root))
    file.close()
    os.mkdir("users")
  • 这个应该没有没有问题吧,这就是一个简单初始化,建立个管理员文件,里面放着咱管理员的账户和密码。
  • 后面的os.mkdir这个要说一下,mkdir这个就是直接建立一个文件夹,名字叫user,主要是用来存来那些普通用户的账户和密码啥的。
  • 咳咳, 提醒下哈,因为使用了os模块满,然后你得先提供。
  • 对,你就在最上面写个 import os 这样就行了。

#  ------用于修改标志文件flag中的内容--------
def c_flag():
    f = open("flag.txt","w")
    f.write("1")
    f.close()
  • 这个就是个建立个标识文件,来判断你是不是第一次进入登录界面的。
  • 初始状态里面是一个 “ 0 ” ,当你登录过一次后,文件里面就会变成 “ 1 ”
  • 咳咳,看到这,本木木敢肯定,有人又行了,啊哈哈哈哈哈
#  ------判断用户是否是第一次第一次启动------
def is_first_start():
    flag = open("flag.txt")
    word = flag.read()
    if word == "0":
        print("首次启动!")
        flag.close()
        c_flag()								#已访问,修改标志文件
        init()									#进行初始化
        print_login_menu()						#打印登录菜单
        user_select()							#用户的登录选择
    elif word == "1":
        print("欢迎回来,超级欢迎你哦!!!")
        print_login_menu()						#打印登录菜单
        user_select()							#用户的登录选择
    else:
        print("初始化参数错误!!!")

  • 咳咳,到这开始,我们就算是进入主题了。
  • 这个主要是让你有股回家的感觉,你想想,你第二次打开这个app的时候,然后界面给你花里胡哨的欢迎一遍,你爱不爱,反正我爱了。嘿嘿
  • 当然啦,本木木又不是美工的,就简单的打个字欢迎欢迎就好啦。

#  ------用户登录方式的选择--------
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_name = input("请输入您的账户名称:")
        root_password = input("请输入您的密码:")
        file_root = open("u_root.txt")
        root = eval(file_root.read())
        #  ----信息匹配----
        if root_name == root["rnum"] and root_password == root["rpwd"]:
            print(" 登录成功!!!")
            break
        else:
            print("验证失败!!!")
  • 咳咳,咱先来整个管理员登录,毕竟是管理员满,先搞
  • 这其实也不难理解,直接就是获取你的输入的账户和密码,然后和你初始化时设置的管理员账户和密码对比一下就好了,相同就直接登录就好了。
  • 这个地方咱们就注意一个点就好了,那个eval函数,超级牛皮。

eval(str)函数很强大,官方解释是:将字符串str当成有效的表达式来求值并返回计算结果。所以,结合math当成一个计算器很好用。
emmmm这样说你可能不是太理解哈,我理解就是将你输入的字符串什么的转换成实实在在的数据,然后可以像列表一样轻松操作里面的数据。
举个例子: a = “[[1,2], [3,4], [5,6], [7,8], [9,0]]” 很明显,a是一个字符串对吧
然后我用 b = eval(a) 那么b里面就会变成一个列表啦 b = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
像我们上面的登录函数,就是将那串初始化的字符串,直接变成了一个字典,关键字就是管理员的账户和密码,然后里面存着数据。


#  ------普通用户的注册--------
def user_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 + ".txt"
    file_user = open(user_path,"w")
    file_user.write(str(user))
    file_user.close()

  • 咳咳,接下来,我们搞一个用户的注册函数。看起来还是挺简单的,打完后我感觉我又行了,嘿嘿。
  • 那个user里面就是存储的信息吧,保存后就放入users文件夹里面,这个就是当时初始化的时候建立的专门为用户准备的文件夹啦!

#  ------普通用户的验证登录--------
def user_login():
    while True:
        print("******普通用户登录*******")
        user_id = input("请输入你的账户名:")
        user_id = user_id + ".txt"
        user_pwd = input("请输入你的密码:")
        user_list = os.listdir("./users")       #获取所有用户的账户名
        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文件夹里面找,找到就直接匹配密码看对不对,没找到就说明孩子还没注册呢。
  • 看,是不是很简单,有木有一种感觉自己又行了的感觉。好家伙,我看好腻哦。
  • 这些都是基础,没啥高大上的,但是只有亲自动手去打,才会有成就感呀!!
  • 咳咳,不动手永远不知道自己会不会,冲冲冲!!!
  • 弱弱的求句,看了能评论下不啦,随便啥都行,知道你来过就好,啊哈哈哈哈哈
  • 别问,问就是动力所在。
改革尚未成功,同志仍需努力!!!
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木木不会

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

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

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

打赏作者

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

抵扣说明:

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

余额充值