用户登录接口

2017-09-14 14:56:36

本博客内多为原创,如需转载,请注明出处,谢谢。


 功能介绍:

根据输入的用户名,首先判断用户名是否在锁文件中。

如果不在锁文件中,输入该用户的密码,若用用户名和密码匹配成功,则显示欢迎信息;若匹配不成功的次数超过限定输入次数,则将该用户写入到锁文件中。

首先,我们不急着写程序,首先进行需求分析,写好流程图:

程序中涉及到两个文件:userlist.txt 和 user_locked.txt    分别为 用户列表、用户锁文件,这两个文件和程序需要放在相同文件夹下。

文件格式(因为比较简单,就不截图了):

  userlist.txt 为:username|password

  user_locked.txt 为:username

  (均是每行一条数据)

开始写程序:

 1 # _*_ coding:utf-8 _*_
 2 # author:Mr.chan
 3 # date:2017-09-14
 4 
 5 """ 需求:
 6         1、输入用户名密码并判断是否匹配
 7         2、登录成功后显示登录信息
 8         3、输错三次后锁定该用户
 9 
10     本程序包含两个文件:
11         user_locked.txt  # 被锁的用户放在该文件中
12         userlist.txt     # 用户列表,包含用户名和密码
13 """
14 
15 import sys
16 
17 def login(username,password):
18     """用户登录函数,判断用户名和密码是否正确"""
19     with open("userlist.txt", 'r') as f:
20         for line in f:
21             if [username, password] == line.strip().split('|'):
22                 return True   # 若用户名和密码匹配成功,则返回True
23 
24 def info():
25     """登录成功后,显示欢迎信息"""
26     if True:
27         print("欢迎%s登录"%username)
28 
29 def user_islocked(username):
30     """判断输入的用户是否在锁文件中,若存在,则退出"""
31     with open("user_locked.txt",'r') as f:
32         for line in f:
33             if username == line.strip():
34                 sys.exit("%s is locked!"%username)
35 
36 def user_locked(username):
37     """用户锁文件,把用户写入到该文件中,用户就无法登录"""
38     with open("user_locked.txt",'a+') as f:
39         f.write(username)
40         f.write('
')
41         sys.exit("您输入的错误次数过多,已被锁定")
42 
43 def main():
44     """主函数,执行各项操作"""
45     global retry_limit,retry_count,username  #调用函数外的全局变量
46     while retry_limit > retry_count:
47         username = input("请输入用户名:")
48         user_islocked(username)  # 调用函数,检测输入的用户是否在锁文件中
49         password = input("请输入密码:")
50         # 调用函数,判断用户名和密码是否正确
51         f = login(username, password)
52         if f:  # 若f为True,执行以下操作
53             info()
54             break
55         else:
56             print("用户名或密码错误
")
57             retry_count += 1
58     else:
59         user_locked(username)  # 调用用户锁文件,如果超出错误次数,则执行该函数锁定用户
60 
61 retry_limit = 3  # 输入的限制次数,若超过则锁定
62 retry_count = 0  # 用户输入次数的计数器
63 
64 if __name__ == "__main__":
65     main()


 

    大功告成!

原文地址:https://www.cnblogs.com/relax1949/p/7520717.html