您的当前位置:首页word示范文稿(未排版)

word示范文稿(未排版)

来源:小侦探旅游网
 I

网上评教系统的设计与实现 摘 要

传统的学生评教过程采用由学生填表,手工汇总统计的办法,这样造成工作量大、损耗多、时效性差的弊端。针对如何利用Web技术来解决高校评教中遇到的实际问题,本人设计并实现了基于PHP,SQL Server技术的网上评教系统,以提高评教过程的效率。本文从需求分析开始,在此基础上重点探讨了系统数据分析过程以及数据库设计过程,并就系统各项功能进行了介绍以及说明了其关键的实现方法。

关键词:评教系统;PHP;SQL Server;数据库设计

II

The Design & Implementation of Teaching Assess System on Website ABSTRACT

Owing to the traditional assessing manner for teaching process, that is students fill in some forms in which the data then is collected for summary and statistic, there are many disadvantages of massive workloads, a great deal of wastages and low efficiency. To be directed against these problems in the assessing process using the web technology, an Teaching Assess System on website based on the PHP and SQL Server is designed and implemented, for improving the efficiency. This paper emphasizes on discussing the process of data analysis and database design, taking the background of requirement analysis, and elaborates the contents and implementation of every function points.

Key Words: Teaching Assess System; PHP; SQL Server; Database Design

1

引言

“评教”即由学生对教师的教学效果进行评价,是高校教学改革深入发展的需要,也是提高教育质量的有效方法之一,目前在许多高校应用非常普遍,并作为高校教学质量评价的必要环节被纳入学校的教学管理规范,对进一步完善高校教学质量监控体系,保证教学质量有着重要的现实意义。而目前随着高校教学改革的深人和学生规模的不断扩大,传统的学生评教过程采用由学生填表,手工统计的办法,这样造成工作量大、损耗多、时效性差的弊端。针对如何利用Web技术来解决高校评教中遇到的实际问题,提高评教过程的效率,本人提出并设计了基于PHP,SQL Server技术,采用B/S架构模式的“网上评教系统”解决方案。

需求分析 现行数据分析

从评教过程来说,首先由学生填写“课堂教学评价表”,教务处在获得所有课程,所有教师的评价表后,进行汇总、计算,剔除无效数据,最终确定对每位教师的课堂教学效果的评价结果,并给出相应的报表。该过程遵循一般的IPO(Input-Process-Output)基本数据处理过程,因此在需求阶段重点对输入数据和输出数据进行分析。 输入数据分析

目前对教师课堂教学效果评价,采用以下表格中所列的指标: 表 2-1 课堂教学评价表 教师姓名 序课程名称 号 评价内容 1 2 3 4 5 6 7 8 9 作业适中、批改认真 适时安排辅导、答疑 从不擅自停课,一般不调课 教材(或讲义)适用,并指定有参考材料 教学内容充实、精要 概念准确、条理清楚 重点突出、难点分析透彻 适时与学生沟通和交流 注意培养学生分析、解决问题的能力 满分值 6 4 6 5 8 6 7 5 8 6 5 6 6 5 6 5 评价等级 A B C D 评价等级 A B C D 10 讲授生动,富有启发性,激发思维 11 恰当适用电教、CAI等教学手段 12 情绪饱满,教态良好 13 知识丰富,治学严谨 14 关心学生,严格要求 15 我学会并理解了本课程的基本内容 16 提高了我的兴趣,激发了求知欲

2

17 通过本课程教学,我感到很有收获 总计 6 100 该表有以下特点:

学生在学期期末,通过该表中所列指标,对每位任课教师进行评分评价。 一张表可以填写对多门课程教学质量的反馈意见。 通过满分值为每个评价项目给出权值。

调查表分为基础课程和专业课程两种,它们分别有不同的评价项目。 项目和项目满分值在不同学期可以进行调整。

由于存在以上的特点,从而带来一些系统设计的问题,本解决方案针对这些问题,采用以下的方法进行处理:

由于基础课和专业课的评价项目不同,因此这两类课程的评价不具备可比性,在处理这一问题时,采取的方法是一个系统,两套数据,并分别给出两套报表。 虽然一张调查表同时可以填写多门课程,但对于数据信息实体而言,实际上是一门课只对应为一个反馈意见的信息实体,因此,把一张调查表看作是多张数据表的组合。

不同学期评价的项目个数、评价项目的内容和每项的满分值有可能进行调整,A、B、C、D所代表的分值也有可能进行调整,但各项评价内容的满分值之和为100分。 输出数据分析

