小妖女 发表于 2015-1-16 22:37:45

ASP教程之用ASP开辟试题库与在线测验体系

优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件摘要使用收集和数据库手艺,分离今朝硬件代价广泛下跌与宽带网鼎力建立的有益上风,我们基于B/S形式研讨开辟了试题库与在线测验体系这一ASP使用程序。它使用便利、操纵复杂,效力很高,现阶段虽只完成了试卷的客不雅题部分,但已具有试题(卷)录进、修正和查询,手工组卷与主动组卷和举行在线测验等主要功效,也就是说完成了真实的无纸化测验,满意任何受权的考生随时随地测验并敏捷取得成就,并给出其具体的成就剖析与试卷评价,同时也年夜年夜加重了教员出题、组卷和改卷等沉重的事情量。

  引言

  现阶段,黉舍与社会上的各类测验多数接纳传统的测验体例,在此体例下,构造一次测验最少要经由五个步骤,即野生出卷、考生测验、野生阅卷、成就评价和试卷剖析。明显,跟着测验范例的不休增添及测验请求的不休进步,教员的事情量将会愈来愈年夜,而且其事情将是一件非常啰嗦和十分简单堕落的事变,能够说传统的测验体例已不克不及顺应古代测验的必要。跟着盘算机使用的迅猛开展,收集使用不休扩展,如远程教导和假造年夜学的呈现等等,且这些使用正慢慢深切到千家万户。人们急切请求使用这些手艺来举行在线测验,以加重教员的事情包袱及进步事情效力,与此同时也进步了测验的质量,从而使测验更趋于公证!客不雅!加倍引发先生的进修乐趣。比方今朝很多国际出名的盘算机公司所举行的各类认证测验尽年夜部分接纳这类体例。为了顺应新情势的开展,我们推出了这一体系,使其尽快在各种测验中发扬高效、便利的感化,把先生从沉重的事情中摆脱出来!

  1、基础简介

  试题库与在线测验体系接纳ASP、HTML、Frontpage2000/98、Javascript、VBScript、Java编程言语、图形编纂与数据库等工具,经由过程基于WEB服务器会见纯WEB页面,完成在线组卷与测验等各项相干的功效。

  它是专门用于试题(卷)录进、查询、修正、删除、组卷和列入在线测验的ASP使用程序。其最年夜的特性是开放性、便利性和天真性。次要是指一样平常的用户不但能够轻松地向题库增加、修正和查询试题(卷),并且还能够主动新增科目并创建响应的数据表;它还同意用户依据本人的需求,从现有的试题库中天真地抽取各种试题,以组建合适于本身所需的试卷。并且,自测试卷的难易水平和情势和各年夜题分数等都由用户依据必要断定。考生经由过程扫瞄器举行无效的身份考证登录后,输出准确的试卷编号,并请求在划定的工夫内举行答题,当到达划定的工夫后,体系将主动予以提交。一旦考生做完后便能当即看到事后纪录在库中的尺度谜底和本人的平常成就(正轨测验试卷不得随便变动和谜底将不实时供应),而且其谜底和分数将被记进库中以供考核和查阅,并作为成就评价和试卷剖析的汗青数据;别的,还可完整由盘算机主动依照"难度系数"天真、随机的抽取试题库中的各种试题构成各类情势的试卷,其内容会跟着库中试题的改动而改动,无妨把它称之为及时的互动的试卷。

  用户工具次要是年夜、中、小学及职业黉舍等单元的教员及先生和企奇迹单元的教导部门(因企奇迹单元每一年要对员工举行本质、平安教导与妙技等方面的培训及测验等)。2、运转情况与体系布局

  此使用程序可普遍运转于国际互联网即Internet,也可合用于外部的局域网。其运转请求和逻辑布局分离以下:

   客户端:Windows95/98,InternetExplorer(IE)等

   服务器端:WindowsNT/Windows2000,InternetInformationServer(IIS)4.0及其以上版本,IE等;大概Windows98,PersonalWebServer(PWS),IE等。

   数据库:接纳SQLServer,运转于服务器端。


