zoukankan      html  css  js  c++  java
  • 用户登录接口

    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()


     

        大功告成!

  • 相关阅读:
    通过网络方式安装linux的五种方法
    谈FTP服务器攻击技术及其展望 (下)
    谈FTP服务器攻击技术及其展望 (修改中)
    Fedora 14 x64 试用手记
    加固Samba安全三法
    VMWare高可用集群在企业的应用
    Leetcode-1008 Construct Binary Search Tree from Preorder Traversal(先序遍历构造二叉树)
    Leetcode-1006 Clumsy Factorial(笨阶乘)
    Leetcode-1007 Minimum Domino Rotations For Equal Row(行相等的最少多米诺旋转)
    Leetcode-1005 Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)
  • 原文地址:https://www.cnblogs.com/relax1949/p/7520717.html
Copyright © 2011-2022 走看看