专利名称:一种基于BLOB存储及增强RichEdit控件的试卷自动生成装置及方法
技术领域:
本发明涉及一种基于BLOB存储及增强Richedit控件的试卷自动生成装置。
背景技术:
考试作为考核学生知识、技能的一种手段,是学校日常工作中不可或缺的元素。试卷是考试内容的载体,试卷内容的覆盖面、客观性、区分性等指标在很大程度上决定了一次考试的考核效果,因此试卷的组织和生成是整个考试流程中非常重要的一环。传统的试卷生成都是以人工方式进行的。每次在考试前,由负责该科目的教师人工组织试卷素材,这些素材可能来源于各种文献资料,也可能来源于已形成的题库。不可否认,一些经验丰富的教师精心准备的试卷具有很高的质量,但是这毕竟要投入大量的时间和精力,并且很难长期稳定地保证试卷质量,也不可避免地会有一些主观因素影响。随着信息技术、办公自动化技术的进步,试卷生成的形式也发生了一些改革。出现了一些在线考试系统,或是基于题库的试卷自动生成系统。这些系统能够以随机的方式在试题数据库中抽取试题,组织成完整的试卷,在一定程度上提高了试卷内容的客观性和随机性,但存在一个明显的不足,即试题类型单一。造成以上问题的原因有二 一是现有试卷生成系统的输入模块功能薄弱,不支持图像、公式等元素的输入;二是此类系统都是以文本的形式在数据库中存储试题,尽管有一些试卷生成系统支持图像的存储,但对公式、图文混合排版等复杂情况不能提供有效支持。这样就极大限制了组织试卷的灵活性,导致现有试卷生成系统只能完成一些简单形式试卷的组织。此外,现有的系统在试卷参数设置的细节方面还不够完善,也需要做出改进。
发明内容
本发明针对现有试卷生成系统不支持复杂对象,导致试卷形式单一,考核内容的形式及灵活性差,以及试卷构成的细节不完善问题,从而提出一种基于BLOB存储及增强RichEdit控件的试卷自动生成装置。一种基于BLOB存储及增强RichEdit控件的试卷自动生成装置,它包括用户数据库1、科目数据库2、试题数据库3、科目信息数据库4、系统管理模块5、试卷生成模块8、试题修改模块9、试题录入模块10、试题检索模块11和科目信息管理模块12 ;试卷生成模块8、试题修改模块9、试题录入模块10中均包括一个BLOB转换模块6和一个RTF流导入/导出模块7 ;BLOB转换模块6,用于实现RTF数据流和二进制对象之间的相互转换;在存储试题时,把用户录入的原始试题导出的RTF流转换为二进制数据块,存储到试题数据库3中;在读取试题时,从试题数据库3中读出二进制数据块,恢复为RTF流;RTF流导入/导出模块7,以一个增强的RichEdit控件作为含OLE对象的数据的载体,该控件扩展了 MFC中RichEdit控件的IRichEditOleCallback接口,用于支持OLE对象的导入导出;在存储试题时,把用户输入控件中的内容导出为RTF流,输出到BLOB转换模块6 ;在读取试题时,从BLOB转换模块6接收到导出的RTF流,并解析为原始数据,即试题内容;用户数据库1,用于存储所有用户的信息;所述用户信息中的用户角色类型包括管理员和普通教师;科目数据库2,用于存储试题科目名称;试题数据库3,用于存储试题内容及各试题的相关信息;其中试题内容以BLOB方式存储,各试题的相关信息以文本或数值类型存储;试题的相关信息包括该试题的题型、分值、重点考核内容/非重点考核内容标记以及关键字;科目信息数据库4,用于存储所有科目相关的信息,每门考试科目相关的信息包括该科目要考核的题型、每种题型的总分值、该科目在重点内容和非重点内容中抽取试题的百分比;系统管理模块5,用于添加系统用户,包括管理员用户及教师用户;还用于管理员创建考试科目;还用于系统维护;试卷生成模块8,用于根据科目信息模块中的参数设置,在试题数据库3中随机抽取试题,经BLOB转换模块6把二进制试题数据流转换为RTF流,导入增强RichEdit控件,最后输出到Word模板文档中,生成试卷;试题修改模块9,用于用户以关键字在试题数据库3中进行检索;还用于对试题进行修改,以及修改后对试题数据库3进行更新;试题录入模块10,用于用户把试题输入试题数据库3中,具体为用户把试题内容输入增强RichEdit控件后,由增强RichEdit控件将试题内容转换为RTF流,再通过BLOB转换模块6将RTF流转换为二进制对象,存储在试题数据库3中;试题检索模块11,用于用户以关键词的方式在试题数据库3中对试题进行检索,并返回相关试题记录;科目信息管理模块12,用于用户对考试科目的相关信息进行设置和更新,所述对考试科目的相关信息包括该科目要考核的题型、每种题型的总分值、该科目在重点内容和非重点内容中抽取试题的百分比。使用上述装置的一种基于BLOB存储及增强RichEdit控件的试卷自动生成方法,它由以下步骤实现步骤a :从科目信息数据库4中读取科目信息,所述科目信息包括该科目各题型的总分值,重点内容与非重点内容的考核比例;步骤b :判断是否完成所有题型的抽取,如果判断结果为是,则执行步骤e ;如果判断结果为否,则执行步骤c ;步骤c :判断当前题型下已抽取试题的总分值是否达到预设值,如果判断结果为是,则执行返回步骤b,如果判断结果为否,则执行步骤d ;步骤d :在试题数据库3中查询所有与当前题型匹配的试题,根据当前剩余分值在记录集中随机抽取,将抽到的试题主键加入已抽取试题集中;所述已抽取试题集将进行重复元素检查,防止抽取相同试题,并返回执行步骤c ;
步骤e:已抽取试题集中存储了所有被抽取的试题在试题数据库3中的主键,这些主键对应的试题即构成一份完整试卷。根据这些主键值,在试题数据库3中读取相应记录的BLOB字段,通过BLOB转换模块6转换为RTF流,并将RTF流导入增强RichEdit控件;步骤f:将增强RichEdit控件中的内容通过Office Automation接口导入到预制的word模板中;步骤g:释放数据库连接,完成试卷生成。步骤e中BLOB数据与RTF数据流之间转换的方法由以下步骤实现:步骤一、BLOB转换模块6判断是读取试题还是存储试题,如果为存储试题,则执行步骤二 ;如果为读取试题,则执行步骤四;步骤二:以二进制模式读取待存储的RTF数据流,同时读入该试题的相关信息;步骤三:将步骤二中读入的二进制流与试题相关信息组织为一条记录,插入到试题数据库3中,并执行步骤六;步骤四:从试题数据库3中,查询到相关记录,读取各个字段;步骤五:把读出的记录中的BLOB字段以二进制的方式恢复为RTF数据流;步骤六:释放数据库连接,完成BLOB数据与RTF数据流之间转换。步骤e中RTF流导入/导出的步骤为:步骤a:RTF流导入/导出模块7判断是读取试题还是存储试题,如果为存储试题,则执行步骤β ;如果为读取试题,则执行步骤Y ;步骤β:将增强RichEdit控件中的内容输出为RTF流;步骤Y:读取RTF流,解析为原始试题内容。采用试题修改模块9实现试题修改,其具体步骤为:步骤A:根据用户输入的关键词在试题数据库3中进行检索,找出与该关键词匹配的所有试题,返回结果记录集;步骤B:通过BLOB转换模块6将记录集中的BLOB字段转换为RTF流,再把RTF流导入试题修改模块9集成的增强RichEdit控件,完成原始试题内容的恢复;步骤C:用户用新内容代替原始试题内容,将修改后的试题导出为RTF流,再通过BLOB转换模块6将其转换为二进制流,用其更新试题数据库3中原始试题的BLOB字段;步骤D:释放数据库连接,完成试题修改。采用试题录入模块10实现试题录入,其具体步骤为:步骤1:用户将试题内容输入试题录入模块10集成的增强RichEdit控件;步骤II:RTF导入/导出模块7将增强RichEdit控件中的内容转换为RTF流,送入BLOB转换模块6 ;步骤III =BLOB转换模块6将RTF流转换为二进制流,形成BLOB字段,结合该试题的其他信息,构成一条记录,将该记录添加到试题数据库3中;步骤IV:释放数据库连接,完成试题录入。本发明基于BLOB存储方式及支持OLE对象的增强RichEdit控件,实现了一种支持复杂对象的试卷生成装置,该装置良好地支持图像、公式等复杂对象的录入,能够实现文本及各类对象的混合排版,极大地提高了试卷内容形式的灵活性、丰富了试卷的信息量。此夕卜,该装置对考核内容进行了重点内容和非重点内容的区分,在试卷的考核重心的平衡方 面也更加灵活。
图1是本发明中装置的结构示意图;图2是本发明中试卷生成功能的流程图;图3是本发明中RTF数据流与BLOB数据转换的流程图;图4是本发明中RTF流导入/导出的流程图;图5是本发明中试题修改功能的流程图;图6是本发明中试题录入功能的流程图。
具体实施例方式具体实施方式
一下面结合图1说明本实施方式。一种基于BLOB存储及增强RichEdit控件的试卷自动生成装置,包括如下模块用户数据库1、科目数据库2、试题数据库3、科目信息数据库4、系统管理模块5、BL0B转换模块6、RTF(Rich Text Format,富文本格式)流导入/导出模块7、试卷生成模块8、试题修改模块9、试题录入模块10、试题检索模块11和科目信息管理模块12。所述的用户数据库1,是存储所有用户信息的数据库,用户角色类型包括管理员和普通教师,每个普通教师用户对应着相应的考试科目,以保证每个教师用户只能修改其对应科目的试题数据;所述的科目数据库2,存储试卷生成系统中所有的科目名称;所述的试题数据库3,存储试题内容及与各试题的相关信息。其中试题内容以BLOB (Binary Large Object, 二进制大对象)方式存储,相关信息以文本或数值类型存储;试题的相关信息包括该试题的题型、分值、重点考核内容/非重点考核内容标记以及关键
字等;所述的科目信息数据库4,存储所有科目相关的信息,每门考试科目相关的信息包括该科目要考核的题型、每种题型的总分值、该科目在重点内容和非重点内容中抽取试题的百分比等;所述的系统管理模块5,有三方面功能,一是添加系统用户,包括管理员用户及教师用户;二是管理员创建考试科目,只有管理员创建过的考试科目,教师才能在该科目中添加试题等信息;三是系统维护功能,如数据库备份、恢复等。所述的BLOB转换模块6,实现RTF数据流和二进制大对象之间的相互转换。在存储试题时,把用户录入的原始试题导出的RTF流转换为二进制块,存储到试题数据库3中;在读取试题时,从试题数据库3中读出二进制数据块,恢复为RTF流。所述的RTF流导入/导出模块7,以一个增强的RichEdit控件作为含OLE对象的数据的载体,该控件扩展了 MFC中RichEdit控件的IRichEditOleCallback接口,使其支持OLE对象的导入导出。在存储试题时,把用户输入控件中的内容导出为RTF流,输出到BLOB转换模块;在读取试题时,从BLOB转换模块接收到导出的RTF流,将其解析为原始数据,即试题内容;所述的试卷生成模块8,集成了 BLOLB转换模块和RTF流导入/导出模块,根据科目信息模块中的参数设置,在试题数据库3中随机抽取试题,经BLOB转换模块把二进制试题数据流转换为RTF流,导入增强RichEdit控件,最后输出到Word模板文档中,生成试卷。所述的试题修改模块9,集成了 BLOLB转换模块和RTF流导入/导出模块,允许用户以关键字在试题数据库3中进行检索,找出需要修改的试题后进行修改,对试题数据库进行更新。所述的试题录入模块10,集成了 BLOLB转换模块和RTF流导入/导出模块,是用户把试题输入试题数据库3的接口。用户把试题内容输入增强RichEdit控件后,由增强RichEdit控件将试题内容转换为RTF流,再通过BLOB转换模块将RTF流转换为二进制对象,存储在试题数据库3中。所述的试题检索模块11,是用户以关键词的方式在试题数据库中对试题进行检索,并返回相关试题记录。所述的科目信息管理模块12,允许用户对科目信息数据库4中考试科目的相关信息进行设置和更新,这些信息包括该科目要考核的题型、每种题型的总分值、该科目在重点内容和非重点内容中抽取试题的百分比等。
具体实施方式
二 结合图2说明本实施方式,使用具体实施方式
一的一种基于BLOB存储及增强RichEdit控件的试卷自动生成方法,它由以下步骤实现步骤a:从科目信息数据库4中读取科目信息设置,包括该科目各题型的总分值,重点内容与非重点内容的考核比例等信息;步骤b :若已完成所有题型的抽取,转到步骤e,否则转到步骤c ;步骤c :若当前题型已抽取试题的总分值已经达到预设值,转到步骤b,否则转到步骤d ;步骤d :在试题数据库3中查询所有与当前题型匹配的试题,根据当前剩余分值在记录集中随机抽取,将抽到的试题主键加入已抽取试题集中。已抽取试题集将进行重复元素检查,防止抽取相同试题,转到步骤c ;步骤e :此时已抽取试题集中存储了所有被抽取的试题在试题数据库3中的主键,这些主键对应的试题即构成一份完整试卷。根据这些主键值,在试题数据库3中读取相应记录的BLOB字段,通过BLOB转换模块6转换为RTF流,并将RTF流导入增强RichEdit控件;步骤f :将增强RichEdit控件中的内容通过Office Automation接口导入到预制的word模板中;步骤g :释放数据库连接,完成试卷生成。
具体实施方式
三下面结合图3说明本实施方式。本实施方式是实施方式二的进一步限定所述的BLOB转换模块6实现RTF数据流与BLOB数据之间转换的步骤为步骤一若存储试题,转到步骤二,若读取试题,转到步骤四;步骤二 以二进制模式读取待存储的RTF数据流,同时读入该试题相关信息;步骤三将步骤二中读入的二进制流与试题相关信息组织为一条记录,插入到试题数据库3中,转到步骤六;步骤四从试题数据库3中,查询到相关记录,读取各个字段;步骤五把读出的记录中的BLOB字段以二进制的方式恢复为RTF数据流;
步骤六:释放数据库连接,退出BLOB转换模块6。
具体实施方式
四:结合图4说明本实施方式。本实施方式是实施方式二的进一步限定:所述的RTF流导入/导出模块7实现RTF流导入/导出的步骤为:步骤α:若存储试题,转到步骤β,若读取试题,转到步骤Y ;步骤β:将增强RichEdit控件中的内容输出为RTF流;步骤Y:读取RTF流,解析为原始试题内容;具体实施方式
五:结合图5说明本实施方式。本实施方式与实施方式一的不同之处在于:所述的试题修改模块9实现试题修改的步骤为:步骤A:根据用户输入的关键词在试题数据库3中进行检索,找出与该关键词匹配的所有试题,返回结果记录集;步骤B:通过BLOB转换模块6将记录集中的BLOB字段转换为RTF流,再把RTF流导入试题修改模块9集成的增强RichEdit控件,完成原始试题内容的恢复;步骤C:用户用新内容代替原始试题内容,将修改后的试题导出为RTF流,再通过BLOB转换模块6将其转换为二进制流,用其更新试题数据库3中原始试题的BLOB字段;步骤D:释放数据库连接,完成试题修改。
具体实施方式
六:结合图6说明本实施方式。本实施方式与实施方式一的不同之处在于:所述的试题录入模块10实现试题录入的步骤为:步骤1:用户将试题内容输入试题录入模块10集成的增强RichEdit控件;步骤II:RTF导入/导出模块7将增强RichEdit控件中的内容转换为RTF流,送入BLOB转换模块6 ;步骤III =BLOB转换模块6将RTF流转换为二进制流,形成BLOB字段,结合该试题的其他信息,构成一条记录,将该记录添加到试题数据库3中;步骤IV:释放数据库连接,完成试题录入。本发明不局限于上述实施方式,还可以是上述各实施方式中所述技术特征的合理组合。
权利要求
1.一种基于BLOB存储及增强RichEdit控件的试卷自动生成装置,其特征是:它包括用户数据库(I)、科目数据库(2)、试题数据库(3)、科目信息数据库(4)、系统管理模块(5)、试卷生成模块(8)、试题修改模块(9)、试题录入模块(10)、试题检索模块(11)和科目信息管理模块(12); 试卷生成模块(8)、试题修改模块(9)、试题录入模块(10)中均包括一个BLOB转换模块(6)和一个RTF流导入/导出模块(7); BLOB转换模块¢),用于实现RTF数据流和二进制对象之间的相互转换;在存储试题时,把用户录入的原始试题导出的RTF流转换为二进制数据块,存储到试题数据库(3)中;在读取试题时,从试题数据库(3)中读出二进制数据块,恢复为RTF流; RTF流导入/导出模块(7),以一个增强的RichEdit控件作为含OLE对象的数据载体,该控件扩展了 MFC中RichEdit控件的IRichEditOleCallback接口,用于支持OLE对象的导入导出;在存储试题时,把用户输入控件中的内容导出为RTF流,输出到BLOB转换模块(6);在读取试题时,从BLOB转换模块(6)接收到导出的RTF流,并解析为原始数据,即:试题内容; 用户数据库(1),用于存储所有用户的信息;所述用户信息中的用户角色类型包括管理员和普通教师; 科目数据库(2),用于存储试题科目名称; 试题数据库(3),用于存储试题内容及各试题的相关信息; 其中试题内容以BLOB方式存储,各试题的相关信息以文本或数值类型存储;试题的相关信息包括该试题的题型、分值、重点考核内容/非重点考核内容标记以及关键字; 科目信息数据库(4),用于存储所有科目相关的信息,每门考试科目相关的信息包括该科目要考核的题型、每种题型的总分值、该科目在重点内容和非重点内容中抽取试题的百分比; 系统管理模块(5),用于添加系统用户,包括管理员用户及教师用户;还用于管理员创建考试科目;还用于系统维护; 试卷生成模块(8),用于根据科目信息模块中的参数设置,在试题数据库(3)中随机抽取试题,经BLOB转换模块(6)把二进制试题数据流转换为RTF流,导入增强RichEdit控件,最后输出到Word模板文档中,生成试卷; 试题修改模块(9),用于用户以关键字在试题数据库(3)中进行检索;还用于对试题进行修改,以及修改后对试题数据库(3)进行更新; 试题录入模块(10),用于用户把试题输入试题数据库(3)中,具体为:用户把试题内容输入增强RichEdit控件后,由增强RichEdit控件将试题内容转换为RTF流,再通过BLOB转换模块(6)将RTF流转换为二进制对象,存储在试题数据库(3)中; 试题检索模块(11),用于用户以关键词的方式在试题数据库(3)中对试题进行检索,并返回相关试题记录; 科目信息管理模块(12),用于用户对考试科目的相关信息进行设置和更新,所述对考试科目的相关信息包括该科目要考核的题型、每种题型的总分值、该科目在重点内容和非重点内容中抽取试题的百分比。
2.使用权利要求1的一种基于BLOB存储及增强RichEdit控件的试卷自动生成方法,其特征是:它由以下步骤实现: 步骤a:从科目信息数据库(4)中读取科目信息,所述科目信息包括该科目各题型的总分值,重点内容与非重点内容的考核比例; 步骤b:判断是否完成所有题型的抽取,如果判断结果为是,则执行步骤e ;如果判断结果为否,则执行步骤c ; 步骤c:判断当前题型下已抽取试题的总分值是否达到预设值,如果判断结果为是,则执行返回步骤b,如果判断结果为否,则执行步骤d ; 步骤d:在试题数据库(3)中查询所有与当前题型匹配的试题,根据当前剩余分值在记录集中随机抽取,将抽到的试题主键加入已抽取试题集中;所述已抽取试题集将进行重复元素检查,防止抽取相同试题,并返回执行步骤c ;步骤e:已抽取试题集中存储了所有被抽取的试题在试题数据库(3)中的主键,这些主键对应的试题即构成一份完整试卷。根据这些主键值,在试题数据库(3)中读取相应记录的BLOB字段,通过BLOB转换模块(6)转换为RTF流,并将RTF流导入增强RichEdit控件;步骤f:将增强RichEdit控件中的内容通过Office Automation接口导入到预制的word模板中; 步骤g:释放数据库连接,完成试卷生成。
3.根据权利要求2所述的一种基于BLOB存储及增强RichEdit控件的试卷自动生成方法,其特征在于,步骤e中BLOB数据与RTF数据流之间转换的方法由以下步骤实现: 步骤一、BLOB转换模块(6)判断是读取试题还是存储试题,如果为存储试题,则执行步骤二 ;如果为读取试题,则执行步`骤四; 步骤二:以二进制模式读取待存储的RTF数据流,同时读入该试题的相关信息; 步骤三:将步骤二中读入的二进制流与试题相关信息组织为一条记录,插入到试题数据库(3)中,并执行步骤六; 步骤四:从试题数据库(3)中,查询到相关记录,读取各个字段; 步骤五:把读出的记录中的BLOB字段以二进制的方式恢复为RTF数据流; 步骤六:释放数据库连接,完成BLOB数据与RTF数据流之间转换。
4.根据权利要求2所述的一种基于BLOB存储及增强RichEdit控件的试卷自动生成方法,其特征在于,步骤e中RTF流导入/导出的步骤为: 步骤a:RTF流导入/导出模块(7)判断是读取试题还是存储试题,如果为存储试题,则执行步骤β ;如果为读取试题,则执行步骤Y ; 步骤β:将增强RichEdit控件中的内容输出为RTF流; 步骤Y:读取RTF流,解析为原始试题内容。
5.根据权利要求2所述的一种基于BLOB存储及增强RichEdit控件的试卷自动生成方法,其特征在于,采用试题修改模块(9)实现试题修改,其具体步骤为: 步骤A:根据用户输入的关键词在试题数据库(3)中进行检索,找出与该关键词匹配的所有试题,返回结果记录集; 步骤B:通过BLOB转换模块(6)将记录集中的BLOB字段转换为RTF流,再把RTF流导入试题修改模块(9)集成的增强RichEdit控件,完成原始试题内容的恢复; 步骤C:用户用新内容代替原始试题内容,将修改后的试题导出为RTF流,再通过BLOB转换模块(6)将其转换为二进制流,用其更新试题数据库(3)中原始试题的BLOB字段; 步骤D:释放数据库连接,完成试题修改。
6.根据权利要求2所述的一种基于BLOB存储及增强RichEdit控件的试卷自动生成方法,其特征在于,采用试题录入模块(10)实现试题录入,其具体步骤为: 步骤1:用户将试题内容输入试题录入模块(10)集成的增强RichEdit控件; 步骤II =RTF导入/导出模块(7)将增强RichEdit控件中的内容转换为RTF流,送入BLOB转换模块(6); 步骤III =BLOB转换模块(6)将RTF流转换为二进制流,形成BLOB字段,结合该试题的其他信息,构成一条记录,将该记录添加到试题数据库(3)中; 步骤IV:释放数据库连接, 完成试题录入。
全文摘要
一种基于BLOB存储及增强RichEdit控件的试卷自动生成装置及方法,涉及一种基于BLOB存储及增强Richedit控件的试卷自动生成装置。它解决了现有试卷生成系统不支持复杂对象,考核内容的形式及灵活性差,以及试卷构成的细节不完善问题。它的用户数据库存储所有用户信息;科目数据库存储所有科目名称;试题数据库,存储试题内容及各试题的相关信息;科目信息数据库存储考试科目相关信息;系统管理模块提供系统管理功能;BLOB转换模块实现RTF数据流和二进制大对象之间的相互转换;RTF流导入/导出模块用于RTF流导入导出;试卷生成模块在试题数据库中抽取试题并生成试卷。本发明适用于试卷自动生成。
文档编号G06Q50/20GK103077492SQ20131002304
公开日2013年5月1日 申请日期2013年1月22日 优先权日2013年1月22日
发明者王晶晶, 于立洋, 杨文君, 梁际华, 杨春文 申请人:牡丹江师范学院