您好,欢迎来到划驼旅游。
搜索
您的当前位置:首页在线考试系统论文

在线考试系统论文

来源:划驼旅游


本科毕业论文(设计)

题 目: 在线考试系统 学 院: 专 业: 姓 名: XXX 指导教师: XXX

2015年 5 月 10 日

摘要

随着计算机网络的迅猛发展和教育改革的不断深入,教育方式正在发生巨大改变。远程教育以其全新的教学理念和教学手段被人所接受,在线考试便是其中之一。其作用在于减轻教师的工作负担及提高工作效率,使考试更加公正、便捷、环保。本文主要阐述了一个基于ASP.NET技术、使用SQL Server 2008数据库平台,以C#作为开发语言的在线考试系统的设计与开发过程。本系统实现了三种权限的信息管理,研究了考试题目生成算法、考试的安全性以及系统模式的选择等。

关键字:在线考试,ASP.NET,组卷算法

Abstract

With the rapid development of computer network and the continuous deepening of the reform of education, education way is undergoing tremendous changes.Distance education, with its brand-new teaching idea and teaching method accepted by people, online examination is one of them.The effect is to reduce teachers' workload and improve work efficiency, is more just, convenient, environmental protection test.This article mainly expounds the one based on ASP.NET technology, the use of SQL Server 2008 database platform, c# as development language online examination system design and development process.This system realized the powers of the three kinds of information management, studies the security examination topic generation algorithm, and the system pattern choice, etc.

Key Words:The online exam,ASP, Group of roll algorithm

目录

1. 绪论........................................................................ 1

1.1 开发背景 ............................................................... 1 1.2 国内外研究现状 ......................................................... 1 1.3 研究内容与研究意义 ..................................................... 2

1.3.1 研究内容.......................................................... 2 1.3.2 研究意义.......................................................... 2 1.4 开发环境和开发技术介绍 ................................................. 3

1.4.1 开发环境.......................................................... 3 1.4.2 系统框架.......................................................... 3 1.5 本文的组织结构 ......................................................... 4 2. 可行性研究.................................................................. 5

2.1 可行性研究分析 ......................................................... 5

2.1.1 技术可行性........................................................ 5 2.1.2 经济可行性........................................................ 5 2.1.3 运行可行性........................................................ 5

3. 系统方案研究与设计.......................................................... 6

3.1 需求描述 ............................................................... 6

3.1.1 用户要求.......................................................... 6 3.1.2 软件特点.......................................................... 6 3.1.3 功能需求.......................................................... 7 3.2 需求分析 ............................................................... 7 3.3 设计目标 ............................................................... 8 4. 系统总体设计概述............................................................ 9

4.1 功能分析 ............................................................... 9 4.2 总体设计 ............................................................... 9 4.3 数据库设计 ............................................................ 10

4.3.1 数据库表......................................................... 10 4.3.2 数据库表设计..................................................... 11 4.3.3 网页设计......................................................... 18

5. 系统主要算法实现........................................................... 22

5.1 试卷生成算法 .......................................................... 22 5.2 试卷评分算法 .......................................................... 25 5.3 测试用题库随机生成 .................................................... 26 6. 实例实验与分析............................................................. 29

6.1 系统测试 .............................................................. 29

6.1.1 测试目的......................................................... 29 6.1.2 测试方法......................................................... 29 6.1.3 系统测试......................................................... 29 6.2 系统分析 .............................................................. 31 7. 结束语..................................................................... 32

7.1 全文总结 .............................................................. 32 7.2 前景展望 .............................................................. 32 参考文献...................................................................... 34

1. 绪论

1.1 开发背景

一个社会要想持续发展,就离不开具备高技术、高素质的人才。传统的老师教授、学生学习的获得知识的方式,在科学技术的发展日新月异,尤其是信息技术更是呈指数形态不断发展的大环境下,已经不能满足现代社会需要快速获得技能和知识的要求。不断的学习最新知识和技能,就是高素质的人才当前所要做的。考试作为教育中的一个重要环节, 是检验所学的重要途径。教育的改革在不断推行,考试的改革也势在必行。

传统考试包括老师收集试卷题目信息、设计试卷结构和内容、改评试卷、计算试卷成绩或者分数、为学生分析和讲评试卷,学校相关部门安排考试时间和考场、打印试卷、安排监考人员,等等一系列的繁琐工作。这个漫长而繁杂的过程,既不环保又浪费人力财力,已经不能适应如今的教学需要。

在线考试相较传统考试,它的突破点是无纸化,也突破了时空的,是考试更加的方便、快捷、环保。这种使用科技对考试的改变,对现代教育有很重要的意义。对于老师来说,这是将其从传统考试中繁琐复杂的工作中解救出来,这也避免了老师因主观的评判,对试卷的判断产生误差,从而影响考试的公平性。对于学生来说,再也不用担心考试中用的文具没带齐或者损坏了,也可以比传统考试更快的知道自己的成绩。对于学校的管理人员来说,教学与考试的分离,考务工作的自动化管理,能节省大量的人力、物力。节省下来的资源又能为学校的科研、教学以及管理,提供更好的服务,充分的形成良性循环。

本课题主要开发如下功能,包括:角色信息管理(管理员、教师、学生的个人信息及考试信息)、学生在线考试(具体功能有计时、考题、答案、评分、提交等)、题库管理(包括单选题、多选题、判断题、简答题的题目与答案等)、试题管理(不同年级、学科试题不同)、成绩管理(成绩查询、导出)等。它是多种功能的集合体,而不仅仅只有在线考试的能力。本系统一旦实现,将有相当大的实用价值应用在各种学习机构中。

1.2 国内外研究现状

多项调查结果表明,网络化的考试已成为全球考试的主流发展方向。目前好多的技术类

1

的认证考试,比如GRE、斯克认证和国内的驾照理论考试都采用在线考试的方式。这些考试平台的开发主要采用Visual Basic,Microsoft Visual C++ 6.0,Java,VS等开发工具,对数据库的访问多采用Oracle、SQL server 、Access、MySQL等。

