help!!帮我看看。。。
做的是一个网上考试模块,其中有一部分是随机抽题,有五个库,每次分别从五个库中随机抽出五道题,可是按下面的程序,每次都无法抽满25道题,总是有一两个库少抽了一两题,有时同一个库里还会抽重复,高手帮我看看,哪里要修改的,谢谢。。。 dim rs
dim conn
dim connstr
dim k '从每个库中要抽的题数
dim array(4) '存放抽到的题号
connstr = "DBQ=" + server.mappath("/fpdb/News.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
For i=0 to 4
select case i
case 0
sql="select * from xz1 order by 题号 desc"
case 1
sql="select * from xz2 order by 题号 desc"
case 2
sql="select * from xz3 order by 题号 desc"
case 3
sql="select * from xz4 order by 题号 desc"
case 4
sql="select * from xz5 order by 题号 desc"
end select
set rs=conn.execute(sql)
If not rs.Bof then
rs.MoveFirst
End If
max=rs("题号")
k=0
Do While k<=4
randomize()
num=Int(max*RND)+1 '产生一个随机数
If k<>0 then
m=0
Do until m>=k '判断该题是否被抽过
If array(m)=num then
num=Int(max*RND)+1 '重新生成一个随机数
m=0
Else
m=m+1
End If
Loop
End If
dim have
If not rs.bof then
rs.MoveFirst
End If
Do While Not rs.Eof '判断库中是否有该题
If rs("题号")=num then '将抽好的题存入临时表中
array(k)=num
sql="Insert Into randompaper(考生,题目,备选项1,备选项2,备选项3,备选项4,正确答案,图片位置,命令语句)"
sql=sql &" values ('"&user&"','"&rs("题目")&"','"&rs("备选项1")&"','"&rs("备选项2")&"','"&rs("备选项3")&"','"&rs("备选项4")
sql=sql &"','"&rs("正确答案")&"','"&rs("图片位置")&"','"&rs("命令语句")&"')"
conn.execute(sql)
have=1
exit do
Else
rs.MoveNext
End If
Loop
If have<>1 then
k=k-1
End If
k=k+1
Loop
next
问题点数:20、回复次数:3Top
1 楼bbschat(网路漫游者)回复于 2002-05-29 15:09:53 得分 18
你程序流程设计的很差.
看的太累.
设计几个函数
函数一,根据表名取纪录的最大个数
函数二,根据最大个数返回5个随机数(或者一个数组)
函数三,根据表名和题号抽出数据插入临时表
然后再写主流程
Top
2 楼ywz413(去留无意宠辱心惊)回复于 2002-05-29 15:18:44 得分 2
问题太难,点数太少Top
3 楼Ivyhuang(看尽日落)回复于 2002-07-25 17:18:27 得分 0
呵呵,等急了吧,我都把这里忘了,其实问题不难,点数也差不多拉,呵呵Top
4 楼cross311()回复于 2002-07-25 17:32:01 得分 0
买本书看看吧
书上有的是
Top




