全套资源下载地址:https://download.csdn.net/download/sheziqiong/86796950
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86796950
目录
第1章 需求分析 1
1.1 业务场景 1
1.2 业务属性 1
1.3 业务逻辑图 2
第2章 系统设计 3
2.1 数据库设计 3
2.2 系统功能实现分析 5
第3章 关键技术介绍 11
3.1 初始化准备数据: 12
3.2 首先获得文件模态框选择后的文件路径: 13
第4章 软件说明书 15
4.1登录界面和注册界面: 15
4.2管理员界面: 15
4.3教师界面: 16
4.4学生管理: 17
第5章 结论与展望 19
参考资料 19
2.2 系统功能实现分析
修改资料:对管理员的基本信息进行数据库操作即可(这里需要注意的是:不是所有信息都可以修改的,比如:ID这类固定的是不能修改的)。
修改密码:这一部分需要加多重验证,原密码错误不能修改密码,新密码和确定密码不相同不能修改密码,新密码为空不能修改密码。
开课管理,选课管理,开启考试,成绩录入,查看成绩,发布公告,查看公告:作为管理员,这里主要是对教师的开课进行管理,基本功能和教师权限差不多(由于篇幅原因,这里统一在教师业务实现分析介绍)。
学生选课情况:可以通过不同的课程号来查看本课程的学生选课情况,数据库里面有一个选课表,当学生添加选课时,数据可更新后,这里就可以实时显示。
教师查看课表:课程表是通过一个表格控件实现的,我们从数据库里面获得老师所开的所有课程,分别拿到课程名、上课地点、星期几,第几节等信息,这样就可以根据所拿到的信息,在视图中显示出来。
学生签到情况:在数据库中有了一个专门纪录签到的表,老师可以通过不同的课程号来查看本课程的学生签到情况:学生学号,姓名,学院,班级,以及签到时间。还可以通过条件筛选,也可以查看所有课程的学生签到情况。
考试安排:任课老师可以对自己的所开设的课程的考试信息进行设置和修改,主要是对数据库中的开课表进行操作,任课老师可以设置课程的考试时间,考试地点,开始形式等相关信息。
成绩录入:教师可以通过课程号来筛选选课学生的成绩单,也可以筛选全部学生的成绩单,将筛选出来的结果在界面上显示出来,这里是对学生表、选课表、开课表三表的查询操作。点击单元格后,可以将所点击行的信息,用一个字符串保存下来,然后在界面的下面以提示的形式显示。导入成绩的实现,这里我写了一个专门用来读写文件的类,当用户点击导入成绩按钮后,用户可以选择自己需要导入的成绩名单,只要格式正确就会将结果显示到界面的表格视图中,这个时候名单并没有导入数据库,界面上的导入按钮会变成确定导入按钮,当教师点击确定导入按钮后,才会导入数据库。这里会出现这么一种情况:成绩名单中有这名同学,而学生表中没有这名同学,这样就会导致界面上就筛选不出这名同学的信息,但在成绩表中会出现这位同学的成绩,当然这也是符合现实需要的。
查看成绩:这里就是对选课表里面的成绩部分的相关信息进行操作,按不同的需要,将筛选的结果显示到界面上。
学生评价情况:在学生评教后,教师可以查看全校的教师的评教情况,主要是对教师开课表进行筛选显示操作。
公告:教师和管理员可以发布公告,在数据库中建立了一个公告表,当教师或者管理员发布公告时,就是对这个公告表进行插入(包括发布者姓名、发布时间、发布内容等信息)。
查看公告:对公告内容在界面显示。
返回主页:跟换主界面的主画板,将里面的内容清空。
退出系统:直接关闭程序。
个人选课情况:在数据库的选课表中筛选出学号为自己的选课纪录,然后显示到自己界面,可以单击查看详情。
查看课表:根据自己的选课情况,将自己的选课在课表中填充起来,方法和教师的课表生成方法类似。
学生签到:我设置的签到原则是,一个学生,每天只能签到一次。所有在数据库中我建立了一个签到表(课程号、学号、签到的具体时间(这个时间用来在界面显示学生签到的具体时间,不是主键),签到的日期(这为一个主键,这个就是用来实现上面的需求防止学生一天同一门课多次签到))。本文转载自http://www.biyezuopin.vip/onews.asp?id=15596
查看考试时间:对自己所选课程的考试时间进行查看。
成绩查看:学生可以查看自己所选课程的成绩。
学生评教:学生可以对自己所选课程进行评教,评价等级可以为好评或者差评,当为好评时,将老师开设课程的评教等级加一,当为差评时,将本门课程的评教等级在原来的基础上减去一。
查看公告:查看管理员和教师所发布的公告。
返回主页,退出系统。
# 教师界面的主窗体
import wx
from Util.MyFrame import MyFrame
from TeacherFrame.Panel_1_1 import Panel_1_1 # 教师个人信息管理
from TeacherFrame.Panel_1_2 import Panel_1_2 #教师修改密码
from TeacherFrame.Panel_2_1 import Panel_2_1 # 教师开课
from TeacherFrame.Panel_2_2 import Panel_2_2 # 教师开课情况
from TeacherFrame.Panel_3_1 import Panel_3_1 # 教师查看课表
from TeacherFrame.Panel_3_2 import Panel_3_2 # 教师查看查看学生签到情况
from TeacherFrame.Panel_4_1 import Panel_4_1 # 教师开启考试
from TeacherFrame.Panel_4_2 import Panel_4_2 # 教师录入成绩
from TeacherFrame.Panel_4_3 import Panel_4_3 # 教师查看成绩
from TeacherFrame.Panel_5_1 import Panel_5_1 # 查看学生评教
from TeacherFrame.Panel_6_1 import Panel_6_1 # 发布公告
from TeacherFrame.Panel_6_2 import Panel_6_2 # 发布公告
class TeacherMainFrame(MyFrame):
def __init__(self,person):
super().__init__(person=person,title="教务管理系统---教师窗口",
size=(800, 600))
self.panel_1_1 = None #
self.panel_1_2 = None #
self.panel_1_3 = None
self.panel_1_4 = None
self.panel_1_5 = None
self.panel_2_1 = None
self.panel_2_2 = None
self.panel_3_1 = None
self.panel_3_2 = None
self.panel_3_3 = None
self.panel_3_4 = None
self.panel_4_1 = None
self.panel_4_2 = None
self.panel_4_3 = None
self.panel_5_1 = None
self.panel_6_1 = None
self.panel_6_2 = None
self.hide()
# 贴主界面图
img = wx.Image('res/001.jpg', wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, img, (0, 0))
self.font16 = wx.Font(16, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False)
self.SetFont(self.font16)
self.Center()
# 创建菜单栏 == 个人信息管理
menu_1 = wx.Menu()
menu_1_1 = wx.MenuItem(menu_1, 11, text="个人信息", kind=wx.ITEM_NORMAL)
menu_1_2 = wx.MenuItem(menu_1, 12, text="修改密码", kind=wx.ITEM_NORMAL)
menu_1.Append(menu_1_1)
menu_1.Append(menu_1_2)
# 创建菜单栏 == 课程管理
menu_2 = wx.Menu()
menu_2_1 = wx.MenuItem(menu_1, 21, text="开课管理", kind=wx.ITEM_NORMAL)
menu_2_2 = wx.MenuItem(menu_1, 22, text="选课情况", kind=wx.ITEM_NORMAL)
menu_2.Append(menu_2_1)
menu_2.Append(menu_2_2)
# 创建菜单栏 == 上课安排
menu_3 = wx.Menu()
menu_3_1 = wx.MenuItem(menu_3, 31, text="查看课表", kind=wx.ITEM_NORMAL)
menu_3_2 = wx.MenuItem(menu_3, 32, text="学生签到", kind=wx.ITEM_NORMAL)
menu_3.Append(menu_3_1)
menu_3.Append(menu_3_2)
# 创建菜单栏 == 课程考核
menu_4 = wx.Menu()
menu_4_1 = wx.MenuItem(menu_4, 41, text="考试安排", kind=wx.ITEM_NORMAL)
menu_4_2 = wx.MenuItem(menu_4, 42, text="成绩录入", kind=wx.ITEM_NORMAL)
menu_4_3 = wx.MenuItem(menu_4, 43, text="查看成绩", kind=wx.ITEM_NORMAL)
menu_4.Append(menu_4_1)
menu_4.Append(menu_4_2)
menu_4.Append(menu_4_3)
# 创建菜单栏 == 评教管理
menu_5 = wx.Menu()
menu_5_1 = wx.MenuItem(menu_5, 51, text="查看学生评教", kind=wx.ITEM_NORMAL)
menu_5.Append(menu_5_1)
# 创建菜单栏 == 公告
menu_6 = wx.Menu()
menu_6_1 = wx.MenuItem(menu_6, 61, text="发布公告", kind=wx.ITEM_NORMAL)
menu_6_2 = wx.MenuItem(menu_6, 62, text="查看公告", kind=wx.ITEM_NORMAL)
menu_6.Append(menu_6_1)
menu_6.Append(menu_6_2)
# 系统
menu_7 = wx.Menu()
menu_7_1 = wx.MenuItem(menu_7, 71, text="回到首页", kind=wx.ITEM_NORMAL)
menu_7_2 = wx.MenuItem(menu_7, wx.ID_EXIT, text="退出", kind=wx.ITEM_NORMAL)
menu_7.Append(menu_7_1)
menu_7.Append(menu_7_2)
# 将上面创建的菜单项 加入 到菜刀条里面
menuBar = wx.MenuBar()
menuBar.Append(menu_1, '&个人信息管理')
menuBar.Append(menu_2, '&课程管理')
menuBar.Append(menu_3, '&上课安排')
menuBar.Append(menu_4, '&课程考核')
menuBar.Append(menu_5, '&评教管理')
menuBar.Append(menu_6, '&公告')
menuBar.Append(menu_7, '&系统')
menuBar.SetFont(self.font16)
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.menuhandler)
def menuhandler(self, event):
id = event.GetId()
print(id)
self.hide() # 隐藏其他面板
self.bitmap.Hide() # 隐藏图片
if id == 11: # 教师个人信息(修改)
self.panel_1_1 = Panel_1_1(self)
self.panel_1_1.Show()
self.SetTitle("教师个人信息---教师窗口")
if id == 12: # 修改密码
self.panel_1_2 = Panel_1_2(self)
self.panel_1_2.Show()
self.SetTitle("修改密码---教师窗口")
if id == 21: # 教师开课
pass
self.panel_2_1 = Panel_2_1(self)
self.panel_2_1.Show()
self.SetTitle("教师开课---教师窗口")
if id == 22: # 教室开课情况
self.panel_2_2 = Panel_2_2(self)
self.panel_2_2.Show()
self.SetTitle("教师开课情况---教师窗口")
if id == 31: # 参看课表
self.panel_3_1 = Panel_3_1(self)
self.panel_3_1.Show()
self.SetTitle("查看课表---教师窗口")
if id == 32: # 查看学生签到情况
self.panel_3_2 = Panel_3_2(self)
self.panel_3_2.Show()
self.SetTitle("查看学生签到情况---教师窗口")
if id == 41: # 开启考试
self.panel_4_1 = Panel_4_1(self)
self.panel_4_1.Show()
self.SetTitle("开启考试---教师窗口")
if id == 42: # 成绩录入
if self.panel_4_2 is None:
self.panel_4_2 = Panel_4_2(self)
self.panel_4_2.Show()
self.SetTitle("成绩录入---教师窗口")
if id == 43: # 教师查看成绩
self.panel_4_3 = Panel_4_3(self)
self.panel_4_3.Show()
self.SetTitle("教师查看成绩---教师窗口")
if id == 51: # 查看学生评教
self.panel_5_1 = Panel_5_1(self)
self.panel_5_1.Show()
self.SetTitle("查看学生评教---教师窗口")
if id == 61: # 发布公告
self.panel_6_1 = Panel_6_1(self)
self.panel_6_1.Show()
self.SetTitle("发布公告---教师窗口")
if id == 62: # 发布公告
self.panel_6_2 = Panel_6_2(self)
self.panel_6_2.Show()
self.SetTitle("查看公告---教师窗口")
if id == 71: # 返回主页
self.bitmap.Show()
self.SetTitle("教务管理系统---教师窗口")
if id == wx.ID_EXIT:# 退出教务系统
self.Close()
# frame = LoginFrame()
# frame.Show()
# 隐藏面板
def hide(self):
if self.panel_1_1 is not None:
self.panel_1_1.Hide()
if self.panel_1_2 is not None:
self.panel_1_2.Hide()
if self.panel_2_1 is not None:
self.panel_2_1.Hide()
if self.panel_2_2 is not None:
self.panel_2_2.Hide()
if self.panel_3_1 is not None:
self.panel_3_1.Hide()
if self.panel_3_2 is not None:
self.panel_3_2.Hide()
if self.panel_4_1 is not None:
self.panel_4_1.Hide()
if self.panel_4_2 is not None:
self.panel_4_2.Hide()
if self.panel_4_3 is not None:
self.panel_4_3.Hide()
if self.panel_5_1 is not None:
self.panel_5_1.Hide()
if self.panel_6_1 is not None:
self.panel_6_1.Hide()
if self.panel_6_2 is not None:
self.panel_6_2.Hide()
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86796950
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86796950