python编辑用户登入界面
1.需求分析
登入界面需要达到以下要求:
- 系统要有登入和注册两个选项可供选择
- 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中
- 系统要能够进行登入错误次数统计并锁定,当用户输入3次错误时账户密码时,改账户被锁定,并将锁定账户保存于login_lock.txt文件夹中
- 注册界面要能够进行用户名重复提示,当用户注册账户已存在时,进行相应信息的提示。
1.代码实现
getNum = int(input("1.登入\n2.注册\nPlease Input the Choose :"))
while getNum<1 or getNum>2:
getNum =int(input("无效值 :"))
username = input("用户名: ")
password = input("密码: ")
if getNum == 1:#登入
ErrNums = 0
while ErrNums<3:
T = False
fp = open('login_lock.txt','r')#打开锁定文件查看输入的账户是否被锁定
lines = fp.readlines()#读取所有行
while T== False:
for line in lines:
if line.split(',')[0] == username:
print("帐号已被锁定 !")
username = input("用户名: ")
password = input("密码: ")
break
T=True
fp.close()
T = False
fp_user = open('user_info.txt','r')#打开用户信息文件:
lines = fp_user.readlines()
for line in lines:
if line.split(',')[0] == username:
if line.split(',')[1] == password+'\n'or line.split(',')[1] == password:
print("登入成功 !")
T = True
break
fp_user.close()
if T == False:#登入失败了
ErrNums += 1
if ErrNums >= 3:
fp_user = open('login_lock.txt','a')
print("账户已被锁定 !")
fp_user.write('\n'+username)
fp_user.close()
break
print("账户名或密码错误 !")
username = input("用户名: ")
password = input("密码: ")
else:
break
elif getNum == 2:#注册
fp= open('user_info.txt','r')#打开用户信息文件:
T = False
lines = fp.readlines() # 读取所有行
while T == False:
for line in lines:
if line.split(',')[0] == username:
print("帐号已存在,请重新输入 !")
username = input("用户名: ")
password = input("密码: ")
break
T = True
fp.close()
fp = open('user_info.txt', 'a') # 打开用户信息文件:
fp.write(username+','+password+'\n')
print("注册成功 !")
user_info.txt文件的内容如下图:
代码的重要部分都有注解,txt文件的创建目前存放于此工程的根目录中,使用相对路径方便调用,如不在此工程根目录中则代码中的路径需要改成绝对路径,否则程序运行后会有bug。代码中仍有不完善的地方,望有经验的朋友给予指出与探讨。
python编辑用户登入界面的更多相关文章
- [Django]登陆界面以及用户登入登出权限
前言:简单的登陆界面展现,以及用户登陆登出,最后用户权限的问题 正文: 首先需要在settings.py设置ROOT_URLCONF,默认值为: ROOT_URLCONF = 'www.urls'# ...
- python基础篇---实战---用户登入注册程序
一.首先了解需求: 1.支持多个用户登入 2.登入成功后显示欢迎,并退出程序 3.登入三次失败后,退出程序,并在下次程序启动尝试登入时,该用户名依然是锁定状态 二.文件代码如下: f = open(& ...
- iOS开发——实用篇Swift篇&QQ登入界面实现
QQ登入界面实现 我们知道在App Store中几乎所有软件都设计到账户的登入,而我们最常见的就是QQ,微信,在没有踏入程序员这条不归路之前,看到一个个的界面都感觉好高大上的样子. 在学习的过程中,自 ...
- Unity 使用 陀螺仪 实现 《王者荣耀》 登入界面 背景动态效果
在 <王者荣耀> 登入界面 左右上下晃动手机(有些手机不支持)可以看到背景在变化 我使用的是iPhone SE 效果如下: 对比两张图片的左下角 可以看到差异 至于为什么要这么做: 1.使 ...
- Struts2+AJAX+JQuery 实现用户登入与注册功能。
要求 必备知识 JAVA/Struts2,JS/JQuery,HTML/CSS基础语法. 开发环境 MyEclipse 10 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 关于U ...
- Django,COOKIES,SESSION完成用户登入
1.urls.py """Django_cookie_session URL Configuration The `urlpatterns` list routes UR ...
- Struts2+AJAX+JQuery 实现用户登入与注册功能
要求:必备知识:JAVA/Struts2,JS/JQuery,HTML/CSS基础语法:开发环境:MyEclipse 10 关于UI部分请查看下列链接,有详细制作步骤: 利用:before和:afte ...
- PCB 720全景图嵌入登入界面应用实现
通常软件主界面或登入界面背景图片通常采用固定图片,这里介绍如何将720度全景图嵌入到登入界面中来, 这里用的素材来源于这里上个月在公司里拍摄的全景图, 一.拍摄720度全景图片, 建议:最好用三角固定 ...
- 【转】vsftpd用户登入不进去问题
实在是登陆不上... 我已经加了一个新的用户UID和GID都设置到1000以后 /etc/vsftpd.conf也加了local_enable=yes 以standalone模式运行. 重启服务器后, ...
随机推荐
- 理解numpy exp函数
exp,高等数学里以自然常数e为底的指数函数 Exp:返回e的n次方,e是一个常数为2.71828 Exp 函数 返回 e(自然对数的底)的幂次方. a = 1 print np.exp(a) a ...
- 理解numpy dot函数
python代码 x = np.array([[1,3],[1,4]]) y = np.array([[2,2],[3,1]]) print np.dot(x,y) 结果 [[11 5] [14 6] ...
- Linux文件描述符
在Linux通用I/O模型中,I/O操作系列函数(系统调用)都是围绕一个叫做文件描述符的整数展开.这不禁让人产生疑问:这个整数代表什么?一个数值代表一个文件吗?随便传一个整数进去调用可以吗? 原文地址 ...
- CentOS6安装各种大数据软件 第五章:Kafka集群的配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- IComparer 与 IComparable
static void Main() { var people = new ArrayList(); people.AddRange(new ArrayList { }, }, }, } }); Co ...
- 05.kafka提前准备工作:搭建zookeeper集群环境
总体参考:http://www.cnblogs.com/zhangs1986/p/6564839.html 搭建之间同步下spark01.02.03的环境 复制/opt/flume这个文件夹到 spa ...
- 使用Selenium慢慢向下滚动页面
我正试图从航班搜索页面抓取一些数据. 此页面以这种方式工作: 你填写一个表格,然后你点击按钮搜索 – 这没关系.当您单击该按钮时,您将被重定向到包含结果的页面,这就是问题所在.这个页面连续添加结果,例 ...
- C++ —— 类中static和const关键字声明变量的初始化方式总结
在类中声明变量/常量时,经常会用到static.const关键字.对于该变/常量的初始化问题,网上有许多相关文章,但是大多不够完善,或者存在错误.经过实际验证,总结如下: (注明:测试编译平台为VS2 ...
- java虚拟机内存管理
1. java虚拟机内存如下 2. 运行时数据区 内存图分析:
- C++:bitset用法
std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位 ...