一 程序介绍
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
二 编码
具体代码如下,有些实现方法还不够简单,后续第二版本优化
#/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()
转载于:https://blog.51cto.com/chenwei/1786067