如何使用MongoDB实现问卷/考试设计功能

分类:编程技术 时间:2024-02-20 15:24 浏览:0 评论:0
0
本文与大家分享如何使用MongoDB实现问卷/考试设计功能。小编觉得还是比较实用的,所以分享给大家学习一下。希望您读完本文后有所收获。话不多说,下面就和小编一起来看看吧。

MongoDB的特点

MongoDB是一个用于文档存储的数据库。在 MongoDB 中,一条记录称为文档,它由类似于 JSON 结构的键值对组成。

由于类似于MongoDB直接存储JSON的特性,MongoDB天然适合作为存储复杂数据结构的介质。类似问卷、考试的需求,用MySQL这样的关系型数据库实现过于复杂,效率低下;但如果你使用MongoDB来实现它,你会发现它极其清晰和简单。

需求分析

在试卷中,会有很多问题。类型题型一般可分为单项选择题和多项选择题。 、真假题、简答题等,每道题都会有很多选项。选项可以是文字描述、图片或图片和文字的组合。

那么一张试卷的JSON格式应该大致是这样的:

当然这只是最简单的数据结构,要完成一份试卷,需要添加更多属性。

结构设计

我们采用自下而上的结构设计方法,首先设计每个选项的数据结构。

选项设计

public class Option { /** * 选项类型 */ private Integer oType = 1; / ** * 选项内容 */ private String text; /** * 选项图像 */ private String img; /** * 是否正确?答案 */ private Boolean right; /** * 用户是否选择 */ private Boolean selected; ...

选项类型e oType 用于指示选项是普通文本还是图像或图形和文本; right用于标记该选项是否为正确答案,用于自动判断; selected 用于标记用户是否选择了该答案。

问题设计

 public class Question extends MongoBean { /** * 数据 id */ private String dataId; /** * 问题类型,1对或错; 2道单选题; 3道选择题 */ private Integer qType; /** * 问题标题 */ private String title; /** * 问题选项 */ private List

dataId用于将此问题绑定到同一个业务数据,dataType用于标记此业务数据的类型,这两个字段方便数据扩展; dataTitle为业务数据的标题; options 是该题的选项;分析是对问题的分析,用于用户回答问题后的自查; right 用于记录问题是否正确。

添加新问题

上层接口

提供添加新问题的接口:< /p >

@PostMapping("/saveOrUpdateQuestion")public JsonData saveOrUpdateQuestion(@RequestBody 问题数据) { QuestionService.saveOrUpdateQuestion(data); return JsonData.success();}
< p>QuestionService:

public void saveOrUpdateQuestion(问题数据) { if (StringUtils.isEmpty(data.getId( ))) {//添加 writer.insert(manager.getExamDataBase(), ExamConstant.QUESTION_COLLECT, data); } else {//修改 writer.updateDocument(data, ExamConstant .QUESTION_COLLECT); }}

DAO

Writer:

public void insert(String dataBase, Stringcollect, MongoBean data ) { if ( data.getId() == null) { data.setId(BsonTool.uuid()); MongoCollection<文档> 集合 = getCollection(dataBase, 收集); collection.insertOne(Document.parse(JSONObject.toJSONString (data)));} public Document updateDocument(MongoBean data, String QuestionCollect) { 文档过滤器 = new Document(); } filter.put("id", data.getId());文档资源 = new Document(); res .put("$set", BsonDocument.parse(JSONObject.toJSONString(data)));更新(manager.getExamDataBase(),questionCollect,过滤器,res);返回res;}公共布尔更新(字符串dataBase,字符串收集,Bson过滤器,Bson更新){MongoCollection 集合= getCollection(dataBase,collect); UpdateResult ur = collection.updateOne(过滤器,更新); return ur.getModifiedCount() > 0;}

这就是后端的工作原理 一切就完成了。接下来就是前端如何向后端提供这样的数据结构。

数据结构前端实现

前端使用vue实现JSON构建:

 
<选择 v-model="question.qType" class="input-180" placeholder="问题类型" @on-change="changeQType (问题)">  
{{ i2+1}}: <按钮尺寸=“小”@click =“addOpt(问题)”v-if =“i2====0”>+ <按钮size="small" @click="delOpt(question, o)" v-if="i2">- 正确答案

这里绑定的题是一道题,一张试卷由多道题组成,再加上附加题试卷的属性。

题目的dataId可以直接与试卷的id绑定

考试 考试 = new Exam() ;List<问题> questions = reader.findRandom(manager.getExamDataBase(), ExamConstant.QUESTION_COLLECT, new Document(), Question.class, no);exam.setTitle(title);exam.setDuration(dutation);返回考试;< /pre>

以上就是如何利用MongoDB来实现一份问卷/考试设计功能,小编认为有些知识点在我们日常工作中可能会看到或者用到。希望您能从本文中了解更多信息。更多详情请关注行业资讯频道。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何使用MongoDB实现问卷/考试设计功能

用户评论