第三章教务管理系统的设计与实现.docx
《第三章教务管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《第三章教务管理系统的设计与实现.docx(20页珍藏版)》请在冰豆网上搜索。
第三章教务管理系统的设计与实现
第三章教务管理系统的设计与实现
第一节需求分析
1.用户需求
根据教务处的需要,本系统应完成以以下任务:
〔1)动态数据查询
在获得身份认证的情况下,查询与身份一致的信息,查询内容包括:
本科生信息按班级、专业查询。
分页显示学生的学号、姓名、民族、籍贯、出生年月等基本信息。
本科生成绩按学号、班级、专业、学年学期查询。
分页显示学生的课程、成绩、学
分、学年学期等。
本科生上课课表按班级、教师查询。
输出一周每天、每课节的课程的详细信息,包
括任课教师、上课地点等。
教师评估结果按教师、院系、课程类别查询。
显示教师评估的各种评分的各项指标
与总分,以及与系平均、校平均结果的比较。
本科生校内公选课选课结果按学号查询。
显示该学生的已被选中的选课清单。
(2)身份认证与权限控制
身份认证是本系统的一个核心。
本系统确定的用户身份包括全校本科生、任课教师、院
系领导、校领导、系统管理员,它们在系统中具有不同的角色,即不同类别的用户对数据库
的访问权限不同,同一用户对不同的数据库的访问权限也不相同。
因此需要根据实际情况建
立相应的访问权限。
系统管理员对本系统的数据库拥有最高选限,可以进行录入、修改、删
除、查询等各种操作,还可以对访问用户进行授权。
其他用户除了可以修改自己密码外,对
不同数据库有不同的访问权限。
其中校领导拥有对数据浏览的最高权限,可以浏览本系统所
有可供查询的数据;院系领导可以浏览本院系所有可供查询的数据;任课教师可以查询自己
任教的课程评估结果、上课课表;本科生可以查询自己的成绩和公选课课程,此外对自己的
校内公选课选修结果有添加、修改、删除、查询等各种操作权限。
(3)程序代码保护
虽然正常情况下ASP代码不会传递到客户端,然而设计程序时仍要考虑代码的泄漏问
题。
因为代码一旦被非法用户获得,就会暴露系统内的某些重要信息,给系统的安全带来极
大隐患。
解决办法的基本思路:
为每一个功能写一个独立的程序,尽可能少的让客户了解服
务器端信息,尽可能多的控制交互,检测提交的方法、内容及长度,对特殊字符进行过滤。
尽可能多的设置错误处理,此外还要充分发挥日志功能,当检测到了不正确的提交时,记录
下客户端的信息,例如IP,系统配置,请求等等,这样可以发现问题的所在。
此外,所有
需要权限操作的页面都必须执行认证判断的操作。
如果任何一页没有进行这种认证判断,都
有可能给攻击者以恶意入侵的机会。
(4)Web网页之间的参数传递
Web网页之间传递参数有三种方法:
命令行方式、表单域的隐含字段方式和Session对
象方式。
命令行方式公开显示所要传递的参数值,Session对象在内存中生存时间有限,在
程序设计中根据实际需要选用这三种方法的其中一种。
一般情况下都采用表单域的隐含字
段方式。
2.数据库模型
(1)开发任务
Web教务管理应用系统:
在《高等院校(大、中专、成人)教务管理综合系
统JWGL2.0))的C/S结构基础上,开发B/S结构的应用程序。
教学质量评估系统:
在VFP的C/S结构基础上,开发BIS结构的应用程序。
校内公选课系统:
既要作数据库开发,又要作Web应用开发。
(2)数据对象:
用户信息:
校领导、院系领导、教师、学生、管理员,以及相应的用户权限等。
基本信息:
院系、专业、教研室、班级、教室等以及它们之间的关系。
数据信息:
课程、成绩、课表等信息。
(3)数据库的分类与功能:
学生信息库:
保存在校本科生的基本信息、成绩、上课课表,以及院系、专业、
教研室、班级、教室等代码表。
教师评估表:
教师评估结果,以及院系、年级、课程、课程类别等代码表。
校内公选课数据库:
保存在校本科生的基本信息、公选课课程,以及院系、年
级、课程、课程类别等代码表;保存选课时间、条件限制等参数。
数据的采集包括两个方面:
一类是可以从其它数据库中提取的数据,如学生、
班级、专业、院系、教师表,不定期地将数据导入新建数据库中,保持新建数
据库与原有数据库中数据的一致性:
另一类是需要录入的数据,用户在Web
界面下完成数据的录入工作。
如课程表,选修时间表等由管理员负责手工添加、
修改、删除等操作维护数据。
而学生选修课程表数据由学生输入信息生成。
系统管理数据库,保存本系统的用户、系统参数、字典表等信息。
3.系统模型
系统按访问数据库的分类及用户功能的不同,分为四个子系统:
学生信息查询子系统、
教师评估查询子系统、校内公选课子系统、管理员子系统。
系统的总体结构如图3-1所示:
第二节数据库设计
1.学生信息库
学生信息库采用SQLServer7.0,共有一百多张表,本系统目前用到了其中的10张表,
它们是:
学生基本信息表(XJ一JK)、学生成绩表(CJ一SCJD)、上课课表(PKseDB33C)
等数据表,以及班级表(SYS多J)、专业表(SYS一ZY)、院系表(SYS一X)、课程表(SYS一C),
课程修习类别表(SYSweKCXX)、考试性质表(SYSKSXZ)、学年学期表(SYSXNXQ)
等代码表。
各表的列定义以及主外键关系如图3-2所示。
2.教学质量评估表
本数据库采用VisualFoxPro,共有12张表,本系统使用其中的6张,它们是:
结果表
(jgk.dbf)、教师表(jsk.dbf)、院系表(xyk.dbf)、课程表(kcbh.dbf),课程类别表(kclb.dbf),
年级表(nj.dbf)a
教学质量评估的数据保存在结果表(jgk.dbf)中,包括如下信息:
所有任课教师的评估
结果,以及各课程的系平均、校平均结果。
每项评估的结果又分为学生评、自评和同行评三
种类型。
其中学生评类型又细分为公共必修课、公共选修课、专业必修课、专业选修课等多
种课程类型。
由于每个教师可以教多门课程,每门课程又可以有多个年级,多种课程类别,
因此每一种情况都会有一组评估结果,每组评估结果由多项指标组成,每项指标占一行。
结果表((jgk.dbf)的主要字段以及与之关联的表的信息如下表所示:
选修(皇呈,巡监且#,兰丝已赳醚)
(3)关系模式规范化
对上述关系模式转换成3NF,得到最终的数据库、表的定义及关系:
关系数据库:
Elective,数据库的大小根据应用自动增加。
表:
学生表(Student):
学生的学号(PK),姓名,密码,班级(FK)等基本信息
可选课表(Elective):
编号(自动增长)(PK)、课程编号(FK)、学年学期号(FK)
学生选修记录表(StuChoice):
编号(自动增长)(PK)、学号((FK)、可选课表
编号(FK)、学年学期号((FK)、选中标记、选课
时间等
班级表(Class):
班号(PK),入学年份(FK),专业号(FK)
专业表(Depart):
专业号((PK),专业名
教师表(Teacher):
教师的基本信息,包括姓名、简介等
年级表(Grade):
入学年份((PK)、年级名称、限选门数
学年学期表(Semester):
学年学期号((PK)、学年学期名称
课程表(Course):
课程编号((PK)、课程名称、课程简介
选修时间表(Timer):
编号(自动增长)(PK)、学年学期号(FK)、开始时间、
结束时间
(4)数据完整性与一致性
本数据库采取的方式有主、外键约束,缺省值,和触发器。
主键约束是指对每张表指定某一列或某几列组合的值具有唯一性。
如学生表的关键
字为学生的学号。
外键约束是指各表之间的参照完整性。
如“学生表”与“班级表”之间的关系:
每
个班级可以有多名学生,每个学生只能存在某一个班级中。
因此,在“学生表”中设立
“班级”外键。
与“班级表”中的主键“班号”关联。
这样每个学生都有唯一的班级,
不会产生不属于任意班级的学生。
缺省值约束是指对某些不能为空的字段设置缺省值,当用户如果没有输入值时就使
用缺省值。
如可选课表中IfAllowCheck(是否允许选择)字段的缺省值为True,这样
在可选课表中添加一门课时默认允许学生选修此课程,如果输入False,则表示禁止学
生再选择本课程。
触发器的作用是为了实现由主键和外键所不能保证的参照完整性和数据的一致性。
常用表的列定义以及它们之间的关系如图3-4所示。
第四节模块设计
1.用户身份认证
功能:
检查用户输入的用户名与口令是否正确,若正确,登录成功;否则转到错误提示
页面。
设计思路:
(I)设计用户登录界面,包括用户名域与口令域。
(2)用户名与用户字典表分级对应。
(3)当用户输入的用户名与口令在用户表字典中存在时,取得合法身份及权限。
2.修改密码
功能:
用户可以在登录界面上修改自己的密码。
设计思路:
(1)用户必须输入用户名和原密码。
(2)输入新密码,并进行新密码二次确认。
(3)用户不能修改自己的用户名。
3.动态查询
功能:
根据用户的权限以及提交的条件,动态生成结果,并且分页显示。
设计思路:
本系统涉及的查询有十多个,设计思路基本上都分为两部分:
第一部分是由前端查
询表单构成的查询界面,用户通过该界面提交查询请求;第二部分是由运行在服务器上
的ASP脚本来处理用户的查询请求,并将处理结果返回给浏览器。
(1)设计查询表单提问界面,根据用户的身份及查询内容提供相应的查询条件表单。
(2)接到用户的查询请求时,检查用户的身份及权限,如果合法,搜集用户的查询条件。
(3)对多张表的查询,事先使用SQLServer建立视图、存储过程封装这些SQL代码,
这样只要寻找到查询内容对应的SQL语句/视图/存储过程,再加上用户的查询条
件,就可以组合成最终的SQL语句。
(4)打开查询内容对应的数据源,并执行SQL语句,返回查询结果的记录集。
(5)如果记录集中存在内容,分页显示。
4.选修课程
功能:
学生在指定的选课时间范围内可以多次进行网上选课,并可修改数据。
每次选择
完毕,系统检查学生的选课是否符合公选课条件,若满足条件,将数据写入数据库中,否则
提示错误,学生可以重新选课或者退出选课。
其它时间,禁止学生修改数据。
选课的条件有:
(1)选修门数的限定:
不同年级的限选门数不同。
(2)选修年级的限定:
某些课程只面向某个或某几个年级。
(3)选修人数的限定:
某些课程可以设置最大选课人数,并可以选择选课人数满时的解
决办法:
禁选,或者允许继续选择,当选课结束时由管理员筛选。
(4)学生不能选修本专业的课程:
学生不能把本专业的课程作为公选课选修。
(5)选修名单已经确定,或者被管理员设置禁选的课程,在选课时间范围内只接受已选
中的学生退选要求。
设计思路:
(1)根据学生的身份及选修记录显示该学生的选课界面,主要工作有:
a)从选修课程表(Elective)中找到本学期所有的选项课程,以表格的形式显示。
b)对以下的课程,在表格的“选择”栏目中设置复选框,允许学生选课或者退选:
该学生本次选课已选的课程,并将复选框设为“选中”
选课标记字段(IfAIIowCheck)为“允许”(值为真)的课程。
所属专业不是该学生专业的课程。
选课人数没有限制或未满的课程。
c)对其它课程,只显示信息,不显示复选框,不允许该生选择。
(2)接到学生提交的选课信息时,检查学生的选择是否有效,即判断以下几个条件:
学生的选课总数是否超出该年级的限选门数。
如果选课人数超出限选人数,判断该课是否设为满即禁选。
(3)如果满足以上条件,将本次选课记录写入数据库中。
办法是将该生原有选课记录
的选课标记字段值改为一1,再将本次的选课记录写入表中,选课标记为to
5.用户管理
功能:
各部门管理员可以对本部门的用户执行添加、修改、删除用户的操作。
设计思路:
(1)设计用户表管理界面,提供添加、修改、删除三个按钮。
(2)添加用户时,提供添加表单,内容包括用户名、密码、权限等,提交后,系统检查
用户名是否重名,如果没有,将该记录写入对应的用户表中。
(3)修改用户时,提供修改表单,内容包括用户名、密码(内容不可见)、权限等。
用
户名项不能修改,如要修改,只能选择删除、再添加新用户的办法;密码项只能
选择修复,即恢复为初始设置;其它项的内容可以修改。
修改完毕后,系统更新
该记录。
(4)删除用户时,选择要删除的用户名,点击“删除”按钮。
首先弹出一个确认对话框,
提示用户是否确实删除该用户。
如果确定,系统从用户表中删除该记录;否则,
系统取消删除操作。
6.选修课程管理
功能:
公选课管理员设置各学期开设的公选课,可以执行添加、修改、删除、浏览等操
作。
设计思路:
(1)设计公选课课程管理界面,内容包括课程的所有信息,如课程编号、课程名称、课
程类别等,以及浏览按钮如“第一页”、“下一页”、“前一页”、“最后一页”等,操
作按钮如“新建”、“保存”“取消”、“删除”等。
(2)从课程表中找到所有的课程记录,分页显示,每页显示一门课程,点击浏览按钮顺
序浏览其它课程,也可以从页面下方的下拉列表框中选择直接跳到某课程浏览。
(3)新建课程:
点击“新建”按钮时,显示一个空的课程页面,用户输入课程的各项信
息后,选择“保存”按钮时,检查输入的课程编号在课程表中是否存在,如果是新
的课程编号,将输入的数据加入表中。
如果选择“取消”按钮,撤销对记录的添加
处理,选课表没有任何改变。
(4)修改课程:
转到要修改课程的页面,可以修改除编号以外的数据(如要修改编号,
只能选择删除、再添加)。
修改完毕后,选择“保存”按钮,这些内容将被更新至
选课表中的原有记录。
选择“取消”按钮,撤销对记录的修改处理,选课表没有任
何改变。
(s)删除课程:
转到要删除课程的页面,选择“删除”按钮,弹出一个对话框确认用户
操作,得到认定后删除选课表中该课程的记录,否则不作任何操作。
(6)所有操作均在一个页面上进行,课程的记录以文本框、下拉框等形式表示。
其中任
课教师、限选年级、所属专业的下拉框允许多选。
7.数据的备份与恢复
功能:
公选课管理员可以对数据库执行备份、恢复操作。
设计思路:
(1)设计备份/恢复表单页面,内容包括要备份/恢复的数据库名、备份/恢复目的地、数
据库使用用户、密码等。
(2)表单提交时,系统执行以下几项检查工作:
数据库是否存在
用户是否存在
密码是否正确
目的地址是否有效
(3)如果以上儿项均通过,数据执行备份/恢复操作。
8.数据的导入与导出
功能:
仅限公选课管理员。
导入功能是指公选课系统中的基础数据可以从学生信息库中
提取,它们包括:
学生表(Student)、班级表(Class)、专业表(Zy)、院系表(Yx)、教师
表(Teacher)。
导出功能是指将学生的选修课程情况导成Excel表,便于管理员使用Excel
的强大统计功能。
(1)导入的设计思路,以学生表(Student,以下简称S表)为例:
学生表共有4个字段,分别是学号、姓名、密码、班级。
数据最初是从学生信息库
(UserTables)中的XJXJK表(以下简称X表)中导入的。
以后,学生可以修改自己
的密码,因此,二张表的密码项可能不一致,这样,不能使用先删除再重新拷贝的方法,
而要具体比较,需要比较的内容有:
检查S表中存在,而X表中不存在的记录,删除这些记录。
检查S表中不存在,而X表中存在的记录,添加这些记录到S表中
检查S表、X表共有的记录,将X表中的姓名、班级内容更新到S表中。
(2)导出的设计思路:
打开学生选修表(StuChoice),取出某学期的所有选课记录,并从关联表如学生
表(Student)、班级表(Class)、专业表(Zy)、院系表(Yx)、课程表(Course)
中得到姓名、班级、专业、课程编号、课程名称等其它信息。
把该记录集转换为execl文件,完成这个工作的方法是设置浏览器HTTP头的类
型是excel。
代码如下:
<%Response.ContentType="appllcaton/vnd.ms-excel"
弹出对话框,用户可以选择下载本地硬盘,或者在当前位置打开。
如果客户端装有微软的Excel软件,就可以打开该文件,浏览选修数据。
9.学生筛选
功能:
本功能仅限公选课管理员使用。
可以有二种方法进行筛选:
人工筛选、机器自动
筛选。
筛选完成后,选中学生的选课标记字段((IfChoose)为1(缺省值),而被筛选掉学生
的选课标记字段被改为0。
由于数据并未被真正删除,因此该筛选功能可被管理员反复执行
多次。
27
设计思路:
(1)人工筛选:
从课程表中找到本学期的所有课程,同时对每门课程,通过学生选修表计算该
课程的选课人数。
设计筛选页面,显示所有课程的课程名称,己选人数、限选人数,对超出限选
人数的课程,用其它颜色显示,并提供手工和机器两种选择。
手工筛选时,弹出一个新的对话框,显示选修该课程所有学生的基本情况及其
选修信息,管理员可以通过选择选中或清除学生旁边的复选框来筛选学生,选
择完毕后,即将未被选中的学生的选课标记改为Oo
机器筛选,对选修该课程的所有学生执行随机抽签,未被选中的学生的选课标
记改为0。
抽签的办法见技术重点。
(2)机器筛选:
扫描所有课程,检查课程的已选人数是否超出限制人数。
对超出限制人数的课程执行随
机抽签的方法选择学生,未被选中的学生的选课标记改为0。
抽签的办法见技术重点。