用户登录 解除锁定等操作

用户登录 修改为函数方法:

2个文件一个存放用户及密码,一个存被锁定账户

主要涉及到 检查用户是否被锁操作、锁定用户操作、

1.主函数 输入用户名
2.验证用户,调用是否被锁定操作,如果被锁定直接退出
3.没有被锁定继续匹配账户 及密码,限制用户输入账户次数,超过退出
4.用户名匹配,验证用户密码,超过3次锁定,调用锁定用户操作
 1 import sys
 2 def lock(name):  # 锁账户函数
 3     with open('user_lock.txt', 'a+') as lock_file:
 4         lock_file.write(name+'\n' )  # 密码输入三次错误后,将该用户追加到LOCK文件
 5         sys.exit('用户 %s 达到最大登录次数,将被锁定并退出' % name)
 6 
 7 def check_name(name):     #检查用户名是否被锁
 8     with open('user_lock.txt', 'r') as lock_file:  # 当用户输入用户名后,打开LOCK 文件 以检查是否此用户已经LOCK了
 9         lock_list = lock_file.readlines()
10     for lock_line in lock_list:  # 循环LOCK文件
11         lock_line = lock_line.strip('\n')  # 去掉换行符
12         if name == lock_line:  # 如果LOCK了就直接退出
13             sys.exit('用户 %s 已经被锁定,退出' % name)   #退出整个程序并打印
14 def main():
15     i = 0   #记录次数
16     while i < 3:  # 只要用户登录异常不超过3次就不断循环
17         name = input("请输入用户名:")
18         check_name(name)
19         with open('user.txt','r') as user_file:
20             user_list = user_file.readlines()
21         for user_line in user_list:  # 对帐号文件进行遍历
22             (user, password) = user_line.strip().split()  # 分别获取帐号和密码信息
23             if name == user:  # 如用户名正常匹配
24                 j = 0
25                 while j < 3:  # 只要用户密码异常不超过3次就不断循环
26                     passwd = input('请输入密码:')  # 输入隐藏密码
27                     if passwd == password:  # 密码正确,提示欢迎登录
28                         print('欢迎登录管理平台,用户%s' % name)
29                         sys.exit(0)  # 正常退出
30                     else:
31                         if j != 2:  # j=2时,是最后一次机会,不用在提示还剩余0次机会了
32                             print('用户 %s 输入密码错误,请重新输入,还有 %d 次机会' % (name, 2 - j))
33                     j += 1  # 密码输入错误后,循环值增加1
34                 else:
35                     lock(name)  #调用锁定用户账户
36             else:
37                 pass  # 当用户没匹配时,跳过并继续循环
38         else:
39             if i != 2:  # i=2时,是最后一次机会,不用在提示还剩余0次机会了
40                 print('用户 %s 不存在,请重新输入,还有 %d 次机会' % (name, 2 - i))
41         i += 1  # 当用户输入错误时,循环值增加1
42     else:
43         sys.exit('用户 %s 不存在,退出' % name)  # 用户输入三次错误后,异常退出
44 
45 if __name__=='__main__':
46     main()

后续

用户锁定后 需要解锁用户  

1、检查输入账户是否被锁定

2、如果被锁定则需要删除此账号解锁

 

 

def check_name(name):     #检查用户名是否被锁
    with open('user_lock.txt', 'r') as lock_file:  # 当用户输入用户名后,打开LOCK 文件 以检查是否此用户已经LOCK了
        lock_list = lock_file.readlines()
    for lock_line in lock_list:  # 循环LOCK文件
        lock_line = lock_line.strip('\n')  # 去掉换行符
        if name == lock_line:  # 如果LOCK了
            choice = input("用户%s被锁定,需要解锁么:"%name)
            if choice == 'y':
                unlock(name)
                break
            else:
                print('用户%s没有被解锁!'%name)
                break
    else:
        print('用户%s没有被锁定'%name)


def unlock(name):
    with open('user_lock.txt', 'r') as lock_file:
        lines = lock_file.readlines()
    with open('user_lock.txt', 'w') as user_lock:
        for l in lines:
            if name in l:    #这里用in  不能适用== 否则最后一个无法删除
                continue
            user_lock.write(l)
def main():
    name  = str(input("请输入解锁账号:"))
    check_name(name)

if __name__== "__main__":
    main()

 

posted @ 2019-07-11 14:06  慜、  阅读(992)  评论(0编辑  收藏  举报