开发在线考试系统可以采用客户端服务器形式,也可采用互联网访问的形式。基于互联网形式的技术有:(1)ASP,它在微软公司所开发的操作系统上使用,传统的ASP技术很依赖脚本编程语言,效率不是很高。但它与SQL server数据库结合使用能达到很不错的开发体验。之后诞生的.NET去除了以前ASP的各种弊端,结合多种开发技术的优点,也更适用于互联网,这也是本系统所使用的技术。(2)JSP,其开发语言是java语言,所用开发软件一般是Eclipse(3)PHP,是一种动态的网页脚本语言,各种能制作网页的软件都可以作为其开发平台。

综上所述,在线考试系统要有静态网页显示考试内容。还要运用JavaScript、ASP.NET等基本原理,作为创建动态Web页面而提供的技术,从而满足交互和动态效果。

1.3 研究内容与研究意义

1.3.1 研究内容

本课题要研究和设计一个无纸化的在线考试系统。它将实现从数据库建立、自动组卷,考试、自动评分到成绩分析的全部功能。其研究的主要内容有:

(1)网页的设计。

(2)考试试题的抽题组合、生成。 (3)评分原则的合理性。

(4)事件驱动方式开发的应用程序的研究。

首先要做的是数据库设计。数据库是否合理关乎整个程序的合理性。之后是网页的设计,尽量要简洁的将内容展现给用户,还要容易上手操作。作为考试系统,试题是其主要的内容。试题库的设计要合理,试题的各项属性要全面,比如难易程度、试题的类型(单选、多选等)、考试的类型(考试、测验)等等,以满足大量的用户来进行各式各样的考试。

1.3.2 研究意义

开发在线考试系统的意义在于:

1.将教师从传统考试中繁琐复杂的工作中解救出来,这也避免了老师因主观的评判,对试卷的判断产生误差,从而影响考试的公平性。

2.对于学生来说,再也不用担心考试中用的文具没带齐或者损坏了,也可以比传统考试更

2

快的知道自己的成绩。

3.对于学校的管理人员来说,教学与考试的分离,考务工作的自动化管理,能节省大量的人力、物力。节省下来的资源又能为学校的科研、教学以及管理,提供更好的服务,充分的形成良性循环。

1.4 开发环境和开发技术介绍

1.4.1 开发环境

本系统是基于ASP.NET的在线考试系统,采用了Microsoft Visual Studio 2010 作为开发工具,SQL Server 2008最为后台数据库管理工具,C#语言作为开发语言,使用ASP.NET进行WEB应用程序开发,并采用B/S模式和多层结构设计思路结合的系统构架,效率高,安全性好,代码与设计分开,有利于程序开发和维护。以下是在线考试系统的开发、服务器、客户端所需要的环境

1.开发环境

 开发系统:Windows 操作系统。

 开发工具:Microsoft Visual Studio 2010。  数据库:SQL Server 2008。  开发语言:ASP.NET和C#。

2.服务器

 操作系统:Windows 操作系统。  Web服务器:Internet信息服务管理器.  数据库:SQL Server2008。  浏览器:IE 浏览器/QQ 浏览器

3.客户端

 操作系统:Windows 操作系统。  浏览器:IE 浏览器/QQ 浏览器

1.4.2 系统框架 1.三层开发架构

ASP.NET三层开发架构,在开发的过程中,能使整个开发结构清晰,适合多人开发的分

3

工协调,以及的软件拓展、维护。包含三项:(1)数据数据访问层(Data Access Layer):。(2)业务逻辑层(Bussiness Logic layer)。 (3)表示层(User Show Layer):。

三层架构结构示意图如下图1-1:

图1-1三层架构结构示意图

1.5 本文的组织结构

本文主要阐述了基于ASP.NET的考试系统在开发实现过程中的大致流程以及用到的主要技术进行详细的介绍。本文的组织结构如下:

1、绪论。简要说明了本课题的背景及意义、国内外的研究现状、研究的内容、意义和技术。

2、系统的可行性研究分析,分别从技术、经济和运行三方面来研究。

3、系统方案研究与设计介绍。介绍了软件的需求、系统开发方案和系统设计的一些内容。 4、系统总体设计概述。介绍了本文开发系统的总体结构以及数据设计。

5、系统主要算法实现。介绍了系统中使用的算法,包括试卷生成算法、试卷评分算法、考试断线处理。

6、实例实验与分析。对系统的测试进行记录并对测试结果进行分析。

7、结束语。总结与展望,总结本次开发的心得、遇到的难题、创新性的结论,以及存在的不足。

8、致谢。对母校,对导师等对毕业设计有帮助的人表示感谢。最后附上参考书目。

4

2. 可行性研究

2.1 可行性研究分析

本在线考试系统在可行性研究阶段中,在技术、经济、运行三方面来研究其可行性。

2.1.1 技术可行性

本系统是在windows 操作系统上,以Microsoft Visual Studio 2010和SQL Server2008作为工具,基于ASP.NET、C#语言所开发的系统,并在浏览器和网络中运行实现本系统的使用。

通过这些技术的有机的结合可以设计出本系统,并且能够实现其必要的功能和性能。

2.1.2 经济可行性

本系统是在硬件条件中为一台电脑,软件为同电脑机器上的Microsoft Visual Studio 2010和SQL Server2008所开发的,因此费用支出较少。

本系统是用于学校以及培训机构的在线考试系统,在考试测验方面可以适量的减少人员支出,从而提高了效益。

2.1.3 运行可行性

本系统在网络中利用各种浏览器为用户提供相关服务,系统界面清晰、简洁,操作简便,而且符合大多数人的操作习惯。

5

3. 系统方案研究与设计

3.1 需求描述

3.1.1 用户要求

本系统的用户主要是学校的管理人员、教师和学生,由于他们使用系统的目的有所不同,所以他们对系统的要求也不相同。具体特点如下:

1. 对于普通教师来说,他们主要是利用本系统对学生的考试成绩进行管理和评分,所以要求软件界面友好,操作简单,只要经过简单的培训后,就可上手操作。