试题库与在线测验体系逻辑布局图

  3、体系特性

  体系联为一体,界面划一、美妙,操纵复杂、便利。别的,撑持按权限对体系举行操纵,即分歧范例的用户具有相异的权限对题库实行分歧的操纵。次要是在首页经由过程两种分歧的体例进进相异的操纵界面,以确保全部数据库中数据的平安性及完全性。其次要特性表现在以下三个方面:

  (1)自立计划数据库⑵自立挪用数据库⑶自立办理数据库

  自立计划数据库是指用户可以依据本人的必要创立新科目数据库(即体系完成了主动建表的功效),让数据库真正成为用户本人的数据库。不外,只需库中已存在该科目称号及表名,则不予重修,如许就包管了数据的一致性;自立挪用数据库即同意用户能自在地从数据库中抽取试题构成试卷,试卷中有几道年夜题和小题和是不是供应检察谜底均由用户自行设置并选题。一般来讲,一份高质量的试卷,必要用户重复斟酌、对照和揣摩,用户就象进超市买器材一样能便利地把看中的掏出来,也可忏悔把不必要的退归去,而且在构成一份完全的试卷之前,同意恣意调剂该试题的序次。在组卷时,还能够多份试卷拔取统一试题或统一常识点的试题,但严禁一套试卷中呈现常识点不异(似)且难度分歧的试题。不外,其最年夜的缺点在于今朝只完成了试卷中的客不雅题部分,即包含判别、单选和多选题。并且,还没有完成客不雅题部分和真实的多媒体试卷;自立办理数据库指一样平常用户具有增加、修正和检索数据的权利,完成数据库的可扩大性和开放性。而办理员则另具有删除数据的权利,从而到达了体系数据一致性和分歧性的目标,详细情形请见体系演示。
4、具体计划

  4.1、试题(客不雅题部分)计划

  在以往的测验中,判别题经常是经由过程画"w",""来判别;而单选题常常在四个供选的谜底A、B、C、D当选择独一准确的谜底;别的,多选题跟单选题在基本上没甚么区分,只是供选的谜底和尺度谜底多一些。因此,本体系中所触及的单选题和多选题跟已往的大致不异,次要分歧在于把判别题奇妙地转化为只要两个选项的单选题,而且假定多选题一样平常情形下也是最多供应六个备选谜底,尺度谜底最少有一个。故各题型的样题计划以下:

判别题-->如:重发器也叫中继器:(A)错(B)对
单选题-->如:HUB是指:(A)网桥(B)集线器(C)网关(D)路由器
多选题-->如;Internet上利用的收集协定是:(A)IPX/SPX兼容协定(B)TCP/IP协定(C)NetBEUI协定(D)X.25协定(E)ATMLAN仿真用户(F)疾速红外线协定
  4.2、数据库计划

  4.2.1、试题布局

  一般,每范例的试题都应有一个表布局。但思索到今朝体系存贮空间已不受物理空间的限定。因而,我们接纳按科目而不按试题范例计划来创建数据表,更不把一切科目标全体试题会合在一同,只是每道客不雅题均有六个备选谜底项,另有一个表用来纪录各科目数据表的相干属性。如许,查询起来较便利,大概会勤俭工夫,也不致于形成数据非常混乱等。具体计划以下表所示:

申明:
  1.按科目(一样平常以1个学期为尺度)分离界说各表,表名一概由中文名汉字拼音首字母组成。比方,软件工程---RJGC;盘算机收集---JSJWL;小学二年级上期数学---XXENJSQSX

  2.字段名是指该字段的中文名

  3.字符标识一样平常由中文名拼音首字母组成,外键字段最好与主表对应字段同名

  4.若该字段为字符型,则对应的长度栏填最年夜同意长度,若为流动长度则加定字

  5.若该字段能够为空,则对应的NULL栏填Y,不然不填

  6.若该字段为主键,则对应的主键栏填Y,不然不填  
  科目数据信息表