在获得上述由学生填写的评价表之后,经过汇总处理,需要制作出以下的一些汇总报表: 表2-2 全校教师课堂教学情况评价表

学校名称、学年、学期

课堂教学评价结果(课程类别)

序号 1 2 3 4 教师姓名 课程名称 综合得分 参评人次 本学期全校参加某类课程课堂教学评价平均分及参评人次 学校名称及主管部门 日期 该表主要是按照学年学期,对全校每位教师的课堂教学效果评价结果进行汇总统计,主要反映出综合得分和参评的人数信息。

表2-3 各院系教师课堂教学情况评价表

学校名称、学年、学期

院系名称,课堂教学评价结果(课程类别) 序号 1 2 3 4 教师姓名 课程名称 综合得分 参评人次 3

本学期全院参加某类课程课堂教学评价平均分及参评人次 本学期全校参加基础课程课堂教学评价平均分为 学校名称及主管部门 日期

该表主要是按照学年学期,对学院内的每位教师课堂教学效果评价结果进行汇总统计,主要反映出综合得分和参评的人数信息。其中最后两行数据列出学院和全校课堂教学评价平均分进行比较分析,以评价出学院整体课堂教学效果在全校所处的位置,从而发现先进和寻找差距。

表2-4 各院系教师课堂教学情况评价表

学校名称、学年、学期

教师课堂教学评价结果(课程类别) 院系名称: 教师姓名: 课程名称: 参评人数: 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

评价项目 满分值 6 4 6 5 8 6 7 5 8 6 全校 平均 您的 得分 A 占% B 占% C 占% D 占% 作业适中、批改认真 适时安排辅导、答疑 从不擅自停课,一般不调课 教材(或讲义)适用,并指定有参考材料 教学内容充实、精要 概念准确、条理清楚 重点突出、难点分析透彻 适时与学生沟通和交流 注意培养学生分析、解决问题的能力 讲授生动,富有启发性,激发思维 情绪饱满,教态良好 知识丰富,治学严谨 关心学生,严格要求 我学会并理解了本课程的基本内容 通过本课程教学,我感到很有收获 综合情况

恰当适用电教、CAI等教学手段 5 6 6 5 6 提高了我的兴趣,激发了求知欲 5 6 100

4

学校名称及主管部门

日期 表2-2、表2-3和表2-4是教师课堂教学评价系统输出的主要表格。 数据流分析

在得到并了解上述输入、输出数据之后,需要将整个数据处理过程抽象为数据流分析结果,并且通过对数据流分析,可以获知数据的逻辑处理过程。具体分析结果如下图:

教务处 教学任务书 P1 转换教学任务书 D3 评价方案 学生 评分 P2 教学评分 D1 评分标准 D2 评分记录 教师 教师个人评价结果 P3 统计评价结果 汇总评价结果

图 2-1 “网上评教系统”数据流图 整个评教过程中,首先教务处应将已经存在于教务系统中的教务任务书进行适当转换,生成适合评教的评价方案,然后学生对本学期上课的教师按照评分标准进行教学评分,并记录所有的评分结果。在获得所有评分结果后,教师可以查看属于自己的个人评分统计结果,而教务处可以获得汇总的评价结果。 数据模型分析

评教数据最终需要持久化,记录到数据库系统中,为此,需要专门对数据库进行分析设计。首先,给出系统数据库的概念模型,即绘制实体关系图(E-R模型)。通过对上述的数据分析结果进一步分析,得出初步ER模型如下图:

5

在班学号 学生 教师编号 N 课程编号 评分课程 选项 评单 N 班级编号 学生姓名 指标编号 班级编号 N 指标体系 指标描述 权重分值 图 2-2 原评分模型(ER模型)

以上是最初设计的评分模型,但是,该模型用于统计分析时存在以下几个问题: 数据量大

每学期,评单表需要存储的数据条数可由以下公式得出:

班级班级人数评分课程数指标项数

粗略估计,我校每学期约生成100万条纪录,这对于统计分析来说,数据量是极其庞大的。 事务统计

首先数据量庞大必然造成汇总运算慢,而汇总慢的本质原因就是从事务进行统计,统计层次低。

为此,在具体实现该系统的时候,改进了该评分模型,将评单表一分为二: 评分表用于存储一门评分课程每位学生的评分;评单表用于存储一门评分课程的最终指标分布情况。

由于对数据进行预处理,提高统计层次,并将统计运算分散在评分的过程中,实现时间负载均衡,提高了统计效率,最终模型如图:

6

