利用ASP和Access数据库制作局域网网上答题系统

 信息社会对人的学历、素质要求越来越高,人们为了找到前途更好、收入更加诱人的工作岗位,必须通过各种各样的考试如注册会计师资格考试、司法资格考试等等,而各种各样的试题资料也应运而生,但所有的资料所共有的一个缺点就是使用上的不方便、不灵活、及效率不高,本网上答题系统正是为了弥补这些诸多不便而编制的、适合于局域网并能在单机上运行的系统,下面就详细介绍本系统的编制及使用方法。 
一、界面  
如图所示:  

二、程序组成 
本系统由Index. asp、Lkzk.asp、Save.asp、Db0.fun 四个小程序及Access数据库文件lkzk.mdb组成各程序的功能分别是: 
1. Index. asp 是框架网页,负责导入Lkzk.asp、Save.asp两个子网页组成完整的程序页面。 
2. Lkzk.asp 是随机出题答题的交互页面生成程序,主要完成随机选题、题目显示、答案输入及正确率、总答题数显示等功能。 
3. Save.asp 完成答题正误判断、显示及成绩登记(按客户端IP地址)。 
4. Db0.fun 包含打开Access数据库的多个函数(Lkzk.asp、Save.asp都用到的)。 
5. lkzk.mdb Access数据库文件,由表“IP”和表“题库”组成。 
表(IP)由编号字段ID(数字格式)、客户机地址字段IP(文本格式)、错误答案数字段nnn(数字格式)、正确答案数字段yyy(数字格式) 所组成; 
表“题库” 由题号字段ID(数字格式)、单选多选标记字段dx(数字格式)、答案字段xz(文本格式)、试题内容字段na(备注格式)所组成。(注:试题内容的选择部分必须为“A. …… B. …… C. …… D. ……” 格式) 
--------------- Index. Asp----------------- 
<html> 
<head> 
<title>网上司考试题库</title> 
</head> 
<frameset rows="87%,*" framespacing="0"> 
<frame name="top" src="lkzk.asp" scrolling="auto"> 
<frame name="bottom" scrolling="auto" marginwidth="0" marginheight="0"> 
<noframes> 
<body> 
<p>此网页使用了框架,但您的浏览器不支持框架。</p> 
</body> 
</noframes> 
</frameset> 
</html> 
--------------Lkzk.asp------------- 
<!-- #include virtual="/lkzk/DB0.fun" --> 
<% 
Set rsu2 = GetMdbStaticRecordset("lkzk.mdb", "IP")  
Set rs = GetMdbStaticRecordset("lkzk.mdb", "题库") 
%> 
<HTML> 
<head> 
<title>网上司考试题库</title> 
</head> 
<BODY > 
<font size="4" color="#000080">司考试题库  
<%  
ClientIP = Request.ServerVariables("REMOTE_ADDR")  
userIP=Right(ClientIP,Len(ClientIP)-InStrRev(ClientIP,"."))  
rsu2.AbsolutePosition=userIP  
Randomize  
I=Fix(Rnd*1800)  
rs.AbsolutePosition=I+1  
%>  
总第<%=CStr(I+6)%>题  <%'=rs("type")%> 
<FORM Action=save.asp Method=GET target="bottom"> 
<INPUT Type=Hidden Name=AI Value="<%=I%>"> 
<HR> 
<% s=rs("na") 
x=InStr(s,"A.") 
sx="多选"  
if rs("dx")=0 then  
sx="单选"  
end if %>  
<%=Left(s,x-1)%> '显示除选择部分外的试题内容 
<font color="red">  
<%=sx%> <BR> '显示是单选还是多选题 
</font> 
<% s=Right(s,Len(s)-x+1)  
x=InStr(s,"B.") %> '以下开始显示复选框及选择部分 
<INPUT Type=CheckBox Name=A Value="a"> 
<%=Left(s,x-1)%><BR>  
<%s=Right(s,Len(s)-x+1) 
x=InStr(s,"C.")%>  
<INPUT Type=CheckBox Name=A Value="b"> 
<%=Left(s,x-1)%><BR>  
<%s=Right(s,Len(s)-x+1) 
x=InStr(s,"D.")%>  
<INPUT Type=CheckBox Name=A Value="c"> 
<%=Left(s,x-1)%><BR>  
<%s=Right(s,Len(s)-x+1)%>  
<INPUT Type=CheckBox Name=A Value="d"> <%=s%>  
<BR>  
<INPUT Type=Submit Value="查看答案">  
<a href="lkzk.asp" target="_self">继续做题</a> <BR> 
<%if rsu2("nnn")+rsu2("yyy")=0 then rsu2("yyy")=1 end if%> 
正确率:<%=FormatNumber(rsu2("yyy")/(rsu2("nnn")+rsu2("yyy"))*100, 2, True)%>%  
总答题数:<%=rsu2("nnn")+rsu2("yyy")%> 
</form> 
</font> 
</BODY>  
-----------------Save.asp------------------- 
<!-- #include virtual="/lkzk/DB0.fun" --> 
<% 
Set rsu2 = GetMdbStaticRecordset("lkzk.mdb", "IP")  
Set rs = GetMdbStaticRecordset("lkzk.mdb", "题库") 
%> 
<HTML> 
<BODY > 
<% I=CInt(Request("AI")) 
rs.AbsolutePosition=I+1 
ssx="错"  
A=Replace( Request("A"), ", ", "" ) 
if A=rs("xz") then '判断答题正误 
ssx="对"  
end if 
%>  
<FONT Color=Red> 
您答<%=ssx%>了 '显示答案正误等信息 
</FONT> 
试题库总第<%=CStr(I+1+5)%>题 您的答案是:<%=A%>  
参考答案是:<%=rs("xz")%>  
<%  
ClientIP = Request.ServerVariables("REMOTE_ADDR")  
userIP=Right(ClientIP,Len(ClientIP)-InStrRev(ClientIP,".")) 
rsu2.AbsolutePosition=userIP  
rsu2.Update  
If ssx="对" then 
rsu2("yyy") =rsu2("yyy")+1  
End if 
if ssx<>"对" then  
rsu2("nnn") =rsu2("nnn")+1  
End if 
rsu2.Update '以下将正误结果记录于数据库表“IP”中 
%>  
</BODY>  
</HTML>  
--------------Db0.fun---------------- 
<% ' 以下为函数程序 
'--------------------------------------------------- 
Function GetMdbConnection( FileName ) 
Dim Provider, DBPath 
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;" 
DBPath = "Data Source=" & Server.MapPath(FileName) 
Set GetMdbConnection = GetConnection( Provider & DBPath ) 
End Function 
'--------------------------------------------------- 
Function GetMdbRecordset( FileName, Source ) 
Set GetMdbRecordset = GetMdbRs( FileName, Source, 2, "" ) 
End Function 
'--------------------------------------------------- 
Function GetMdbStaticRecordset( FileName, Source ) 
Set GetMdbStaticRecordset = GetMdbRs( FileName, Source, 3, "" ) 
End Function 
'--------------------------------------------------- 
Function GetConnection( Param ) 
Dim conn 
On Error Resume Next 
Set GetConnection = Nothing 
Set conn = Server.CreateObject("ADODB.Connection") 
If Err.Number <> 0 Then Exit Function 
conn.Open Param 
If Err.Number <> 0 Then Exit Function 
Set GetConnection = conn 
End Function 
'--------------------------------------------------- 
Function GetMdbRs( FileName, Source, Cursor, Password ) 
Dim conn, rs 
On Error Resume Next 
Set GetMdbRs = Nothing 
If Len(Password) = 0 Then 
Set conn = GetMdbConnection( FileName ) 
Else 
Set conn = GetSecuredMdbConnection( FileName, Password ) 
End If 
If conn Is Nothing Then Exit Function 
Set rs = Server.CreateObject("ADODB.Recordset") 
If Err.Number <> 0 Then Exit Function 
rs.Open source, conn, Cursor, 2 
If Err.Number <> 0 Then Exit Function 
Set GetMdbRs = rs 
End Function 
'--------------------------------------------------- 
%> 
三、运行方法 
本系统运行方法是先按文中所述格式制作好试题库文件Lkzk.mdb连同上列四个程序COPY至主机的WWW 的根目录中并执行http://主机IP地址/Index.asp即可进行答题。(本程序在单机windows98+pws+ODBC驱动 及局域网windowsNT Server4.0 +IIS4.0+ODBC驱动 环境下均测试通过,各用户可以根据具体情况对程序中的标题稍加修改制作自己的试题库系统,还可以对其进行扩充增加各类其它功能,在这里因篇幅关系就不再敷述,有关ODBC驱动的详细情况可参阅相关资料或给我来信mailto: intcom@21cn.com 。 

