用云开发搭建的微信答题小程序v1.0

简介: 用云开发搭建的微信答题小程序v1.0

近来百无聊赖,遂抽空做了一个答题小程序的系列教程,以及分享源码,是用云开发搭建的微信答题小程序v1.0。

界面截图
该答题小程序大致如下图:
image.png
微信小程序“防火安全知识专项学习与竞答”

结构层级
主要程序由3个界面组成,分别是index,test以及result,结构层级如下图所示:
image.png

index:包含开始答题界面的页面布局与样式,以及js逻辑;

test:包含答题界面的页面布局与样式,以及js逻辑;

results:包含答题成绩界面的页面布局与样式,以及js逻辑;

app:全局配置文件,全局变量等;

style:微信小程序的基本UI样式;

云开发数据库:存储相关题目数据。
image.png

1、index开始界面
主要功能是首页大图和信息的展示、按钮跳转以及分享。

(1)按钮跳转关键代码,就是catchtap点击事件与goToTest事件处理函数。
.wxml

<button class='cu-btn bg-red round block lg'>开始答题</button>


.js

//事件处理函数
goToTest: function() {

wx.navigateTo({
  url: '../test/test'
})

},
(2)分享实现,在button上使用open-type="share"属性,并且在页面js里面配置onShareAppMessage。
.wxml


.js

onShareAppMessage(res) {

return {
  title: '@你,快来参与消防安全知识答题活动吧~'
}

},
2、test答题界面
答题界面需要做的事情有:

与数据库连接,获取题目数据;

选中选项的前端交互;

点击切换到下一题;

系统自动判定答题结果,计算得分 ;

提交得分到数据库进行保存;

答题结束,跳转至答题成绩界面。

(1)与数据库连接,获取题目数据;
// 获取题库-函数定义
getQuestionList() {

// 显示 loading 提示框
wx.showLoading({
  title: '拼命加载中'
});
// 构建查询条件
activityQuestion.where({
  // 指定查询条件,返回带新查询条件的新的集合引用
  true: _.exists(true)
})
.get()
.then(res => {
  // 获取集合数据,或获取根据查询条件筛选后的集合数据。
  console.log('[云数据库] [activityQuestion] 查询成功')
  console.log(res.data)
  let data = res.data || [];
  
  // 将数据从逻辑层发送到视图层,通俗的说,也就是更新数据到页面展示
  this.setData({
    questionList:data,
    index: 0
  });

  // 隐藏 loading 提示框
  wx.hideLoading();
})

},
(2)选中选项的前端交互;
.wxml

  <label class="radio my-choosebox" wx:for="{{questionList[index].option}}" wx:for-index="key"  wx:for-item="value" wx:key="index">
    <radio value="{{key}}" checked="{{questionList[index].checked}}" />
    <text class="margin-left-xs">{{value}}</text>
  </label>
</radio-group>

.js

// 选中选项事件
radioChange(e){

this.data.chooseValue[this.data.index] = e.detail.value;

},
(3)点击切换到下一题;
.wxml


.js

// 下一题/提交 按钮
nextSubmit(){

// 如果没有选择
if (this.data.chooseValue[this.data.index] == undefined || this.data.chooseValue[this.data.index].length == 0) {  
  return wx.showToast({
    title: '请选择答案!',
    icon: 'none',
    duration: 2000
  })
}

// 判断所选择的选项是否为正确答案
this.chooseJudge();

// 判断是不是最后一题
this.lastJudge();

},
(4)系统自动判定答题结果,计算得分 ;
// 判断所选择的选项是否为正确答案
chooseJudge(){

var trueValue = this.data.questionList[this.data.index]['true'];
var chooseVal = this.data.chooseValue[this.data.index];
if (chooseVal.toString() != trueValue.toString()) {
  // 答错则记录错题
  this.data.wrong++;
  this.data.wrongListSort.push(this.data.index);
  this.data.wrongList.push(this.data.questionList[this.data.index]._id);
}else{
  // 答对则累计总分
  this.setData({
    totalScore: this.data.totalScore + 5
  })
}

},
(5)提交得分到数据库进行保存;
// 提交答卷
addExamRecord(){

wx.showLoading({
  title: '提交答卷中'
});
let examResult = {
  wrong: this.data.wrong,
  totalScore: this.data.totalScore
};
activityRecord.add({
  data: {
    ...examResult,
    createDate: db.serverDate()
  }
}).then(res => {

  // 跳转到答题结果页,查看成绩
  wx.redirectTo({
    url: '../results/results?id=' + res._id
  });

  wx.hideLoading();
})

}
(6)答题结束,跳转至答题成绩界面。
// 跳转到答题结果页,查看成绩
wx.redirectTo({

 url: '../results/results?id=' + res._id

});
3、results答题成绩界面
主要是查询答题情况和显示得分。在答题页面的时候,实现了提交得分到数据库进行保存。那么这里就可以从数据库中获取了。