分数 N 评分 教师编号 M 评分课程 M 班级编号 评单项 学生 在班学号 班级编号 学生姓名 课程编号 指标编号 N 指标体系 指标描述 选项 图 2-3 评分模型(ER模型)

权重分值 7

系统实现 功能模块设计

对数据流进行分析,可以看出系统主要包括的功能是:评价方案的输入和修改、评分标准的输入和修改、评单的输入与查询修改、数据汇总、查询和打印等功能。具体的功能模块可以用下图表示:

课堂教学质量评价系统系统注册确定评价方案确定评分标准评单处理数据汇总统计查询打印退出系统评单输入修改评单项输入修改评单查询全校排队情况院系排队情况个人反馈情况添加评单复制评单撤销输入保存纪录删除纪录实施查询清除查询条件 图 3-1 “评教系统”功能模块图 数据库设计 关系模式

通过对数据库概念模型,即实体联系模型分析,按照转换规则,将上述ER模型转换为关系模型(即关系模式),并进行规范化检验。主要的转换和检验结果如下:

主评单(评单号,课堂编号,教师姓名,课程名称,院名,年级,班级,是否有效,班号) 评单项(评单号,评价序号,选项,选项符号)

评价方案(评价类别,评价序号,评价内容,A,B,C,D,权重) 评分标准(选项,评分)

注:带下划线的属性为关系的主属性(即关键字)。 物理数据库表

通过将上述关系模式,可以建立“评教系统”的物理数据库,以下是主要数据表结构: 表 错误!文档中没有指定样式的文字。-1师信息表(TeacherInfo)

主键 √

列名 te_id te_username te_password te_truename te_department te_title te_birth te_native te_IdentifyID 数据类型 长度 varchar varchar varchar varchar varchar varchar datetime varchar varchar 8

允许空 0 1 1 1 1 1 1 1 1 描述 教师编号 登录用户名 密码 姓名 学院 职称 出生日期 民族 身份证号 7 16 36 16 20 16 8 36 18 主键 √ 主键 √ 主键 √ 主键 √ 主键 √

te_code chr 列名 ma_id ma_type ma_kind ma_score ma_order 列名 as_id as_co_id as_te_id as_cl_id as_term 列名 id as_id ma_id A B C D 列名 id as_id sn score 列名 as_id as_co_id as_te_id as_cl_id as_term marked score stat_stdev stat_stdevp Course varchar varchar 12 1 1 1 允许空 0 1 0 1 1 允许空 0 0 0 0 0 允许空 0 0 0 0 0 0 0 允许空 0 0 0 0 允许空 0 0 0 0 0 1 1 1 1 0 注册验证码 姓氏拼音 备注 指标编号 指标类型编号 指标描述 指标分值权重 排序 备注 评分编号 课程编号 教师编号 班级编号 评分学期 备注 评分编号 指标编号 A求和汇总 B求和汇总 C求和汇总 D求和汇总 备注 评分编号 学号 分数 备注 评分编号 课程编号 教师编号 班级编号 评分学期 评分人数 分数 样本标准差 总体标准差 课程名称 表 错误!文档中没有指定样式的文字。-2 评分指标体系表(Mark)

数据类型 长度 smallint int char smallint smallint 2 4 50 2 2 表 错误!文档中没有指定样式的文字。-3 评分对象表(stu_assess)

数据类型 长度 int varchar varchar varchar varchar 4 10 7 12 6 表 错误!文档中没有指定样式的文字。-4 评单表(stu_poll)

数据类型 长度 int int smallint tinyint tinyint tinyint tinyint 4 4 2 1 1 1 1 表 错误!文档中没有指定样式的文字。-1 评分表(stu_score) 数据类型 长度 int int varchar tinyint 4 4 14 1 表 错误!文档中没有指定样式的文字。-2 评分对象联结表(stu_assess_join) 数据类型 长度 int varchar varchar varchar varchar tinyint numeric numeric numeric varchar 9

4 10 7 12 6 1 9 9 9 48 主键 √ CourseRequire CourseType CourseMarkType te_truename te_department te_title Class StudentNum order_id 列名 as_id as_co_id as_te_id as_term marked score stat_stdev stat_stdevp Course CourseRequire CourseType CourseMarkType te_truename te_department te_title iAll iCourse iCourseType iDepartment order_id varchar varchar tinyint varchar varchar varchar varchar int bigint 16 16 1 16 20 16 36 4 8 0 0 1 1 1 1 0 1 1 允许空 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 课程要求 课程类型 评价指标 教师姓名 所属学院 职称 班级名称 学生人数 排序号 备注 评分编号 课程编号 教师编号 评分学期 评分人数 分数 样本标准差 总体标准差 课程名称 课程要求 课程类型 评价指标 教师姓名 所属学院 职称 全校排名 课程排名 课程类型排名 学院排名 排序号 表 错误!文档中没有指定样式的文字。-3 评分课程汇总表(stu_group_by_course)

