逻辑图如下:
代码如下:
1 # -*- coding:utf-8 -*-
2 # 此程序用于实现以下功能:
3 # 需求内容:编写登录接口
4 # 1、输入用户名密码
5 # 2、认证成功后显示欢迎信息
6 # 3、输错三次后锁定
7 # 作者:Elle
8 # 编写日期:2017年10月28日
9
10 import xlrd
11 from xlutils.copy import copy
12
13 def Login():
14 UserInfoTable = xlrd.open_workbook("D:PyProjectLoginDataUserInfo.xls",formatting_info=True)
15 Data = UserInfoTable.sheets()[0]
16 # 将excel表格中的所有用户数据及所在的行的index存入字典。
17 UserInfo = {}
18 for i in range(1,Data.nrows):
19 for j in range(1,Data.ncols):
20 UserInfo.setdefault(Data.cell(i,0).value,[]).append(Data.cell(i,j).value)
21 UserInfo.setdefault(Data.cell(i, 0).value, []).append(i)
22 # 校验输入的用户名是否为空,是否存在于用户数据的字典中
23 UserName = raw_input("Please input your Login Name:")
24 if UserName is "":
25 UserName = raw_input("Please input the correct Login Name:")
26 if UserName not in UserInfo.keys():
27 print "The Login Name is not Correct"
28 return
29 # 校验用户是否已经被锁
30 if UserInfo[UserName][1] == "1":
31 print "Your Login Name is locked,Please contact the service."
32 return
33 else:#允许输入3次密码,错误三次后锁定用户
34 for WrongTime in range (0,3):
35 PassWord = raw_input("Please input your password:")
36 if PassWord == UserInfo[UserName][0]:
37 print "Login Success."
38 return
39 elif WrongTime == 2:
40 NewUserInfoTable = copy(UserInfoTable)
41 NewUserInfoData = NewUserInfoTable.get_sheet(0)
42 NewUserInfoData.write(UserInfo[UserName][2],2,"1")
43 NewUserInfoTable.save("D:PyProjectLoginDataUserInfo.xls")
44 print "Input Wrong PassWord 3 times,your Login Name is Locked,Please contact service."
45 return
46
47 if __name__=="__main__":
48 Login()