精灵巫婆 发表于 2015-1-16 22:30:02

ASP网站制作之用ASP开辟试题库与在线测验体系(8)

缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全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个月之余,经由过程屡次仔细的测试及判定,证实体系完整具有可行性与可扩大性,就比来传来的动静,该体系取得了湖南省科技厅的广泛好评。别的,体系另有待于进一步晋级,并将完成试卷的客观题部分和多媒体试卷。因而,仍有大批的事情必要展开。如有或不当的地方,请您以使用程序为准和提出优秀的定见与倡议。
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。

老尸 发表于 2015-1-19 15:29:26

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

冷月葬花魂 发表于 2015-1-19 15:29:28

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

若天明 发表于 2015-1-27 23:37:09

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

深爱那片海 发表于 2015-2-5 14:01:44

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

若相依 发表于 2015-2-12 02:03:23

运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。

再见西城 发表于 2015-3-2 20:59:58

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

分手快乐 发表于 2015-3-11 06:19:04

掌握asp的特性而且一定要知道为什么。

莫相离 发表于 2015-3-17 22:10:48

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。

兰色精灵 发表于 2015-3-25 04:10:45

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
页: [1]
查看完整版本: ASP网站制作之用ASP开辟试题库与在线测验体系(8)