数据类型 长度 int varchar varchar varchar tinyint numeric numeric numeric varchar varchar varchar tinyint varchar varchar varchar int int int int bigint 4 10 7 6 1 9 9 9 48 16 16 1 16 20 16 4 4 4 4 8 根据关系模型,在SQL SERVER中建立数据表之间的关系,如图3-2所示。

10

图 错误!文档中没有指定样式的文字。-2 数据库表间关系 视图

由于该系统的基础数据来源于教务系统,在本方案中采用视图调用方式,构建逻辑数据库结构,并从教务系统Education数据库中获得数据。具体需要构建的视图如下: 表 错误!文档中没有指定样式的文字。-4 学院(部门)视图(Department) 主键 √ 主键 √

列名 DepartmentID Department ShortName 列名 StudentID ClassCode Name Sex Birth Nationality Political EduType Classify Source Native 数据类型 长度 varchar varchar varchar 6 36 24 允许空 0 0 0 允许空 0 0 0 0 0 0 0 0 0 0 0 备注 学院编号 学院名称 简称 备注 学号 班级号 姓名 性别 出生日期 民族 政治面貌 生源 籍贯 表 错误!文档中没有指定样式的文字。-5 学生信息表(StudentInfo)

数据类型 长度 varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar 11

14 14 8 2 16 16 16 8 8 36 36 主键 √ 主键 √

Class EducationLen DiplomaNo DegreeNo StudyFlag PunishFlag IDCard 列名 ClassID Class Department Specialty EducationLen StudentNum 列名 CourseID Course CourseRequire CourseType CheckType CourseMarkType CreditHour Period Term EnglishName Memo varchar int varchar varchar varchar varchar varchar 36 4 36 36 20 16 18 0 0 0 0 0 0 0 允许空 0 0 0 0 0 0 允许空 0 0 0 0 0 1 0 0 0 1 1 班级 备注 班级编号 班级名称 学院 专业 班级人数 备注 课程编号 课程名称 课程要求 课程类型 考查类型 评价指标 学分 学期 英文名称 备注 表 错误!文档中没有指定样式的文字。-6 班级信息表(ClassInfo) 数据类型 长度 varchar varchar varchar varchar int int 12 36 36 36 4 4 表 错误!文档中没有指定样式的文字。-7 课程信息表(Course) 数据类型 长度 varchar varchar varchar varchar varchar tinyint float float varchar varchar varchar 10 48 16 16 8 1 8 8 8 100 100 12

系统实现

初始化评分数据 生成评教对象表

实现学生网上评教,首先需要初始化评分对象,由于教务系统已经有数字化的教学任务书,将教学任务书转换为评价对象表,即可实现,表格 错误!文档中没有指定样式的文字。-8为教学任务书表结构:

表 错误!文档中没有指定样式的文字。-1 教学任务书表(TeachTask)错误!未找到引用源。 将教学任务书(ClassID、CourseID、Term、PriTeacherID)直接导入评价对象表(stu_assess),可使用INSERT…SELCET语句实现。 某些课程,由多位教师同时任教,在教学任务书中,多位教师编号(PriTeacherID) 使用‘,’号分隔,需要生成多个评价对象,分别评分。 在SQL Server中没有提供SPLIT函数,可结合系统内置函数(SUBSTRING、CHARINDEX、LEN)编写自定义函数实现。

相关的主要代码和注释请参见TeachTask2StuAssess、insertStuAssess_x、insertStuAssess存储过程、SPLIT用户定义函数。 生成静态联结表

评分对象表(stu_assess)需要联接多表,如图 错误!文档中没有指定样式的文字。-2所示,在系统运行中,多表联结、大表联接都是极耗资源的,而评分对象表(stu_assess)又是系统运行的核心表,将被系统反复调用、联结。

然而,在相对固定的时间,数据发生变动的可能性极低,在一学期之内,一个教师所上课程和对应班级是很少发生变化的,而评教都是在每学期期末进行,上述的变数均已经发生,所以在评教过程中,数据不存在任何变化,可以采用生成静态联结表的方式,避免大表的频繁联结,以提高系统运行效率。 在网上评教系统中,我们使用内嵌表值函数实现参数化视图的功能,然后通过CreateStatTable存储过程使用INSERT…FROM语句导入评分对象联结表(stu_assess_join)和评分课程汇总表(stu_group_by_course)。 系统首页设计

