220316-4、用户登陆和首页

1个月前 (01-06 14:12)阅读1回复0
zaibaike
zaibaike
  • 管理员
  • 注册排名1
  • 经验值165935
  • 级别管理员
  • 主题33187
  • 回复0
楼主

增加用户登录和登岸胜利首页

4.1 开发需求

用户登岸页面,查抄用户名和密码。

用户名和码准确,跳转到首页页面

4.2 常识点:

文件读取和遍历

字符串处置与字段拆分split strip

利用异常昌盛与捕捉raise except 语句

页面联动用于参数传递

4.3 代码

4.3.1 登岸页面代码,login.py

# -*- coding:utf-8 -*-

"""

项目名称:register

做者:Spring

模块描述:

用户注册模块

日期:2022年03月15日

"""

import os

import hashlib

from getpass import getpass # 导入密码库

from applogger import logger # 导入日记的笔,用于写入日记信息

import homepage

def show():

logger.info(------进入login页面------)

max_length = 60

MESSAGES = [

用户登岸

]

print(* * max_length)

for msg in MESSAGES:

print({0:^{1}s}.format(msg, max_length - (len(msg.encode(utf-8)) - len(msg))//2))

print(* * max_length)

# 用户登岸页面信息展现完成

# 领受用户输入的用户名和密码

# 1、输入用户名

while True:

inStr = input(>>>>>>请输入用户名:)

# 只要用户名输入有内容,就通过

if inStr:

username = inStr

break

else:

print(用户名不克不及为空,请从头输入...)

logger.debug(用户名:{}.format(username))

# 2、输入密码

while True:

inStr = getpass(>>>>>>请输入密码:)

# 只要用户名输入有内容,就通过

if inStr:

password = inStr

break

else:

print(密码不克不及为空,请从头输入...)

logger.debug(密码:{}.format(password))

# 判断用户输入的准确性,查抄用户名和密码

file_name = Userinfo.dbx

# 用try捕捉异常,停止处置

try:

# 读取用户信息

# 以r的体例翻开文件,停止文件读取操做

if os.path.exists(file_name):

with open(file_name, r, encoding=utf-8) as rf:

file_lines = rf.readlines() # 读取出来的是一个列表

# 找到用户名对应的用户信息

for line in file_lines:

is_checked = False # 查抄的标识为

# 用户存在,判断密码

if line.split(|*|)[1] == username:

# 比照密码能否准确

f_password = line.split(|*|)[2] # 提取用户信息中的密码

# 加密后的密码

encrypt_password = hashlib.md5((username+password).encode(utf-8)).hexdigest()

if f_password == encrypt_password:

# 用户名和密码查抄通过

is_checked = True

userid = line.split(|*|)[0]

realname = line.split(|*|)[3]

logindate = line.split(|*|)[8].strip() # 去掉末尾的\n

break # 只要找到用户名,就退出轮回,进步代码效率

else:

# 用户信息文件不存在,提醒先注册

raise NameError(请先注册。)

# 欠亨过抛出异常

if is_checked is not True:

raise PermissionError(用户名或密码错误。) # 抛出权限错误

input(登岸胜利...肆意键继续)

# 跳转到登岸后的主页面

os.system(cls)

homepage.show(userid, username, realname, logindate) # 返回欢送页面

except Exception as e:

logger.exception(e) # 打印出仓库的信息,把出错的信息显示到日记里

input(str(e) + ...按肆意键继续)

os.system(cls) # 清屏

show() # 再从头输入

if __name__ == __main__:

show()

4.3.2 首页代码,homepage.py

# -*- coding:utf-8 -*-

"""

项目名称:welcome

做者:Spring

模块描述:

登岸后的首页

日期:2022年03月16日

"""

from applogger import logger # 导入日记的笔,用于写入日记信息

def show(userid, username, realname, logindate):

logger.info(------进入homepage页面------)

max_length = 60

# 1、优化后的代码

MESSAGES = [

,

f您好{realname},您是第{userid}个读者,,

欢送来到,Spring进销存办理系统(SpringSaleSystem),

请选择要进入的页面:,

出库录入(S),信息办理(I),办理元页面(A).,

f前次登岸时间:{logindate},

]

print(f当前用户:{username}({realname}),系统日期 yyyy年mm月dd日)

print(* * max_length)

for msg in MESSAGES:

print({0:^{1}s}.format(msg, max_length - (len(msg.encode(utf-8)) - len(msg)) // 2))

print(* * max_length)

4.3.3 欢送页面代码,welcome.py

# -*- coding:utf-8 -*-

"""

项目名称:welcome

做者:Spring

模块描述:

欢送界面(法式员底线,不写反复代码)

日期:2022年03月12日

"""

import datetime

import sys

import os

import register

from applogger import logger # 导入日记的笔,用于写入日记信息

import login

def show():

logger.info(------进入welcome页面------)

# 获取系统日期

date = datetime.datetime.now().date()

max_length = 60

# 1、优化后的代码

MESSAGES = [

,

欢送来到,,

Spring进销存办理系统(SpringSaleSystem),

版本号:v0.1,

开发者:springPBI,

系统日期: + str(date),

]

print(* * max_length)

for msg in MESSAGES:

print({0:^{1}s}.format(msg, max_length - (len(msg.encode(utf-8)) - len(msg)) // 2))

print(* * max_length)

print(您能够选择如下操做:)

command_line = 登岸(L),注册(R),退出(Q).

print(command_line)

# for 遍历,是在有限的数据集合长进行轮回,次数是确定的

# while 前提轮回,次数是不确定的

while True:

command = input(请输入:)

# 停止判断,只能输入小写的l,r,q

if command.lower() in [l, r, q]:

logger.debug(用户输入的指令是:{}.format(command)) # 挪用日记记录信息

break

else:

print(输入有误,请从头输入...)

if command.lower() == r:

# 挪用并展现register页面

os.system(cls) # 清空末端页面信息

register.show() # 挪用注册页面

elif command.lower() == l:

# 跳转到登岸界面

os.system(cls)

Error()

elif command.lower() == q:

# 退出系统

print(再见,欢送下次再来!)

sys.exit(0) # 法式一般退出

else:

input(您输入的指令不撑持...请联络开爆发者。)

os.system(cls)

show()

0
回帖

220316-4、用户登陆和首页 期待您的回复!

取消