2. 对于学校的管理人员,他们主要利用系统进行学生、教师以及试题的管理工作,他们不仅要求软件操作简单,还要求软件具有较强的数据处理能力和数据安全性。因此,在对软件设计时,要考虑到对软件的数据处理能力和安全性的设计。

3、对于学校学生来说,他们主要利用本系统进行在线的考试和测试,以及查询成绩信息。因此,在对软件设计时,要考虑到考试的严谨性和安全性的设计。

4、要求页面美观,操作清晰。

3.1.2 软件特点

该系统开发所遵循的原则有: 1、实用性和先进性

系统设计要符合实际中的使用逻辑,能符合学校等使用者中的各种角色的使用规则。为了保证系统的效率、其存储能力以及维护扩展的方便,代码的设计要有统一编码规则,逻辑要清晰。

2、整体性和可靠性

本系统作为整个学校或者其他机构的一个基本的系统,系统开发应做好总体设计。数据信息要统一,应该具备恢复的能力和一定的容错能力。

3、安全性和保密性

系统安全性很重要,考试的一些信息是一种严格的需要保密的信息,防止数据被破解、丢失、乱码等等,是本系统必须做到的。

6

4、易使用和易维护

操作要易上手,不同的用户能根据各自的界面,快速的掌握使用方法。因为开发者不一定会作为以后的系统维护者,所以,为了维护的方便,要求后台的代码结构要清晰,要有必要的注释。

3.1.3 功能需求

根据业务逻辑来分析其需求:

学生管理:建立学校的学生数据库,并根据该数据库对学生进行跟踪。数据库记录相关学生信息,主要包括学生的姓名、年龄、所属年级\\班级、入学时间和出生年月等资料的管理。在考试系统做为最基本的对象起重要作用。

教师管理:建立学校的教师数据库,并根据该数据库对教师进行跟踪。数据库记录相关教师信息,主要包括教师的姓名、年龄、所属年级、所属专业、学历和出生年月资料的管理。

试题管理:建立学校各专业和年级的单选题、多选题、简答题和判断题四种题型的试题库,以供试卷生成时使用。

试卷管理:可以按年级、专业、知识点、难度以及试卷的用途生成试卷。

成绩管理:学生考试完成后,教师可以对学生答题的简答题进行主观评分;管理员可以对考试成绩进行管理、导出等。

其它管理:密码修改、系统配置、年级/班级管理、专业管理等其它方面的管理。

3.2 需求分析

根据不同的使用角色来分析其需求:

系统管理员:系统配置、年级/班级管理、专业管理、试题管理、试卷管理等信息处理。 学生用户:在线考试、在线测试和成绩查询等。 教师用户:成绩管理和成绩评分。

根据以上描述,描述系统边界及整体功能的系统用例图如下图3-1所示:

7

图3-1 系统用例图

3.3 设计目标

经过仔细分析,本系统实现的主要目标如下:

(1)数据库信息的批量导入和导出。设计选择题、多选题、判断题和简答题四种题型的批量导入;设计学生信息和教师信息的批量导入;设计考试成绩的批量导出供成绩分析使用。

(2)考试过程中的安全性设计,当客户端学生考试过程中出现断线、死机情况时考试内容可以自动保存,以供恢复。

8

4. 系统总体设计概述

4.1 功能分析

本系统是基于ASP.NET的在线考试系统,以Microsoft Visual Studio 2010为主要的开发工具,以C#语言为开发语言,结合SQL 2008数据库管理系统与windows操作系统,同时使用SQL Server 数据库访问技术进行数据库的操作。

根据需求分析中列出的本系统的基本模块,设计了如下图所示的在线考试系统总体结构示意图如下图4-1:

图4-1系统总体结构图

4.2 总体设计

在线考试系统按使用角色的来赋予其不同的功能,前台使用者包括学生与教师,后台使用者是管理员。

前台中学生的功能主要有注册、密码修改、在线考试、在线练习和成绩查,看这五个功能;

教师的功能有成绩管理,还可以导出成绩。

后台管理主要实现对用户信息和试题信息的增删改查。

9

系统流程图,如图4-2:

系统流程图,4-2

4.3 数据库设计

4.3.1 数据库表

本系统在所需要的数据库中,共有20个数据库表,表的名字和要存储的内容如表4-1

表4-1

序号 1 2 3 4

数据库表 tb_admin tb_teacher tb_student tb_notice

10

存储内容 管理员信息表 教师信息表 学生信息表 公告信息表

4-1续表 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

tb_class tb_config tb_chapter tb_paper tb_Result tb_Subject tb_stuPaper tb_Paper_detaile tb_t_xzt tb_t_xzt_temp tb_t_dxt tb_t_dxt_temp tb_t_pdt tb_t_pdt_temp tb_t_jdt tb_t_jdt_temp 年级信息表 分数信息表 章节信息表 试题信息表 成绩信息表 科目信息表 学生试卷表 试卷详细信息表 单选题信息表 单选题信息表 多选题临时表 多选题临时表 判断题信息表 判断题临时表 简答题信息表 简答题临时表 4.3.2 数据库表设计

表4-2 后台管理人员信息表(tb_admin)

列名 id userame userpwd realname

数据类型 int varchar(50) varchar(30) varchar(50) 说明 编号 用户名(账号) 密码 姓名(角色) 11

表4-3 教师(前台角色)信息表(tb_teacher)

列名 id username userpwd realname classid sex birth education remark Subjectid 表4-4 学生信息表(tb_student)

列名 id username userpwd realname classid sex birth address AdmissionDate remark

12

数据类型 int varchar(40) varchar(30) varchar(20) int Char(2) smalldatetime varchar(20) varchar(100) int 说明 编号 用户名 密码 姓名 年级 性别 生日 学历 备注 科目 数据类型 int varchar(40) varchar(20) varchar(30) int Char(2) smalldatetime varchar(100) smalldatetime varchar(100) 说明 编号 用户名 密码 姓名 年级编号 性别 生日 地址 入学的日期 备注 表4-5公告信息表(tb_notice) 列名 id title body createdate 数据类型 int varchar(300) varchar(5000) smalldatetime 说明 编号 标题 内容 添加的日期 表4-6 年级信息表(tb_class) 列名 id classname parentid

