论文关键词:asp;sql;系统设计
论文摘要:通过对中职学校传统考试过程的需求分析,采用asp技术结合access数据库与sql查询语言,开发设计了一套简单的在线考试系统,应用于某中职学校的计算机学科的平时测验。重点介绍了该系统的系统分析、功能设计、数据库设计和系统实现等。
应用activeserverpage技术,开发了基于brower/webserver模式多用户在线考试系统这一程序。现阶段虽只实现了试卷的客观题部分,但已具有用户注册、多用户同时在线考试、动态随机出题、时间提示、自动判卷,查阅成绩和答案等重要功能,也就是说实现了真正的无纸化考试,满足任何授权的考生随时随地考试并迅速获得成绩,同时也大大减轻了教师出题和判卷等繁重的工作量。
1、系统总体设计
1.1系统简介
该系统是专门用于用户注册、登录、参加在线考试的asp应用程序。它应该具有开放性、方便性和灵活性。允许用户根据自己的需求,选取考试科目。考生进行有效的身份验证登录后,选择考试科目,并要求在规定的时间内进行答题。完全由计算机自动灵活、随机地抽取试题库中的各类试题组成各种形式的试卷,其内容会随着库中试题的改变而改变,而且,不同的考生生成的试题是不同的,但是对于参加相同考试的考生而言,不同试卷难度相等。wWw.133229.CoM
用户可以是学校等单位的教师、学生以及企事业单位的培训部门。
1.2运行环境
为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即internet,也可适用于内部的局域网。其运行要求如下:
(1)软件环境:
客户端:windows95/98,internetexplorer(ie)等
服务器端:windowsnt/windows2000,internetinformationserver(iis)4.0及其以上版本,ie等(推荐);或者windows98,personalwebserver(pws),ie等。
数据库:采用access,运行于服务器端。
(2)硬件环境:
服务器cpu:piii500以上,内存:256m以上
客户机cpu:p200mmx以上,内存:32m以上
1.3详细设计
详细设计是整个设计过程中最重要的步骤之一。下面就分如下几个部分对系统进行详细设计:①试题设计;②数据库中表的设计;③用户、管理员权限;④功能模块详细设计;⑤在线考试系统在线考试模块框图。
1.3.1试题设计
鉴于主观题的主观性,目前无法实现系统自动判卷,所以本系统只作客观题部分。一般情况下,单选题往往在4个供选的答案a,b,c,d……中选择唯一正确的答案;多选题是在供选答案中有多个选择;而判断题实质上就相当于有两个选项的单选题;填空题也可以实现。因而,本系统中所涉及的单选题和多选题跟过去的大体相同,判断题和填空题两种题型是自己的设计。并且假设选择题最多提供7个备选答案,标准答案至少有一个。
1.3.2数据库中表的设计
(1)question1表结构
question1表用于存放选择题。通常,每一类型的试题都应有一个表结构。但考虑到目前系统存贮空间可以很大,也为了更加方便,我们采用把全部试题集中在一起的方案来建立数据表,每道选择题均准备有7个备选答案项(一般用4个),每个试题均具有题型、所属科目等数据段表示其属性。字段名一般是相应的英文单词。这样,查询起来较方便,会节约时间,也不致于造成数据十分杂乱等。
2、系统实现
2.1系统设计
根据系统总体设计,首先系统要有主界面,教师可以从该界面登录到教师登录页面,管理员也应该有一个进人管理员登录界面的通道,学生由此界面进人学生登录页面。
在考生正确输人学号、姓名和密码以后,接着应该进人浩然在线考试系统学生页面。可以参加考试,查阅自己以前的考试成绩和修改自己的注册信息等。
考生提交答卷后,由计算机进行判卷,得出考试分数,显示出来,并把该生考试记录存人数据库。
2.2各文件功能介绍及详解
(1)
conn.asp文件实现的是连接数据库和断开连接的功能。
文件中主要是定义了两个过程corminit()和endconnection()。第一个是连接数据库,第二个是实现断开连接。
connm.asp除了具有conn.asp的全部功能外,还能解决多用户同时抽取试题时出现冲突的问题。connm.asp是test.asp和result.asp两个网页的专用数据库链接文件。
(2)
该文件的功能是系统登陆的入口,在此可以实现用户注册人口以及用户进入考试系统登陆界面的功能。该文件的功能是这样实现的:表单提交给文件本身,再由html上面的asp程序对提交信息进行处理。
(3)
该文件实现了用户注册的功能,用户只要填写想要注册的用户名及密码,文件首先查看用户名是否已经存在,如果存在就提示该用户名已经存在,否则就将用户输人的信息添加到数据库中的相应表内。
(4)
该文件是实现用户登录在线考试系统后进行考试科目选择的功能,选择科目后进人考试界面。
(5)
该文件就是考试界面,实现真正的动态随机选题,并对每个考生的考试时间进行监控,到结束时间后自动给出提示。
该文件使用window对象的,ettimeout(expression,time)方法进行时间控制。
randomize是产生随机种子,在使用rnd)函数之前一定要先用randomize产生随机种子才能实现其产生0-1之间随机数的功能。
下面的代码实现了从数据库中随机不重复的选题:
setrs=server.createobject("adodb.recordset")
sql="select*fromquestionwhere
subjectname="&session("selectsubjectname")&"‘
andtype=’单选题‘andhaveselect=0"
rs.opensql,conn,3,2
count=rs.recordcount
temp=fix(count*rnd(io))
rs.movetemp
rs("haveselect")=1
rs.update
stridi=strid1&rs("id")&“,”
其中haveselect标志某题是否已经被选过。
选完题之后将所有已经设成1的haveselect改写成0,这样自己下次或别人就仍可以选择所有的试题。
(6)
考生提交答卷以后,该文件就把考生的答案同question表中的正确答案进行比较,最后得出考生的得分。
2.3调试过程中遇到的主要问题和解决办法
在系统调试的过程中主要遇到3个比较困难的问题:
第一个就是如何实现在随机选题的同时保证不重复,本设计最后使用了在questionl,question2和question3表中设置了一个haveselect字段来标志选过的纪录的办法来解决。
第二个就是如何将test.asp中所有试题的id号传到result.asp页中。因为试题数是变值,用一般的使用变量方式是行不通的。本设计采用了将id号以逗号分隔存在字符串变量中,然后到result.asp页面用split)函数拆开存放到数组中的办法进行解决。
第三个就是试题在编辑之后就无法再选出来了,最后发现是因为编辑之后科目名的前面会有空格,所以会无法选出。解决的办法是使用trim()函数将空格去掉。
第四个就是多用户同时抽取试题时出现冲突,造成试题抽取不成功。解决办法是设定全局变量application("num")(记录用户数)和application("read")(当前用户是否有权连接数据库),在connm.asp中利用信号量原理编写代码控制application("num")和application("read")的值,进而避免多用户同时抽取试题出现冲突。test.asp和result.asp两个网页的数据库链接文件为。onnm.aspo
2.4系统测试
本系统各模块须先行测试,经过修改和调整通过以后,进行总体测试。测试结果各项功能均已经或基本达到设计要求。
3、结束语
中职学校在线考试系统终于可以投人运行了,在此,作者首先感谢那些热心帮助其实现本系统的朋友。一套软件的开发成功,凝聚着作者多年技术和经验的积累。伴随着这套软件的投人运行.作者也收获颇丰,得到了成长。