zoukankan      html  css  js  c++  java
  • s12-day01-work01用户登录接口

    README

      

     1 # README.md #
     2 
     3 day001-work-1
     4 
     5         @南非波波
     6 
     7 功能实现:登录接口
     8 
     9 流程图:
    10 
    11 ![](http://i.imgur.com/61eFd0u.jpg)
    12 
    13 程序实现:
    14 
    15     1.设置功能函数:
    16         Welcome(LoginFlag):根据LoginFlage返回不同的信息
    17         UserBlack():黑名单列表判断UsersName是否被锁定
    18         UserBlackAdd(Users):添加UsersName到黑名单
    19         Login(Passwd):用户登录函数
    20     2.函数调用
    21         Login(Passwd)函数调用UserBlack()函数,先判断UsersName是否在黑名单中;
    22         Login(Passwd)函数根据用户输入的判断情况,调用Welcome(LoginFlag)函数返回不同的提示信息;
    23         Login(Passwd)函数在执行满三次正常结束之后调用UserBlackAdd(Users)函数,将用户所输入Users添加到黑名单列表;
    24     3.主函数入口:
    25         if __name__ == '__main__':
    26 代码地址:
    27 
    28     https://github.com/swht/projects/tree/master/day01/work-1
    29 
    30 博客地址:
    31 
    32     http://www.cnblogs.com/songqingbo/p/5091808.html
    33 
    34 测试账号:
    35 
    36     users:qingbo
    37     passwd:test
    README

    流程图:

      

    程序代码:

    login.py

    #!/usr/local/env python3
    '''
    Author:@swht
    Blog:http://www.cnblogs.com/songqingbo/
    E-mail:qingbo.song@gmail.com
    '''
    import os,sys,time
    
    UserName = "qingbo"
    UserPasswd = "test"
    UserBlackPath = "./user_black.txt"
    
    def Welcome(LoginFlag):
    	'''欢迎信息页面'''
    	if LoginFlag == "True":
    		print ("Welcome login the System!")
    	if LoginFlag == "Error":
    		print ("Sorry,your passwd is Error!")
    	if LoginFlag == "False":
    		print ("Sorry,your userName is not have!")
    	if LoginFlag == "Space":
    		print("Sorry,your input is null!")
    def UserBlack():
    	'''黑名单判断'''
    	if os.path.exists(UserBlackPath):	#判断黑名单文件是否存在
    		FileUsers = open(UserBlackPath)	#打开黑名单文件
    		UserBlack = FileUsers.read()	#读取黑名单文件内容
    		FileUsers.close()	#关闭黑名单文件句柄
    		if UserName == UserBlack:  #判断黑名单列表中用户名称是否与指定userName相同
    			print ("Sorry,your name is in the blacklist,Please to connet the admin!")
    			sys.exit(1)  #若相同提醒用户‘该用户在黑名单列表中’并且退出程序
    def UserBlackAdd(Users):
    	'''黑名单列表增加'''
    	print ("Your name is now to add the blacklist!")
    	FileUsers = open(UserBlackPath,"w")
    	FileUsers.write(Users)
    	FileUsers.close()
    	sys.exit(0)
    
    def Login(Passwd):
    	'''用户登录接口函数'''
    	global Users
    	UserBlack();	#黑名单不存在或者用户名没在列表中执行while循环
    	while True:
    		Users = input("users:").strip() #获取用户输入且去除首尾空格符
    		if Users == '':
    			Welcome("Space")
    			break
    		else:
    			if Users == UserName:	#判定用户名是否正确
    				Passwd = input("passwd:").strip()
    				if Passwd == '':
    					Welcome("Space")
    					break
    				else:
    					if Passwd == UserPasswd: #判断用户密码是否正确
    						Welcome("True"); #用户名和密码都正确,调用登录成功接口
    						time.sleep(1)
    						sys.exit(0)
    					else:
    						Welcome("Error");	#密码错误调用密码错误提示接口
    						break
    			else:
    				Welcome("False"); #用户名和密码错误调用相应提示接口
    				break
    #main
    if __name__ == '__main__':
    	for i in range(3): #允许用户输错3次
    		Login("Passwd");
    	if Users == '':
    		print("Sorry,users is null,the system is quit a later!")
    		time.sleep(1)
    		sys.exit(1)
    	else:
    		UserBlackAdd(Users);
    

    github更新地址:

      https://github.com/swht/projects/tree/master/day01/work-1

    附录:优化后代码

    github更新地址:https://github.com/swht/projects/tree/master/day01/work-1.1

    mian.py

     1 #!/usr/local/env python3
     2 '''
     3 Author:@南非波波
     4 Blog:http://www.cnblogs.com/songqingbo/
     5 E-mail:qingbo.song@gmail.com
     6 '''
     7 
     8 import checkinput,login,addusers
     9 import time,sys
    10 
    11 def main():
    12     Choose = input('''
    13     ==============================================
    14                     欢迎光临南非波波小屋!
    15     ==============================================
    16             [1]注册   [2]登录   [3]退出
    17     请选择相应指令:''').strip()
    18     if Choose == '':
    19         print("指令不能为空,请输入正确指令!")
    20     else:
    21         if Choose.isdigit():
    22             Choose = int(Choose)
    23             if Choose >= 1 and Choose <= 3:
    24                 if Choose == 1:
    25                     addusers.AddUsers()
    26                 if Choose == 2:
    27                     login.Login()
    28                 if Choose == 3:
    29                     print("欢迎下次光临南非波波小屋!")
    30                     time.sleep(1)
    31                     sys.exit(0)
    32             else:
    33                 print("你输入的指令已超出范围,请按照系统指令进行输入!")
    34         else:
    35             print("请输入正确的指令,指令为整数型数字!")
    36 
    37 #main
    38 if __name__ =="__main__":
    39     main()
    mian.py

    addusers.py

     1 #!/usr/local/env python3
     2 '''
     3 Author:@南非波波
     4 Blog:http://www.cnblogs.com/songqingbo/
     5 E-mail:qingbo.song@gmail.com
     6 '''
     7 import getpass,sys,time
     8 import checkinput,main
     9 
    10 UsersListPath = "./userslist.txt"
    11 
    12 #判断用户输入的是否符合要求
    13 def AddUsers():
    14     print('''
    15     ==============================================
    16             欢迎加入南非波波小屋
    17     ==============================================''')
    18     CountFlag1 = 0
    19     CountFlag2 = 0
    20     while True:
    21         if CountFlag1 < 3:
    22             User = input("请输入你的用户名:").strip()
    23             if User == '':
    24                 print("你的输入为空,请重新输入!")
    25                 CountFlag1 += 1
    26                 CountFlag2 += 1
    27             else:
    28                 if len(User) >= 4 and len(User) <= 10:
    29                     if checkinput.AddUsersList(User) == True:
    30                         print("该用户已被注册!")
    31                     else:
    32                         while True:
    33                             if CountFlag2 < 3:
    34                                 Passwd1 = getpass.getpass("请输入你的密码:").strip() #getpass.getpass()可以将用户输入的密码以暗文形式实现
    35                                 if Passwd1 == '':
    36                                     print("你的输入为空,请重新输入!")
    37                                     CountFlag2 += 1
    38                                 elif len(Passwd1) < 6:
    39                                     print("你的密码太简单,请重新输入!")
    40                                     CountFlag2 += 1
    41                                 else:
    42                                     Passwd2 = getpass.getpass("请再次输入你的密码:").strip()
    43                                     if Passwd1 == Passwd2:
    44                                         db = {"user":User,"passwd":Passwd1}
    45                                         UsersListFile = open(UsersListPath,"a")
    46                                         UsersListFile.write(str(db))
    47                                         UsersListFile.write('
    ')
    48                                         UsersListFile.close() #直接调用增加用户接口
    49                                         main.main()
    50                                     else:
    51                                         print("你两次输入的密码不一致,请重新输入!")
    52                                         CountFlag1 += 1
    53                             else:
    54                                 print("你输入的错误次数已达3次!系统将返回主页!")
    55                                 main.main()
    56                 else:
    57                     print("请输入4-10位字符或数字组合作为用户名!")
    58                     CountFlag1 += 1
    59         else:
    60             print("你输入的错误次数已达3次!系统将退出!感谢你对南非波波小屋的支持!")
    61             time.sleep(1)
    62             sys.exit(1)
    63 
    64 # AddUsers()
    addusers.py

    login.py

     1 #!/usr/local/env python3
     2 '''
     3 Author:@南非波波
     4 Blog:http://www.cnblogs.com/songqingbo/
     5 E-mail:qingbo.song@gmail.com
     6 '''
     7 import sys,time,getpass
     8 import checkinput,main
     9 
    10 def Login():
    11     '''用户登录接口函数'''
    12     CountFlag1 = 0 #用户输入错误次数的统计
    13     CountFlag2 = 0 #用户输入为空的次数统计
    14     print('''
    15     ==============================================
    16             欢迎光临南非波波小屋
    17     ==============================================''')
    18     while True:
    19         if CountFlag1 < 3:
    20             if CountFlag2 < 3:
    21                 Users = input("请输入登录用户名:").strip() #获取用户输入且去除首尾空格符
    22                 if Users == '':
    23                     print("你的输入为空,请重新输入!")
    24                     CountFlag1 += 1
    25                     CountFlag2 += 1
    26                 else:
    27                     checkinput.UserBlack(Users)    #黑名单不存在
    28                     Passwd = getpass.getpass("请输入你的密码:").strip()
    29                     if Passwd == '':
    30                         print("密码不能为空,请重新入")
    31                         CountFlag1 += 1
    32                         CountFlag2 += 1
    33                     else:
    34                         if checkinput.LoginUsersList(Users,Passwd) == True:
    35                             print("%s你好,欢迎光临南非波波小屋,今天是%s" % (Users,(time.strftime('%Y-%m-%d	%H:%M:%S',time.localtime(time.time())))))
    36                             time.sleep(1)
    37                             sys.exit(0)
    38                         elif checkinput.LoginUsersList(Users,Passwd) == False:
    39                             print("你输入的用户名不存在!请先注册后再登录!")
    40                             main.main()
    41                         else: #其他情况就报用户名或密码错误
    42                             print("你输入的用户名或密码错误!")
    43                             CountFlag1 += 1
    44             else:
    45                 print("你输入的错误次数已达3次,系统将返回主页!")
    46                 main.main()
    47         else:
    48             print("你输入的错误次数已达3次,系统将退出")
    49             if Users == '':  #如果用户输入为空将直接退出
    50                 sys.exit(1)
    51             else:  #如果用户输入不为空将用户最后输入错误的users加到黑名单列表
    52                 checkinput.UserBlackAdd(Users)
    53 
    54 # Login()
    login.py

    checkinput.py

     1 #!/usr/local/env python3
     2 '''
     3 Author:@南非波波
     4 Blog:http://www.cnblogs.com/songqingbo/
     5 E-mail:qingbo.song@gmail.com
     6 '''
     7 import os,sys,time
     8 
     9 UsersListPath = "./userslist.txt"
    10 UserBlackPath = "./userblacklist.txt"
    11 #获取文件内容的行数
    12 def Countnum(filename):
    13     files = open(filename)
    14     data = files.read()
    15     files.flush()
    16     files.close()
    17     return data.count('
    ')
    18 
    19 #判断用户是否在黑名单中
    20 def UserBlack(UserName):
    21     '''黑名单判断'''
    22     if os.path.exists(UserBlackPath):    #判断黑名单文件是否存在
    23         FileUsers = open(UserBlackPath)    #打开黑名单文件
    24         for UserBlack in FileUsers.readlines():    #读取黑名单文件内容
    25             if UserName == UserBlack:  #判断黑名单列表中用户名称是否与指定userName相同
    26                 print("对不起,该用户已在系统黑名单列表中,请联系管理员!")
    27                 time.sleep(1)
    28                 sys.exit(1)  #若相同提醒用户‘该用户在黑名单列表中’并且退出程序
    29         FileUsers.close()    #关闭黑名单文件句柄
    30 
    31 
    32 #将用户添加到黑名单中
    33 def UserBlackAdd(Users):
    34     '''黑名单列表增加'''
    35     print("该用户将被家到系统黑名单中...")
    36     FileUsers = open(UserBlackPath,"a")
    37     FileUsers.write(Users)
    38     FileUsers.close()
    39     sys.exit(0)
    40 
    41 #判断用户是否存在userlist列表中
    42 def AddUsersList(Users):
    43     if os.path.exists(UsersListPath):  #判断文件存在
    44         if Countnum(UsersListPath) == 0: #判断文件内容为空
    45             return False
    46         else:
    47             UsersListFile = open(UsersListPath,'r')
    48             for lines in UsersListFile.readlines():
    49                 db = lines.strip("
    ").strip()  #去除换行符
    50                 db = eval(db)  #将字符串类型转换成字典类型
    51                 if Users == db['user']:
    52                     return True  #返回True值说明用户名匹配成功
    53             UsersListFile.close()
    54     else:  #文件不存在
    55         return False  #返回False值说明黑名单文件不存在或为空
    56 
    57 #判断用户是否存在userlist列表中
    58 def LoginUsersList(Users,Passwd):
    59     if os.path.exists(UsersListPath):  #判断文件存在
    60         if Countnum(UsersListPath) == 0: #判断文件内容为空
    61             return False
    62         else:
    63             UsersListFile = open(UsersListPath,'r')
    64             for lines in UsersListFile.readlines():
    65                 db = lines.strip("
    ").strip()  #去除换行符
    66                 db = eval(db)  #将字符串类型转换成字典类型
    67                 if Users == db['user']:
    68                     if Passwd == db['passwd']:
    69                         return True  #返回True值说明用户名和密码匹配成功
    70             UsersListFile.close()
    71     else:  #文件不存在
    72         return False  #返回False值说明黑名单文件不存在
    checkinput.py
    @南非波波 github:https://github.com/swht
  • 相关阅读:
    学习进度——第五周
    构建之法阅读笔记02
    学习进度——第四周
    整型数组——首尾相连
    构建之法阅读笔记01
    二维数组
    学习进度——第三周
    新最大子数组——数量级和数量无限大
    最大子数组求和
    P3388 【模板】割点(割顶)题解 tarjan求割点
  • 原文地址:https://www.cnblogs.com/songqingbo/p/5091808.html
Copyright © 2011-2022 走看看