表4-7 分数信息表(tb_config) 列名 xztscore dxtscore jdtscore pdtscore 表4-8章节信息表(tb_chapter) 列名 id subjectid classid name

表4-9试卷信息表(tb_paper) 数据类型 int varchar(50) int 说明 编号 年级 班级对应年级的编号 数据类型 int int int int 说明 单选题分数 多选题分数 简答题分数 判断题分数 数据类型 int int varchar(50) varchar(50) 说明 编号 科目 年级 章节名 列名 ID

数据类型 int 说明 编号 13

4-9续表 papername subjectid classid levelID testlevel createdate updatedate exposureid discription varchar(100) int int int int smalldatetime smalldatetime int nvarchar(500) 试卷名称 科目 年级 难度等级编号 类型编号 生成日期 更新日期 曝光度等级编号 备注 表4-10 成绩信息表(tb_Result) 列名 ID UserID paperid t_Result XZt jdt pdt dxt testdate teaid state 表4-11 科目信息表(tb_Subject) 列名 id Subjectname 数据类型 int varchar(50) 说明 编号 科目名称 数据类型 int int int int int int int int smalldatetime int int 说明 编号 学生编号 试卷编号 总分数 单选题分数 简答题分数 判断题分数 多选题分数 测试日期 评分教师编号 试卷状态 14

表4-12 学生试卷表(tb_stuPaper) 列名 ID UserID paperID testID resultid Type num stuanswer Score teaid 数据类型 int int int int int int int varchar(5000) char(50) int 说明 编号 学生编号 试卷编号 测试编号 正确答案编号 考试类型 难度等级编号 学生所填答案 分数 教师编号 表4-13 试卷详细信息表(tb_Paper_detaile) 列名 ID paperid testID Type num 表4-14 单选题信息表(tb_t_xzt) 列名 ID XZtName levelid A B 数据类型 int varchar(1000) int varchar(1000) varchar(1000) 15

数据类型 int int int int int 说明 编号 试卷编号 测试编号 考试类型 难度等级编号 说明 编号 题目内容 难度等级编号 选项内容 选项内容 4-14续表 C D Answer IfIsuse Score chapterid testlevel lastusedate varchar(1000) varchar(1000) int int int int int smalldatetime 选项内容 选项内容 正确答案编号 是否发布 分值 章节 类型 最后使用日期 表4-15 单选题临时表(tb_t_xzt_temp) 列名 id tid score 表4-16 多选题信息表(tb_t_dxt) 列名 ID XZtName chapterid A B C D Answer Score levelid 数据类型 int varchar(1000) int varchar(1000) varchar(1000) varchar(1000) varchar(1000) varchar(1000) int int 说明 编号 试题内容 章节 选项内容 选项内容 选项内容 选项内容 正确答案编号 分数 难度等级编号 16

数据类型 int int int 说明 编号 试题编号 分值 4-16续表

testlevel IfIsuse lastusedate

int int smalldatetime 类型 是否使用 最后使用日期 表4-17 多选题临时表(tb_t_dxt_temp) 列名 id tid score 数据类型 int int int 说明 难度等级编号 类型 是否使用 表4-18判断题信息表(tb_t_pdt) 列名 ID XZtName chapterid Answer Score levelid testlevel IfIsuse lastusedate 数据类型 int varchar(1000) int int int int int int smalldatetime 说明 编号 试题内容 章节 正确答案 分数 难度等级编号 类型 是否使用 最后使用日期

表4-19判断题临时表(tb_t_pdt_temp) 列名 id tid score

17

数据类型 int int int 说明 难度等级编号 类型 是否使用 表4-20简答题信息表(tb_t_jdt) 列名 ID XZtName chapterid Answer Score levelid testlevel IfIsuse lastusedate 数据类型 int varchar(1000) int varchar(1000) int int int int smalldatetime 说明 编号 试题内容 章节 正确答案 分数 难度等级编号 类型 是否使用 最后使用日期

表4-21简答题临时表(tb_t_jdt_temp) 列名 id tid score

数据类型 int int int 说明 难度等级编号 类型 是否使用 4.3.3 网页设计

由于本系统有大量的网页,这里只展示登陆页与后台管理员操作页的界面和逻辑实现代码。

(1)登陆页展示:

18

实现代码:

public partial class login : System.Web.UI.Page {

UserAction ucObj = new UserAction();//与角色相关的数据库操作类,实例化 sysFunction ccObj = new sysFunction();//系统使用的全局功能类,实例化 protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack) {

Session.RemoveAll();

Random rnd = new Random(); //生成验证码

this.Label3.Text = rnd.Next(1000, 9999).ToString(); } }

