CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

help!!帮我看看。。。

楼主Ivyhuang(看尽日落)2002-05-29 14:51:18 在 Web 开发 / ASP 提问

做的是一个网上考试模块,其中有一部分是随机抽题,有五个库,每次分别从五个库中随机抽出五道题,可是按下面的程序,每次都无法抽满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

相关问题

  • 帮帮我,help me !!!
  • 谁来帮帮我??????help!!!!!!!!
  • [HELP]大家帮帮我啊!
  • Help!大家请帮我!
  • help!SOS。我是菜鸟,谁帮我!!!
  • 帮我看看这段代码(help)
  • Help me !!! ------- 急!! 情帮我看看(2)
  • help,联不上internet网,大家帮我。
  • 请帮忙? help! help!
  • 高手帮忙--HELP!HELP!HELP!!!

关键词

  • 函数
  • sql
  • 题
  • rs
  • 备选项
  • 库
  • 表
  • order by题号desc
  • connstr
  • dim

得分解答快速导航

  • 帖主:Ivyhuang
  • bbschat
  • ywz413

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo