基于python的用户登入
以前只是用c语言文件操作打过用户登入,学了几天的python我感觉我又行了。。。。
咳咳,首先,我们得先理清楚逻辑关系,然后列出该有子函数模块,再进行编写的就会方便很多了。
目前先列出以下几个函数
- 判断是否是首次使用系统。
- 然后你得进行信息初始化对吧。
- 打印登录界面的菜单,这个一定得有吧,不然咋看啥。
- 用户一般分管理员、普通用户。还得有注册选项。所以你得搞一个用户的选择函数吧!
- 然后依次编写:管理员登录函数。
- 普通用户登录函数。
- 还有用户的注册函数。
这些搞完俺觉得才算得上一个基本的用户登录模块。嘿嘿,为了方便理解哈,本木木直接画个流程图出来,根据流程图的顺序,一步一步的编写,这就方便很多了。啊哈哈哈哈哈
细心的孩子已经发现了,没错,这就是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文件夹里面找,找到就直接匹配密码看对不对,没找到就说明孩子还没注册呢。
- 看,是不是很简单,有木有一种感觉自己又行了的感觉。好家伙,我看好腻哦。
- 这些都是基础,没啥高大上的,但是只有亲自动手去打,才会有成就感呀!!
- 咳咳,不动手永远不知道自己会不会,冲冲冲!!!
- 弱弱的求句,看了能评论下不啦,随便啥都行,知道你来过就好,啊哈哈哈哈哈
- 别问,问就是动力所在。