protected void imbtnLogin_Click(object sender, ImageClickEventArgs e) {//登录

if (tbYZ.Text != Label3.Text)//验证验证码是否正确 {

Response.Write(ccObj.MessageBoxPage(\"验证码错?误!\")); } else {

String roleId = \"\"; //确定进入的角色,学生登录 if (ddlRole.SelectedItem.Value.ToString() == \"Student\") {

roleId=\"2\"; }else if (ddlRole.SelectedItem.Value.ToString() == \"Teacher\")//教师登录 {roleId=\"1\";

}else if (ddlRole.SelectedItem.Value.ToString() == \"Admin\")//管理员登录 {roleId=\"0\"; }

DataTable dsTable = ucObj.GetUserLogin(tbUsername.Text.Trim(), tbPassword.Text.Trim(), roleId); //从数据库取到登录用户的ID if (dsTable!= null) {

Session[\"username\"] = dsTable.Rows[0][0].ToString();

Session[\"userid\"] = Convert.ToInt32(dsTable.Rows[0][1].ToString()); Session[\"roleid\"] = roleId;

Response.Redirect(\"Default2.aspx\"); } else {

tbPassword.Text = \"\"; tbUsername.Text = \"\"; Random rnd = new Random();

19

this.Label3.Text = rnd.Next(1000, 9999).ToString(); tbYZ.Text = \"\";

Response.Write(ccObj.MessageBoxPage(\"您的登录有误,请核对后再重新登录!\"));

} } }

protected void imbtnRegister_Click(object sender, ImageClickEventArgs e) {//注册

Response.Redirect(\"Reg.aspx\");//转到注册页面 } }

(2)管理员操作后台展示:

实现代码:

public partial class left_menu : System.Web.UI.Page {

sysFunction ccObj = new sysFunction(); SqlAction dbObj = new SqlAction(); UserAction ucObj = new UserAction();

PaperTestAction ptObj = new PaperTestAction();

20

protected void Page_Load(object sender, EventArgs e) {

if (Session[\"userid\"] == null && ccObj.Getsysdebug() == false) {

Response.Write(\"\"); } else {

// string userName = Convert.ToString(Session[\"username\"]); string roleId = Convert.ToString(Session[\"roleid\"]); if (roleId == \"0\") // {

sunitems1_1.Visible = true;// sunitems2_1.Visible = true; // sunitems3_1.Visible = false;// sunitems4_1.Visible=true; // sunitems5_1.Visible = false; // }

if (roleId == \"1\") // {

sunitems1_1.Visible = false;// sunitems2_1.Visible = false; // sunitems3_1.Visible = false;// sunitems4_1.Visible=false; // sunitems5_1.Visible=true; // };

if (roleId == \"2\") // {

sunitems1_1.Visible = false;// sunitems2_1.Visible = false; // sunitems3_1.Visible = true;// sunitems4_1.Visible = false; // sunitems5_1.Visible = false; // }; } } }

以下是获取用户的相关信息

管理员显示 系统设置 试题管理 在线考试 成绩管理 成绩管理 教师显示 系统设置 试题管理 在线考试 成绩管理 成绩管理 学生显示 系统设置 试题管理 在线考试 成绩管理 成绩管理 2 1

5. 系统主要算法实现

5.1 试卷生成算法

1、试卷生成的基本原则

任何事情都必须遵循基本原则才能达到最佳效果。对于目标参照性测验,试卷的基本原则主要体现在:

(1)出题时要表达清晰,不能产生歧义,影响考生发挥。 (2)试卷要遵循教学大纲的内容宽广度和深度。

试卷内容要紧密的贴合所要考察的知识范围,要使用符合学校等的教学计划之中的内容。既要有基本的知识考察,以考察学生的基本功,又要有一定的试题能扩展学生的视野,培养学生解决疑难的能力。

(3)试卷要有积极的促进作用。

要注意不同类型的不同功能,试卷生成时,从多方面考虑,选择最佳组合结构。不仅可以考察学生的掌握度,又能对学生有一定的智力提升有帮助。

(4)试卷要有难度和专业。

试卷要有合理的难度,太难或者太简单都会降低考试的区分度,失去了考试的原本意义。难度的设置要有梯度,简单题占大多数,中等题少量,高难度占极小的一部分。这种设置才能让大部分的学生接受,而且不影响优生的展示其高能力。

2、试卷生成的基本步骤

试卷生成的基本步骤,在线考试系统的组卷分为以下五个步骤,如图5-1:

(1)确定考试中要考察的知识的范围。只有这一点明确了,才能基本的达到考试的目的。 (2)确定试卷包含的试题类型。

(3)试卷题目的数量。在一定的考试时间内,应该设置合理数量的题目。 (4)确定试卷的难度。

22

试卷生成开始 确定章节范围 确定试卷题型 根据系统配置确定各题型的数量 试卷难度和试卷专业 组卷结束

图5-1 组卷步骤

3、组卷的约束条件

为了能按照使用者的意愿来组合出合适的试卷,需要在生成试卷之前,添加一定的约束条件。通常情况下,约束的类型有:

(1)考试中涉及到的知识的范围。只有这一点明确了,才能基本的达到考试的目的。 (2)试卷题目的数量。在一定的考试时间内,应该设置合理数量的题目。

(3)试卷中考查的难易程度。控制好一张试卷的难易程度,才能符合这次考试的本意,最终了解到学生对测试知识的掌握程度。

(4)试卷中题目的类型。一般试卷题型不外乎单项选题、多项选题、填空题和问答题等等。但是,每种题型所能考查到知识的广度、深度大大不同,因此在题型的设置中需要慎重。

5、以判断题为例,展示抽取试题到组成试卷的方法:

//获取试卷判断题个数

public int Getpdtnum(int IntPaperID) {

string strSql = \"SELECT count(ID) from tb_paper_detaile where type=4 and paperID=\" + IntPaperID;

SqlCommand myCmd = dbObj.GetCommandStr(strSql);

DataTable dsTable = dbObj.GetDataSetStr(strSql, \"tbBI\");

23

int temp;

if (dsTable != null && dsTable.Rows.Count > 0) {

temp = Convert.ToInt32(dsTable.Rows[0][0].ToString()); } else {

temp = 0; }

return temp; }

//获取判断题答案

public string GetpdtAnswer(int intanswer) {

string answer = \"\";

if (intanswer == 1) answer = \"正确; if (intanswer == 0) answer = \"错误\"; return answer; }

//根据条件获取判断题

public string Crpdttest(int intpapertotalscore, string strchapterid, int intlevelid, int inttestlevel, int intexposere, int intselectnumb) {

SqlCommand myCmd = dbObj.GetCommandProc(\"Proc_Crpdttest\"); //添加参数

SqlParameter papertotalscore = new SqlParameter(\"@papertotalscore\SqlDbType.Int, 4); SqlParameter chapterid = new SqlParameter(\"@chapterid\ SqlParameter levelid = new SqlParameter(\"@levelid\ SqlParameter testlevel = new SqlParameter(\"@testlevel\ SqlParameter exposere = new SqlParameter(\"@exposere\ //查询最优化次数

SqlParameter selectnumb = new SqlParameter(\"@selectnumb\ papertotalscore.Value = intpapertotalscore; chapterid.Value = strchapterid; levelid.Value = intlevelid; testlevel.Value = inttestlevel; exposere.Value = intexposere; selectnumb.Value = intselectnumb; myCmd.Parameters.Add(papertotalscore); myCmd.Parameters.Add(chapterid); myCmd.Parameters.Add(levelid); myCmd.Parameters.Add(testlevel);

24

myCmd.Parameters.Add(exposere); myCmd.Parameters.Add(selectnumb); string temp;

temp = dbObj.ExecScalar(myCmd).ToString();

if (temp != \"\") { temp = temp; } else { temp = \"0\"; } return temp; } }

5.2 试卷评分算法

由于本系统将试题分为4种题型,其中有主观题需要教师手工评分,因此在批改学生分数时分三部分来进行。试卷中,每个题都有唯一的ID来对应一个分值。这个分值可以在生成试卷前提前设置,学生在答题后,系统将其选择的答案与正确答案进行对比,这个对比是通过答案对应的ID来进行识别,然后计算该学生的成绩。

其代码如下:

Hashtable ht_XZRightAnswer, ht_XZStuAnswer, ht_WXRightAnswer, ht_WXStuAnswer, ht_YDRightAnswer, ht_YDStuAnswer;

ht_XZRightAnswer = (Hashtable)Session[\"XZRightAnswer\"]; ht_XZStuAnswer = (Hashtable)Session[\"XZStuAnswer\"]; int XZScore = 0;

for (int i = 1; i <= 70; i++) {

if (ht_XZStuAnswer.Contains(i.ToString()) && ht_XZRightAnswer.Contains(i.ToString())) if(ht_XZStuAnswer[i.ToString()].ToString().Equals (ht_XZRightAnswer[i.ToString()].ToString())) {

XZScore = XZScore + 1; } }

多选题和判断题的判分方法与选择题的方法类似。当得到这三种题型的成绩后,将其相加得出结果,在老师将主观题打分后,最后相加得到总成绩。主观题评分算法:

//简答题如果有选择答案,将答案信息插入数据库 for (int i = 1; i <= jdtnumb; i++) {

TextBox jdttext;//获取学生选择的值

jdttext = (TextBox)Panel4.FindControl(\"jdt_ans\" + i.ToString()); if (jdttext != null) jdtans = jdttext.Text.ToString(); //获取对应的试题ID TextBox xztidlist;

25

xztidlist = (TextBox)Panel4.FindControl(\"txt_jdt\" + i.ToString()); if (xztidlist != null) xztid = xztidlist.Text.ToString(); if (jdtans != null && jdtans != \"\") {

//先查找此题是否已经保存过,如果保存过就更新,没保存过就添加

string strSqlkk = \"select * from tb_stupaper where userid='\" + userid + \"' and paperid='\" + paperid + \"' and testid='\" + xztid.ToString() + \"' and resultid='\" + resultid.ToString() + \"' and type='3' and num='\" + i.ToString() + \"'\"; DataTable dsTablekk = dbObj.GetDataSetStr(strSqlkk, \"tbBI\"); if (dsTablekk.Rows.Count > 0) {//更新总成绩

string strSqlmm = \"update tb_stupaper \"; strSqlmm += \"set stuanswer='\" + jdtans + \"'\";

strSqlmm += \"where userid='\" + userid + \"' and paperid='\" + paperid + \"' and testid='\" + xztid.ToString() + \"' and resultid='\" + resultid.ToString() + \"' and type='3' and num='\" + i.ToString() + \"'\";

SqlCommand myCmdmm = dbObj.GetCommandStr(strSqlmm); dbObj.ExecNonQuery(myCmdmm); } else

{//插入数据库中

//获取对应试题的分值

string strSql = \"Select score from tb_t_jdt where ID=\" + xztid; SqlCommand myCmdscroe = dbObj.GetCommandStr(strSql); string score_t = dbObj.ExecScalar(myCmdscroe).ToString(); //将答案插入学生试卷表数据库中 string strAddSql1 = \"Insert into

tb_stupaper(userid,paperid,testid,resultid,type,num,stuanswer,score,teaid)\";

strAddSql1 += \"values ('\" + userid + \"','\" + paperid + \"','\" + xztid.ToString() + \"','\" + resultid.ToString() + \"','3','\" + i.ToString() + \"','\" + jdtans + \"','\" + score_t + \"','0')\";

SqlCommand myCmd1 = dbObj.GetCommandStr(strAddSql1); dbObj.ExecNonQuery(myCmd1); } } }

5.3 测试用题库随机生成

在编程阶段,有些功能的检验、测试,需要大量的数据来支持。本系统在测试试卷生成、在线考试等功能时,需要大量的试题来支撑测试。因此,设计本算法,可随机生成1000道主观题等四种题型。

26

每个题的题目,以及答案等,由随机的大小写字母和数字产生的随机数来构成。虽然对实际使用没有任何意义,但是为本系统的测试提供了便利。其代码如下:

(1)这里只列举其中一个的按钮事件:

protected void dxt_Click(object sender, EventArgs e) {

for (int i = 1; i < 1000; i++) {

System.Threading.Thread.Sleep(20);

string strxztname = Randomstr().ToString(); Random ObjRandom = new Random();

int intchapterid = Convert.ToInt32(ObjRandom.Next(1, 103));

if (intchapterid == 6 || intchapterid == 4 || intchapterid == 5 || intchapterid == 3) intchapterid = 22;

string stra = Randomstra().ToString(); string strb = Randomstrb().ToString(); string strc = Randomstrc().ToString(); string strd = Randomstrd().ToString(); string stranswer = Randomabcd().ToString(); Random ObjRandom1 = new Random();

int intscore = Convert.ToInt32(ObjRandom1.Next(5, 11)); Random ObjRandom2 = new Random();

int intlevelid = Convert.ToInt32(ObjRandom2.Next(1, 4)); Random ObjRandom3 = new Random();

int inttestlevel = Convert.ToInt32(ObjRandom3.Next(1, 3)); Random ObjRandom4 = new Random();

int blifisuse = Convert.ToInt32(ObjRandom4.Next(2)); //将信息插入数据库中

string strAddSql = \"Insert into

tb_t_dxt(xztname,chapterid,A,B,C,D,answer,score,levelid,testlevel,ifisuse)\";

strAddSql += \"values ('\" + strxztname + \"','\" + intchapterid + \"','\" + stra + \"','\" + strb + \"','\" + strc + \"','\" + strd + \"','\" + stranswer + \"','\" + intscore + \"','\" + intlevelid + \"','\" + inttestlevel + \"','\" + blifisuse + \"')\";

SqlCommand myCmd = dbObj.GetCommandStr(strAddSql); dbObj.ExecNonQuery(myCmd); }

Response.Write(ccObj.MessageBox(\"添加成功!\")); }

(2)这里只列举题干的随机生成(答案的生成与其类似):

public string Randomstr() {

var chars =

\"abcdefghijklmnopqrstuvwxyz12345670ABCDEFGHIJKLMNOPQRSTUVWXYZ\".ToCharArray();

27

var password = string.Empty; var random = new Random();

for (var i = 0; i < random.Next(10,30); i++) {

var x = random.Next(1, chars.Length);

if (!password.Contains(chars.GetValue(x).ToString())) {

password += chars.GetValue(x); } else { i--; } }

return password; }

2 8

6. 实例实验与分析

6.1 系统测试

系统测试对于软件的开发,是非常重要的。不仅能发现程序中可能会存在的BUG,也能为开发提供很多灵感,从而使程序或者软件更加的完善。

系统测试的目标是:

(1)测试是目标在于发现错误。

(2)找到对程序影响微妙的BUG,虽然其目前影响很小,但对之后的拓展影响很大。 (3)找到不完善之处,不断的修正,使程序更加完善。

6.1.1 测试目的

程序测试的工作是在编程结束,准备使用之前。一是为了检验编程的成果,二是为软件投入使用之前的可行性进行评估。

程序测试,就是为了发现问题。因为在程序投入使用之后,其所处的环境并非是开发之初所设想的,因此会产生各种意想不到的,莫名其妙的错误。所以在使用之前尽量的改正错误,对使用是很有利的。

6.1.2 测试方法

程序测试有很多专业的软件来做这些工作,比如QTP、Mercury等。也有相应的人员来测试软件,比如软件测试工程师。具体的测试方法分为白、黑盒两大类。

6.1.3 系统测试

本系统在开发过程中,测试是伴随着开发一起进行的。每完成一处关键的功能,或者相对的模块都会测试一下。

以下列举一些测试用例: 用例编号 测试标题 测试输入 操作步骤 TEST-001 测试用户登陆时,系统根据数据库中存有角色的反应情况 用户名:admin 密码:19920715 输入以上信息后,点击“确定”按钮 29

预期结果 用例编号 测试标题 测试输入 操作步骤 预期结果

根据后台角色跳转到管理员界面 TEST -002 测试用户登陆时,系统根据数据库中存有角色的反应情况 用户名:studentX 密码:123 输入以上信息后,点击“确定”按钮 根据后台角色跳转到用户界面 用例编号 测试标题 测试输入 操作步骤 预期结果

TEST -003 测试用户登陆时,系统根据数据库中存有角色的反应情况 用户名:teacherU 密码:123456 输入以上信息后,点击“确定”按钮 根据后台角色跳转到用户界面 用例编号 测试标题 测试输入 操作步骤 预期结果

TEST - 004 测试用户按年级选择组件时,系统根据数据库中存有组件的反应情况 无 选择年级分类下拉框 按照年级类别显示不同类别组件 用例编号 测试标题 测试输入 操作步骤 TEST - 005 测试用户根据条件生成需要的试卷 试卷相关属性 选择试卷的相关属性,然后点击生成 30

预期结果

按照需求生成试卷 用例编号 测试标题 测试输入 操作步骤 预期结果

TEST -006 测试用户在线考试 学生用户登录后选择可以考试的科目 根据考试页面内容答题 学生交卷后自动评分并保存 6.2 系统分析

由于开发者的知识面有限,造成该系统也有许多地方不尽完美,因而也有许多改进的地方。

(1)系统安全性还需改进。

(2)系统的可移植性不高,需要改进。因为本系统要调用Microsoft Visual Studio 2010中自带的编译器,所以需要服务器安装Microsoft Visual Studio 2010。而且每台服务器中该软件的安装目录不同,其中必须调用有绝对路径的文件。因为每台服务器软件安装目录不一样,这样造成系统的可移植性不高。开发者是根据本校的具体环境而开发,但毕竟造成了该系统可移植性的降低,这是需要改进的地方。

(3)系统界面不够美观,需要改进。因为开发者不具备专业的美工知识,所以设计的界面不是特别美观,这也是系统需要改进的地方。

以下几点是本系统的可取之处: (1)软件的正常运行、关闭。 (2)运行流畅,点击以后响应很快。 (3)整体的网页风格简约,极具视觉享受。 (4)不同用户看到的界面不同,分工明确。 (5)数据安全,易于管理。

(6)有大量的提示语与操作警告弹窗,帮助用户使用系统。 (7)软件对操作系统有很好的兼容性。

31

7. 结束语

7.1 全文总结

本系统是在线考试系统设计与实现,设计初期对软件项目管理的相关技术的调研工作,使我从对在线考试系统了解甚少,到能选定工具进行系统编写,最后完成系统编写,在这个过程中,使我对系统设计与实现的技术支持、开发方法、开发过程有了一定的了解,并自行设计和制作了在线考试系统设计与实现系统,基本完成了既定任务。本文提出了一个基于ASP.NET的考试系统的理论模型及相关的解决方案。 本系统运用C#语言在Visual Studio 2010的运行环境下完成,采用B/S结构,主要适用于各高校中的局域网中。

在本次的毕业设计中,通过阅读大量的书籍,上网下载程序所需要的代码及询问老师与同学,使本人学习到了有关C#的知识和SQL Server 2008数据库的知识。学会了怎样编写用户所需的程序文件。

对于本次的毕业设计,用户所需的基本功能已经实现,能够完成老师对试题的输入与导出、对试题模板的编写和对成绩的查询与导出,能够完成考生考试的过程,老师对整个考试过程的监控。但还是存在许多问题,如:试题的类型较少,没有较复杂的题型设计和程序改错题设计,选择题也是单项选择题;分配座次时,只是简单的按学号和座位编号相对应的分配;在考生考试时,有剩余时间显示,但没有剩余5分钟时的时间提示;

总体说来,毕业设计的过程,让我充分的感受到了编程的魅力。整个开发的过程对我来说是一次能力真正提高的过程,也是将以前所学知识充分利用的过程,更是一次将理论应用于实践的过程。对毕业以后从事与专业相关等方面的工作,充满了期待,也更加的有信心能做好。

7.2 前景展望

在线考试系统设计与实现是复杂而有潜力的管理系统,目前在线考试设计与实现的框架基本搭建成功,对以后的需求扩展有很大的延伸性。需要有更好的提高,使这些模块都能完全融入到该系统中去使用户更加方便快捷的使用在线考试。目前该系统只能满足学校内的广大师生们使用,希望能够有更大的提高可以让全中国的高校师生都可以加入到这个平台。此外界面不够美观还需要进一步的改进。在线考试设计与实现将会有更多的用户。由于用户的需要是各种各样的希望读者可以提出宝贵的意见以改进该系统。希望你的宝贵意见可以让在

32

线考试设计与实现更加的完善。在此表示深深的谢意。

致谢

光阴似箭,时光悄然在指尖流失,转眼间四年的大学生活即将结束,在这四年里,我学到很多东西,也让我在慢慢的成长。记得刚来大学时,并不知道本专业是干什么的,也没有多大的兴趣,是老师的不辞辛苦的讲解,同学对我的解答,让我慢慢的对这个专业产生了兴趣,也让我对编程有了很高的兴趣。在这里,我要感谢学院的老师,是他们让我对这个专业产生了兴趣,让我学到了一技之长,并教会了我怎么做人;感谢和我朝夕相处的同学们,是你们的认真热情,带动了我的兴趣,让我的大学生活充满了乐趣和欢笑。

在此,我要特别感谢我的毕业设计指导老师高冬梅老师,因为实习的原因,大多时间是与老师进行的是邮件和电话交流,但每次交流的过程中,老师都及时的提醒我毕业设计的进程,以及毕业设计中出现的一些问题,并给我提出了很好的修改建议。在每次的演示毕业设计程序的时候,都能指出我的程序中的不足,以及提出一些很有帮助的建议。同时高老师严谨的学风、渊博的学识、丰富的经验、和善的风度,都将是我永远学习的楷模。

毕业设计已经完成,论文也写到了尾声,在这整个过程中让我学到了很多的东西。从最开始对系统的模糊,到熟悉,再到具体的实现,让我从中学会了对资料的查询,学会了不懂就问的习惯。通过毕业设计,让我了解了到了一个完整的系统的开发过程的辛苦以及一个严谨的态度,让我不断完善自己的一个态度和作风。毕业设计这段时间是我人生当中一笔宝贵的财富,这里,我想再次感谢帮助过我的老师们和同学们,谢谢!

最后,感谢所有对我学业中帮助过我的人!日后若有建树,定回报社会,造福人类。

33

参考文献

[1] 高冬梅编著.SQL Server 2008数据库程序设计.北京:机械工业出版社,2009.6 [2]田 更编著.ASP.NET程序设计案例教程.北京:清华大学出版社,2011.10 [3]田 更编著.基于.NET的储蓄设计综合实训教程.北京:中国铁道出版社,2010 [4]耿祥义等编著.XML程序设计.北京:清华大学出版社,2009.10

[5]韦良芬等编著.C语言程序设计经典案例教程.北京:北京大学出版社,2010.6 [6]周鸿玲.基于Web的考试系统组卷策略研究[D].吉林;东北师范大学,2009.

[7]方大良.在线考试系统组卷策略分析[J].电脑知识与技术,2008,4(9);2629-2630. [8]胡星. 网上考试系统题库与组卷技术的设计与实现[D].北京;北京工业大学,2004. [9]Karli Watson Christian Nagel 等.C#入门经典(第3版). 2006年 北京 清华大学出版社 [10](美)内格尔,(美)埃夫琴等著,李铭译.C#高级编程(第7版).2010年 北京 清华大学出版社;93-95

[11]邵维忠.面向对象的系统设计[M]. 2004年 北京 清华大学出版社;201-203

[12](美)Krzysztof Cwalina,Brad Abrams等.NET设计规范[M]. 2006年 北京 人民邮电出版社;203-204

[13]陈宗兴,杜国梁.ASP.NET网络系统程序开发[M].北京:中国水利水电出版社,2002;151-155 [14]金小璞,罗庆云,徐芳.基于ASP.NET 技术的在线考试系统[J].福建电脑,2005年第10期;13-14

[15] 廖彬山,高峰霞.Web数据库开发技术[M].北京:电子工业出版社,2003;53-55 [16] 郑阿奇.SQL Server实用教程[M].北京:电子工业出版社,2002 [17] 郝刚.ASP.NET 2.0开发指南[M].北京:人民邮电出版社,2002

[18]曹 斌,韩中孝.ASP.NET数据库系统项目开发实践[M].北京:科学出版社,2003 [19] 丁宝康,董健全.数据库实用教程[M].北京:清华大学出版社,2003

[20] 李晓黎.ASP+SQL Server网络应用系统开发指南.北京:人民邮电出版社,2004 [21] 武延军.精通ASP网络编程[M].北京:人民邮电出版社,2000

34

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

Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务