原理
总体设计
通过对系统的需求分析,大致构思得到如下所示总体设计分析图。
数据库分析
E-R图
实体:用户、课程和教学班
用户属性:用户ID、用户姓名、性别、出生日期、部门、手机号码、用户类型和密码。
课程属性:课程ID、课程名称、时间地点以及学分。
教学班属性:教学班ID、课程ID、用户ID、时间地点。
关系:一个用户(学生、教师、教务)可以选修、管理m个课程。一个课程也可以被n个用户选修与管理。一个教学班可以有多个用户(学生)参加,但一个学生只能在一个教学班中。
登录功能模块分析设计
通过上述对用户登录模块的初步设计,现对登录时具体逻辑进行分析。用户输入账号密码后点击登录按钮,首先判断用户是否输入完整账号密码,以防出现传空值的情况。都不为空后,可根据用户输入的账号来查询密码,在进行匹配从而达到判断是否账号密码正确。
if len(userid.strip()) == 0:
wx.MessageBox('请输入用户ID!')
self.inputTextUserID.SetFocus()
return None
if len(password.strip()) == 0:
wx.MessageBox('请输入登录密码!')
self.inputTextPassword.SetFocus()
return None
username = data.check_login(userid, password, usertype)
if not username:
wx.MessageBox('用户名或密码或角色错误,请重新输入!')
self.inputTextUserID.SetFocus()
else: self.Close(True)
修改密码模块分析设计
通过上述对用户登录模块的初步设计,现对登录时具体逻辑进行分析。当用户登录后,将用户登录时输入的信息值通过界面传递到主界面,用户在菜单栏里可进行修改密码的操做。两个文本框中默认内容为默认密码123456,用户可通过修改新密码和确认密码进行修改密码,且当新密码与确认密码一致时修改成功。
教务管理模块分析设计
教务人员在进入主界面后,可进行的操作有用户管理、课程管理、开课计划等。用户管理具体的功能有对学生的增删改查、教师信息的增删改查以及对教务的增删改查,其中,当教务选择修改或删除后即不可以在对用户的选择,可以在该操作前先选择用户。课程管理即对课程信息的增删改查。开课计划可以将相关课程分配给一些教学班。当选择不同角色或操作时会对应对一些按钮或文本框设置不可写属性。此处以教务人员添加用户信息为例。
if len(userid.strip()) == 0:
wx.MessageBox('请输入用户ID!')
self.inputTextUserID.SetFocus()
return None
if len(username.strip()) == 0:
wx.MessageBox('请输入用户姓名!')
self.inputTextUserName.SetFocus()
return None
if data.check_user_id(userid):
wx.MessageBox("该用户已经存在!")
self.inputTextUserID.SetFocus()
return None
data.insert_user(user_type, userid, username, gender, birthday, department, phone)
self.refresh_screen()
该操作界面左下部分是一个表格列表用于展示所有成员的所有信息。该列表实现了动态刷新显示数据库中的数据
self.listUser.DeleteAllItems()
index = 0
for user in user_list:
self.listUser.InsertItem(index, user[0])
self.listUser.SetItem(index, 1, user[1])
self.listUser.SetItem(index, 2, user[2])
self.listUser.SetItem(index, 3, user[3])
self.listUser.SetItem(index, 4, user[4])
self.listUser.SetItem(index, 5, user[5])
index += 1
教师管理模块分析设计
教师登录到主页后可进行的主要操作有成绩的录入,通过选择教学班以及课程信息,对成绩进行录入,并判断录入成绩是否符合规范。不可写文本框内会自动根据教师输入的教学班号查询到相关的课程号、课程名称等,以便进行成绩的录入。
学生模块分析设计
学生登录系统后除了个人信息操作外,可进行选课与退课操作。学生可根据输入教学班号进行选课,也可通过双击列表中的数据再进行退课操作。
def onCourseList(self,e):
index = e.GetIndex()
self.inputTextCourseID.SetValue(self.listCourse.GetItem(index, 0).GetText())
self.inputTextCourseName.SetValue(self.listCourse.GetItem(index, 1).GetText())
self.inputTextCredit.SetValue(self.listCourse.GetItem(index, 2).GetText())
self.inputTextDescription.SetValue(self.listCourse.GetItem(index, 3).GetText())
教务:
用户添加、删除、修改界面效果图如下所示。
课程添加、删除、修改界面效果图如下所示。
教学班信息添加、修改、删除界面效果图如下所示。
教师:
教师可以在系统中通过选择教学班进行成绩录入等操作,运行效果如下所示。
学生:
学生登录后,窗口标题会显示登录学生的相关信息,可操作列表在顶部的菜单栏中。窗体部分的背景是一张图片,运行效果如下所示。
学生可通过输入教学班号进行选课,也可通过输入课程相关信息进行退课操作。
源码:
q: one three five one zero nine seven four three one