图 错误!文档中没有指定样式的文字。-1 “网上评教系统”首页

13

首页提供了各类用户的登录入口,用户点击顶部的切换菜单选择自己的用户类型,通过使用JavaScript改变菜单的样式和登录表单提交的Action文件路径,切换中,页面无需重新加载,提高了用户体验。 学生评分 评分权限验证

由于学校教务已经采用网上选课,直接采用视图调用教务系统中的学生注册信息进行学生的身份验证。 获取评分课程

由评分对象表(stu_assess)可知,通过课程编号、教师编号和班级编号可唯一确定一门课程,然而学生除了在编教学班集体上课外,分级教学、体育课和任选课都是由来自不同班级的的学生临时组成教学班上课,这些课程没有班级号,教务使用分级教学任务书来保存分级教学、体育课的评分课程,并创建了学制一年的临时班级,而任选课仅仅只提供一张学生选课表(表格 错误!文档中没有指定样式的文字。-2),需要将其转换为教学任务书,任选课班级和学生表。

表 错误!文档中没有指定样式的文字。-2 学生选课表错误!未找到引用源。相关的主要代码和注释请参见存储过程。 学生评分

学生登录后,列表显示当前学期该学生需要评分的课程,包括学生所在教学班、分级教学班和公共任选课的所有课程。

图 错误!文档中没有指定样式的文字。-2 评分课程界面

点击评分,打开该课程相应的评教指标体系,点选A、B、C、D给对应的指标项打分。为了防止学生恶意评分,对于全部选A、全部选D的情况将不予提交,对于漏选的情况也都通过JavaScript对表单进行判断,给出漏选的提示。

14

图 错误!文档中没有指定样式的文字。-3 评分指标体系 评分数据的存储

学生点击提交后,将通过UpdateAssess()函数提交评分数据:

在客户端,使用Javascript汇总各指标项得分,将最后得分插入至评分表(stu_score);评单表(stu_poll)用于存储该门评分课程的最终指标分布情况,每评完一位学生,对应指标项的选支(A、B、C、D)加一。

提交评分是一个连续的,而原子性的过程,因此,必须采用事务进行提交,以保证数据完整性。 指标体系

由于课程类型不同,因此对教师的要求也就不一样,相应的评教体系也要作出调整,为此,指标体系必须设计成可以自定义的。

如图表 错误!文档中没有指定样式的文字。-4所示,顶部的工具栏菜单可以对指标体系进行增加、编辑和删除。在操作栏内可以上下调整指标项显示的顺序,点击编辑,更改指标项的描述和分值权重。

15

图 错误!文档中没有指定样式的文字。-4 指标体系管理 评分统计 班级评分汇总

班级是评分统计是最小单元,管理人员可查看教师在某个班级的教学评价情况,以及学生参与评分的情况,包括该班级评分人数、平均分、统计标准差等。

平均分需要剔除所有学生评分的上下7%之后再平均,以消除特殊情况(学生恶意评分)对统计结果的影响,由于SQL SERVER并未提供如此特殊的聚类函数,因此需要开发自定义函数满足该需求。

顶部是搜索工具栏,管理人员可按姓名、课程名、职称、部门(学院)、课程类型、课程要求、评分学期、是否满足统计比率等条件对评分结果进行筛选。 点击查看详情,可查看该门课程的指标体系得分分布情况。

图 错误!文档中没有指定样式的文字。-5 班级评分汇总

16

教师课程汇总

教师的最终得分是按教师所上某门课程的所有班级的平均分,只需对原班级汇总结果进行一次分类汇总即可得到。该得分是进行各种排名的依据。

存储过程updateGroupOrder用于计算教师最终的全校总排名、部门(学院)排名、课程排名和课程类型排名。

通过在搜索工具栏中选择不同的排名类型,点击搜索,可查看该门课程在不同范围内的排名。

图 错误!文档中没有指定样式的文字。-6 教师课程汇总

点击评分统计,可查看评价指标按课程汇总详情,其中包括该门课程在全校,学院,课程类型和课程中的排名;全校,学院,该课程类型和该课程的平均分以;统计样本标准差、样本方差、总体标准差、总体方差;最后,是该课程的指标体系得分分布详情。

17

图 错误!文档中没有指定样式的文字。-7 教师课程汇总详情 指标统计

指标统计可按姓名、课程、职称、学院(部门)、课程类型、课程要求分别进行汇总,得到在该搜索条件下,得分在指标体系中的分布情况。