字段名字符标识范例长度NULL主键申明科目中文具体称号KMMCCHAR50以中文为准,比方"盘算机收集"科目表名KMBMCHAR50Y一概由下面中文名拼音首字母组成,如"JSJWL"录进者LRZCHAR15默许为录进员登进帐号录进日期LR_DATEDATE10默许为录进时的体系日期备注MEMOCHAR50Y
4.2.2、试卷布局

  试卷一样平常包含客不雅题(判别题、单选题或多选题)和客观题(填空题、漫笔字题或长笔墨题),即一套试卷包含多少年夜题,每道年夜题包括多少小题。可是,本体系的试卷今朝只触及客不雅题部分。故年夜题数暂定为最多3道,小题数总和多少,并且,在此表中只存贮该科目试卷响应的试题编号,其试题内容蛟诘饔檬钡较嘤颇恐胁檠竦谩?

  4.2.3、用户、留言信息布局

  A、超等用户:在此体系中有且唯一一个,即体系办理员。他具有一样平常用户所没有的登峰造极的权利,即具有删除用户、留言、试题和试卷等信息的权利。它不需注册,在数据库没有它的任何相干信息,但可由办理员本人变动用户名和暗码。确保万一数据保密而形成体系的伤害。

  B、一样平常用户:次要是指黉舍的教员及先生和企奇迹单元的教导部门等。别的,一切用户大概会对我们的体系宣布定见或互相之间答疑。

  4.2.4、考生谜底成就表布局
实践测验日期大概因某种缘故原由推延测验而与试卷表中的测验日期有所分歧。因此,此表应与用户、试卷及试题库等多表相干联,干系对照庞大。

  4.3、功效模块具体计划

  上面,依照录进试题-出卷-举行测验等流程就各个模块分离举行具体会商,详细情形见体系源程序及演示。思索到数据的保密与平安成绩,凡进进体系的用户,必需先注册,然后经由过程考证才干进进。不然,进进"SORRY"页面。

  4.3.1、录进模块

  允许的用户依据本身教授教养目标和请求,能够向库中增加各类范例且切合请求(对不切合的将给出提醒和告诫,而且不予保留!)的试题和试卷和各自的定见与疑问成绩等。一旦增加乐成,只要办理员才干删除。

  ①试题录进

  起首,用户选择试题所属科目。若下拉菜单中没有该科目,则点击右侧的新增科目,即进进这一页面,只需输出新增科目具体称号(一样平常以一个学期修完为尺度)和表名(最好由汉语拼音首字母构成),便可由体系依据已设定好的字段主动创建新的科目试题表。前往、革新一次页面,便可看到新增的科目称号。并且,在本体系中别的必要选择科目标中央也会主动更新。

  其次,每道试题有范例、难度系数、选自书本及章节、试题内容与谜底和尺度谜底等栏目。用户逐一输出完(关于该试题不必要的谜底项,则默许为"不填"),按"提交"后,便可看到预览效果。假如输出分歧法,大概该科题库中已有该试题编号和内容等,则体系给出响应的提醒或告诫,以待改正。

  ②试卷录进

  此子模块包含两个部分,即标识试卷的基础信息录进和手工组卷部分。其基础信息有试卷编号、题目、套数、难度、科目称号、测验性子与日期等,而卷中试题将经由过程前面的手工组卷模块予以完成。关于用户输出的不切合体系请求的数据,体系仍然给出提醒或告诫。

  ③用户留言

  凡利用此体系的用户大概对我们的事情有很多优秀的倡议和定见,大概有一些疑问成绩必要人人配合切磋的话,能够在此提出。
4.3.2、查询模块

  体系中的一切用户都可检索试题、试卷、用户及留言等信息。只是试题检索界面较庞大,但它已完成了多种前提的组合查询,十分合适于数目繁年夜的试题库。尔后三者绝对来讲对照复杂,"默许"或"空缺"的情形下,则按该表中的体系默许的字段显现其全体信息。利用起来对照天真、便利。

  4.3.3、修正模块

  用户除只修正本人的部分材料(包含用户帐号、暗码和E-Mail)外,还可修正试题及试卷,而留言则不准修正。只需用户选择科目和输出编号,便可举行修正。不外,关于各表中的主键禁绝修正,制止了形成体系中的数据凌乱,大概掩盖别的有效数据的征象。假如用户实行了不法操纵,则必需从头操纵。

  4.3.4、组卷模块

  在组卷过程当中,我们一定会碰到有很多标题是关于统一个教授教养内容的,这里称之为关于统一审核点的试题。因而,在组装一份试卷时,关于统一审核点的试题只能出一道题。这里计划一种疾速选题算法,该算法只需经一次对照,即可判断是不是已选过该审核点的试题,且又能够有针对性地重点拔取某个审核点的试题。即每道题都设有一个相干码,关于统一章、统一节、统一审核点的题,则相干码不异,明显,后面章节的相干码都要小于前面章节的相干码。故在组卷时,统一试卷中不同意呈现相干码不异的试题。以是,在选题过程当中每选出一题,就要与已选出的题的相干码一一举行对照,若该题的相干码与已选各题的相干码均不不异,则可将该题到场到试卷中,不然,保持该题,从头举行选题。

  上面,在只思索最好情形下,即每次选出的题都刚好是还没有选过的,每选一道题就要与已选出的各题一一对照,假定已选出了M题,再选下一题时,则需对照M次,无妨设一份试卷的总题数为N,在最好情形下,则总的对照次数为:

   0,1,2,…N-2,N-1

  立即间庞大度为O(N),如许,便可包管上面算法当选择出来的试题编号都正当。

基础算法:


{界说参数,取得整套试卷的配合限定参数,即包含输出需要前提失掉需要参数和输出任选前提失掉任选参数}

需要参数组合=A1ANDA2~~ANDAn;任选参数组合=B1ORB2~~ORBn;
年夜题数dts=3默许为3道年夜题;小题数xts=0默许为50道小题;
IF无判别题THENdts=dts-1ENDIF入手下手盘算年夜题数
IF无单选题THENdts=dts-1ENDIF
IF无多选题THENdts=dts-1ENDIF

  入手下手扫描响应科目标试题库,取得一时一切切合前提的试题预览,接着入手下手手工巧选试题以天生试卷或盘算机主动组卷。

IF切合需要参数组合THEN
 SELCECT任选参数
  B1:显现切合需要参数+B1的试题编号及内容
  B2:显现切合需要参数+B2的试题编号及内容
    ┋┋┋
  Bn:显现切合需要参数+Bn的试题编号及内容
 ENDSELCECT
ENDIF
IFdts>=1THEN
 IF试题编号正当THENxts=xts+1
 ELSE请输出正当的试题编号!
 ENDIF
 IFdts>xtsTHENxts必需年夜于或即是dts!
 ELSE
  IF某已存在的题型中小题数为0THEN该题型最少要有1道试题!
  ENDIF
 ENDIF
 IF判别题存在且分数<=0OR分数>100THEN请修正!
 ELSETOTALFEN=TOTALFEN+PDTF
 ENDIF
 IF单选题存在且分数<=0OR分数>100THEN请修正!
 ELSETOTALFEN=TOTALFEN+DXTF
 ENDIF
 IF多选题存在且分数<=0OR分数>100THEN请修正!
 ELSETOTALFEN=TOTALFEN+TSTF
 ENDIF
 IFTOTALFEN<=0ORTOTALFEN>100THEN
  总分在1---100分以内!
 ENDIF
ELSE试卷年夜题数不得为0!
 IFtesttime<=0ORtesttime>=4(hour)THEN
  测验工夫必需满意0<testtime<4(hour)!
 ENDIF
