有一个题库。包含单选题、多选题、判断题和问答题等等。
现在要做一个功能。在一个页面输入数字。比如。单选题:10.这就生成10个单选题。从题库随机抽选。
当然这个页面是这样的。单选题:
多选题:
判断题:
问答题:
逻辑题:现在我想从题库随机生成一张试卷出来。怎么做?生成出来的试卷是word文档的格式哦。。求各位大神给个例子谢谢了 

解决方案 »

  1.   

    你是有题号的,ranmdom随机生成数字,根据这个数字区数据库select
      

  2.   

    你每个题型其下的小题分数都是一样的吗?
    如果一样,你从每个题型里随机出固定数据的题目,
    如果不一样,你需要计算总分在随机,
    然后输出到TextArea控件或第三方富文本控件就可以了
      

  3.   

    个人觉得LZ这个需求的难点不在于如何筛选题目(LZ的方案就可以很好的查询出随机的题目了)而在于如何根据这些题目生成一个word文档,其word中不同题目的格式  格式不同的,控制起来难度还是比较大的
    所以建议LZ去查查.net生成word的资料,一般都是靠模板下导出的
      

  4.   

    如果是sqlite,随机取出10道单选题,可以:select * from 题库 where 题型='单选题' order by random() limit 0,10
      

  5.   

    我也做过随机选题,用的是c#语言,CS模式。
    随机选题时,首先要确定选题范围,比如某个学科、某个章节、某个难度、某种题型
    我的方法是把符合条件的试题编号查询出来:
    select 试题ID from 试题表 
      where 学科ID='某学科ID' 
        and 章ID in (id1,id2,id3) 
        and 难度>难度下限 and 难度<难度上限
         and 题型ID=某题型ID
    将查询结果放在DataTable中
    DataTable dtFind = new DataTable()
    然后通过随机数来选题,C#中有个随机数产生类:Random
    假设选题总数为SelectCount
    选到的试题放到一个链表selList中
    Random rdm = new Random(DateTime.Now.Millisecond);
    for(int i = 0; i < selectCount && dtFind.Rows.Count > 0; i++)
    {
      int rdVal = rdm.Next(0, dtFind.Rows.Count);//产生一个随机数对应dtFind行索引
      selList.Add(dtFind.Rows[rdVal]);//选中该行
      dtFind.RemoveAt(rdVal);//移除已经被选中的行,避免重复选择
    }
    这里只说了个思路,至于你如何去实现就看如何方便了,本人qq 16250366,同样也做题库