admincreatepaper3.asp

来自「网络考试系统最终备份」· ASP 代码 · 共 807 行 · 第 1/2 页

ASP
807
字号
<!--#include file="conn.inc"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>生成试卷</title>
<link rel="stylesheet" type="text/css" href="css.css">
</head>

<body>
<%
'从试卷基本信息表paper_info中提取所需信息并录如监考老师信息
v_PaperID=session("TempPaperid")
sql="select * from paper_info where PaperID="&v_PaperID&""
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
rs("Monitor_User_ID")=request("moniUser")

v_papername=rs("PaperName")
v_subjectid=rs("Sub_ID")
v_totalper=rs("TotalPer")
v_singlecount=rs("SingleCount")
v_multicount=rs("MultiCount")
v_judgecount=rs("JudgeCount")
v_singleper=rs("SinglePer")
v_multiper=rs("MultiPer")
v_judgeper=rs("JudgePer")

v_paperdifficultyrate=rs("TestDiffRate")
rs("Paper_Type")=0
rs.update
rs.close

'将考生信息录入考生信息表test_user
userid=split(request("userid"),",")
i=ubound(userid)
v_PaperID=session("TempPaperid")

for j=0 to i
randomize timer
sql="select * from test_user"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
rs.addnew

vuid =trim(userid(j))
rs("Paper_ID")=v_PaperID
rs("User_ID")=vuid
rs("isTest")=0
rs.update
rs.close
next

'将考试计划录入等待通过的信息表waitforpass
sql="select * from waitforpass"
'set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
rs.addnew
v_id=1+fix(10000*Rnd)
rs("id")=v_id
rs("objid")=v_PaperID
rs("objname")="考试计划"
rs("passuserid")=request("shenhr")
rs("havepass")=0
rs.update
rs.close


%>
<form name="form1" method="post" action="news.asp">
<%
grade=formatnumber(v_paperdifficultyrate/v_totalper,2)  'grade为试卷的难度等级
grade=int(grade*10)


r1=0'r1-r5为难度系数为1-5的题的百分比
r2=0
r3=0
r4=0
r5=0
select case grade
 case 9  '90分以上
   r1=40
   r2=30
   r3=15
   r4=10
   r5=5
 case 8  '80分-90分
   r1=30
   r2=25
   r3=15
   r4=15
   r5=15
 case 7  '70分-80分
   r1=20
   r2=20
   r3=15
   r4=20
   r5=25
 case 6  '60分-70分
   r1=10
   r2=15
   r3=15
   r4=25
   r5=35
 case else  '60分以下
   r1=5
   r2=10
   r3=15
   r4=30
   r5=40
end select


sql="select * from paper_info where PaperID="&v_PaperID&""
'set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
vknowledge=rs("PKnow_ID")
knowledge=split(vknowledge,",")
rs.close
set rs=nothing

nCount=ubound(knowledge)
dim knowledgearray(7)
for iCount=0 to 7
 knowledgearray(iCount)=0
next
for iCount=0 to nCount
 knowledgearray(iCount)=knowledge(iCount)
next



SCount=0 '计数器,确定当前单选题数目
MCount=0 '计数器,确定当前多选题数目
JCount=0 '计数器,确定当前判断题数目
ACount=0 '存放所选题号的数组的下标
sNoumber=1 '试卷页面的题号
dim Ques(999) '存放所选题的题号的数组
dim Questype(999) '存放所选题的题型的数组

'选出符合条件的单选题
randomize
sql1="select * from question_database where Que_Type=0 and Sub_ID="&v_subjectid&" and DiffRate=1 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,conn,3,2
 for iCount=1 to (v_singlecount*r1/100)
   'count1=rs1.recordcount
  ' temp=fix(count1*rnd)+1
  'while temp <= 0 or temp >=count1
   '  temp=fix(count*rnd)
 ' wend
   if not rs1.eof then
     Ques(ACount)=rs1("QueID")
	 Questype(ACount)=rs1("Que_Type")
     ACount=ACount+1
     SCount=SCount+1
    ' rs1.move temp
     rs1("QueMark")=1
     rs1.movenext
   end if
 next
 rs1.close
 set rs1=nothing
