背  景:

      有些机构有word文档格式的试题,就好比一张试卷样子,有各类型的题目,有答案。而目前系统录入试题的方式是手动添加,并且一次只能添加一道题。所以,做个word试题录入。

 

 

需  求:

     word格式的试题录入数据库。保留word格式,比如上下脚标,以及字体颜色之类的。

 

难  点:
    word格式多,并且相当灵活,用户可以随时录入回车符,空行等。这就造成解析word文档逻辑很麻烦,因为不无法控制用户怎样录入试题进入word文档。

 

 

最终设计:

     开源软件比如poi无法做到读取word格式,也就是poi做不到读字体颜色和上下脚标。而且设计的word模板无图片、音频、解析、大纲、知识点等内容。

 

 

思路一:标识一道题的所有信息。

 

题型:单选回车符

题干:你是在做自己喜欢的事情吗?回车符

知识点:做自己回车符

难度:0.2回车符

分值:3回车符

大纲:做自己回车符

选项-A:是的,一直这样回车符

答案:A回车符

解析:是因为........回车符

 

说明:别的机构就是这样做的,比如把关键字加上中括号标识。那么这么做,应用程序将会非常繁琐,系统必须对每一行信息进行比对,比如系统是否有这样的知识点和大纲,验证每一项内容。如果解析不符合,则立即反馈。这种思维方式,也是我面对事情一种常规思维方式,就是一套完整的试题信息,然后进行解析并存储。但是这样的格式,word文档看起来其实很繁琐,并且每一道题都有这些关键标识信息。也挺麻烦的。

 

一种处理方式:利用poi的HWPFDocument转word文档为html文档,然后利用Jsoup工具操作Document(操作DOM),是可以做的,但是得找到规律,并自己也要适当构造一种规律。这样子就用操作String了。

 

 

思路二:

##TX##单选回车符

你是在做自己喜欢的事情吗?回车符

A.是的,一直这样回车符

B.是的,一直这样回车符

C.是的,一直这样回车符

D.是的,一直这样回车符

##TX##多选回车符

 

##Answer##回车符

##AN##单选回车符

A回车符

 

说明:word文档试题简洁,每一类题型都有一个标识,并且整篇word文档唯一。有答案分割,各题型分割,各题型答案分割。这种设计格式简单,将一件事分成两部分做。把word文档中的试题取出来,set到试题这个对象中,然后带到页面展示,在页面中有试题相关信息,大纲、知识点、分值、难度、图片、音频、试题解析都可以继续修改,并且当前试题的答案以及各选项和题干都可以再次修改。当点击保存编辑时,把当前题保存了,并且把第二题响应到页面,直到最后一题。

 

优化word模板:把答案放在试题后面这样子就少了很多解析内容,并且操作起来很简单。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

更多推荐

word试题模板设计总结