用于在线考试
从一个试题库里面随机抽题,每个学生得出的都是随机试卷。
这个程序怎么写。

解决方案 »

  1.   

    什么数据库?如果是SQL SERVER,很简单,可以这么做,SELECT Top 5 * FROM tbl_offers ORDER BY NewID()否则的话,你也许需要取出足够多的数据,自己做挑选
      

  2.   

    试题库大么?如果不大,就把题目数据全取出来,譬如放在一个缓存变量里,然后用System.Random选取一定的记录数
      

  3.   

    如果不行的话,假设你一次取的题目数目不多的话,你可以用System.Random生成一串不重复的ID,然后用动态SQL语句选出数据来,譬如select * from table where id in (1,5,8,12,3)
      

  4.   

    很简单吧,我想:
       题应该有题号什么的主键吧,把主键提出来。
       放在数组或者Datatable里,随机生成Index去取题。
       一次可以生成一张试卷的题的主键,然后去数据库里把题取出来。
       生成随机数的时候控制最大值为返回的记录数(就是数组的length)
      

  5.   

    我也做了个在线考试的项目,
    我的做法是把所有满足条件的试题id都取出来放一arraylist中(因使用nhibernate), 用数组也可以,
    然后对arraylist内的元素进行随机调换位置(次数设为元素的总数).
    最后取arraylist前n个id值返回试题.
      

  6.   

    这一个好像是Access版本ID为Auto编号的列(数字列)
    Select Top 5 * From table Order By Rnd(ID)
      

  7.   

    使用 SQL 語法的 TOP n 來指定取得筆數,再用 ORDER BY 的方式,來亂數取得資料,並排序。MS SQL:SELECT TOP 1 * FROM Table WHERE 條件 ORDER BY NEWID()ACCESS:SELECT TOP 1 * FROM Table WHERE 條件 ORDER BY RND(数值型的列名称)
      

  8.   

    你根据你的题数比如50道,然后要取出20道,你可以用随机数生成一个题号的数组,然后根据题号选题
    方法同思归大哥的select * from table where id in (1,5,8,12,3)我以前做题库就是这么做的,当时数据库是bde的哈哈