MongoDB 如何实现问卷或考试设计

分类:编程技术 时间:2024-02-20 15:39 浏览:0 评论:0
0
本文向您展示 MongoDB 如何实现问卷或考试设计。内容简洁易懂。绝对会让你眼前一亮。希望您能从本文的详细介绍中有所收获。

MongoDB的特点

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

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

需求分析

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

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

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

结构设计

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

方案设计

公开课方案{                                                                                                           bsp; */ 私有字符串文本; /** * 选项图像 */ private String img; /** * 答案是否正确 */ private Boolean right; /** * 用户是否选择 */ private Boolean selected; ...

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

问题设计

public class Question extends MongoBean { /**   * 数据id */ private String dataId; /** * 问题类型,1对或错; 2道单选题; 3道选择题 */ * private Integer qType; /** * 问题标题 */        private String title; / ***标题选项*/私有列表<选项>选项;/***数据类型*@see rmjk.enums.biztypenum*/&   private Integer dataType; /** * 数据标题 */ private String dataTitle; /** * 分析 */ private String 分析; /** * 这个问题正确吗? */ 私有布尔右; /** * 这个问题已回答 持续时间 */ private Longuration; /** * 本题得分 */ private Long 分; ...

dataId用于bind 这题同样是业务数据,而dataType是用来标记业务数据的类型的。这两个字段方便数据扩展; dataTitle为业务数据的标题; options 是这个问题的选项;分析题用于用户答题后自查; right 用于记录问题是否正确。

添加新问题

上层接口

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

@PostMapping("/saveOrUpdateQuestion") public JsonData saveOrUpdateQuestion(@RequestBody 问题数据) { QuestionService.saveOrUpdateQuestion(data);返回 JsonData.success(); }

QuestionService:

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

DAO

编写器:

public void insert(String dataBase, Stringcollect, MongoBean data) { if (data.getId() == null) { data.setId(BsonTool.uuid()); MongoCollection<文档> 集合 = getCollection(dataBase, 收集);集合.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, Filter, Res); 返回 res;} 公共布尔更新 (String DataBase, String Collect, Bson Filter , Bson Update) {Mongocollection  Collection = GetCollection (DataBase, Collection ); UpdateResult ur = collection.updateOne(filter, update); return ur.getModifiedCount() > 0; }

In这样后端的工作就全部完成了,接下来就是前端如何提供这样的数据了后端的结构。

前端实现数据结构

前端使用vue实现JSON结构:

 
qTypes" :value="d.value" :key="d.value">{{ d.label }}
                                                                            0">+ <按钮尺寸=“小” @点击= delOpt(问题, o)"v-if="i2">- 正确答案  
-model="question.analysis" type=" textarea" row="1"   placeholder="答案分析"                                                                type="primary" :loading="saveLoading" @click="saveQuestion">保存

这里绑定的问题是一个问题。试卷由多个问题以及试卷的附加属性组成。

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

Exam exam = new Exam();列表 <问题> 问题 = reader.findRandom(manager.getExamDataBase(), ExamConstant.QUESTION_COLLECT, new Document(), Question.class, no);考试.setTitle(标题);考试。 setDuration(持续时间); return exam;

以上内容是MongoDB如何实现问卷或考试设计。你学到了知识或技能了吗?如果你想学习更多技能或者丰富您的知识库,请关注行业资讯频道。

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

用户评论