消防安全知识答题活动小程序v4.3.0

news2024/11/25 2:41:10

消防安全知识答题活动小程序v4.3.0

v4.3.0

1)实现答题倒计时功能

如果让你给一款答题小程序产品制定一个技术方案,比如实现答题倒计时功能,你会怎么做。

通常,我们对于倒计时的普遍认知是设置一个定时器去实现的,在定时到期以后执行注册的回调函数。基于这个认识,我们看看具体是怎么实现的,或是实现方案有哪些。

①setTimeout

有的同学可能会选择使用setTimeout,看看他是怎么实现的。首先是定义一个countDown函数,里面主要是一个执行setTimeout的函数体,在setTimeout里执行countDown。页面加载时,调用一次countDown,然后每一秒调用一次countDown。

Page({ 
  /**
   * 页面的初始数据
   */
  data: {
      count: 50
    },
    /**
       * 生命周期函数--监听页面加载
       */
    onLoad() {
      // 函数执行
      this.countDown();
    },
  	//倒计时函数的定义
    countDown() {
      const that = this;
      const { count } = that.data;
      //定时器
      const time = setTimeout(function () {
        that.setData({
          count: count - 1,
        });
        // 函数执行
        that.countDown();
      }, 1000);
    },
  })

确实是可以实现答题倒计时功能,但是这种技术方案存在着比较大的缺陷或者性能问题。当然,每一种技术方案都存在其优缺点,没有完美一说。但是,我们就是要在具体问题具体分析,找到对应当前应用场景或者当前业务需求的最优解。

②setInterval

提供多一种思路,多一种选择和可能性。我们看看另一种解决方案,setInterval。通过setInterval设定一个定时器,按照指定的周期(以毫秒计)来执行注册的回调函数。

Page({

  /**
   * 页面的初始数据
   */
  data: {
    secondsNum: 600
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
   	 // 函数执行
      this.countDown();
  },
  //倒计时函数的定义
    countDown() {
    	let secondsNum = this.data.secondsNum;
      //定时器
      let timer = setInterval(() => {
        secondsNum--;
        this.setData({
          secondsNum
        });
      }, 1000);
   },
})

 

2)实现限时作答功能

实现限时作答功能,其实就是当倒计时结束之后,程序需要做什么操作,比如做一些提示、限制不能继续作答了或者是系统强制交卷等。

①首先,如何判断倒计时结束呢?

通过判断secondsNum是否为0,是则倒计时结束,否则还没结束。

if (this.data.secondsNum == 0) {
  		// 弱提示
      wx.showToast({
        title: '答题时间到!\n已为您自动提交答卷!',
        icon: 'none',
        duration:3000,
        mask:true
      })
 }

②系统强制交卷

if (this.data.secondsNum == 0) {
      wx.showToast({
        title: '答题时间到!\n已为您自动提交答卷!',
        icon: 'none',
        duration:3000,
        mask:true
      });
  
  	 //系统自动提交
     this.addExamRecord();
  
  		// 取消由 setInterval 设置的定时器
  		clearInterval(timer);
 }

当然,这种方式也是存在一定的的缺陷或者性能问题。但是相对比前一种,不失为一种优化方向。后续,我也会在此基础上,再给出进一步优化的完整的解决方案。大家也可以先思考一下,可以相互交流交流。

 

v4.2.0

1)支持选项乱序

v4.1.0

1)支持多选题

 

2)支持填空题

 

v3.0.0

1)升级功能:

  • 答题页、结果页界面,增加展示微信头像和昵称栏目√
  • 由仅支持单选,升级为支持单选、判断、多选题型 √
  • 排行榜页排名机制,优化为取个人最佳成绩进行排名√
  • 各界面及功能一些小优化√

2)拓展功能:

  • 注册登录页 √
  • 错题集 √
  • 题库学习 √
  • 查看用户的答题成绩以及答题情况-管理员 √
  • 查看所有用户的答题记录-管理员 √
  • 后台题库管理系统-管理员 √
  • 题目增删查改-管理员 √