图 错误!文档中没有指定样式的文字。-8 指标统计界面 用户管理

这一部分包括教师信息管理、专家信息管理和系统人员管理,由于功能都大同小异,都是数据库的基本操作(增加、删除、编辑、查询、列表显示),因此编写通用数据库操作类来实现。

图 错误!文档中没有指定样式的文字。-9 数据库操作类图

Sql类用于根据动作生成相应的Sql 语句,DB执行该Sql,并将结果返回给调用页面,最后模板输出显示。

18

图 错误!文档中没有指定样式的文字。-10 数据库操作活动图 教师信息管理

教师信息管理可增加、编辑、删除教师登录注册信息。

图 4-11 教师信息管理 专家信息管理

专家信息管理可增加、编辑、删除专家登录注册信息。

19

图 4-12 专家信息管理 系统人员管理

系统人员管理可增加、编辑、删除后台人员登录注册信息。

图 4-13 系统人员管理 评教进度

只有学生的积极参与,网上评教才有考查的意义。为了有效监督学生的评教情况,需要时刻关注评教进度,督促尚未评教的学生上网评教。

20

图 4-14 评教进度

首先,需要统计每个学生应该评教的数目,因为即使是同班同学,因为任选课选修门数的差异也会造成评教课程数的不同,为此,使用存储过程updateStuCouseNum计算每个学生的应评教课程数,存储在学生评教课程数表(stu_couse_num)中,学生每成功评教一门课程,课程数减一,直至课程数为0,即表示该学生已完成评教。

其次,由于使用树结构来显示评教情况,需要统计每一级学生的评教进度,由于学生学号保存了学生的年级、学院、专业、班级信息,只需使用SUBSTRING()函数取学号相应的位数进行分类汇总求和。

最后,如何高效生成树结构,由于学校有500多个在读班级,再加上目录结点,树的总结点数已经上千,使用浏览器生成树局限于JavaScript的执行效率,拥有上千结点的树势必造成浏览器假死,为此,必须借助AJAX技术,每次只载入用户点击展开的那一级目录的XML,然后使用JavaScript生成该级结点。

图4-15 生成评教进度树的XML文件

此外,通过顶部的“导出所有未完成评教学生”和“导出选定未完成评教学生”可将未完成评教学生名单导出为CSV格式。 权限管理 学生权限管理

只允许学生在规定的时间(学期末,课程结束以后)进行评教,因此需要设定学生评分权限。

21

使用专业信息表(special)生成树,学生权限表(stu_right)保存勾选的结点。学生登录时,只需要验证其在班编号是否在权限树中被勾选,即可登录。同样使用了如权限管理相同的XTree树目录控件。

图 4-16学生权限管理 教师权限管理

在学生完成评教,并且汇总统计完成之后,才开放教师权限,让教师登录查看自己的得分情况,同学生权限管理类似,但只精确到学院开放。

图 4-17 教师权限管理 数据导出

由于PHP并未提供操作XLS格式的对象,我采用‘,’号分隔的CSV格式导出数据,ADODB可直接将查询结果集通过GetArray()函数转换为hash数组,通过对数组元素进行遍例即可输出为CSV格式。

22

此外,由于采用的是英文列名,所以结果集输出后,列标题仍然为英文列名,不便阅读,因此需要建立了一个hash数组实现列名的转换翻译,最终结果如图。

图 错误!文档中没有指定样式的文字。-18 CSV输出

特别注意的是,需要修改HTTP的header(协议头)的Content-Type才能让浏览器识别文档进行下载,对于IE和Opera,Content-Type为application/octetstream,而对于netscape,Content-Type为application/octet-stream。

图 4-19 CSV导出下载

结束语

通过一个多月的开发,本人深入的学习了基于PHP,SQL Server的统计分析系统的设计,通过对数据库的优化,大幅提高了系统统计效率。然而系统压力测试时,并发量仅为个位数,

23

远远不能满足运行要求,最终,对WEB服务器进行缓存加速(APC),单台PⅢ服务器每秒并发数达到60,完全能够满足系统的运行要求。并且体会到系统作为一个有机整体,必须平衡各方面的性能,才能达到总体最优。由于前期对系统开发难度估计不足,以致于延误系统交付,为此,本人认为对工作量的估计应该在系统开发中进行动态评估,而不能在开发之前,评经验主观判断,细化工作计划。更为重要的是,要随时做好与用户的沟通,真正了解用户需求。

24

谢辞

