存储设备故障应急预案:用ASP实现基于B/S模式下的在线考试系统

来源:百度文库 编辑:偶看新闻 时间:2024/05/06 08:55:32
随着Internet/Intranet的迅速发展和广泛普及,建立在其上的远程教育成为现代教育技术未来发展方向之一,在线考试作为远程教育的一个子系统也成为一个重要的研究课题。目前,网络软件运行的模式主要有Client/Server(C/S)模式和Browse/Server(B/S)模式两类。C/S模式通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势,但在维护、升级方面较麻烦,早期的软件系统多以此作为首选设计标准;B/S模式是随着Internet技术的兴起,对C/S结构的一种变化或者说改进。在此结构下,用户界面完全通过WWW浏览器实现,少部分事务逻辑在浏览器端实现,主要事务逻辑在服务器端实现。B/S结构,主要利用WWW浏览器技术,结合浏览器的多种Script语言(VBScript、java script)和ActiveX技术,用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种相当实用的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构,在操作上简便,效率高,但对计算机的配置要求也很高,尤其是服务器端。
  
  一、在线考试系统的开发/运行环境及相关技术问题介绍
  
  (一)在线考试系统的开发环境
  操作系统:Microsoft Windows XP。
  开发工具:Internet Information Server、
ASP Dreamweaver 8.0、Flash 8.0、PhotoshopCS2。
  数据库:Microsoft Office Access2003数据库。
  (二)在线考试系统的运行环境
  客户端:IE 5.0以上等可解释常规HTML码的浏览器。
  服务器端:Microsoft Windows 2000以上、Internet Information Server具有Active X Server Component功能。
  (三)在线考试系统的需求分析与技术问题
  在线考试面向在校生,为避免他人的进入,登录考试系统需要身份验证,再根据自己的学习情况,选择训练或考试。在线考试由于是单机进行,考试地点可能在机房等机器相距密集的场所,为做到规范、公平和公正,必须保证对每位应试者:题量相等、内容不同,因此要求试卷在基于网络环境下,从服务器的数据库中随机抽取动态生成。为控制学生考试次数,在试题生成时还需要进行考试权限的验证。另外,还要求在限定的时间内完成,否则自动结束考试,交卷后自动评分、当场显示成绩及考试机会。同时为了提高学生的学习效率和考试及格率,给学生提供实时训练,及答案参考,以便学生进行自我检测和自我评估。
  系统的基本功能模块的技术问题:
  1.用户登录模块:要求与管理员录入的数据库进行对比验证以获取登录权限;
  2.在线教学模块:利用在线新闻、教学视频等给学生提供知识点回顾、新知识介绍等;
  3.模拟训练模块:给学生提供模拟考试环境,并提供参考答案;
  4.综合考试模块:为学生提供在线考试,系统实现判断、单选、多选等考题的自动、随机、不重复的抽取,时间的监控与权限的控制,交卷后自动评分、即时显示成绩与考试的机会状况等;
  5.成绩查询模块:为师生提供查询成绩的平台;
  6.系统管理模块:为管理员和任课教师提供人员的信息管理、密码设定与修改、成绩打印等诸多方面的功能。
  
  二、在线考试系统的设计思想、分析和具体实现
  
  1.基本设计思想:基于B/S模式的前提,要实现在线考试系统的设计,首先解决网页与数据库的连接问题,本系统采用ADO对象实现数据库的访问,即在ASP脚本中构造一个ADO的Connection对象去连接Microsoft Office Access2003数据库,然后通过Command和RecordSet对象实现对数据库的操作;其次利用ASP内置对象Request和Response等完成对页面的访问;同时利用Session对象完成用户在多页面间跳转时的信息共享。
  2.系统设计流程图如图1所示:
    
  3.系统主要功能随机抽取考试题部分的实现方法:本系统中的判断题、单选题和多选题的抽题部分相互独立,但抽题的算法相类似,因此下面仅以判断题为例,给出抽题的关键代码。
  i1=1
  i2=0
  for i1=1 to 15
  dimsqlstr
  m=19
  n=1
  randomize
  r1=int(rnd()*m-n+1)+n
  for i=1 to session("judgenumber")
  i2=i2+1
  r=r1
  set rs=server.createobject("adodb.recordset")
  sql="select * from t_judge where selected=0 andt_area="&i1&"and id_n="&r&"+("&i1&"-1)*20 and subject='"&session("selectsubjectname")&"'"
  rs.open sql,conn,3,2
  R1=r1+1