sql2="select * from question_database where Que_Type=0 and Sub_ID="&v_subjectid&" and DiffRate=2 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs2=server.createobject("adodb.recordset")
rs2.open sql2,conn,3,2
 for iCount=1 to (v_singlecount*r2/100)
  ' count1=rs2.recordcount
   'temp=fix(count1*rnd)+1
 ' while temp <= 0 or temp >=count1
 '  '  temp=fix(count1*rnd)
  'wend
   if not rs2.eof then
     Ques(ACount)=rs2("QueID")
	 Questype(ACount)=rs2("Que_Type")
     ACount=ACount+1
     SCount=SCount+1
     'rs2.move temp
     rs2("QueMark")=1
     rs2.movenext
   end if
 next
 rs2.close
 set rs2=nothing
sql3="select * from question_database where Que_Type=0 and Sub_ID="&v_subjectid&" and DiffRate=3 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs3=server.createobject("adodb.recordset")
rs3.open sql3,conn,3,2
 for iCount=1 to (v_singlecount*r3/100)
   'count1=rs3.recordcount
   'temp=fix(count1*rnd)+1
  'while temp <= 0 or temp >=count1
     'temp=fix(count1*rnd)
 ' wend
   if not rs3.eof then
     Ques(ACount)=rs3("QueID")
	 Questype(ACount)=rs3("Que_Type")
     ACount=ACount+1
     SCount=SCount+1
     'rs3.move temp
     rs3("QueMark")=1
     rs3.movenext
   end if
 next
 rs3.close
 set rs3=nothing
sql4="select * from question_database where Que_Type=0 and Sub_ID="&v_subjectid&" and DiffRate=4 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs4=server.createobject("adodb.recordset")
rs4.open sql4,conn,3,2
 for iCount=1 to (v_singlecount*r4/100)
   'count1=rs4.recordcount
   'temp=fix(count1*rnd)+1
 ' while temp <= 0 or temp >=count1
    ' temp=fix(count1*rnd)
 ' wend
   if not rs4.eof then
     Ques(ACount)=rs4("QueID")
	 Questype(ACount)=rs4("Que_Type")
     ACount=ACount+1
     SCount=SCount+1
     'rs4.move temp
     rs4("QueMark")=1
     rs4.movenext
   end if
 next
 rs4.close
 set rs4=nothing
sql5="select * from question_database where Que_Type=0 and Sub_ID="&v_subjectid&" and DiffRate=5 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs5=server.createobject("adodb.recordset")
rs5.open sql5,conn,3,2
 for iCount=1 to (v_singlecount*r5/100)
  ' count1=rs5.recordcount
   'temp=fix(count1*rnd)+1
 ' while temp <= 0 or temp >=count1
     'temp=fix(count1*rnd)
'  wend
   if not rs5.eof then
     Ques(ACount)=rs5("QueID")
	 Questype(ACount)=rs5("Que_Type")
     ACount=ACount+1
     SCount=SCount+1
     'rs5.move temp
     rs5("QueMark")=1
     rs5.movenext
   end if
 next
 rs5.close
 set rs5=nothing
'若产生单选题数目不够,则继续添加
if (v_singlecount-SCount)<>0 then
sql="select * from question_database where Que_Type=0 and Sub_ID="&v_subjectid&" and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
for iCount=1 to (v_singlecount-SCount)
   'count1=rs.recordcount
  ' temp=fix(count1*rnd)+1
 ' while temp <= 0 or temp >=count1
   '  temp=fix(count1*rnd)
 ' wend
   if not rs.eof then
     Ques(ACount)=rs("QueID")
	 Questype(ACount)=rs("Que_Type")
     ACount=ACount+1
     SCount=SCount+1
     'rs.move temp
     rs("QueMark")=1
     rs.movenext
   end if
 next
 rs.close
 set rs=nothing
end if





'选出符合条件的多选题
sql1="select * from question_database where Que_Type=1 and Sub_ID="&v_subjectid&" and DiffRate=1 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,conn,3,2
 for iCount=1 to (v_multicount*r1/100)
   'count1=rs1.recordcount
   'temp=fix(count1*rnd)+1
  'while temp <= 0 or temp >=count1
   '  temp=fix(count1*rnd)
 ' wend
   if not rs1.eof then
     Ques(ACount)=rs1("QueID")
	 Questype(ACount)=rs1("Que_Type")
     ACount=ACount+1
     MCount=MCount+1
     'rs1.move temp
     rs1("QueMark")=1
     rs1.movenext
   end if
 next
 rs1.close
 set rs1=nothing
