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('\n')
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\t%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('\n')
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("\n").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("\n").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

 

posted @ 2015-12-31 15:11  南非波波  阅读(396)  评论(0编辑  收藏  举报