使用ASP.NET实现试题库系统试题导入及修改维护的一种方法

2021-12-15 15:05宋咏春
中国信息技术教育 2021年23期
关键词:试题库控件题干

宋咏春

摘要:随着试题库系统在学校教学工作中的使用日渐普及,在试题库的运行维护管理过程中,试题库的试题录入及修改编辑成为提高试题库运行效率的主要研究内容之一。本文以DSOframer、Spire.Doc for .NET控件为主要工具,提出并实现了B/S架构试题库系统试题录入及修改编辑的一种方法,通过比较简洁的操作实现将Word文档中包含图片、表格、数学公式的试题导入数据库及对试题库中试题的修改编辑,从而提高试题库维护的效率。

关键词:B/S架构;试题库;DSOframer;Spire.Doc for .NET

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2021)23-0082-04

本文引言

随着信息技术的发展,试题库系统的设计与开发成为很多学校建立完备的考试体系,实现考试工作标准化、科学化以及信息化,以实施教考分离、提高教学质量、规范教学的重要举措。不过,试题库的建设是一个长期的过程,在使用过程中,随着教学要求的改变,要求逐渐推陈出新,适时增加时效性题目;试题库已录入的试题若发现存在问题,要及时修改和更正。如何高效、快速地在试题库中录入新试题以及修改原有的试题,实现试题库系统的动态维护,是试题库设计和建设所要考虑的一个重要问题。

当前使用的很多试题库系统采用以ASP.Net技术开发前台页面、以SQLServer为后台数据库的B/S架构形式,开发、维护简单,既可以生成导出传统的纸质试卷,也可以使用浏览器实现在线考试,应用比较广泛。这种B/S架构试题库系统的试题如果采用逐题录入及维护,大多数是通过Web富文本编辑器实现,这种录入及修改方法比较适合纯文本试题,如果试题中包含数学公式、表格或图片,进行图文混排内容的录入及修改在操作上就比较烦琐。对于B/S架构下,图文混排内容快速录入试题库的研究,目前采用的应对方法,一是以Word文档为导入数据源,在要导入的Word文档中设置标签,通过程序提取图片、表格及公式等对象,与文本内容分离,然后分别存储在试题库数据库的不同类型字段,进而将文本与公式、表格及图片分开存储[1];二是采用ActiveX控件,将包含数学公式、表格或图片的试题分开录入到Word文档,或通过设置书签的方式分割为新的Word文档,然后以二进制数据存储到试题库数据库[2][3],实现试题内容的排版与输出组卷的格式一致。上述快速录入方法要求事先将Word文档的题干和选项等作标记或必须按指定的格式先修改好,格式不能出错,否则导入就会失败。而且该方法主要是解决试题录入的问题,并没有解决对试题库中的试题进行快速浏览及修改维护的问题。

本文对B/S架构下,Word文档中的试题导入试题库及对试题修改编辑的方法进行研究,提出用ASP.NET技术进行B/S架构试题库系统录入及修改维护的一种实现方法。试题库系统使用者可以在客户端浏览器界面上通过DSOframer控件对已经包含题目及答案的现成Word文档进行普通选取操作,就可以将含图、文、表格及数学公式等的试题内容快速录入到试题库数据库;同时也可以通过客户端浏览器快速浏览试题库中试题的具体内容,选择需要修改的试题,在浏览器的Word界面下进行修改,与对Word文档的操作方式一致,人机界面友好,排版格式易控制,有利于提高试题库系统的维护效率。

本文策略研究

1.试题库中试题的存储策略

试题库的试题内容需要不断添加,目前,在网络上有很多教学资源站点,可以搜索下载适合的试题,导入试题库使用,这是录入新试题比较便捷的一种方式。Word文档是大多数试题文档所使用的文档形式,从网上下载的Word文档试题排版格式各不相同,由于新试题往往是根据试卷格式的要求录入的,所以在Word文档中要适当编辑处理后再导入到试题库的数据库中。

对于包含文本、图、表的试题主要内容在试题库数据库中的存储,在现有技术条件下,如果把试题文本部分与试题相关的图、表分开存储,試题文本与图、表的位置关系难以获取并记录,在导出试题时,试题图文混排的效果就会与原来的导入试题时的排版效果完全不同,导致系统完成自动组卷并导出为Word文档后用户还需进行大量的排版操作。解决上述问题的可行方法是在不破坏原有文本编排格式及图文布局的前提下将Word文档内容编排后(含图、表)以二进制数据类型存储在数据库中,导出时将二进制数据解析成Word文档,可以保持与原输入排版一致的格式。因此,在试题库数据库中设置二进制数据类型字段存储导入试题及答案Word文档的数据;同时考虑到试题管理的要求,把试题及答案的Word文档转换为图片,通过图片实现在浏览器上对试题库内容的浏览,将存放试题和答案图片的字段类型设置为图像数据类型;为方便检索和查重试题,设置一个文本类型字段存储试题的文本内容。

2.试题库试题录入及维护的实现策略

本方法的试题录入是针对已有Word文档中的试题逐题导入试题库提出的,同时实现从试题库中导出试题进行编辑修改。从易用性和使用界面友好的设计角度而言,这些Word文档考虑在客户端的浏览器网页中打开,然后在网页中进行录入及修改等操作。DSOframer是微软提供的一款开源的用于在线编辑Word、Excel、PowerPoint的ActiveX控件,基于本地Office组件运行,提供了标题栏、菜单栏及工具栏等用户界面接口,在ASP.NET页面中嵌入此控件,就可以在基于IE内核的浏览器网页上构建嵌入式文档浏览器和编辑器,在网页上导入Word文档内容,实现查看、编辑和保存试题内容。本文采用该控件实现试题库试题录入及维护。[4]

