如何用asp实现多选题判分
多选没有分
少选给一半分
错选不给分
正确给全分
请多帮助,
分不够再加
<!-- #include file="ConnDB.asp" -->
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<link rel="stylesheet" type="text/css" href="css.css">
<%
sql="select * from systemtable where 是否考试='1'"
set rs=server.createobject("adodb.recordset")
rs.open sql,Conn,3,2
subject=rs("科目")
subject=trim(subject)
singlecount=rs("单选题题量")
singleper=rs("单选题分数")
multicount=rs("多选题题量")
multiper=rs("多选题分数")
judgecount=rs("判断题题量")
judgeper=rs("判断题分数")
fillcount=rs("填空题题量")
fillper=rs("填空题分数")
subjectivitycount=rs("大题题量")
subjectivityper=rs("大题分数")
testtime=rs("时间")
testid=request.cookies("TestId")
response.cookies("subject") = subject
Bj = Request.cookies("Bj")
testid=request.cookies("TestId")
rs.close
set rs=nothing
%>
<%
score=0
score1=0
score2=0
j=0
bz=1
'for each element in request.form
' for i=1 to request.form(element).count
for each cookiesname in request.cookies
'for i=1 to request.cookies(cookiesname).haskeys
if instr(cookiesname,"NO")<>0 then
ID=mid(cookiesname,13)
result=request.cookies(cookiesname)
' response.write result
'q = request.Cookies(cookiesname).haskeys
' response.write q
sql="select * from "&subject&" where ID="& cint(ID)
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
if rs("题型")="单选题 " then
if result=rs("正确答案") then
score=score+cint(singleper)
end if
end if
if rs("题型")="多选题 " then
answer=rs("正确答案")
answercount=len(answer)
'response.Write answercount
if request.cookies("NO_multi*_1_" & rs("ID")) ="A"then
tm="A|"
tmt="A"
else
tm=" |"
end if
if request.cookies("NO_multi*_2_" & rs("ID")) ="B"then
tm=tm & "B|"
tmt=tmt & "B"
else
tm=tm & " |"
end if
if request.cookies("NO_multi*_3_" & rs("ID")) ="C"then
tm=tm & "C|"
tmt=tmt & "C"
else
tm=tm & " |"
end if
if request.cookies("NO_multi*_4_" & rs("ID")) ="D"then
tm=tm & "D|"
tmt=tmt & "D"
else
tm=tm & " |"
end if
strnum = split(tm,"|") '学生答案数组
strnumcount=len(tmt) '学生答案长度
'response.Write strnum(0)
'response.Write strnum(1)
'response.Write strnum(2)
'response.Write strnum(3)
'response.Write tm
'response.Write tmt
if strnumcount>answercount then
score1=0
end if
if strnumcount=answercount then
if instr(answer,tmt)<>0 then
score1=cint(multiper)
else
score1=0
end if
end if
if strnumcount<answercount then
下面这里这么实现,少选时用什么算法
if ((instr(answer,strnum(0))=0) or (instr(answer,strnum(1))=0) or (instr(answer,strnum(2))=0) or (instr(answer,strnum(3))=0)) then
score1 =0
else
score1=cint(multiper)/2
end if
end if
end if
if rs("题型")="判断题 " then
if rs("正确答案")=result then
score2=score2+cint(judgeper)
end if
end if
end if
'next
next
Response.Write score1
'Response.Write answercount
sql="select * from "&testid&""
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
do while not rs.eof
rs("成绩")=score2+score1+score
rs.update
rs.movenext
loop
rs.close
set rs=nothing
sql="select * from studenttable where 姓名='"&request.cookies("UserName")&"' and 班级='"&request.cookies("Bj")&"'"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,3
rs("考试状态")="正在考试"
rs.update
rs.close
set rs=nothing
'response.redirect "displayresult.asp"
%>