网上评教系统的设计与实现
网上评教系统
赵锡文 电信专0701班 07070231015
网上评教系统的设计与实现
摘 要
传统的学生评教过程采用由学生填表,手工汇总统计的办法,这样造成工作量大、损耗多、时效性差的弊端。针对如何利用Web技术来解决高校评教中遇到的实际问题,本人设计并实现了基于PHP,SQL Server技术的网上评教系统,以提高评教过程的效率。本文从需求分析开始,在此基础上重点探讨了系统数据分析过程以及数据库设计过程,并就系统各项功能进行了介绍以及说明了其关键的实现方法。
引言
“评教”即由学生对教师的教学效果进行评价,是高校教学改革深入发展的需要,也是提高教育质量的有效方法之一,目前在许多高校应用非常普遍,并作为高校教学质量评价的必要环节被纳入学校的教学管理规范,对进一步完善高校教学质量监控体系,保证教学质量有着重要的现实意义。而目前随着高校教学改革的深人和学生规模的不断扩大,传统的学生评教过程采用由学生填表,手工统计的办法,这样造成工作量大、损耗多、时效性差的弊端。针对如何利用Web技术来解决高校评教中遇到的实际问题,提高评教过程的效率,本人提出并设计了基于PHP,SQL Server技术,采用B/S架构模式的“网上评教系统”解决方案。
需求分析
现行数据分析
从评教过程来说,首先由学生填写“课堂教学评价表”,教务处在获得所有课程,所有教师的评价表后,进行汇总、计算,剔除无效数据,最终确定对每位教师的课堂教学效果的评价结果,并给出相应的报表。该过程遵循一般的IPO(Input-Process-Output)基本数据处理过程,因此在需求阶段重点对输入数据和输出数据进行分析。
输入数据分析
目前对教师课堂教学效果评价,采用以下表格中所列的指标:
课堂教学评价表
该表有以下特点:
学生在学期期末,通过该表中所列指标,对每位任课教师进行评分评价。
一张表可以填写对多门课程教学质量的反馈意见。
通过满分值为每个评价项目给出权值。
调查表分为基础课程和专业课程两种,它们分别有不同的评价项目。
项目和项目满分值在不同学期可以进行调整。
由于存在以上的特点,从而带来一些系统设计的问题,本解决方案针对这些问题,采用以下的方法进行处理:
由于基础课和专业课的评价项目不同,因此这两类课程的评价不具备可比性,在处理这一问题时,采取的方法是一个系统,两套数据,并分别给出两套报表。
虽然一张调查表同时可以填写多门课程,但对于数据信息实体而言,实际上是一门课只对应为一个反馈意见的信息实体,因此,把一张调查表看作是多张数据表的组合。
不同学期评价的项目个数、评价项目的内容和每项的满分值有可能进行调整,A、B、C、D所代表的分值也有可能进行调整,但各项评价内容的满分值之和为100分。
输出数据分析
在获得上述由学生填写的评价表之后,经过汇总处理,需要制作出以下的一些汇总报表:
全校教师课堂教学情况评价表
学校名称、学年、学期
课堂教学评价结果(课程类别)
学校名称及主管部门
日期
该表主要是按照学年学期,对全校每位教师的课堂教学效果评价结果进行汇总统计,主要反映出综合得分和参评的人数信息。
各院系教师课堂教学情况评价表
学校名称、学年、学期
院系名称,课堂教学评价结果(课程类别)
学校名称及主管部门
日期
该表主要是按照学年学期,对学院内的每位教师课堂教学效果评价结果进行汇总统计,主要反映出综合得分和参评的人数信息。其中最后两行数据列出学院和全校课堂教学评价平均分进行比较分析,以评价出学院整体课堂教学效果在全校所处的位置,从而发现先进和寻找差距。
各院系教师课堂教学情况评价表
学校名称、学年、学期
教师课堂教学评价结果(课程类别)
院系名称:
教师姓名:
课程名称: 参评人数:
学校名称及主管部门
日期
和是教师课堂教学评价系统输出的主要表格。
数据流分析
在得到并了解上述输入、输出数据之后,需要将整个数据处理过程抽象为数据流分析结果,并且通过对数据流分析,可以获知数据的逻辑处理过程。具体分析结果如下图:
“网上评教系统”数据流图
整个评教过程中,首先教务处应将已经存在于教务系统中的教务任务书进行适当转换,生成适合评教的评价方案,然后学生对本学期上课的教师按照评分标准进行教学评分,并记录所有的评分结果。在获得所有评分结果后,教师可以查看属于自己的个人评分统计结果,而教务处可以获得汇总的评价结果。
数据模型分析
评教数据最终需要持久化,记录到数据库系统中,为此,需要专门对数据库进行分析设计。首先,给出系统数据库的概念模型,即绘制实体关系图(E-R模型)。通过对上述的数据分析结果进一步分析,得出初步ER模型如下图:
图 2-2 原评分模型(ER模型)
以上是最初设计的评分模型,但是,该模型用于统计分析时存在以下几个问题:
数据量大
每学期,评单表需要存储的数据条数可由以下公式得出:
粗略估计,我校每学期约生成100万条纪录,这对于统计分析来说,数据量是极其庞大的。
事务统计
首先数据量庞大必然造成汇总运算慢,而汇总慢的本质原因就是从事务进行统计,统计层次低。
为此,在具体实现该系统的时候,改进了该评分模型,将评单表一分为二:
评分表用于存储一门评分课程每位学生的评分;评单表用于存储一门评分课程的最终指标分布情况。
由于对数据进行预处理,提高统计层次,并将统计运算分散在评分的过程中,实现时间负载均衡,提高了统计效率,最终模型如图:
评分模型(ER模型)
系统实现
功能模块设计
对数据流进行分析,可以看出系统主要包括的功能是:评价方案的输入和修改、评分标准的输入和修改、评单的输入与查询修改、数据汇总、查询和打印等功能。具体的功能模块可以用下图表示:
“评教系统”功能模块图
数据库设计
关系模式
通过对数据库概念模型,即实体联系模型分析,按照转换规则,将上述ER模型转换为关系模型(即关系模式),并进行规范化检验。主要的转换和检验结果如下:
主评单(评单号,课堂编号,教师姓名,课程名称,院名,年级,班级,是否有效,班号)
评单项(评单号,评价序号,选项,选项符号)
评价方案(评价类别,评价序号,评价内容,A,B,C,D,权重)
评分标准(选项,评分)
注:带下划线的属性为关系的主属性(即关键字)。
物理数据库表
通过将上述关系模式,可以建立“评教系统”的物理数据库,以下是主要数据表结构:
根据关系模型,在SQL SERVER中建立数据表之间的关系,如所示。
数据库表间关系
视图
由于该系统的基础数据来源于教务系统,在本方案中采用视图调用方式,构建逻辑数据库结构,并从教务系统Education数据库中获得数据。具体需要构建的视图如下:
系统实现
初始化评分数据
生成评教对象表
实现学生网上评教,首先需要初始化评分对象,由于教务系统已经有数字化的教学任务书,将教学任务书转换为评价对象表,即可实现,表格 STYLEREF 1 \s 4SEQ 表格 \* ARABIC \s 1 1为教学任务书表结构:
将教学任务书(ClassID、CourseID、Term、PriTeacherID)直接导入评价对象表(stu_assess),可使用INSERT…SELCET语句实现。
某些课程,由多位教师同时任教,在教学任务书中,多位教师编号(PriTeacherID) 使用‘,’号分隔,需要生成多个评价对象,分别评分。
在SQL Server中没有提供SPLIT函数,可结合系统内置函数(SUBSTRING、CHARINDEX、LEN)编写自定义函数实现。
相关的主要代码和注释请参见TeachTask2StuAssess、insertStuAssess_x、insertStuAssess存储过程、SPLIT用户定义函数。
生成静态联结表
评分对象表(stu_assess)需要联接多表,如图 STYLEREF 1 \s 42所示,在系统运行中,多表联结、大表联接都是极耗资源的,而评分对象表(stu_assess)又是系统运行的核心表,将被系统反复调用、联结。
然而,在相对固定的时间,数据发生变动的可能性极低,在一学期之内,一个教师所上课程和对应班级是很少发生变化的,而评教都是在每学期期末进行,上述的变数均已经发生,所以在评教过程中,数据不存在任何变化,可以采用生成静态联结表的方式,避免大表的频繁联结,以提高系统运行效率。
在网上评教系统中,我们使用内嵌表值函数实现参数化视图的功能,然后通过CreateStatTable存储过程使用INSERT…FROM语句导入评分对象联结表(stu_assess_join)和评分课程汇总表(stu_group_by_course)。
系统首页设计
“网上评教系统”首页
首页提供了各类用户的登录入口,用户点击顶部的切换菜单选择自己的用户类型,通过使用JavaScript改变菜单的样式和登录表单提交的Action文件路径,切换中,页面无需重新加载,提高了用户体验。
学生评分
评分权限验证
由于学校教务已经采用网上选课,直接采用视图调用教务系统中的学生注册信息进行学生的身份验证。
获取评分课程
由评分对象表(stu_assess)可知,通过课程编号、教师编号和班级编号可唯一确定一门课程,然而学生除了在编教学班集体上课外,分级教学、体育课和任选课都是由来自不同班级的的学生临时组成教学班上课,这些课程没有班级号,教务使用分级教学任务书来保存分级教学、体育课的评分课程,并创建了学制一年的临时班级,而任选课仅仅只提供一张学生选课表(表格 STYLEREF 1 \s 42),需要将其转换为教学任务书,任选课班级和学生表。
学生选课表
相关的主要代码和注释请参见存储过程。
学生评分
学生登录后,列表显示当前学期该学生需要评分的课程,包括学生所在教学班、分级教学班和公共任选课的所有课程。
评分课程界面
点击评分,打开该课程相应的评教指标体系,点选A、B、C、D给对应的指标项打分。为了防止学生恶意评分,对于全部选A、全部选D的情况将不予提交,对于漏选的情况也都通过JavaScript对表单进行判断,给出漏选的提示。
图 43 评分指标体系
评分数据的存储
学生点击提交后,将通过UpdateAssess()函数提交评分数据:
在客户端,使用Javascript汇总各指标项得分,将最后得分插入至评分表(stu_score);评单表(stu_poll)用于存储该门评分课程的最终指标分布情况,每评完一位学生,对应指标项的选支(A、B、C、D)加一。
提交评分是一个连续的,而原子性的过程,因此,必须采用事务进行提交,以保证数据完整性。
指标体系
由于课程类型不同,因此对教师的要求也就不一样,相应的评教体系也要作出调整,为此,指标体系必须设计成可以自定义的。
如所示,顶部的工具栏菜单可以对指标体系进行增加、编辑和删除。在操作栏内可以上下调整指标项显示的顺序,点击编辑,更改指标项的描述和分值权重。
指标体系管理
评分统计
班级评分汇总
班级是评分统计是最小单元,管理人员可查看教师在某个班级的教学评价情况,以及学生参与评分的情况,包括该班级评分人数、平均分、统计标准差等。
平均分需要剔除所有学生评分的上下7%之后再平均,以消除特殊情况(学生恶意评分)对统计结果的影响,由于SQL SERVER并未提供如此特殊的聚类函数,因此需要开发自定义函数满足该需求。
顶部是搜索工具栏,管理人员可按姓名、课程名、职称、部门(学院)、课程类型、课程要求、评分学期、是否满足统计比率等条件对评分结果进行筛选。
点击查看详情,可查看该门课程的指标体系得分分布情况。
班级评分汇总
教师课程汇总
教师的最终得分是按教师所上某门课程的所有班级的平均分,只需对原班级汇总结果进行一次分类汇总即可得到。该得分是进行各种排名的依据。
存储过程updateGroupOrder用于计算教师最终的全校总排名、部门(学院)排名、课程排名和课程类型排名。
通过在搜索工具栏中选择不同的排名类型,点击搜索,可查看该门课程在不同范围内的排名。
教师课程汇总
点击评分统计,可查看评价指标按课程汇总详情,其中包括该门课程在全校,学院,课程类型和课程中的排名;全校,学院,该课程类型和该课程的平均分以;统计样本标准差、样本方差、总体标准差、总体方差;最后,是该课程的指标体系得分分布详情。
教师课程汇总详情
指标统计
指标统计可按姓名、课程、职称、学院(部门)、课程类型、课程要求分别进行汇总,得到在该搜索条件下,得分在指标体系中的分布情况。
指标统计界面
用户管理
这一部分包括教师信息管理、专家信息管理和系统人员管理,由于功能都大同小异,都是数据库的基本操作(增加、删除、编辑、查询、列表显示),因此编写通用数据库操作类来实现。
数据库操作类图
Sql类用于根据动作生成相应的Sql 语句,DB执行该Sql,并将结果返回给调用页面,最后模板输出显示。
数据库操作活动图
教师信息管理
教师信息管理可增加、编辑、删除教师登录注册信息。
教师信息管理
专家信息管理
专家信息管理可增加、编辑、删除专家登录注册信息。
专家信息管理
系统人员管理
系统人员管理可增加、编辑、删除后台人员登录注册信息。
系统人员管理
评教进度
只有学生的积极参与,网上评教才有考查的意义。为了有效监督学生的评教情况,需要时刻关注评教进度,督促尚未评教的学生上网评教。
评教进度
首先,需要统计每个学生应该评教的数目,因为即使是同班同学,因为任选课选修门数的差异也会造成评教课程数的不同,为此,使用存储过程updateStuCouseNum计算每个学生的应评教课程数,存储在学生评教课程数表(stu_couse_num)中,学生每成功评教一门课程,课程数减一,直至课程数为0,即表示该学生已完成评教。
其次,由于使用树结构来显示评教情况,需要统计每一级学生的评教进度,由于学生学号保存了学生的年级、学院、专业、班级信息,只需使用SUBSTRING()函数取学号相应的位数进行分类汇总求和。
最后,如何高效生成树结构,由于学校有500多个在读班级,再加上目录结点,树的总结点数已经上千,使用浏览器生成树局限于JavaScript的执行效率,拥有上千结点的树势必造成浏览器假死,为此,必须借助AJAX技术,每次只载入用户点击展开的那一级目录的XML,然后使用JavaScript生成该级结点。
生成评教进度树的XML文件
此外,通过顶部的“导出所有未完成评教学生”和“导出选定未完成评教学生”可将未完成评教学生名单导出为CSV格式。
权限管理
学生权限管理
只允许学生在规定的时间(学期末,课程结束以后)进行评教,因此需要设定学生评分权限。使用专业信息表(special)生成树,学生权限表(stu_right)保存勾选的结点。学生登录时,只需要验证其在班编号是否在权限树中被勾选,即可登录。同样使用了如权限管理相同的XTree树目录控件。
学生权限管理
教师权限管理
在学生完成评教,并且汇总统计完成之后,才开放教师权限,让教师登录查看自己的得分情况,同学生权限管理类似,但只精确到学院开放。
教师权限管理
数据导出
由于PHP并未提供操作XLS格式的对象,我采用‘,’号分隔的CSV格式导出数据,ADODB可直接将查询结果集通过GetArray()函数转换为hash数组,通过对数组元素进行遍例即可输出为CSV格式。
此外,由于采用的是英文列名,所以结果集输出后,列标题仍然为英文列名,不便阅读,因此需要建立了一个hash数组实现列名的转换翻译,最终结果如图。
CSV输出
特别注意的是,需要修改HTTP的header(协议头)的Content-Type才能让浏览器识别文档进行下载,对于IE和Opera,Content-Type为application/octetstream,而对于netscape,Content-Type为application/octet-stream。
CSV导出下载
结束语
通过一个多月的开发,本人深入的学习了基于PHP,SQL Server的统计分析系统的设计,通过对数据库的优化,大幅提高了系统统计效率。然而系统压力测试时,并发量仅为个位数,远远不能满足运行要求,最终,对WEB服务器进行缓存加速(APC),单台PⅢ服务器每秒并发数达到60,完全能够满足系统的运行要求。并且体会到系统作为一个有机整体,必须平衡各方面的性能,才能达到总体最优。由于前期对系统开发难度估计不足,以致于延误系统交付,为此,本人认为对工作量的估计应该在系统开发中进行动态评估,而不能在开发之前,评经验主观判断,细化工作计划。更为重要的是,要随时做好与用户的沟通,真正了解用户需求。
附录
主要存储过程代码:
网上评教系统的设计与实现.doc