基于ASP.NET的在线考试系统的设计研究

来源 :科技与企业 | 被引量 : 0次 | 上传用户:zhongguohuhu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】随着Internet技术的发展,开发基于Web的管理信息系统(MIS)、最大限度利用职业技术学校现有资源、提高教学质量是职业技术学校教学上的新的研究课题。本文针对ASP.NET的在线考试系统的设计进行了分析。
  【关键词】ASP.NET;在线考试系统;设计方案
  随着互联网与计算机软硬件技术的快速发展,建立在其上的远程教育成为现代教育技术未来发展方向之一,考试测试作为远程教育的一个子系统也成为一个重要的研究领域。在线考试是现代远程教育研究的一个重要部分,它利用计算机和网络进行组卷、考试、评分,实现“教考分离”,相对减少了考试各环节的人为主观因素,更高速、客观、安全的组织考试,把教师从繁重的组卷、评卷、成绩分析等工作中解放出来,提高考试的效度和信度,对提高教学效果和教学质量具有重要意义。
  1、系统设计与实现
  本系统主要需要实现对教师管理员以及考生的身份验证,试题的录入和随机抽取试题组成试卷,考试过程中的试卷无刷新,考试的计时功能,考生交卷后客观题的系统自动评分,教师和后台管理人员对试题信息的单独管理。针对考试系统,考虑到数据库的数据比较庞大,本系统采用SQL2005数据库存储数据信息。根据考试系统的要求,我们需要设计管理员信息表、考试科目信息表、考生记录信息表、考生信息表、教师信息表、试题信息表。
  1.1文件夹组织结构
  每个网站都会有相应的文件夹组织结构,如果网站中网页数量很多,可以将所有的网页及资源放在不同的文件夹中。如果网站中网页不是很多,可以将图片、公共类或者程序资源文件放在相应的文件中,而网页可以直接放在网站根目录下。在线考试系统就是按照前者的文件夹组织结构排列的。
  1.2公共类设计
  在开发项目中以类的形式来组织、封装一些常用的方法和事件,不仅可以提高代码的重用率,也大大方便了代码的管理。本系统中创建了一个公共类BaseClass类,其中包含建立数据库连接的DBconn 方法、绑定GirdView控件的BindDG方法、执行SQL语句的EXsql方法、判断考生登录的ChkStu方法以及判断教师登录的ChkTea方法和判断管理员登录的ChkAdmin方法。
  1.3登录的实现
  本系统的登录包括教师、考生、管理员三种不同身份的登录,它们的实现方法大致都差不多。在这里我们主要谈谈考生的登录实现,考生进入登录页面后,先输入自己的准考证号和自己的密码同时需要选择学生身份进行登录。输入正确后单击登录按钮则可以进入考试界面进行考试。
  2、设计方案的选择
  在通常的考试中,相同科目的考生使用相同的试卷,而在线考试系统中则可以做得更好,即相同科目的考生却使用看起来不一样的试卷。如果仅是模拟通常意义的考试,则是容易实现的,但如果能够针对不同的考生呈现不同的在线试卷,则可以有两种方案可以选择:一是针对每个考试生成不同的具有相同难度系数的试卷,二是使用相同的试卷但呈现不同的排列。
  由于计算机应用基础课程同时在线考试的人数可能达到上千人,采用方案1要求准备上千份试卷,这是最直接的实现方式。但在考试过程中由于需要频繁地存取试卷数据库,以每份试卷100K字节计算,一千人同时考试则可以产生超过100M/S的突发数据流,如果考虑到数据的封装则会更多,同时还要大量占用处理器及内存资源,这对计算机硬件系统的配置以及网络的性能带来较高的要求,也给在线考试软件的稳定运行带来隐患。
  采用相同命题不同呈现方式即方案2,虽然不能真正做到对不同考生呈现不同命题,但却是较适合于基于Web技术的在线考试系统的命题呈现方式。很显然,这种呈现方式不会产生数据拥堵现象,提高了操作的响应性能,较少地占用系统资源,有益于在线考试系统的稳定运行。
  3、试卷呈现方法的实现
  实现相同的试卷但呈现不同的排列的呈现方式的策略是:①从试卷库中选择将要考试的试卷,将其命题映射到计算机内存中;②针对每个考生产生不同的命题随机序列;③根据不同的命题随机序列显示在线试卷。
  3.1实现试卷中命题到内存的映射
  计算机应用基础课程试卷中的命题类型可分为选择题和操作题两种,因此需要根据命题在数据库中的关系模式来建立命题类的定义,这里给出命题中选择题的类定义,其他类型命题可做类似处理,代码片段如下(C#语法):
  Public class OneQuestion{
  Public int PaperID;//试卷ID
  Public int KindID;//命题类型
  Public int QuestionID;//命题ID
  Public int Mark;//分数
  Public int NumberOfSelect;//可选项个数
  Public String Content;//命题内容
  Public String Options;//可选项
  Public String answer;//答案}
  命题类提供了命题在内存中的数据结构,因此可以从试卷库中读取試卷命题并保存在命题对象数组中,下列Get Paper Contents函数(C#语法)读出选择题到数组中:
  Private bool Get Paper Contents(){
  ArrayList ar=new ArrayList();//数组ar用于保存选择命题集
  SqlDataReader dr=null;//数据集dr表示数据库中试卷的关系模式
  Int paperid=Convert.ToInt32(Application["paper
  ID"].ToString(),10);//取得试卷ID
  ExamineLB examlib=newExamineLB();//创建试卷库读取对象
  dr=examlibGetPaperContents(paperid);//读取命题//依次将命题映射到数组中   while(dr!=null&&dr.Read()){
  OneQuestionquestion=newOneQuestion();
  question.PaperID=Convert.ToInt32(dr["PaperID"].ToString());
  question.KindID=Convert.ToInt32(dr["KindID"].ToString());
  question.QuestionID=Convert.ToInt32(dr["QuestionID"].ToString());
  question.Mark=Convert.ToInt32(dr["Mark"].ToString());
  question.NumberOfSelect=Convert.ToInt32(dr["Nu
  mberOfSelections"].ToString());
  question.Content=dr["Content"].ToString();
  question.Options=dr["Options"].ToString();
  ar.Add(question);//添加选择题}
  dr.Close();//关闭数据库
  Application["questions"]=ar;//选择题保存至Application对象
  SerializePaper(ar);//序列化命题对象
  returntrue;}
  以上程序中Application对象是ASP.NET中的全局对象,在这里用来存储在线考试系统中的一个试卷,ArrayList类是ASP.NET中预定义的数组类,用来创建对象数组以保存试卷中的各命题。
  3.2实现针对不同考生的命题序列
  当完成试卷的内存映射后,试卷中的命题被保存在Application对象中并被所有考生共享。每个考生被赋予不同的命题序列以模拟出针对每个考生的不同试卷。由于内存中只有一份试卷且其排列是固定的,所以每个考生的试卷只需要用数组来表示命题序列即可,数组保存也只是命题的排列即可定义为:int[]Questionlist,再使用随机序列算法乱序排列每个考生的命题序列。实现考生命题序列的代码如下(C#语法):
  privateint[]GenerateRandomSeq(intlen)
  {inti=0;rdn=0;temp=0;
  intcurlength=len;//命题的数量
  int[]seq=newint[len];//创建命题序列
  Randomrandom=newRandom(unchecked((int)
  DateTime.Now.Ticks));//产生随即数
  //产生随机命题序列
  for(i=0;i  for(i=0;i  if(i!=rdn&&rdn=0){temp=seq[i];seq[i]=seq[rdn];
  seq[rdn]=temp;}}returnseq;//返回处理后的考生命题序列}
  GenerateRandomSeq函数模拟了现实生活中的洗牌方法(随机交换任意两张牌)来达到乱序排列的目的。
  3.3实现针对不同考生的命题呈现
  本在线考试系统的考试界面使用ASP.NET中的列表控件ListBox来绑定考生的命题序列,考生通过此列表控件来检索试卷中的每个命题,命题内容则会显示在文本控件TextBox中。
  4、在线试卷的持久化处理
  本在线考试系统是基于ASP.NET技术架构的Web应用程序,因此系统的运行依赖Web服务器的工作状态。当Web应用程序处于空闲状态约20分钟时,Web服务器会为了节约系统资源而停止Web应用程序的执行并销毁Web应用程序运行时所创建的对象以回收被占用的内存空间。因此,当在线试卷被发送到考生的客户端后,如果20分钟内没有人提交试卷或翻看命题,则考试系统中的在线试卷就会消失,所带来的后果将是无法再查看试卷,使考试无法继续进行。解决这个问题的一个较好的方法就是将试卷保存在磁盘文件中,称之为持久化处理,这种处理方法可快速重建试题而无须再次读取数据库。要实现试卷的持久化处理,首先要声明试卷中需要序列化的命题对象,在ASP.NET中使用关键字“serializable”来表示,序列化一个命题则需以如下格式来声明(C#语法):
  [Serializable()]//序列化声明
  publicclassOneQuestion{……….}//需要被序列化的命题类
  其次,在发布在线试卷的同时保存试卷,代码片段如下(C#语法):
  privatevoidSerializePaper(ArrayListar)//參数ar是命题对象数组
  {StringsFilePath=Server.MapPath("~")+"DataFile.dat";//定义要保存的文件名及路径
  FileStreamfs=newFileStream(sFilePath,FileMode.Create);//创建数据流文件
  try{BinaryFormatterformatter=newBinaryFormatter();//创建二进制数据类型对象
  formatter.Serialize(fs,ar);//将命题对象数组串行化并保存在DataFile.dat文件中}catch(SerializationExceptionex){LB_ErrorMsg.Text=ex.Message;}//错误处理   finally{fs.Close();//關闭文件}}
  最后,需要定义Application_Start消息处理,从而当Web应用程序再次被Web服务器唤醒时就能够立即使用已保存的文件来恢复在线试卷,代码片段如下(C#语法):
  StringsFilePath=Server.MapPath("~")+"DataFile.dat";//将要恢复的试卷所在的文件名及路径
  if(File.Exists(sFilePath)
  {FileStreamfs=newFileStream(sFilePath,FileMode.Open);//创建数据流文件
  try{BinaryFormatterformatter=newBinaryFormatter();//创建二进制数据类型对象
  ar=(ArrayList)formatter.Deserialize(fs);//恢复试卷
  Application["questions"]=ar;//恢复试卷到Application对象中
  if(ar.Count>0){Application["paperTitle"]="试卷
  ID:"+((OneQuestion)ar[0]).PaperID.ToString()+"正在考试中
  ";Application["paperID"]=((OneQuestion)ar[0]).PaperID;//恢复试卷ID
  Application["beginTest"]=true;//恢复考试状态}
  }catch(SerializationExceptionex){}finally{fs.Close();//关闭文件}
  要说明的是:Application_Start消息在Web应用程序(在这里是指在线考试系统)每次被启动时产生,恢复的在线试卷保存在Application对象中。
  5、结束语
  综上所述,建立网络课程在线考试系统,方便学习者自主测验,及时得到反馈信息,从而有计划、有步骤、系统地调整学习进度,使网上学习更有效。与此同时,教师(或管理员)可以通过系统对学生信息的分析统计,有针对性地为学习者提供指导。随着经验的积累、题量的增加、题目形式的多样化,在线考试系统会进一步得到扩充和完善。
  参考文献
  [1]王娜.基于ASP.NET技术的在线考试系统的设计与实现[J].科技信息,2010年17期
  [2]金小璞,罗庆云,徐芳.基于ASP.NET技术的在线考试系统[J].福建电脑,2005年10期
其他文献
【摘 要】高压输电线路作为电力系统的重要组成部分,它不仅担负着分配与输送电能的任务,同时还联系各个变电站和发电厂使之能并列运行。然而由于我国幅员辽阔,导致了高压输电线路历程长,跨越区域环境复杂等特点,这就要求了杆塔基础必须具有足够的稳定性,以满足各种高压输电线路基础对承载能力的要求。本文结合工作实际,就高压输电线路杆塔基础的稳定性进行了研究与探讨。  【关键词】高压;输电线路;杆塔基础;稳定性 
目的探讨食用碘盐对碘缺乏地区学龄儿童碘营养的改善效果。方法于2007年对某碘缺乏地区居民加强碘盐,随机抽取其中300例8~10岁儿童作为对照组;于2011年再随机抽取其中8~10岁儿
期刊
【摘 要】城市园林绿化是提高环境质量的重要途径,是展示一个城市物质文明何精神文明的窗口,是人们文化素养何道德风尚的体现。增加绿地提高生态平衡,可以舒缓人类繁重的工作压力,陶冶情操。城市建设需要更多的新优园林树种来改善美化环境。  【关键词】城市园林绿化;问题;对策  一、概述  现在北方大多数城市园林绿化中存在以下情况:树种比较单调,生态效益和景观效益结合不够,在城市园林绿化中,公共绿地树种比较
分别以对苯二甲酸二甲酯、乳酸甲酯、乙二胺和三种醇氨为起始单体设计合成了4种不同种类的二酰胺二醇中间体,并通过傅里叶红外光谱(FTIR)、核磁共振波谱法(NMR)对其结构进行
目的 探讨胰高血糖素样多肽-I(GLP-1)类似物利拉鲁肽对不同病程2型糖尿病患者的治疗效果.方法 收集11例不同病程血糖控制不佳的2型糖尿病患者,在原治疗基础上加用利拉鲁肽0.6
【摘 要】在化工行业的DCS系统控制中,采用较多的复杂控制,以满足工艺生产条件控制。本文针对HONEYWELL EPKS 300系列的DCS控制系统使用的比值控制、分程控制、串级控制等几种复杂控制方案进行阐述,主要介绍了各方案的控制原理及具体应用情况。  【关键词】比值控制;分程控制;串级控制;DCS系統
生态工业园的建设对于福建省发展循环经济具有重要作用。在介绍国内外生态工业发展模式的基础上,结合福建省工业园区的发展现状,分析了建立泉州经济技术开发区、青口汽车工业园
四川省达州市围绕加快“绿色达州”建设,以创建森林城市、绿化模范县(乡镇)为载体,以林业生态工程建设为重点,以城镇和通道绿化为突破口,以特色产业基地建设为抓手,周密部署,狠抓落实
由于市场对乙醇燃料的需求猛增,美国农民本季度大幅提高了玉米的种植面积。英国牛津大学最近也开始在校园里推广一项能源替代计划,将烹饪废油收集起来并转化为生物燃料,成功地在