ENDIF
IF一切数据均正当THEN则将该试卷的相干信息存盘
ENDIF
  次要有上面两个子模块:

  其一:手工组卷模块

  用户提交相干限定前提,由体系依据这些前提先从年夜的局限内修改试题,稍后再手工经由过程复选按钮细选以天生本人所需的试卷,即使用现有的试题库,可体例出多份试卷。在组卷时,能够对所选的每试题举行增删,按次举行调剂,并可自行划定各年夜(小)题分数和试卷的测验工夫(默许值前已述及)。总之,能作出用户完整中意的试卷,以供在线测验或测试利用。

  其优点关头在于---选题随机性强、成卷速率较快、试卷质量高;常识审核点散布匀称,且内容掩盖面庞易把持。比方,期中测验时,只考前一半内容时,只需拔取章节码小于或即是某个指定的值,则必定不会呈现后一半内容的试题。

  其二:盘算机主动卷模块

  完整由体系主动依照"易-中-难"按次和依据用户选择的信息,天真、随机的抽取试题库中的各种试题构成试卷,试卷内容会跟着库中试题的改动而改动,试卷库中没有保留试卷的基础信息及响应的试题编号,无妨称之为举动的互动的试卷。不外,其试卷质量不高,难易水平掌控不妥,常识审核点散布不均,一样平常只作在线实习利用。

  4.3.4、进进在线科场模块

  进进在线科场是本体系十分主要的部分之一。由于一个体系假如触及到实际的话,就必需思索得非常周密、完美。考生登录后,只需输出已编纂好的试卷编号,就能够修改其试卷举行在线测验或测试,其答题信息经由过程单、复选按钮选择谜底来反应。为了避免考生屡次提交试卷和标准科场规律,接纳志愿交卷和到了划定的工夫主动收卷二者无机分离的体例、限定测验工夫和刻日和禁用鼠标等举措予以完成。但真实的无人监督的测验好象不克不及用软件完成,并且其平安性在体系计划中也很主要。因而,在计划过程当中注重了以下几个成绩:

  1、只要考生本人才干列入测验!2、测验工夫到了将主动交卷!

  3、限定提交次数,暂只供应一次时机!4、克制用户联网做弊!

上图为此模块程序计划具体流程图

  4.3.5、在线实习模块

  盘算机主动组卷模块构成的互动的试卷(卷库中没有保留此类试卷的任何信息!)是经由过程单复选按钮来反应用户的做题信息。它次要用于平常的在线实习等,让用户懂得本身的不敷,并有针对性地举行温习和练习。因而,用户做完后,只需点击"检察谜底",就能够与响应试题的尺度谜底对照,以便实时反应情形,而没有供应成就判断与剖析和工夫限定等。

  4.3.6、成就剖析与试卷评价模块

  考生每列入一次测验,体系依据已有的尺度谜底很快得銎浞质俑莶煌姆质胃鱿嘁斓钠烙铩R环矫嬗肫渌瓶忌泻嵯蚨员龋贸龈鞲隹忌涞牟畋穑涣硪环矫妫餐ü没б欢问逼谀诓渭油瓶际缘某杉醋鲎菹虮冉希靡运得髌湔莆崭每颇磕谌莸氖导食潭龋员阕龀鱿嘤Φ木龆āA硗猓芾碓毕雀鲆惶淄暾跃淼脑は绕拦溃缓笥上低匙远萃皇跃肀嗪诺乃杏没С杉ǜ銎涫导实钠拦溃⑶叶加幸桓瞿讯鹊燃叮蚜酱纹拦澜斜冉系贸龈镁淼哪岩壮潭纫约案晗傅钠拦狼榭觥?

  4.3.7、删除模块

  在全部体系中,只要体系办理员具有此权限。办理员经由过程复选按钮选择要删除的用户、留言、试卷及科目,而关于数目较年夜的试题库则经由过程输出或选择前提,便可到达删除那些过期的无用的试题,固然,关于那些歹意损坏体系的用户,办理员有权删除他,以示处分。如许便可确保数据库不至于非常复杂和其平安性。
5、ADO--ActiveXDataObject操纵数据库的几个步骤

  第一步 数据库数据来历设定。若要会见数据库,需在"把持面板"中的"ODBCDataSources",创建数据库称号(选择UsersDSN),点击"Add"按钮,选定命据库所用的驱动程序和文件等。

  第二步 利用"Server.CreateObject"创建毗连的工具,并利用"Open"翻开待会见的数据库。setadocon=Server.CreateObject("ADODB.Connection");adocon.Open"zxtest"

  第三步 设定SQL命令,利用"Execute"命令,便可入手下手实行会见数据库的举措。

sqlstr="select*fromjsjwlwherestbhlikePDorderbystbhASC"
setrs=adocon.Execute(sqlstr)′adocon为第二步所设定的工具称号
  第四步 利用Recordset工具的命令,显现了局,个中rs为第三步所界说。

