一、功能要求
登录接口小程序(需实现的功能如下)
1、输入用户名和密码
2、认证成功后显示欢迎信息
3、输错三次后锁定
二、逻辑思路分析:
定义一个文件用于存储用户名和密码:passwd.db
定义一个文件用于记录输入3次错误后的用户名,以判断文件里的用户名来决定用户是否为锁定状态lock_user.db
定一个变量为3,用于输错密码最多次数count = 3
定一个变量为0,用于输错一次自动增加1inter=0
定义一个变量login_status作为标志位,默认值为login_status=False,为false的目地也就是说登录失败。如果用户登录成功后那么就赋值为True。
1、输入用户名和密码
2、输入用户名之后,检测账户是否是锁定,那么需打开lockfile文件,循环读取每一行的用户名,判断是否此用户已经存在lock文件里,如果用户存在,则提示用户已被锁定,且退出程序,如果账户名不存在lockfile文件里,则继续往下执行
3、打开userdbfile,循环读取每一行,且分割用户名和密码,分别存储在userdb、passwddb变量里。接着将输入的用户名和密码分别与这两个变量进行匹配,如果相等,则提示验证通过,且将标志位match_flag赋值为True,且终止循环。如果输入的密码是不正确的,那么标志位不变,也就还是为False。
4、接着判断标志位,如果为false,则说明没有匹配上,提示重试登录,且同时将count增1,如果不为false,也就是为true。则提示登录系统完成
三、代码#!/usr/bin/env python
#_*_ coding:utf-8 _*_
#注册用户名和密码,数据写入在文件里
#输入用户和密码
#认证成功后显示欢迎信息
#输错三次后锁定
#!/usr/bin/env python
import shelve
#账户添加(可单独调用该函数执行即可)
def adduser(name,passwd):
files = shelve.open("passwd.db")
files[name] = passwd
files.close()
def check(name,passwd):
db = dict(shelve.open("passwd.db"))
lock = dict(shelve.open("lock_user.db"))
if lock.get(name,None) != None:
print '账户处于锁定状态,请与管理员联系'
return False
if db.get(name,None) == None:
print '用户名不存在'
return False
if passwd != db.get(name):
print '密码错误'
return False
else:
return True
if __name__ == '__main__':
inter = 0
count = 3
login_status = False
while inter < count:
name = raw_input('账号:')
passwd = raw_input('口令:')
if check(name,passwd) == True:
login_status = True
print '认证通过'
break
else:
inter += 1
print '还可尝试%s次登录' % (3 - inter)
continue
if login_status == False:
files = shelve.open("lock_user.db")
files[name] = name
files.close()
print '账户被锁定'