Контрольное тестирование
<%
If Session("conn") = "0" Then
ConnectionString = "DSN=tests;DBQ=C:\InetPub\wwwroot\sources\zonna\test.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;providerName=System.Data.Odbc"
Set objConn = server.createobject("ADODB.Connection")
objConn.Open(ConnectionString)
Session("conn") = "1"
Session("allq") = "0"
Session("allr") = "0"
Session("count5") = "0" 'objRS(0) 'количество вопросов, заданных из каждой таблицы
'строки заданных вопросов для каждой таблицы
Session("strq5") = ""
strQuery = "SELECT tablecount FROM kontrol"
strQuery = strQuery & " WHERE id_theme= 5"
Set objRS = objConn.Execute(strQuery)
Session("coun") = objRS(0) 'число повторений цикла для подсчета числа вопросов
Else
ConnectionString = "DSN=tests;DBQ=C:\InetPub\wwwroot\sources\zonna\test.mdb;DriverId=25;FIL=MS 'Access;MaxBufferSize=2048;PageTimeout=5;providerName=System.Data.Odbc"
Set objConn = server.createobject("ADODB.Connection")
objConn.Open(ConnectionString)
End if
Session("page") = "kontrol_5.asp"
vsego1 = Session("coun") 'всего вопросов
vsego = Session("allq") 'уже задано
vsego1=cint(vsego1)
vsego=cint(vsego)
'----------------------------------------------------------------------------------
if vsego1 > vsego then
'если количество заданных вопросов меньше их числа в таблице контрол? vsego нужно уменьшать
quetable = 5
tablename = "questions5"
'----------------------------выбор номера вопроса из уже выбранной таблицы
sto1 = "true"
while sto1
strQuery = "SELECT Count(*) FROM "& tablename
Set countt = objConn.Execute(strQuery)
vsevopr = countt(0)
vsevopr = cint(vsevopr)
Session("coun") = cint(Session("coun"))
if vsevopr < Session("coun") then session("coun") = vsevopr
randomize
numque = int(Rnd() * vsevopr + 1) 'проверяемый номер вопроса
'--------------------------------------------------------
flag="0"
numque = cint(numque)
if numque < 10 then numque = "0" & numque end if
'организовать проверку вопроса. Вначале выбрать таблицу, затем как обычно: из тестингов
strq = Session("strq5")
for j=0 to vsego1-1
tek = mid (strq, j*3 +1 , 3)
tek = trim(tek)
'Response.Write "
tek" & j & " : x" & tek & "x
"
numque = Cstr(numque)
tek = CStr(tek)
if numque = tek then
flag="1"
'tek = cint(tek)
'Response.Write "
Флаг:" & flag & "
"
end if
next
'добавление вопросов к соответствующей строке вопросов, после проверки вопроса на вшивость
if flag = "0" then
sto1 = "false"
Session("strq5") = Session("strq5")&" "&numque
end if
'Response.Write "
строка вопросов" & Session("strq5") & "
"
wend
'-------------------------------------------------задание вопроса из нужной таблицы tablename с нужным номером numque
strQuery = "SELECT * FROM " & tablename
strQuery = strQuery & " WHERE id_quest= " & numque
Set objRS = objConn.Execute(strQuery)
If objRS.EOF Then
Response.Write "
В базе данных нет записей.
"
Else
que = objRS(1)
an1 = objRS(2)
an2 = objRS(3)
an3 = objRS(4)
an4 = objRS(5)
an5 = objRS(6)
Session("ran") = objRS(7) 'верный ответ
End If
%>
<%
'-----------------------------------------
else 'вопросы кончились
session("mark")=round(session("allr")*5/session("allq"))
if session("mark")<2 Then session("mark") = "2" End If
Response.Write "Верных ответов: " & session("allr") & ""
Response.Write "Всего вопросов: " & session("allq") & ""
Response.Write "Ваша оценка: " & session("mark") & ""
Session("allq") = "0"
Session("allr") = "0"
Session("conn") = "0"
%>
<%
end if
'Закрытие подключения.
objConn.Close
%>