rs.fields.count:纪录的字段数;
rs(i).name:第i(指针)个字段名,i由0算起到rs.fields.count-1;
rs(i):读取第i(指针)个字段的纪录,i由0算起到rs.fields.count-1;
rs("字段名"):读取指定的字段的纪录;rs.eof:是不是已指定最末条;
rs.movenext:将指针移到下一条;rs.moveprev:将指针移到上一条;
rs.movefirst:将指针移到第一条;rs.movelast:将指针移到最末条;
  第五步 利用后封闭数据库:

rs.close;adocon.close
  6、数据的平安与保密

  因为此体系的特别性,数据的平安与保密显得尤其主要。保密性是指用户在网上的一切信息应有必定的保密度,分歧范例的用户之间的内容是相互保密的。平安性是指用户列入一次举动是一个平安的历程,关于一切用户的举措,服务器都加以跟踪。为了确保其平安与保密性,一要确保考生不克不及联网做弊;二要在试卷上及时加以监控;三要在工夫上加以严厉的把持等。次要经由过程以下两种路子予以完成:

  其一,凡进进在线测验的用户,都要经由过程用户身份考证(见下图)才干进进。并且,分歧用户具有分歧的操纵权限,撑持按权限举行操纵,确保数据的大众性与公有性。不同意用户实行不法的操纵,避免用户偶然或成心的损坏。

  其二,克制用户检察一切试卷的源文件及拷贝功效,办法有二:

  1、克制利用鼠标右键等功效;

   II、试卷库中的试卷将以无下拉菜单及工具栏等的页面体例出现在扫瞄者眼前。
7、附录:源程序列表

  因为源代码单一,限于篇幅,没法逐一枚举,现只发布部分代码,详细以体系什物为准。上面是录进试题.asp文件:

<scriptlanguage="VBScript">
<!--WrittenbyHeKai2001
Functiondatacheck()确保前台输出数据正当
 dimerrflag,msg
 errflag=True
 ifLen(Trim(luru.xzsj.value))=0Then
  focusto(1);errflag=false;msg="请输出选自书本称号"
 ElseIfLen(Trim(luru.stnr.value))=0Then
  focusto(9);errflag=false;msg="试题内容呢"
 ElseIfLen(Trim(luru.A.value))=0Then
  focusto(10);errflag=false;msg="谜底_A呢"
   ┋┋┋
 ElseIfLen(Trim(luru.F.value))=0Then
  focusto(15);errflag=false;msg="请复原成默许值"
 Endif
 If(errflag=false)then
  msg=msg&vbCRLF
  MsgBoxmsg,64,"提醒"
  ExitFunction
 Endif
  datacheck=errflag;luru.Submit
EndFunction

Subfocusto(x)将鼠标定位在堕落处
document.luru.elements(x).focus()
EndSub
--></script>
  以下是录进试题.inc文件:

<scriptLanguage="VBScript"RunAt="Server">
 Functioncheck_Pass()反省库中是不是已有此数据
  kmxxmc=Request.Form("kmxxmc")
  stbh=Request.Form("stbh")stnr=Request.Form("stnr")
  SQLstr="select*from"&kmxxmc&"wherestbh="&""&stbh&""
  SQLstr=SQLstr&"ortmnr="&""&stnr&""
  setadocon=Server.CreateObject("ADODB.Connection")
  adocon.Open"zxtest"
  setsa1=adocon.Execute(SQLstr)
  Ifsa1.EOFThen
   check_Pass=False
  Else
   check_Pass=True
  EndIf
  sa1.Closeadocon.Close
EndFunction