在试题录入设计时,考虑到试卷组卷及浏览试题的需要,可以将试题题目与答案分开存放在单独的Word文档,同时把Word文档转换为图片,如果在ASP.NET中自行编写代码实现上述操作,难度是相当大的。而Spire.Doc for .NET是一款专门对Word文档进行操作的.NET类库,作为独立的Word.NET控件,可以将Microsoft Word文档的操作功能集成到.NET应用程序中,笔者使用Spire.Doc for .NET控件方便地实现了Word文档的分割及转换成图片。[5]

本文试题导入及修改維护的具体实现

1.打开Word文档并选取试题导入

从试题库维护的要求来说,一个现成的Word文档中的试题不可能全都录入试题库,最常见的操作是把经过试题库管理人员筛选的适合的试题逐一导入。操作过程为:在客户端的浏览器网页打开一个Word试题文档,依次选择试题、答案内容,程序将上述内容复制到一个新的Word文档,然后提交到试题库数据库,具体流程如图1所示。

试题导入流程的关键技术:

(1)程序对试题的题干和答案内容的复制是通过DSOframer控件完成的,DSOframer控件通过JavaScript脚本实现对文档的操作,然后用Selection.Copy()方法完成题干和答案的复制。这里把题干和答案分开录入,目的是使题干与答案之间,通过由代码自动生成的一个特殊标识进行分隔,从而方便后续操作。通过Selection.Paste()方法把题干和答案粘贴到新建立的Word文档,在粘贴答案时,使用Selection.InsertBreak()方法在答案之前自动实现特殊标识的添加。

(2)DSOframer控件提供的HttpAddPostCurrFile()方法,可以把客户端编辑的文件直接提交到服务器端,该方法的实现过程是:先把编辑的文件保存到客户端的一个临时文件夹,然后把文件上传到服务器端,文件上传完毕后删除临时文件夹中的文件。由于DSOframer控件自身的问题,如果客户端安装的Office版本比较高,在使用HttpAddPostCurrFile()方法上传文件之前,编辑的Word文档就会无法自动保存到临时文件夹,从而使上传到服务器端的文件为0字节文件。这个问题的处理方法是:把编辑的文档用程序指令直接存入临时文件夹,再使用HttpAddPostCurrFile()方法实现上传。

(3)包含试题题干和答案的文档上传到服务器端文件夹后,用Spire.Doc for .NET控件根据文档中的特殊标识,分别读取试题题干和答案到不同的Word文档保存,实现文档的分割。

(4)对于分割后的Word文档,可以使用Spire.Doc for .NET控件的SaveToImages()方法转化为jpg格式图片。Spire.Doc for .NET控件把Word文档按页面转换为图片,转换生成的图片边框有大量空白,在网页上显示时,浪费大量空间,也会增加图片文件的大小。因此在ASP.NET程序中设置一个函数,把转换后图片的多余白边剪除,使网页上的图片只显示试题题干和答案内容,也减小了图片文件的大小。

2.试题库中试题的修改编辑

试题库试题修改编辑的流程如图2所示。

试题编辑修改流程的关键技术:

(1)从数据库读取的试题题干和答案二进制数据,在服务器文件夹生成题干和答案的Word文档,再用Spire.Doc for .NET控件合并为一个Word文档,合并时自动在题干与答案之间插入一个由代码生成的特殊标识。

(2)DSOframer控件提供Open()方法,可以直接在客户端打开服务器端的Word文档。

本文实现实例

在大学本科阶段,力学课程是众多工科专业的重要核心基础课。不同工科专业的力学课程的学习要求不一样,在期末考试时,要求教师根据学习内容的不同,提供多套试题以满足考核要求。试题库系统的建立为满足力学课程考试的要求提供了很大的方便,但是,力学试题的主要特点是公式多、图形多,相当多的B/S架构试题库系统采用的Web富文本编辑器在力学试题公式及图形的录入、修改方面并不方便。笔者利用本文方法所构建的试题导入及编辑修改模块,其运行效果如图3、图4、图5所示。

试题的录入、编辑修改都是在Word界面下进行,用户不需要花时间适应即可操作,从而提高试题库的维护效率。

本文总结

本文给出了在ASP.NET中使用DSOframer控件实现包含文本、图、表的试题导入试题库、浏览及修改编辑的方法,用简单方便的操作完成试题库试题内容录入、浏览和修改编辑,实现了组卷后与原来的排版格式保持一致,为试题库中试题的录入、浏览及修改维护提供了一种有效途径,该方法的可行性已在实践中得到验证。

参考文献:

[1]周虎.一种基于C#中将Word试题导入数据库的实现方法[J].电脑知识与技术,2016,12(35):8-10.

[2]邓永海,邓梅,李朝荣.ASP.NET中将Word试卷逐题导入数据库的实现方法[J].计算机与现代化,2010(12):152-154.

[3]张娟,范琪,毛子良,等.基于B/S模式下的图文混排技术的研究[J].云南大学学报:自然科学版,2010,32(S1):364-367.

[4]微软.Office对象库参考[EB/OL].[2020-7-10].https://docs.microsoft.com/zh-cn/office/vba/api/overview/library-reference/reference-object-library-reference-for-office.

[5]冰蓝科技.Spire.Doc for .NET中文教程[EB/OL].[2020-8-10].https://www.e-iceblue.cn/spiredoc/spire-doc-for-net-program-guide-content.html.

猜你喜欢
试题库控件题干
数字算式
使用“填表单”微信小程序 统计信息很方便
基于.net的用户定义验证控件的应用分析
提纲挈领 拨云见日
高校试题库建设方案探索
解剖学实验考试题库建设实践与探讨
浅谈基于Web试题库系统的设计
试题库建设之我见
掌握方法 有效答题
利用VF6.0的Timer控件实现动画效果