您的位置:首页 > 其它

简单实现一个可以注册、登录、登出的系统

2019-05-10 12:56 267 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_38797742/article/details/90056122

简单实现一个可以注册、登录、登出的系统
设计一个拥有注册、登录、退出功能的小程序。
一、接口提供方
(1)使用面向对象思想,将方法封装到某个类中。
(2)创建一个独立的包、模块存放这个类。
(3)提供注册功能:需要输入“手机号码”、“密码”、“确认密码”三个信息。注册完成后提示注册的手机号码。限制手机号码长度11位,不满足则抛出异常给调用方;密码、确认密码长度为6位,不符合则抛出异常给调用方;密码、确认密码不相同,也抛出异常给调用方。
(4)注册信息保存到本地一个文件中。
(5)提供登录功能:登录成功后,提示欢迎登录;账号不存在时、账号或者密码不正确时,抛出异常。
(6)提供退出功能:需要输入用户名,打印xxx退出登录。
(7)自定义多个异常类并继承Exception。以满足上面的不同情况。
二、接口调用方:
调用方是程序入口,它是独立的python文件。主要功能为:
(1)显示欢迎提示:程序运行起来,打印欢迎信息,并打印功能菜单,并提示用户进行的输入选择。输入1执行注册、输入2执行登录、输入3执行退出登录、其他无效输入。
(2)主程序一直在循环运行,等待用户输入。
main.py

from user_class.user import Admin

if __name__ == '__main__':
user = Admin()
while (True):
number = input("1:注册,2:登录,3:退出登录:")
is_or_no = number.isdigit()
if not is_or_no:
print('请输入数字!!')
else:
int_number = int(number)
if int_number == 1:
print('-------------------注册-------------------')
user.regist()
elif int_number == 2:
print('-------------------登录-------------------')
user.login()
elif int_number == 3:
print('-------------------退出-------------------')
user.logout()
else:
print('请输入正确的数字!!')

user.py

# 自定义多个异常类并继承Exception
class MyException(Exception):
def __init__(self, *args):
self.args = args

class phone_no(MyException):
def __init__(self, args=('请输入11位手机号!!',)):
self.args = args

class pwd_no(MyException):
def __init__(self, args=('请输入六位数字的密码!!',)):
self.args = args

class unequal(MyException):
def __init__(self, args=('请输入相同的密码!!',)):
self.args = args

class user_no(MyException):
def __init__(self, args=('该用户不存在!!',)):
self.args = args

class pwd_wrong(MyException):
def __init__(self, args=('密码错误!!',)):
self.args = args

# 主要程序
class Admin:
# 用户信息
def __init__(self):
self.userFile = 'users.txt'

# 登录
def login(self):
phone = input('请输入手机号:\n')
with open(self.userFile, 'r', encoding='utf-8') as user_file:
for line in user_file:
line = line.strip()
line_list = line.split(" ")
if line_list[0] == phone:
password = input("请输入密码:\n")
# 用户手机和密码与数据对应
if line_list[0] == phone and line_list[1] == password:
print("欢迎登录!")
break
elif line_list[0] == phone and line_list[1] != password:
# 密码错误
try:
# 抛出异常
raise pwd_wrong()
except pwd_wrong as msg:
# 提示错误信息
print(msg)
break
elif line_list[0] != phone:
# 用户手机号未注册
try:
raise user_no()
except user_no as msg:
print(msg)
break

# 注册
def regist(self):
phone = input('请输入11位手机手机号:\n')
if len(phone) != 11:
# 不是11位手机号
try:
raise phone_no()
except phone_no as msg:
print(msg)
else:
with open(self.userFile, 'r', encoding='utf-8') as user_file:
for line in user_file:
line = line.strip()
line_list = line.split(" ")
if line_list[0] == phone:
print('该用户已经注册,请直接登录!')
break
else:
pwd1 = input("请输入6位密码:\n")
if len(pwd1) != 6:
# 不是6位密码
try:
raise pwd_no()
except pwd_no as msg:
print(msg)
break
pwd2 = input("请再次输入6位密码:\n")
if len(pwd2) != 6:
if len(pwd1) != 6:
# 不是6位密码
try:
raise pwd_no()
except pwd_no as msg:
print(msg)
break
if pwd1 == pwd2:
with open(self.userFile, 'a', encoding='utf-8') as f:
temp = phone + " " + pwd1 + '\n'
f.write(temp)
print(phone + '注册成功!')
break
else:
# 两次输入的密码不一致
try:
raise unequal()
except unequal as msg:
print(msg)

3ff7
break

# 退出登录
def logout(self):
phone = input("请输入需要退出的用户手机号:\n")
with open(self.userFile, 'r', encoding='utf-8') as user_file:
for line in user_file:
line = line.strip()
line_list = line.split(" ")
if line_list[0] == phone:
print("{}退出登录".format(phone))
break
else:
# 该用户不存在!!
try:
raise user_no()
except user_no as msg:
print(msg)
break
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