3)基于v2.0拓展升级:

  • 排行榜页
  • 活动规则页
  • 答题记录页
  • 首页、答题页、结果页
  • 微信授权登录
  • 获取微信头像和昵称等
  • 实现页面间跳转功能
  • 实现转发分享答题成绩功能
  • 题库随机抽题
  • 查询历史成绩
  • 实现用云开发实现查询题库功能
  • 实现动态题目数据绑定
  • 答题交互逻辑
  • 切换下一题
  • 系统自动判分
  • 提交答卷保存到云数据库集合
  • 答题结果页从云数据库查询答题成绩
  • 题库学习
  • 注册登录页
  • 支持单选、判断题型
  • 错题集
  • 查看用户的答题成绩以及答题情况-管理员
  • 查看所有用户的答题记录-管理员
  • 后台管理-管理员
  • 后台数据监控-管理员

v2.0.0

  • 活动规则页
  • 排行榜页
  • 答题记录页
  • 题库随机抽题
  • 微信授权登录
  • 获取微信头像和昵称等
  • 首页、答题页、结果页
  • 实现页面间跳转功能
  • 实现转发分享答题成绩功能
  • 实现用云开发实现查询题库功能
  • 实现动态题目数据绑定
  • 答题交互逻辑
  • 切换下一题
  • 系统自动判分
  • 提交答卷保存到云数据库集合
  • 查询历史成绩
  • 答题结果页从云数据库查询答题成绩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0基础学习VR全景平台篇第32章:场景功能-嵌入文字

大家好,欢迎观看蛙色VR官方系列——后台使用课程! 本期为大家带来蛙色VR平台,场景管理模块-嵌入功能文字模块! 功能位置示意 一、本功能将用在哪里? 嵌入功能可对VR全景作品嵌入【图片】【视频】【文字】【标尺】四…

Android平台OpenCV入门

一、导入OpenCV 别忘记把libopencv_java3.so添加进来。 二、初始化 OpenCVLoader.initDebug();三、常用方法 1. CvType 数据类型 以CV_64FC2为例,64指64位,F指浮点数,C指通道,2为2通道。 数值具体类型取值范围CV_8U8 位无符…

5.30-cloud support -learning

文章目录 namespaceaccessNSG(network security group )UDR (User-Defined Routing)Azure Firewall namespace Namespaces are defined at the Kubernetes cluster level, so each namespace is unique throughout the cluster. I…

C语言笔记 | 数据结构入门指南

文章目录 0x00 前言 0x01 百鸡百钱 0x02 借书方案知多少 0x03 持续更新 0x04 参考文献 0x05 总结 0x00 前言 写这篇《C语言笔记 | 数据结构入门指南》主要是为了帮助更多的编程爱好者打开数据结构的大门,同时也是为了自我编程水平能力的提升。在深奥的数据结构…

正交实验进行方差分析

