编写登陆接口

                  用任意一种语言实现登陆接口

                                      作者:尹正杰

版权声明:

  本篇博客仅仅用于交流学习使用,对一些小功能的实现,来练习对代码的熟练度。同时,本篇博客允许转载,用于互相交流学习,转载必须在博客声明原链接!

 

 

练习一:

功能需求:

      1>.输入用户名密码;

      2>.认证成功后显示欢迎信息;

      3>.输错三次后锁定;

 

1 yinzhengjie
lock.info内容戳这里
 1 yinzhengjie 123
 2 bingan  123
 3 mazhixing   123
 4 xulei   123
 5 baoge   123
 6 xiaoran 123
 7 wuchuanfang 123
 8 luojiyin    123
 9 songjiang   123
10 wangsheng   123
11 wangzhiqiang    123
12 chenchao    123
13 chenkun     123
14 zhaoyuanhai 123
15 xuezhaomeng 123
16 zhenyansheng    123
17 fangheyi    123
18 wudonghang  123
student.info内容戳这里

golang代码实现效果如下:

  1 /*
  2 #!/usr/bin/env gorun
  3 @author :yinzhengjie
  4 Blog:http://www.cnblogs.com/yinzhengjie
  5 EMAIL:y1053419035@qq.com
  6 */
  7 
  8 package main
  9 
 10 import (
 11     "fmt"
 12     "bufio"
 13     "os"
 14     "strings"
 15     "log"
 16     "io"
 17 )
 18 
 19 var   (
 20     user string
 21     passwd string
 22     line string
 23     filepath string
 24     lockpath string
 25     retry int
 26     user_locked bool = false
 27     user_presence bool  = false
 28     validation_success bool = false
 29 )
 30 
 31 func GetLoginInfo() (user,passwd string) {
 32     f := bufio.NewReader(os.Stdin)
 33     for  {
 34         fmt.Print("请输入用户名:")
 35         line,_ = f.ReadString('\n')
 36         if len(line) == 1 {
 37             continue
 38         }
 39         line = strings.TrimSpace(line)
 40         fmt.Sscan(line,&user)
 41         fmt.Print("请输入密  码:")
 42         line,_ = f.ReadString('\n')
 43         if len(line) == 1 {
 44             continue
 45         }
 46         line = strings.TrimSpace(line)
 47         fmt.Sscan(line,&passwd)
 48         //fmt.Printf("用户名是:%s,密码是%s\n",user,passwd)
 49         return user,passwd
 50     }
 51 }
 52 
 53 func GetFileInfo(filepath string)(res []string){
 54     var fileds []string
 55     f,err := os.Open(filepath)
 56     defer f.Close()
 57     if err != nil {
 58         log.Fatal(err)
 59     }
 60     r := bufio.NewReader(f)
 61     for  {
 62         line,err := r.ReadString('\n')
 63         if err == io.EOF {
 64             break
 65         }
 66         line = strings.TrimSpace(line)
 67         fileds = append(fileds, line)
 68         //fmt.Println(line)
 69     }
 70     return fileds
 71 }
 72 
 73 func UserCounts(user string) map[string]int {
 74     var res map[string]int
 75     res = make(map[string]int)
 76     res[user] = retry + 1
 77     return res
 78 }
 79 
 80 func main() {
 81     var res map[string]int
 82     lockpath = "E:\\Code\\Golang\\Golang环境\\yinzhengjie\\Golang作业\\Day1\\lock.info"
 83     filepath = "E:\\Code\\Golang\\Golang环境\\yinzhengjie\\Golang作业\\Day1\\student.info"
 84     user,passwd = GetLoginInfo()
 85     res = UserCounts(user)
 86     for  {
 87         lock_res := GetFileInfo(lockpath)
 88         for _,member := range lock_res{   //判断用户是否被锁!
 89             if user == member{
 90                 user_locked = true
 91             }
 92         }
 93         if user_locked == true {
 94             fmt.Println("该用户已经被锁定!")
 95             break
 96         }
 97 
 98         login_res := GetFileInfo(filepath)  //验证用户密码是否正确
 99         for _,v := range login_res{
100             if user == strings.Fields(v)[0] {
101                 user_presence = true
102                 if passwd == strings.Fields(v)[1] {
103                     validation_success = true
104                     break
105                 }
106             }
107         }
108         if user_presence == true  && validation_success == true{
109             fmt.Println("恭喜你,登陆成功哟!")
110             break
111         }
112         if user_presence == true && validation_success == false{
113             res[user] += 1
114             fmt.Println("用户名或密码错误!")
115             user,passwd = GetLoginInfo()
116             if res[user] > 2 {
117                 fmt.Printf("重试次数上限!该用户`%v`已被锁定\n",user)
118                 break
119             }
120         }
121         if user_presence == false && validation_success == false {
122             fmt.Println("输入的用户不存在!")
123             user,passwd = GetLoginInfo()
124         }
125     }
126 }

python代码实现效果如下:

1 yinzhengjie|123|3
2 yzj|666|2
UserAuthenticationFile.txt 文件内容戳这里
 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 f1 = open('UserAuthenticationFile.txt','r')            #以只读的方式打开文件
 8 data = f1.read()                                        #读取文件的内容
 9 f1.close()                                              #关闭文件句柄
10 
11 user_info_list = []
12 user_str_list = data.split('\n')                        #按照换行符将读取出来的数据进行第一次切割
13 for item in user_str_list:
14     temp = item.split('|')                              #将第一次切割后的每个元素再次进行切割
15     info = {
16         'name' : temp[0].strip(),                           #将切割后的每一个元素分别赋值
17         'passwd': temp[1].strip(),
18         'retry':temp[2].strip()
19     }
20     user_info_list.append(info)
21 
22 VerifySuccess = False                                 #用于判断是否验证成功的标志位,默认为false。
23 UserLocked = False                                    #用于判断用户是否被锁定,默认为false。
24 retry = 1                                              #定义用户尝试登陆的次数。
25 
26 while retry < 4:                                       #用来确定循环次数
27     username = input("请输入您的用户名>>>")
28     password = input("请输入您的密  码>>>")
29     for user_info in user_info_list:
30         if  username == user_info["name"] and password == user_info["passwd"]:
31           if int(user_info["retry"]) < 3:
32               print("登陆成功!")
33               VerifySuccess = True                    #我这里定义了一个标志位,当验证登陆成功后,将flag的值改为Ture并终止当前的for循环。
34               user_info["retry"] = 0                  #验证登陆成功之后,需要把尝试登陆成次数清空。
35               break
36           else:
37               print("您的账户已经被冻结,请联系管理员解封!")
38               UserLocked = True
39               break
40     if  VerifySuccess == True:
41         break
42     elif UserLocked == True:
43         UserLocked == False
44         retry += 1
45         continue
46     else:
47         print("用户名或密码错误!")
48         retry += 1
49 
50 print(user_info_list)
51 f2 = open('UserAuthenticationFile.txt',"w")               #这种方式是以清空的方式打开。
52 for i in user_info_list:
53     f2.write(i["name"]+"|"+i["passwd"]+"|"+str(i["retry"]))
54     f2.write("\n")
55 f2.close()

shell代码实现效果如下:

 

 

 

c++代码实现效果如下:

 

 

JAVA代码实现效果如下:

 

 

JS代码实现效果如下:

 

PHP代码实现效果如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值