.js

Page({
data: {

totalScore: null,
wrong: 0,
zql: null

},

onLoad(options) {

// 查看答题成绩
this.getExamResult(options.id);

},

// 系统自动判分
getExamResult(id){

wx.showLoading({
  title: '系统判分中'
});
activityRecord
.doc(id)
.get()
.then(res => {
  let examResult = res.data;
  
  let { wrong, totalScore } = examResult;
  this.setData({
    totalScore,
    wrong,
    zql: (20-wrong)/20*100
  })

  wx.hideLoading();
})

},
})
好了,用云开发搭建的微信答题小程序,v1.0版本至此完结,源码已经提交到gitee,撒花~

下一个版本v2.0正在在在开发中......

相关文章
预约按摩小程序开发,为什么很多上门按摩平台根本招聘不到优秀技师?
上门按摩平台面临招不到优秀技师的问题,主要原因是平台众多,技师选择多样。为解决此问题,平台可引入技师等级制度,根据订单数量和好评率划分高、低等级技师。高等级技师可享受70%-90%的高提成及首页推荐,这不仅能激励技师的积极性,还能帮助平台筛选出优质技师,提升服务质量和口碑,形成良性循环。
|
27天前
|
人工智能 小程序
【一步步开发AI运动小程序】五、帧图像人体识别
随着AI技术的发展,阿里体育等公司推出的AI运动APP,如“乐动力”和“天天跳绳”,使云上运动会、线上健身等概念广受欢迎。本文将引导您从零开始开发一个AI运动小程序,使用“云智AI运动识别小程序插件”。文章分为四部分:初始化人体识别功能、调用人体识别功能、人体识别结果处理以及识别结果旋转矫正。下篇将继续介绍人体骨骼图绘制。
|
28天前
|
人工智能 小程序 vr&ar
AI运动小程序开发常见问题集锦二
截至当前,我们的AI运动识别小程序插件已迭代至第23个版本,广泛应用于健身、体育、体测、AR互动等场景。本文针对近期用户咨询,汇总了常见问题,帮助用户减少开发成本,提高效率。主要涵盖计时与计数模式的区别、综合排行榜生成方法、全屏模式适配及无开发能力用户的解决方案。
|
28天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
2月前
|
存储 传感器 小程序
跳绳计数小程序开发系统
首先,我们需要明确跳绳计数小程序的核心功能:为用户提供跳绳计数的便捷方式。这意味着小程序需要能够准确地记录用户的跳绳次数,并为用户提供清晰、直观的计数展示。
|
2月前
|
人工智能 编解码 小程序
【一步步开发AI运动小程序】四、小程序如何抽帧
随着AI技术的发展,阿里体育等公司推出的“乐动力”、“天天跳绳”等APP使云上运动会、线上健身等概念备受关注。本文将引导您从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”。文中详细介绍了微信小程序抽帧的相关API、设置及注意事项,帮助开发者更好地实现AI运动功能。下篇将介绍人体识别技术,敬请期待。
|
2月前
|
传感器 存储 小程序
跳绳计数小程序开发
跳绳计数小程序旨在通过智能设备(如手机或智能手表)记录用户在跳绳过程中的次数、时间、速度等关键数据,为用户提供便捷的运动记录和数据分析服务
|
2月前
|
存储 小程序 安全
微信的开发管理都需要配置什么?
【10月更文挑战第17天】微信的开发管理都需要配置什么?
32 0
|
2月前
|
小程序 搜索推荐 前端开发
小剧场短剧影视小程序开发
小剧场短剧影视小程序旨在为用户提供一个便捷、互动的平台,让用户能够随时随地观看、分享和评论各类小剧场短剧。通过小程序,用户可以浏览热门短剧、搜索感兴趣的内容、参与社区互动,以及享受个性化的推荐服务。
|
2月前
|
小程序 搜索推荐 前端开发
短剧小程序开发案例
首先,明确你的短剧平台的目标用户群体和他们的需求。比如,年轻用户可能更倾向于轻松、幽默的短剧内容,而家庭用户则可能更偏爱教育、亲子类的短剧。了解用户需求有助于你设计更符合他们口味的功能和界面