教务管理系统分类记录.zip
立即下载
资源介绍:
教务管理系统分类记录.zip
import logging
import sys
from PyQt6.QtWidgets import QWidget, QApplication, QMessageBox
from PyQt6.QtCore import Qt, QCoreApplication, QTimer
from ui.login import Ui_Form as LoginUiMixin
from ui.home import Ui_Form as HomeUiMixin
from lib import common
from interface import common_interface, student_interface, teacher_interface, admin_interface
from conf import settings
_translate = QCoreApplication.translate
test_logger = logging.getLogger('视图层')
login_window = None
login_name = None
login_user_type = None
class LoginWindow(LoginUiMixin, QWidget):
def __init__(self):
super(LoginWindow, self).__init__()
self.setupUi(self)
self.setWindowFlag(Qt.WindowType.FramelessWindowHint) # 隐藏边框
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) # 背景透明
self.admin_is_here = False # 默认没有管理员
self.login_window_init()
self.open_login_page()
self.home_window = None
#创建学校功能
def add_school(self):
# 1、 获取用户输入的数据
name = self.lineEdit_14.text().strip()
addr = self.lineEdit_15.text().strip()
# 2、判断
if not name or not addr:
QMessageBox.warning(self, '警告', '学校货地址不能为空!')
return
# 3、 调用添加学校接口
flag, msg = admin_interface.add_school_interface(
name, addr, login_name
)
QMessageBox.warning(self, '提示', msg)
# 4、如果学添加失败
if not flag:
return
# 5、学校添加成功, 进入主页
self.lineEdit_14.setText('')
self.lineEdit_15.setText('')
self.go_home()
# 进入主页
def go_home(self):
self.close()
if self.home_window:
return
# 1、实例化一个窗口对象
self.home_window = HomeWindow()
self.home_window.show()
# 初始化登录接口
def login_window_init(self):
self.lineEdit.setText(settings.LOGIN_USER)
user_type_dic = {
'Student': self.checkBox,
'Teacher': self.checkBox_2,
'Admin': self.checkBox_3
}
user_type_dic.get(settings.LOGIN_TYPE).setChecked(True)
# 获取用户类型
def get_user_type(self):
checkbox = self.checkBox.isChecked()
checkbox2 = self.checkBox_2.isChecked()
checkbox3 = self.checkBox_3.isChecked()
user_type_dic = {
'Student': checkbox,
'Teacher': checkbox2,
'Admin': checkbox3
}
for user_type in user_type_dic:
# 如果通过key拿到得知是True, 就返回key
if user_type_dic.get(user_type):
return user_type
# 登录功能
def login(self):
test_logger.debug('登录')
# # 1、获取用户名和密码, 以及用户类型
name = self.lineEdit.text().strip()
pwd = self.lineEdit_2.text().strip()
user_type = self.get_user_type()
# 2、判断用户名和密码是否正确
if not name or not pwd:
QMessageBox.warning(self, '警告', '用户名或密码不能为空!')
return
# 3、调用登录接口进行登录
pwd = common.pwd_to_sha256(pwd)
flag, msg = common_interface.login_interface(
name, pwd, user_type
)
if not flag:
QMessageBox.warning(self, '登录失败', 'msg')
return
# 4、登陆成功
settings.config.set('USER', 'LOGIN_USER', name)
settings.config.set('USER', 'LOGIN_TYPE', user_type)
with open(settings.CONFIG_PATH, 'w', encoding='utf-8-sig') as f:
settings.config.write(f)
# 5、记录用户名和用户类型
global login_name, login_user_type
login_name = name
login_user_type = user_type
# 6、登录成功,判断是否有学校
flag, msg = common_interface.check_obj_is_here('School')
if not flag:
# 如果没有学校的时候, 是管理员登录,跳转到创建学校页面
if user_type == 'Admin':
self.open_add_school_page()
else:
# 没有学校,也不是管理员登录
QMessageBox.warning(self, '警告', '当前不存在学校,请联系管理员添加学校!')
return
# 7、跳转到主页
self.go_home()
# 注册功能
def register(self):
test_logger.debug('注册')
# 1、拿到用户名和密码
name = self.lineEdit_11.text().strip()
pwd = self.lineEdit_12.text().strip()
re_pwd = self.lineEdit_13.text().strip()
# 2、进行简单的逻辑判断
# 2.2、 判断两次输入的密码是否一致
if pwd != re_pwd:
QMessageBox.warning(self, '警告', '两次输入的密码不一致!')
return
import re
# 2.3、 校验用户名是否合法
if not re.findall('[a-zA-Z]\w{2,9}', name):
QMessageBox.warning(self, '警告', '用户名长度必须为3-10个字符!\n只能有字母、数字、下划线组成,并且只能以字母开头!')
return
# 2.4、校验密码强度
if not re.findall('^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,16}$', pwd):
QMessageBox.warning(self, '警告', '\n密码太弱,必须包含大写字母、小写字母以及数字,并且长度必须为8-16位!')
return
# 3、做密码加密
pwd = common.pwd_to_sha256(pwd)
# 4、调用注册接口进行注册
if self.admin_is_here:
flag, msg = student_interface.student_register_interface(
name, pwd
)
else:
flag, msg = admin_interface.admin_register_interface(
name, pwd
)
QMessageBox.about(self, '提示', msg)
# 5、如果注册失败
if not flag:
return
# 6、跳转到登录页面
self.open_login_page()
self.lineEdit_11.setText('')
self.lineEdit_12.setText('')
self.lineEdit_13.setText('')
self.lineEdit.setText(name)
self.lineEdit_2.setFocus()
# 打开登录页面
def open_login_page(self):
test_logger.debug('打开登录页面')
self.stackedWidget.setCurrentIndex(0)
self.lineEdit.setFocus()
self.show()
# 打开注册页面
def open_register_page(self):
test_logger.debug('打开注册页面')
self.stackedWidget.setCurrentIndex(1)
self.lineEdit_11.setFocus()
# 1、判断是否有管理员
flag, msg = common_interface.check_obj_is_here('Admin')
# 2、如果管理员存在,则把注册页面的文字改成学员注册
if flag:
self.label_6.setText('学员注册')
self.admin_is_here = True
# 打开创建学校页面
def open_add_school_page(self):
self.lineEdit_14.setFocus()
self.stackedWidget.setCurrentIndex(2)
self.show()
# 添加课程
def add_course(self):
test_logger.debug('添加学校')
# 保存课程
def save_course(self):
test_logger.debug('保存课程')
# 添加老师
def add_teacher(self):
test_logger.debug('添加老师')
# 保存老师
def save_teacher(self):
test_logger.debug('保存老师')
# # 添加学校
# def add_school(self):
# test_logger.debug('添加学校')
# # 关闭窗口功能
# # def close(self):
# # self.close()