时间: 2016-07-02

利用ASP和Access数据库制作局域网网上答题系统的相关文章

如何通过ASP在ACCESS数据库新建表(自动编号ID)

access|数据库 下面代码是一个最简单的利用ASP创建ACCESS表的示例代码,创建的ID编号为自动编号.   <%dim conn dim dbpath set conn=server.createobject("adodb.connection") dbpath=Server.mappath("data/data.mdb") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=&qu

利用asp.net从数据库中传出数据,导入EXCEL中

问题描述 Excel具有强大的报表等功能,通过对excel和VBA进行设计和编程可以制作强大的报表系统.毕业设计管理系统软件在完成主要的业务处理后,需要处理大量的不同需求的报表.本课题在调查毕业设计系统报表需求的基础上,利用asp.net从数据库中传出数据,导入EXCEL中,制做毕业设计管理系统的所有报表,以及打印功能 解决方案 解决方案二:henhaozuodejietieba

AJAX教程实例,ASP+AJAX+ACCESS数据库应用教程(附源码)

access|asp+|数据|数据库|ajax教程 AJAX教程实例[阿里西西原创]  其实说起AJAX的初级应用是非常简单的,通俗的说就是客户端(javascript)与服务端(asp或php等)脚本语言的数据交互. 看完本篇ajax实例教程,我相信你也可以轻松做出一个初级的AJAX应用. 你也可以直接访问:http://www.alixixi.com/web/web/ajax/jiaocheng.html预览此篇ajax教程的源码示例. 好,下面我们就始一步步让你了解AJAX+ASP基础应用