一、案例介绍 想要从某种草药中提取植物酚,利用专业知识发现可能有三个条件会影响植物酚的提取,每个条件有三个水平,想要通过实验,寻找植物酚的最佳提取条件,其中提取植物酚的参考标准为植物酚的含量(案例…

在线原型设计是什么?8款在线原型工具助你高效设计!

原型设计是产品经理、设计师和开发工程师沟通最初的产品设想的重要工具。 在线原型通过云端的方式具象化地呈现产品内容、结构及粗略的布局,说明用户将如何与产品进行交互,搭建了产品经理、设计师和开发工程师沟通的桥梁,帮助产研团队减少信…

什么是深度数据包检测 (DPI)

随着混合工作成为生活的正常部分,新技术每天都在使用,同时总是通过网络传输数据的山体滑坡。通过高正常运行时间、快速解决问题和富有洞察力的情报提供无缝的用户体验至关重要。为此,对网络进行端到端监控非常重要。 深度数据包检测是一种用…

技术招聘漫谈 | 正在招Golang工程师的你,赶快收藏这份识人秘籍!

各位技术面试官,欢迎来到新一期的技术招聘漫谈专栏。 在前两期的专栏中,我们解析了前端工程师(点击此处回顾)以及 Java 工程师(点击此处回顾)这两个常见技术岗位的招聘技巧。 今天,我们想把目…

了解和使用 Docker 镜像仓库

前言 在上文 《了解和使用 Docker》 之后,反响不错,也上了热榜。本来是想直接整理一下容器编排工具 Docker Swarm 和 K8s 博文的,但是半路杀出了这个活动😂,为表敬意,先参与一波吧。 本文主要介绍一下容…

【MyBatis】MyBatis中#{}与${}的区别是什么?

文章目录 前言一、彻底理解SQL注入二、关于 # { }三、关于$ { }四、Mybatis中#{}与${}的区别五、代码案例使用#{}案例使用$ {}案例 前言 在开发中使用Mybatis经常使用到#{}与${},二者区别是?来总结一下。 在mybatis中动态 sql 是其主要特性之一&#x…

什么是现代化智慧型档案馆

近日,智慧档案馆建设的新闻热度不断攀升,你知道智慧档案馆是什么吗? ​智慧档案馆是指运用现代信息技术手段,对传统档案馆进行数字化转型,实现档案数字化存储、智能化检索和共享服务。通过数字化转型,不仅可…

< 免费体验ChatGPT:免费且好用,不用使用 “ 魔法 ”,一款功能强大且轻便的插件!webTab! >

免费且好用,不用使用 “ 魔法 ”,一款功能强大且轻便的插件!webTab! 👉 前言👉 功能演示图👉 使用经验分享👉 如何安装webTab插件呢?往期内容 💨 tips&#x…

(转载)基于量子遗传算法的函数寻优算法(matlab实现)

8.1 理论基础 8.1.1 量子遗传算法概述 量子遗传算法(quantum genetic algorithm,QGA)是量子计算与遗传算法相结合的产物,是一种新发展起来的概率进化算法。遗传算法是处理复杂优化问题的一种方法,其基本思想是模拟生物进化的优胜劣汰规则与染色体的交…

太优雅了,公司项目终于用上了Spring状态机

1、什么是状态机 1.1 什么是状态 先来解释什么是“状态”( State )。现实事物是有不同状态的,例如一个自动门,就有 open 和 closed 两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有限…

【HTML 往日冒险 01】标签 元素 属性 注释 文本格式化 颜色 CSS

HTML 往日冒险日志01 说在前面重新开始基础标签 basic元素 elements属性 attributes标题,水平线以及注释 headings段落与折行 paragraphs样式 html_styles文本格式化 formatting注释 comments颜色 colorsCSS 说在前面 HTML 对于现在的我来说,熟悉又陌生…

实验室信息系统源码,LIS源码

实验室信息系统源码,LIS源码 技术细节: SaaS架构的Client/Server应用 体系结构:Client/Server架构 客户端:WPFWindows Forms 服务端:C# .Net 数据库:Oracle 接口技术:RESTful API HttpW…

深度学习环境搭建笔记(一):detectron2安装过程

文章目录 第一步 安装python第二步 安装pycocotools第三步 安装Torch和Torchvision第四步 安装fvcore第五步 安装detectron2第六步 开始安装 第一步 安装python cuda 10.2 环境下 conda create -n detectron python3.7 第二步 安装pycocotools 下载对应的pycocotools-window…

ESXI7.0安装Windows Server 2008 R2

1:使用VC正常建立虚拟机,前四项根据自己的时间情况选择,兼容性用默认的ESXI7.0U2及更高版本。 2:客户机操作系统选择Windows,客户机操作系统版本选择我们想安装的Windows Server 2008 R2(64位) 3:自定义硬件…

LINUX使用问题记录

LINUX使用问题记录 linux 安装pylab报错 sudo apt-get install python3-matplotliblinux换源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bakvim 编辑 sources.list : $ sudo vim /etc/apt/sources.list 将 sources.list 中的内容替换如下 注意&#…

Vulkan Tutorial 7 纹理贴图

目录 23 图像 图片库 暂存缓冲区 纹理图像 布局转换 将缓冲区复制到图像上 准备纹理图像 传输屏障掩码 清除 24 图像视图和采样器 纹理图像视图 采样器 Anisotropy 设备特征 25 组合图像采样器 更新描述符 纹理坐标系 着色器 23 图像 添加纹理将涉及以下步骤&am…