用云开发搭建的微信答题小程序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正在在在开发中......

相关文章
|
7天前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
2054 13
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
5天前
|
人工智能 小程序 程序员
【视频测评 DEMO 参考】VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
97 7
|
12天前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
124 12
|
2月前
|
人工智能 小程序
【一步步开发AI运动小程序】十五、AI运动识别中,如何判断人体站位的远近?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,无需后台支持,具有快速、体验好、易集成等特点。本文介绍如何利用插件判断人体与摄像头的远近,确保人体图像在帧内的比例适中,以优化识别效果。通过`whole`检测规则,分别实现人体过近和过远的判断,并给出相应示例代码。
|
24天前
|
小程序 前端开发 关系型数据库
uniapp跨平台框架,陪玩系统并发性能测试,小程序源码搭建开发解析
多功能一体游戏陪练、语音陪玩系统的开发涉及前期准备、技术选型、系统设计与开发及测试优化。首先,通过目标用户分析和竞品分析明确功能需求,如注册登录、预约匹配、实时语音等。技术选型上,前端采用Uni-app支持多端开发,后端选用PHP框架确保稳定性能,数据库使用MySQL保证数据一致性。系统设计阶段注重UI/UX设计和前后端开发,集成WebSocket实现语音聊天。最后,通过功能、性能和用户体验测试,确保系统的稳定性和用户满意度。
|
30天前
|
小程序 IDE PHP
圈子源码如何打包生成App小程序/开发一个圈子系统软件所需要的费用体现在哪里?
将PHP源码打包成App的过程涉及多个步骤和技术选择。以圈子源码为例,首先明确需求,确定App功能和目标用户群体,并根据需求开发小程序页面,如用户注册、圈子列表等。源码准备阶段确保源码适用于小程序开发,环境配置需安装IDE(如微信开发者工具)及依赖库。最后在IDE中打包小程序并上传至管理平台,通过审核后发布。费用方面,模板开发成本较低,定制开发则更高,具体取决于需求复杂度和第三方服务费用。
73 0
|
2月前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
29天前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
26 0
|
2月前
|
人工智能 小程序 UED
【一步步开发AI运动小程序】十六、AI运动识别中,如何判断人体站位?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,本地引擎无需后台支持,具备快速、体验好、易集成等优势。本文介绍如何利用插件的`camera-view`功能,通过检测人体站位视角(前、后、左、右),确保运动时的最佳识别率和用户体验。代码示例展示了如何实现视角检查,确保用户正或背对摄像头,为后续运动检测打下基础。
|
2月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十七、如何识别用户上传视频中的人体、运动、动作、姿态?
【云智AI运动识别小程序插件】提供人体、运动、姿态检测的AI能力,支持本地原生识别,无需后台服务,具有速度快、体验好、易集成等优点。本文介绍如何使用该插件实现用户上传视频的运动识别,包括视频解码抽帧和人体识别的实现方法。

热门文章

最新文章