如何用asp实现多选题判分

pt123456 2005-04-02 10:34:41
多选没有分
少选给一半分
错选不给分
正确给全分

请多帮助,
分不够再加





<!-- #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"
%>


...全文
259 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodstuday 2005-04-03
  • 打赏
  • 举报
回复
'设正确答案Str,考生回答为Answer
Str="B,D"
if Str=Answer then
'给全分
elseif instr(Str,Answer)>0 then
'给一半分
else
'不给分
end if
spec_lc 2005-04-03
  • 打赏
  • 举报
回复
呵呵,其实有时候自己搞明白收获会更大
pt123456 2005-04-03
  • 打赏
  • 举报
回复
自己搞定了,
一个晚上的时间

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