在即将结束的四年大学生活之际,我首先感谢华东交通大学,特别我的指导老师——李山。从他身上我学到了许多宝贵的知识和做人的道理。他在学业上对我的悉心指导,以及孜孜不倦、严谨细致的科研态度,更令我受益非浅。在毕业设计阶段,教务处的郑晓芳老师、徐平生老师、吴林锋老师又给予了我大量的帮助,是他们给了我一个学习锻炼的机会,感谢他们给予我的信任。感谢各位专家和评委耐心审阅我的论文,他们提出了许多宝贵的意见和建议。感谢所有曾经给我理解、关心与帮助的朋友们。

25

参考文献

(美) Blake Schwendiman著;杨洪涛,黄晶,张震宇译. PHP4应用开发指南[M]. 北京:清华大学出版社,2002.

(美)Jesus Castagnetto等著;薛忠胜等译. PHP 高级编程[M]. 北京:机械工业出版社,2001.1. (美)DejanSunderic,(美)TomWoodhead著;熊桂喜等译. SQL Server 2000高级编程技术[M]. 北京:清华大学出版社,2002.2.

姚东等编著. DHTML 动态网页高级编程[M]. 北京:人民邮电出版社,2000.2.

(美) Don Gosselin著;马雷,李宝东,李雄成译. 全面理解JavaScript[M]. 北京:清华大学出版社,2002.4.

(美)Paul McFedries著;欧阳宇,张治坤等译. JavaScript开发使用手册[M]. 北京:机械工业出版社,2002.1.

(美) Dan Livingston著;战晓苏译. CSS与DHTML精髓[M]. 北京:清华大学出版社,2003.7. 黄梯云.《管理信息系统》[S].北京:高等教育出版社,2002.

薛风英,任永奎. 学生网上评教的研究与实践[J]. 东北财经大学学报,2005.4 .

李旭荣,张光明. 高等学校学生评教利弊分析及扬长避短的措施 [J]. 石油教育,2004.2. 胡天春. 学生评教的现状与对策 [J]. 经济师,2004.3.

杨湘清,胡耀荣,杨健康. 学生评教与高等教育质量保障[J]. 高等理科教育,2003.6. 安世全,关媛媛. “学生评教”的研究与思考 [J]. 大学教育科学,2003.1. 冷革华. 对学生评教若干问题的思考 [J ]. 昆明理工大学学报,2004.1, 第4卷.

李建芬,饶国军. 高校学生评教的有效性及改进措施[J ]. 教育理论与实践,2004.10. 曹梦霞,龚方红. 网上学生评教的尝试及学生评教的意义[J ]. 理工高教研究,2003.5. 刘丹平,姜晓平. 学生评教信息的分析研究[J ]. 河南大学学报(哲学社会科学版),2003.2. 钟元生,刘小华. 一种学分制条件下网上学生评教的无偏处理模型[J]. 网络教育与远程教育,2005.5.

甘仕夫. 关于教学量化评估法及其应用. 广西经济管理干部学院学报,2003.1. 王灿明. 美国高等教育扩张时期的学生评价研究[J]. 高等教育研究,2001.4.

26

附录

主要存储过程代码: TeachTask2StuAssess 教学任务书导入评分对象表 CREATE PROCEDURE TeachTask2StuAssess @term nvarchar(6) AS DECLARE @pre varchar(12) BEGIN TRANSACTION IF EXISTS(SELECT COUNT(1) FROM stu_assess WHERE as_term = @term) DELETE FROM stu_assess WHERE as_term = @term EXEC insertStuAssess @term DECLARE iCursor CURSOR FOR SELECT pre FROM table_pre OPEN iCursor FETCH NEXT FROM iCursor INTO @pre WHILE @@FETCH_STATUS = 0 BEGIN EXEC insertStuAssess_x @term, @pre FETCH NEXT FROM iCursor INTO @pre END CLOSE iCursor DEALLOCATE iCursor COMMIT updateGroupScore 汇总评分 CREATE PROCEDURE updateGroupScore @term nvarchar(6) AS

27