sql2="select * from question_database where Que_Type=1 and Sub_ID="&v_subjectid&" and DiffRate=2 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs2=server.createobject("adodb.recordset")
rs2.open sql2,conn,3,2
 for iCount=1 to (v_multicount*r2/100)
   'count1=rs2.recordcount
   'temp=fix(count1*rnd)+1
  'while temp <= 0 or temp >=count1
     'temp=fix(count1*rnd)
 ' wend
   if not rs2.eof then
     Ques(ACount)=rs2("QueID")
	 Questype(ACount)=rs2("Que_Type")
     ACount=ACount+1
     MCount=MCount+1
     'rs2.move temp
     rs2("QueMark")=1
     rs2.movenext
   end if
 next
 rs2.close
 set rs2=nothing
sql3="select * from question_database where Que_Type=1 and Sub_ID="&v_subjectid&" and DiffRate=3 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs3=server.createobject("adodb.recordset")
rs3.open sql3,conn,3,2
 for iCount=1 to (v_multicount*r3/100)
   'count1=rs3.recordcount
  ' temp=fix(count1*rnd)+1
  'while temp <= 0 or temp >=count1
     'temp=fix(count1*rnd)
 ' wend
   if not rs3.eof then
     Ques(ACount)=rs3("QueID")
	 Questype(ACount)=rs3("Que_Type")
     ACount=ACount+1
     MCount=MCount+1
     'rs3.move temp
     rs3("QueMark")=1
     rs3.movenext
   end if
 next
 rs3.close
 set rs3=nothing
sql4="select * from question_database where Que_Type=1 and Sub_ID="&v_subjectid&" and DiffRate=4 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs4=server.createobject("adodb.recordset")
rs4.open sql4,conn,3,2
 for iCount=1 to (v_multicount*r4/100)
   'count1=rs4.recordcount
   'temp=fix(count1*rnd)+1
  'while temp <= 0 or temp >=count1
    ' temp=fix(count1*rnd)
  'wend
   if not rs4.eof then
     Ques(ACount)=rs4("QueID")
	 Questype(ACount)=rs4("Que_Type")
     ACount=ACount+1
     MCount=MCount+1
     'rs4.move temp
     rs4("QueMark")=1
     rs4.movenext
   end if
 next
 rs4.close
 set rs4=nothing
sql5="select * from question_database where Que_Type=1 and Sub_ID="&v_subjectid&" and DiffRate=5 and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs5=server.createobject("adodb.recordset")
rs5.open sql5,conn,3,2
 for iCount=1 to (v_multicount*r5/100)
   'count1=rs5.recordcount
   'temp=fix(count1*rnd)+1
  'while temp <= 0 or temp >=count1
    ' temp=fix(count1*rnd)
  'wend
   if not rs5.eof then
     Ques(ACount)=rs5("QueID")
	 Questype(ACount)=rs5("Que_Type")
     ACount=ACount+1
     MCount=MCount+1
    ' rs5.move temp
     rs5("QueMark")=1
     rs5.movenext
   end if
 next
 rs5.close
 set rs5=nothing
'若产生多选题数目不够,则继续添加
if (v_multicount-MCount)<>0 then
sql="select * from question_database where Que_Type=1 and Sub_ID="&v_subjectid&" and QueMark=0 and Knowledge_ID in ("&knowledgearray(0)&","&knowledgearray(1)&","&knowledgearray(2)&","&knowledgearray(3)&","&knowledgearray(4)&","&knowledgearray(5)&","&knowledgearray(6)&","&knowledgearray(7)&")"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
for iCount=1 to (v_multicount-MCount)
   'count1=rs.recordcount
   'temp=fix(count1*rnd)+1
  'while temp <= 0 or temp >=count1
    ' temp=fix(count1*rnd)
 ' wend
   if not rs.eof then
     Ques(ACount)=rs("QueID")
	 Questype(ACount)=rs("Que_Type")
     ACount=ACount+1
     MCount=MCount+1
    ' rs.move temp
     rs("QueMark")=1
     rs.movenext
   end if
 next
 rs.close

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?