SubAdd_Comment()入手下手拔出数据并显现出来
 Dimkmxxmc,xzsj,tmlx,nycd,jxyq,stbh,stnr
 DimA,B,C,D,E,F,bzda,lrz,Picstr,SQLstr,lr_date,zhang,jie
 kmxxmc=Request.Form("kmxxmc")xzsj=Request.Form("xzsj")
  ┋┋┋
 bzda=Request.Form("bzda")zhang=Request.form("zhang")
 setadocon=Server.CreateObject("ADODB.Connection")
 adocon.Open"zxtest"
 SQLstr="insertinto"&kmxxmc&"(xzsj,tmlx,tmnd,jxyq,stbh,tmnr, bxda_a,"
 SQLstr=SQLstr&",jie,lrz)values("&""&xzsj&","&""&tmlx&","
  ┋┋┋
 SQLstr=SQLstr&","&""&date&","&""&zhang&","&""&jie&","SQLstr=SQLstr&""&lrz&")"
 setsa1=adocon.Execute(SQLstr)
 Picstr="<imgsrc=http://edu.cnzz.cn/images/hekai.jpg>"
 Response.Write"祝贺!此为<i>"&lrz&"</i>方才录进的试题"
 Response.WritePicstr&"试题编号:"&stbh
 Response.Write"试题内容:"&stnr&"<br>"
 Response.Write"谜底_A:"&A&"<br>"
  ┋┋┋
 adocon.Close
EndSub

SubRegister()
 Ifcheck_Pass()Then假如库中已有的话,则给出提醒信息
  Show_Warning()
 Else不然增加出来
  Add_Comment()
 EndIf
EndSub

SubShow_Warning()给出提醒信息的函数
 Response.Write("<p>")
 Response.Write("<center>很抱愧<p>")
 Response.Write("库中已有此试题编号或试题内容,请前往前页修正!")
 Response.Write("</center>")
 Response.Write("Madebyhekaihimselfin2001")
EndSub
</script>

此为"检索试题"的程序代码:
<scriptLanguage="VBScript"RunAt="Server">
Functionadjust_sql(adj_str)
 目标---转换查询字符串中的特别字符至SQL指令
 Dimfinal_str,iWRITEBYHEKAI2001
 adj_str=Trim(adj_str)
 final_str=""每次从传出去的字符串中掏出一个字符,并判别是不是为下述三个字符之一:DOS的Filter标记"|"、左中括号"["和单引号""
 IfLen(adj_str)>0Then
  Fori=1ToLen(adj_str)
   SelectCaseMid(adj_str,i,1)
     Case"[":final_str=final_str&"[[]"
     Case"|":final_str=final_str&"[{-}]"
     Case"":final_str=final_str&"[&-()"
     CaseElse:以上皆非则甚么事都不做!
     final_str=final_str&Mid(adj_str,i,1)
   EndSelect
  Next
 EndIf
 adjust_sql=final_str
EndFunction

SubOutput_shiti()
 Dimkmxxmc,xzsj,stbh,zhang,jie,tmlx,nycd,jxyq,lrz,stnr,cond_count,Picstr
 DimSQLstr,mf,zhangfw,jiefw,stbhfw,nycdfw,lr_datefw,lr_date
 纪录指定前提的栏位总数
 cond_count=10;mf="%"
 Picstr="<imgsrc=http://edu.cnzz.cn/images/hk.gif>"
 获得表单栏位内容
 kmxxmc=Request.Form("kmxxmc")
 stbh=Request.Form("stbh")
  ┋┋┋
 stnr=Request.Form("stnr")
 调剂SQL指令中的特定字元
 kmxxmc=adjust_sql(kmxxmc)
 stbh=adjust_sql(stbh)
  ┋┋┋
 stnr=adjust_sql(stnr)
 IfLen(xzsj)=0Thencond_count=cond_count-1
  IfLen(stbh)=0Thencond_count=cond_count-1
  ┋┋┋
  IfLen(stnr)=0Thencond_count=cond_count-1
   SQLstr="select*from"&kmxxmc&"where"
  IfLen(stbh)>0Then
   SQLstr=SQLstr&"stbh"&stbhfw&""&stbh&""
  Ifcond_count>1Then
   SQLstr=SQLstr&"and"
   cond_count=cond_count-1
  EndIf
 EndIf
  ┋┋┋
 IfLen(stnr)>0Then
  SQLstr=SQLstr&"tmnrlike"&""&mf&stnr&mf&""
  Ifcond_count>1Then
   SQLstr=SQLstr&"and"
   cond_count=cond_count-1
  EndIf
 EndIf
 SQLstr=SQLstr&"orderbylr_dateDESC"
 setadocon=Server.CreateObject("ADODB.Connection")
 adocon.Open"zxtest"
 setsa1=adocon.Execute(SQLstr)
 Ifsa1.EOFThen
  Response.Write"<br><center><h1>"
  Response.Write"Sorry!<p>"
  Response.Write"没有找到试题,"
  esponse.Write"请重试一次!</center><p>"
  Response.Write"<hr></h1>"
 Else
  i=0
  Response.Write"<h2>"
  Response.Write"切合前提的试题相干内容以下:"
  Response.Write"</h2>"
  WhileNotsa1.EOF
   i=i+1
   Response.Write"第<i>"&i&"</i>题题编号:<i>"&sa1("stbh")&"</i><br>"
   Response.Write"试题内容:"&sa1("tmnr")&"<br>"
    ┋┋┋
  Response.Write"谜底A:"&sa1("bxda_a")&"<br>"
  sa1.MoveNext
  WEnd
  adocon.Close
 EndIf
EndSub
</script>

<%"检索试卷"的查询体例源代码
 mf="%"
 selectcaserequest("findfs")
  case"sjbh"
   sqlstr="SELECT*FROMtbsjxxWHERE"&"sjbhLIKE"
   sqlstr=sqlstr&""&mf&request("findfsz")&mf&"orderbyksrqDESC"
   ┋┋┋
  case"lr_date"
   sqlstr="SELECT*FROMtbsjxxWHERE"&"lr_dateLIKE"
   sqlstr=sqlstr&""&mf&request("findfsz")&mf&"orderbyksrqDESC"
  caseelse
   sqlstr="SELECT*FROMtbsjxxorderbyksrqDESC"
endselect%>
  上面是测验的工夫主动把持程序(便于演示只设了60秒钟,实践使用应以体系修改试卷的测验工夫为准!):

<SCRIPTlanguage=JavaScript>
<!--WritebyHEKAIforTestTimeContorl
vartimerID=null;vartimerRunning=false
varstardate=newDate();varstartime=gettotalsecond(stardate)
vartotaltime=60;varlasttime;varfacetime
functionStepclock(){
//hkmadebyhimself
if(timerRunning)
clearTimeout(timerID)
timerRunning=false}
functionstartclock(){
Stepclock();showtime()}
functiongettotalsecond(getdate){
varhours=getdate.getHours()
varminutes=getdate.getMinutes();varseconds=getdate.getSeconds()
vargettotalsecond=seconds+minutes*60+hours*3600
return(gettotalsecond)}
functionshowtime(){
varnow=newDate();vartimeValue=gettotalsecond(now)
document.clock.face.value=timeValue-startime
facetime=document.clock.face.value;lasttime=totaltime-facetime
document.clock.sytime.value=lasttime
timerID=setTimeout("showtime()",1000)
timerRunning=true
if(lasttime==20){
for(i=1;i<=3;i++){
alert(测验工夫只剩下最初20秒!)}}
if(lasttime==0){
for(i=1;i<=5;i++){
alert(工夫终了!请敏捷交卷!!)}}
if(lasttime==-10){
for(i=1;i<=10;i++){
alert(测验工夫凌驾10秒,封闭此窗口!)}}
}//-->
</SCRIPT>
  8、跋文

  此体系从研讨计划到投进实践使用用时4个月之余,经由过程屡次仔细的测试及判定,证实体系完整具有可行性与可扩大性,就比来传来的动静,该体系取得了湖南省科技厅的广泛好评。别的,体系另有待于进一步晋级,并将完成试卷的客观题部分和多媒体试卷。因而,仍有大批的事情必要展开。如有或不当的地方,请您以使用程序为准和提出优秀的定见与倡议。


Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;

不帅 发表于 2015-1-19 19:30:20

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

老尸 发表于 2015-1-28 09:49:05

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

兰色精灵 发表于 2015-2-12 07:22:44

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

莫相离 发表于 2015-3-3 00:04:12

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

谁可相欹 发表于 2015-3-11 07:52:19

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

冷月葬花魂 发表于 2015-3-17 23:31:26

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

透明 发表于 2015-3-25 07:50:08

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
页: [1]
查看完整版本: ASP教程之用ASP开辟试题库与在线测验体系