【Python 程序设计】-简单系统登录页面设计
1、需求分析
系统要有管理员登录、普通用户登录和退出三个选项可供选择
系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user目录下的文件夹中,存储在user.csv中
系统要能够进行欢迎界面显示,登录成功后显示该页面。
系统要能够有写入信息功能,当用户或管理员的文件为空时,则向里面写入信息。
注册界面要能够进行用户名重复提示,当用户注册账户已存在时,进行相应信息的提示。
2、总体设计
综合运用Python编程基础、面向对象程序设计,python文件处理、tkinter模块设计等知识要点
流程图:登录系统流程图
3、详细设计
(1)系统具备初始化功能,初始化包含写入管理员用户信息,创建普通用户目录,创建日志目录。
class UserDefinedException(Exception):
def __init__(self,eid,message,lineNo):
#异常描述
# 初始化管理员
def init():
(2)图形界面要求美观大方,具备系统名称显示、用户类型选择、用户名及密码输入、登录及退出按钮、欢迎界面等功能。
# 欢迎界面设计
def welcome():
winlabel = tk.Label(window,text='请选择用户类型:', fg='black',bg='pink',font=("微软雅黑", 15,'bold'))winlabel.place(x=100, y=110)winlabel.configure(width=20,height=4)
#设置标签的边框
# 按钮设计
bt_logquit = tk.Button(window, text='退出系统', bg='pink',command=usr_sign_quit)
bt_logquit.place(x=200, y=230)
bt_admin_login = tk.Button(window, text='管理员登录', bg='pink',command=admin_log_in)
bt_admin_login.place(x=110, y=180)
bt_user_login = tk.Button(window, text='普通用户登录',bg='pink', command=usr_log_in)
bt_user_login.place(x=270, y=180)
(3)用户登录信息存储CSV文件,包含用户名、用户类型、登录时间、登录成功/失败标志、备注信息等,以追加写的方式,分别写入管理员登录,普通用户登录和注册的信息。
# 储存用户登录成功信息
def user_csv():
row = [{'用户姓名': user_name.get(), '用户密码': user_pwd.get()}]
time1 = [str("\n"+"用户登录时间:" + str(datetime.now()) + "=====")]
is_welcome = [str("登录成功!")]
with open('test2.csv', 'a', newline='')as f:
(4)程序源代码要求关键代码有行注释,函数有IPO注释,类和对象有属性注释、方法注释。
#管理员登录
def admin_log_in():
#管理员登录验证
def admin_loggin():
#普通用户登录
def usr_log_in():
#普通用户登录验证
def user_loggin():
#注册函数
def usr_sign_up():
#确认注册时的相应函数
def sign_up():
#退出的函数
def usr_sign_quit():
(5)源代码中函数建议全部做异常处理,异常信息写日志文件或csv文件,文件以日期命名,异常信息包含:异常发生时间、异常代码、异常描述、异常位置等。将日志文件以当前时间命名并放入mylog的目录中。
# 异常信息写日志
except FileNotFoundError as e:
filename = "./users/" + usr_name
with open(filename, 'wb') as usr_file:
usrs_info = {'u_pwd': user_pwd.get(), 'u_name': user_name.get()}
pickle.dump(usrs_info, usr_file)
usr_file.close()
file_log = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime())
file = '%s.txt' % file_log
file_log_name = "./mylogs/" + file
file = open(file_log_name,'a+')
file.write(str(datetime.now().strftime('%Y%m%d')))
file.flush()
file.write("\n====="+str(datetime.now())+"=====\n")
file.close()
4、程序运行结果测试与分析
-
主窗体设计:
-
欢迎界面设计
-
管理员登录界面
用户名与密码正确:
用户名或密码错误:
-
普通用户登录:
用户名或密码错误:
注册成功页面:
用户名与密码正确:
-
写CSV文件
-
异常信息写日志文件
5、完整源代码
源代码.zip
https://download.csdn.net/download/paney_li/87268573
希望可以帮到你哦!