对不起。。本人菜鸟一只~
可能在问的问题上有毛病~~
在下无有经验。。还望各位大虾体晾~
我主要是不知道该如何下手。也就是对具体的功能还有些模糊(不知道该做什么)
老师要求语言不限(我选择了VB)+SQL。
要求只需输入一定条件就打印出卷纸。
便如:试卷难试、知识点、分数、难易程序。等~~
希望各位大虾指点迷津。。小弟感激不尽啊~~~
(我好像是对算法掌握的不好~~)
可能在问的问题上有毛病~~
在下无有经验。。还望各位大虾体晾~
我主要是不知道该如何下手。也就是对具体的功能还有些模糊(不知道该做什么)
老师要求语言不限(我选择了VB)+SQL。
要求只需输入一定条件就打印出卷纸。
便如:试卷难试、知识点、分数、难易程序。等~~
希望各位大虾指点迷津。。小弟感激不尽啊~~~
(我好像是对算法掌握的不好~~)
解决方案 »
- VB高手 速速进来啊 谢谢了
- Call Fun(arr(), n)是什么意思?
- 急!请问,使用DataGrid控件,如何确定我当前双击的是多少行。
- 怎么用vb做像 Front Page中的“导航”中的 那种树状结构???
- 救命啊!100分,在线等~~急!
- 那里能下载针对ACCESS数据库的SQL语言资料。特急~
- 如何在不打开EXCEl文件的情况下,读取EXCEl文件中内容?
- 如可把mshflexgrid 的内容直接导入到execl表格中去?急急!!!
- 急!哪位能告诉我在vb数据库编程中怎么实现复杂表头,好象是什么mshflex~控件!但是他是只读控件!(无内容)
- 如何做报表?
- 怎么用vb创建快捷方式
- 我想用VB编辑一些自己的命令,但不知道用什么方法接收输入的指令?详见内容(在线等)
任意条件查询:
private sub sqlselect
strtiaojian = ""
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;Persist Security Info=False;"
Set RS = New Recordset
Call tiaojian
strsql = "select ID,姓名,性别,出生日期 from table1 where " & strtiaojian
If strtiaojian = "" Then
strsql = Left(strsql, Len(strsql) - 7)
End If
end subprivate Sub tiaojian() If name.Text <> "" Then
strtiaojian = strtiaojian & "姓名='" & name.Text & "' and "
End If
If xingbie.Text <> "" Then
strtiaojian = strtiaojian & "性别='" & xingbie.Text & "' and "
End If
If Len(strtiaojian) > 0 Then
strtiaojian = Left(strtiaojian, Len(strtiaojian) - 5)
End If
End Sub
子曰:题库者,考题之集也。学有所专、题有难易,此为子题之本也。分者,难易之表也,可循难易度而求之。题者,序号、内文、科目、细目、难易四者缺一不可。序号者乃题目之索引、内文者乃题目之内容、科目者乃经学之大类、细目者乃经学之细别、难易关题目之分数。拣题第二
子曰:拣题者,乃择题成卷之法也。择题者,最忌重题、重序。乱序者易哉,然使其不重题则难矣。以下之法可解上述之忌:Dim tArray() As Long
Dim tArrayCount As Long
Dim tIndex As Long
Dim tDesIndex As Long
Dim tTempValue As Long获数组tArray……For tIndex=1 To tArrayCount
tTempValue=tArray(tIndex)
tDesIndex=Int(Rnd*tArrayCount)
tArray(tIndex)=tArray(tDesIndex)
tArray(tDesIndex)=tTempValue
Next从数组依序取N个元素则为不重复乱序。难易第三子曰:难易者,当择难易之限,即阀值耳。难之其左、易之其右。
择题循难易,以数、分两者决之。数者、题难者之数目也,分者、题难者之分数也。难易有度。难者百分比也,小者为一、大者为百。以其度乘总题数除二,即难题之数也;以百减其度而求其反,则为易题之数也。倘难度为百,则难题五成、易题五成,而非难题十成也。切记!切记!
然题数虽定,总分亦乱耳,需均分而定。以每题之难度乘题总分、除众题难度之和,此为初分之法。后以难题之分乘难度除一百为该难题之分,以难题之分除一百乘一百减难度除一百为摊分。摊分累计,后供众题均摊,此为摊分法也。摊分法可使难题分降而易题分增。
题库可依照以下两种格式建立,具体选择哪一种,有待楼主自行研究。
(括号内为引用)第一种:题类表:索引、名称
学科表:索引、(题类)、名称
知识点表:索引、(题类、学科)、名称
题目表:索引、(题类、学科、知识点)、题目内容、难度系数。第二种:学科表:索引、名称
知识点表:索引、(学科)、名称
题类表:索引、(学科、知识点)、名称
题目表:索引、(学科、知识点、题类)、题目内容、难度系数。关于拣题。
试卷由多个题类部分组成,其中题类拣题范围为一个题域。题域是符合特定学科(可以是多个)、特定知识点(可以是多个)、题类(只能有一个)的所有题目的集合。
从一个题域获得该题类指定数目的题目过程为一个独立的拣题过程。
例如,符合:学科=(离散数学、数据结构、算法);知识点=(两叉树、图论、排序、链表);题类=(单选题)的所有题目为某试卷单选题类的题域。
题域是题目的集合,而每个题目在题域内必须有一个顺序的索引,以下成为“题域索引”。
拣题要保证题目不重复、不重序,因此,实质问题是获得一个随机不重复数列的问题。随机不重复数列可以以如下算法获得:(“题域索引”务必以0开始。)N为题域内题目数量(实际数量减一)
F()为题域索引的映射数组(也可以是题域本身(即特定题目的集合))For X=0 To N
DataSwap F(X),F(Int(Rnd*(N+1)))'将第X个索引(或者题域内的题目)与随机个索引(或者题域内的题目)交换,从0到第N个元素则为不重复乱序。如果为了追求速度,N可以不是题域内题目全体数量,只要是你需要的数目就可以。因为0到第N个元素必定为不重复乱序。
NextSub DataSwap(A,B) '交换两变量
T=A:A=B:B=T
End Sub难度控制:难度控制有两个办法:
1、过滤掉难度高的题目,这个办法我不推荐你用。2、比例摊分法。
首先,你要决定试卷的难度,这个度量参数就是难度系数。难度系数为0到100(当然,你可以用0到1000也可以,但是计算上麻烦。如果你的难度系数不是0到100,则需要计算百分比系数。计算方法为X=V*100/N V为难度系数、N为最大值、X为百分比系数。每个题目的难度系数有同样的性质。)难度有两方面决定:1、难题的数量,2、难题的分数。为了简化问题的处理方法,简单地将题目分为难题和易题。(如果不这样,就要用另一种更麻烦的方法。比如我自己曾经研究过一种戏称“跷跷板算法”的方法,说起来有点麻烦。你可以自己研究,总之是个见仁见智的数学问题。)这种简易的比例摊分法是这样的:1、先决定一个阀值,将操作题域内的题目分为难题、易题两部分。2、决定该题类取题总数量,根据百分比难度系数,计算难题、易题的数量。比如:某选择题需要40倒题目,难度系数为30,则:
难题数目=30*取题数量/200
易题数目=(100-30)*取题数量/2003、初步决定分数。
每题目的分数这样计算:
首先计算所有题目难度的总和
每个题目的分数=分数总和*该题目难度系数/题目难度的总和
但这样处理之后有一个问题:难题分数高、易题分数底。即使难题再少,但是分数高,难度还是降不下来。所以要进行第4步:摊分。4、摊分处理
将其中难题(不包括易题)进行摊分处理。
保留分=试卷难度系数*该题目分数。
摊分=该题目分数-保留分
将所有摊分累计为摊分和,然后平均分配给每个题目,达到从分数上降低难度的目的。5、产生试卷的方法(可能并不很好,仅供参考)
(1)获得试卷每个题类的题域,这个过程可能需要时间。用户需要决定:学科、知识点、试卷的题类设置。比如:学科为离散数学与数据结构算法综合卷、知识点为(两叉树、图论、排序、链表)、题类为单选、填空、多选、编程四类。则产生四个题域。
(2)分别根据每个题域分为难易两个集合。
(3)以乱序算法对每个集合进行乱序,然后取指定数量的题目(取题数目为难度系数计算)
(4)对取出的题目进行设置初始分数、并按照难度系数摊分。
(5)重复2到4过程,直到产生满意数量的试卷。