IF EXISTS(SELECT 1 FROM dbo.sysobjects WHERE name = 'stu_group_by_course' AND type = 'U') BEGIN UPDATE stu_group_by_course SET score = f.score,stat_stdev = f.stat_stdev,stat_stdevp = f.stat_stdevp FROM stu_group_by_course a INNER JOIN ( SELECT b.as_te_id, b.as_co_id, b.as_term, b.score, t .stat_stdev, t .stat_stdevp FROM (-- 平均分 SELECT as_te_id, as_co_id, as_term, CAST(AVG(dbo.stu_assess_join.score) AS numeric(18, 2)) AS score FROM stu_assess_join WHERE score > 0 AND as_term = @term GROUP BY as_te_id, as_co_id, as_term ) b LEFT JOIN (-- 统计函数 SELECT as_te_id, as_co_id, as_term, STDEV(s.score) AS stat_stdev, STDEVP(s.score) AS stat_stdevp FROM stu_assess_join AS a INNER JOIN stu_score AS s ON a.as_id = s.as_id WHERE (marked * 100)/StudentNum >= ( SELECT TOP 1 fulfil FROM config ) AND as_term = @term GROUP BY as_te_id, as_co_id, as_term ) t ON b.as_te_id = t.as_te_id AND b.as_co_id = t.as_co_id AND b.as_term = t.as_term ) f ON a.as_te_id = f.as_te_id AND a.as_co_id = f.as_co_id AND a.as_term = f.as_term END updateGroupOrder 统计全校、按课程、按课程类型、所在学院排名 CREATE PROCEDURE updateGroupOrder @term nvarchar(6)

28

AS IF EXISTS(SELECT 1 FROM dbo.sysobjects WHERE name = 'stu_group_by_course' AND type = 'U') BEGIN UPDATE stu_group_by_course SET iAll = --全校总排名 (SELECT COUNT(1) + 1 FROM stu_group_by_course WHERE score > s.score AND as_term = @term), iCourse = --按课程排名 (SELECT COUNT(1) + 1 FROM stu_group_by_course WHERE score > s.score AND as_term = @term AND Course = s.Course), iCourseType = --按课程类型排名 (SELECT COUNT(1) + 1 FROM stu_group_by_course WHERE score > s.score AND as_term = @term AND CourseType = s.CourseType), iDepartment = --按学院(部门)排名 (SELECT COUNT(1) + 1 FROM stu_group_by_course WHERE score > s.score AND as_term = @term AND te_department = s.te_department) FROM stu_group_by_course AS s WHERE score > 0 END createStuCourseNum 统计学生评教课程数 CREATE PROCEDURE createStuCourseNum @term nvarchar(6)

29

AS BEGIN TRANSACTION SELECT s.StudentID, s.ClassID, a.CourseNum, a.Term INTO #ClassCourseNum FROM ( --分级教学 SELECT StudentID, ClassID FROM FJStudent UNION --选修课程 SELECT StudentID, ClassID FROM XXStudent UNION --教学班 SELECT StudentID, SUBSTRING(ClassCode, 1, 12) AS ClassID FROM StudentInfo) s INNER JOIN ( --班级评分课程数量 SELECT as_cl_id, COUNT(1) AS CourseNum,as_term AS Term FROM stu_assess_join WHERE as_term = @term GROUP BY as_cl_id,as_term) a ON s.ClassID = a.as_cl_id DROP TABLE stu_course_num --学生评分课程数量 SELECT s.StudentID, SUBSTRING(s.ClassCode,1,12) AS ClassID, c.CourseNum INTO stu_course_num FROM dbo.StudentInfo s INNER JOIN (SELECT StudentID, SUM(CourseNum) AS CourseNum FROM #ClassCourseNum GROUP BY StudentID) c ON s.StudentID = c.StudentID DROP TABLE #ClassCourseNum COMMIT SPLIT 分隔函数 CREATE FUNCTION SPLIT( @SourceSql varchar(8000),

30

@StrSeprate varchar(10) ) RETURNS @temp table(a varchar(100)) BEGIN DECLARE @i int SET @SourceSql=RTRIM(LTRIM(@SourceSql)) SET @i=CHARINDEX(@StrSeprate, @SourceSql) WHILE @i>=1 BEGIN INSERT @temp VALUES(left(@SourceSql, @i - 1)) SET @SourceSql = SUBSTRING(@SourceSql, @i + 1, LEN(@SourceSql) - @i) SET @i = CHARINDEX(@StrSeprate, @SourceSql) END IF @SourceSql <> '\\' INSERT @temp VALUES(@SourceSql) RETURN END STU_AVG 计算平均分(剔除上下7%) CREATE FUNCTION STU_AVG(@id int) RETURNS int AS BEGIN DECLARE @avg int SELECT @avg = AVG(score) FROM (SELECT TOP 92.47 PERCENT score FROM stu_score WHERE (score IN (SELECT TOP 93 PERCENT score FROM stu_score WHERE as_id = @id ORDER BY score)) AND as_id = @id ORDER BY score DESC) T RETURN @avg END

31

因篇幅问题不能全部显示,请点此查看更多更全内容