python综合练习1-- 用户登录
一 程序介绍
1.1 文件分布
login_user.jpg 流程图信息
README.txt
login_main_v1.1.py 主程序
user_config.conf 配置文件
流程图:
README.txt
####by cw#####
login_main_v1.1.py
#2016-06-04
程序运行说明:
1.运行程序login_main.py
2.输入用户名和密码,Input_check()检查用户输入是否正确,用户名和密码不能为空,密码至少6位数,如果不符合规范,返回到登录界面即可输入
3.如果合格,那么就执行Login_check(),检查用户是否被锁定,如果锁定,则退出,如果没有锁定,继续下一步
4.继续检查用户Login_passwd_check(),登录用户名是否正确,如果正确,就给出欢迎界面
5.如果用户名和密码不对,执行Login_Limit_Check()那么就返回到登录界面,计数器加1,如果计数器大于了3次,那么锁定用户并退出
后续可扩展的内容:
-
注册用户到mysql
-
锁定用户可以存储到memcached/redis
-
web展现次功能
-
根据后面综合练习继续改进
#######end README.txt###############
user_config.conf
#username,password,status,lock_count
chenwei ,chenwei ,N,0
chenwei2,chenwei,Y,0
chenwei3,chenwei,Y,0
二 编码
具体代码如下,有些实现方法还不够简单,后续第二版本优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#/bin/python #coding=utf-8 #by cw #2016-06-03 import os
User_conf_file = 'D:\chenwei\data\user_config.conf'
User_conf_tmp = 'D:\chenwei\data\user_config_tmp.conf'
Count_limt = 0
def Welcome_Main():
print '''
Welcome to Python World!!!!!!!
by cw
'''
def Read_Config_File( file ,username):
'''
:param file: 配置文件
:param username: 输入的用户名
:return: 读取用户配置文件,返回用户名,锁定状态
'''
fn = open ( file )
User_conf = ''
Status = ''
Count = ''
Passwd = ''
for line in fn:
if line.split( ',' )[ 0 ].strip() = = username: #根据用户名去查找,需要注意去掉空格
User_conf = line.split( ',' )[ 0 ] #返回用户名
Passwd = line.split( ',' )[ 1 ] #返回密码
Status = line.split( ',' )[ 2 ] #返回状态
Count = line.split( ',' )[ 3 ] #返回次数
fn.close()
return (User_conf,Passwd,Status,Count) # 返回状态
def Input_Check(username,passwd):
Flag = True
if len (username) = = 0 :
print 'The username is NULL,please input againt!!!'
Flag = False
if len (passwd) = = 0 :
print 'The passwd is NUll,please input againt!!!!'
Flag = False
if len (passwd) < 6 :
print "The passwd length is not enough!"
Flag = False
return Flag
def Login_Lock_Check(status):
if status = = 'Y' :
return False #the user don't locked
else :
return True #the user locked
def Lock_Usered( file ,file_tmp,username):
fn = open ( file )
fn_tmp = open (file_tmp, 'a' )
new_line = []
for line in fn.readlines(): #读取配置文件的每一行
if line.split( ',' )[ 0 ].strip() = = username:
new_line.append( "%s ," % username)
new_line.append( "%s ," % line.split( ',' )[ 1 ].strip())
new_line.append( 'N,' )
new_line.append( '%s \n' % line.split( ',' )[ 3 ].strip())
fn_tmp.writelines(new_line)
continue
fn_tmp.writelines(line)
fn.close()
fn_tmp.close()
os.remove( file )
os.rename(file_tmp, file )
while True :
Config_list = ''
Name = raw_input ( 'Please input your name: ' )
Passwd = raw_input ( 'Please input your password: ' )
if Input_Check(Name,Passwd) = = False : #检查用户名和密码的规范性
continue
else :
Config_list = Read_Config_File(User_conf_file,Name) #返回配置文件里面的内容
if Login_Lock_Check(Config_list[ 2 ]): #返回用户状态
print "The user is locked"
exit()
else :
if Name = = Config_list[ 0 ] and Passwd = = Config_list[ 1 ]:
Welcome_Main()
exit()
else :
Count_limt = Count_limt + 1
if Count_limt = = 1 :
print 'The Username or password is not right,you maybe try two!!!'
if Count_limt = = 2 :
print 'The Username or password is not right,you maybe try one!!!'
if Count_limt > = 3 :
Lock_Usered(User_conf_file,User_conf_tmp,Name)
print "user locked!!!"
exit()
|
附件:http://down.51cto.com/data/2367777
本文转自 woshiwei201 51CTO博客,原文链接:http://blog.51cto.com/chenwei/1786067