To duculer
我的做法是按试卷的要求给出试题各题型的难度和能力层次的分布,随机抽取试题并满足分布要求。
抽出的试题的各属性存到stringgird中--对其实行排序、删除、添加、查阅、清空、统计等操作。
如满意可输出试卷。
部分源码:
StringGrid1.RowCount:=1;//清空
......
Query1.SQL.Add('Where BM like :Q1 and TX like:Q2 and ND like :Q3 ');
Query1.ParamByName('Q1').AsString := BMtemp + '%';//试题编码
Query1.ParamByName('Q2').AsString := TXtemp; //题型
Query1.ParamByName('Q3').AsString := NDtemp; //难度
if Query1.Prepared = False then Query1.Prepare;
dmod.Query1.Open;
st := Query1.RecordCount;
s0 := s0 + Ntemp; //要抽取的试题数量
f := 1;
while (f <= Ntemp) and (st > 0) do begin //
Num := Random(st) + 1;
Query1.first;
Query1.MoveBy(Num - 1);
ok:=true;
with StringGrid1 do
begin
rec := Query1.Fields[0].AsString;//试题编码
for i := 1 to Rowcount - 1 do
if cells[1, i] = rec then ok := false;
if ok then begin
Rowcount:=Rowcount+1;
cells[1,Rowcount-1]:=ren;
.......
f:=f+1;
end;
end;
end;
......