本人正在做一个题库管理系统,用的是 delphi + access ,现在所有的工作差不多完成了,但是还差最后一步,即组卷问题。
我是把题目用 blob 字段存在数据库里,(因为韪涉及到公式和图片)。我已能完成随机抽题,现在关键是如何把这些选中的题目组成一份完整的试卷?我的做法是,我是用 rxrichedit 作为试题录入的控件(因为它支持 rtf 格式,可以保证图片和数学公式正常显示)。我的作法如下。
为简单起见,假设题库中编号为 1……5 的题目为我选中的题目,现在就是要把这5道题组成一份试卷 。 for i:=1 to 5 do
wiht adoquery do
begin
sql.clear;
sql.add('select * from 题库 where id='+i);//从中选出题目
open;
BlobStream1:=CreateBlobStream(FieldByName('题目') as TBlobField, bmread); // 创建流
temp.Lines.LoadFromStream(BlobStream1);//temp是 rxrichedit
temp.SelectAll; //全选
temp.CutToClipboard; // 剪切到剪切板中去
question.PasteFromClipboard; //question 也是 rxrichedit,在question 中贴上刚才的那道题。
end; 我的想法是,从数据库中抽出相应的题目,然后用文件流的方式把 blob字段装载到 temp中去,再把 temp 中的所有内容 cut 到 question,这样循环,直到取完所有选中的题目。
temp 只是用来中间过渡一下的,属性 visible 设为 false 。
question 是用户所看到的成卷试题 。
现在我的问题是
1、有没更好的方法,总觉得我的方法不太好。
2、如果用这种方法,如何在每道题前加上序号?我做的效果只能是序号与题在两行中,不会在同一行。
谢谢大家!
我是把题目用 blob 字段存在数据库里,(因为韪涉及到公式和图片)。我已能完成随机抽题,现在关键是如何把这些选中的题目组成一份完整的试卷?我的做法是,我是用 rxrichedit 作为试题录入的控件(因为它支持 rtf 格式,可以保证图片和数学公式正常显示)。我的作法如下。
为简单起见,假设题库中编号为 1……5 的题目为我选中的题目,现在就是要把这5道题组成一份试卷 。 for i:=1 to 5 do
wiht adoquery do
begin
sql.clear;
sql.add('select * from 题库 where id='+i);//从中选出题目
open;
BlobStream1:=CreateBlobStream(FieldByName('题目') as TBlobField, bmread); // 创建流
temp.Lines.LoadFromStream(BlobStream1);//temp是 rxrichedit
temp.SelectAll; //全选
temp.CutToClipboard; // 剪切到剪切板中去
question.PasteFromClipboard; //question 也是 rxrichedit,在question 中贴上刚才的那道题。
end; 我的想法是,从数据库中抽出相应的题目,然后用文件流的方式把 blob字段装载到 temp中去,再把 temp 中的所有内容 cut 到 question,这样循环,直到取完所有选中的题目。
temp 只是用来中间过渡一下的,属性 visible 设为 false 。
question 是用户所看到的成卷试题 。
现在我的问题是
1、有没更好的方法,总觉得我的方法不太好。
2、如果用这种方法,如何在每道题前加上序号?我做的效果只能是序号与题在两行中,不会在同一行。
谢谢大家!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货