用ASP实现Access数据库查询

access|数据|数据库 ---- 本文着重介绍通过IIS4.0服务管理中ASP脚本语言实现访问Access数据库,至于如何创建系统DSN这里一带而过,有兴趣的读者自己可以去试一试. ----首先,创建一个Access数据库,其中含有姓名.部门名称.部门费用的字段名. ----其次,在安装IIS4.0的WWW服务器上,打开ODBC,创建系统DSN,数据源名ABC,选取对应的Access数据库,建立好后就可以开始写ASP程序了. ----根据需要我们想对Access数据库中的部门名称按照不同的部

mfc利用ado链接access数据库

问题描述 mfc利用ado链接access数据库 1C 连接之后并没有自动生成一些和ado相关的类,是正常的么... 解决方案 MFC利用ADO操作Access数据库VC ADO链接ACCESS数据库C#链接ACCESS数据库 解决方案二: [http://blog.sina.com.cn/s/blog_610c1cad0100yhrr.html] 解决方案三: // UserData.cpp : implementation file//#include ""stdafx.h&quo

asp中网access数据库中插入数据乱码

问题描述 asp中网access数据库中插入数据乱码 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> meta http-eq

ASP+AJAX+ACCESS数据库实例讲解三个步骤分享_AJAX相关

看完本篇ajax实例教程,我相信你也可以轻松做出一个初级的AJAX应用. 你也可以直接访问:http://www.jb51.net/codes/57017.html 下载ajax教程的源码示例. 好,下面我们就始一步步让你了解AJAX+ASP基础应用,我们将分三步讲解,如下. 1. 前台AJAX代码(javascript)的创建. 2. 后台服务端ASP AJAX代码的编写. 3. ASP+AJAX+数据库的实例演示及讲解. 第一步:前台AJAX代码(javascript)的创建. 我们先创建一

asp连接access数据库 方法

asp数据库连接方法很多的特别是asp与access数据库有几种今天我们讲到的连接access数据库 可以说是最好的方法了 先定义了Rs,Conn为全局变量,这样在其它文件调整当前文件时就可以直接使用了.  Dim Rs,Conn    Sub Db_connect()   Dpath ="dbaseMateyDBWeb_^%$#@.mdb"   Set Conn=Server.CreateObject("Adodb.connection")   Set Rs =S

ASP+AJAX+ACCESS数据库实例讲解三个步骤分享

看完本篇ajax实例教程,我相信你也可以轻松做出一个初级的AJAX应用. 你也可以直接访问:http://www.jb51.net/codes/57017.html 下载ajax教程的源码示例. 好,下面我们就始一步步让你了解AJAX+ASP基础应用,我们将分三步讲解,如下. 1. 前台AJAX代码(javascript)的创建. 2. 后台服务端ASP AJAX代码的编写. 3. ASP+AJAX+数据库的实例演示及讲解. 第一步:前台AJAX代码(javascript)的创建. 我们先创建一