【答题】在线答卷-答题系统的微信小程序开发流程详解

news2024/11/26 23:19:18

用死记硬背的方法学习的学生,面对桌上堆积成厚厚的书本,是否感觉鸭梨山大呢,想着教育却面临着学习成本不小问题,是否感觉各种不便呢,如果对编程代码有感兴趣,不妨试试做一个自己的在线答题系统,这里可以用微信小程序项目来实现哦。

制作思路,将书上讲得各种的重点,摘录下并写到一个文档中,然后经过构建脚本处理,生成一个题库,放到一个托管题库文件的站点中,用小程序去请求后台获取题库,

打开微信开发工具,选择小程序,创建一个项目,

例如项目名称为miniprogram-answer,然后选择以下,再确定创建

  • AppID 使用自己的测试号
  • 不使用云服务
  • JavaScript - 基础模板

创建三个页面

在小程序首页上,创建三个页面,通过底部的选项卡来管理,

在项目下有个app.json文件,可以修改配置,在这里添加页面底部的选项卡,如下代码

"tabBar": {
    "list": [
        {
            "text": "科目",
            "pagePath": "pages/tab1/tab1",
            "iconPath": "static/icon_floder.png",
            "selectedIconPath": "static/icon_floder.png"
        },
        {
            "text": "答卷",
            "pagePath": "pages/tab2/tab2",
            "iconPath": "static/icon_floder.png",
            "selectedIconPath": "static/icon_floder.png"
        },
        {
            "text": "我的",
            "pagePath": "pages/tab3/tab3",
            "iconPath": "static/icon_floder.png",
            "selectedIconPath": "static/icon_floder.png"
        }
    ]
}

修改后点击保存,开发工具会自动创建好底部选项卡对应的三个页面文件

第一个页面

看看第一个页面,文件位置在pages/tab1/tab1

这个页面用于展示各种科目,和最近更新的信息,

在页面布局文件中tab1.wxml,添加布局,显示如下
在这里插入图片描述
在一个页面配置tab1.json文件中,可以看到,配置如下

{
    "usingComponents": {
        "carousel":"/components/carousel/carousel",
        "grid-menu":"/components/grid-menu/grid-menu",
        "group-list":"/components/group-list/group-list"
    }
}

页面用上面的三个自定义组件即可完成布局,它们分别是

  • carousel 轮播图
  • grid-menu 格子菜单
  • group-list 分组列表

第二个页面

看看第二个页面,文件位置在pages/tab2/tab2

这个页面用于展示用户的最近,或选择打开查看过的题目,

在页面布局文件中tab2.wxml,添加布局,显示如下
在这里插入图片描述

列表项是一个文件夹,点击展开,可显示里面的文件列表,
这个页面只用了group-list分组列表组件,类似手风琴组件的效果

第三个页面

看看第三个页面,文件位置在pages/tab3/tab3

用于展示自己的,答题及格的结果,和总成绩,

在页面布局文件中tab3.wxml,添加布局,显示如下
在这里插入图片描述

这个页面用的是一个user-card为用户名片组件,还有一个group-list分组列表组件展示成绩

分包加载

其它如内页,多分支页面,以及多页面,都可以放到分包中,

可按需加载,减少小程序加载时间,

接下来,创建一个分包,需要在配置文件app.json添加一个分包信息,代码如下

"subPackages": [
  {
        "root": "package1",
        "pages": [
            "pages/index/index",
            "pages/answer/answer"
        ]
    }
]

点击保存后,开发工具会在项目下自动创建一个分包文件夹package1

选题列表页面

在分包文件夹中,创建一个选题列表页面,文件在package1/pages/index/index

当用户点击其中一个科目后,例如点击电子科目,进入的页面就是选题列表页面,如下图
在这里插入图片描述

页面用到了一个搜索框,还有一个自定义组件group-list展示列表,

答题页面

在分包文件夹中,再创建一个答题页面,文件在package1/pages/answer/answer

当用户选择一个题目后,例如点击计算机基础知识题,进入的页面就是答题页面,如下图
在这里插入图片描述

页面布局是用了表单组件:form,radio,checkbox,button多个输入组件组合的,并不复杂,
答题页面可以有 单选题,多选题,填空题,
在标题栏更新倒计时

后台数据

上面的页面都讲完了,有自信可以做出一个一样的来,但是,页面的数据都是从哪里来的呢

请求数据

当然是从远程服务器获取的,可以想象它是用浏览器访问网络信息,需要先知道它的访问地址,

在文件app.js中添加请求的数据方法,代码如下

/**
 * 请求数据方法
*/
request(options) {
    const req = (complete) => {
        wx.request({
            complete,
            url: `https://gitcode.net/zs1028/resource_mp_answer/-/raw/master/${options.filename}?inline=false`,
            fail: options.fail,
            success(res) {
                switch(res.statusCode){
                    case 200:
                        options.success(res.data);
                        break;
                    case 404:
                    default:
                        options.fail({ errMsg:'资源未找到' })
                }
            }
        })
    };
    if (options.showLoading) {
        wx.showLoading({
            title: options.showLoading instanceof String ? options.showLoading : '请求中',
            success:() => req(() => wx.hideLoading())
        })
    }else req()
},

请求方法request()和微信小程序的API wx.request()用法是一致的,
只是有一点不同,url应换成filename资源文件名(包括路径),
如果想改用自己的题库,把其中链接替换成自己管理的gitcode项目地址即可

继续在文件app.js中添加点击方法navigateToAnswerPage(),用于打开答题页面,代码如下

navigateToAnswerPage(item) {
 	wx.navigateTo({
      url: `/package1/pages/answer/answer?name=${item.key}&value=${item.value}`,
    })
}

上面所讲得两个方法写好了,在其它的页面上就可以调用这个方法,加载数据和打开答题页面

管理后台

后台数据都放在这里的,点此 resource_mp_answer 查看,可以看到数据都是json文件,

数据放在托管的网站Gitcode中,可方便之后的管理和维护,无须花费租个服务器,降低了成本,

由于数据默认是公开的,放在托管的网站中任何人都能访问和复制,
所以,私有的数据(项目)是不能公开访问和使用的,设置简单,

温馨提示

托管网站是用于托管代码的,不知道后期会不会限制托管资源(可能认为是漏洞),暂时目前它是仍可使用的

关于项目

就写到这里,看到这里,读者对答题的实现思路是否清晰了呢,

有小程序开发基础的话,自己可以尝试实现一个吧,

关于题库资源的整理,
在读学生有可能很需要实现用这个辅助学习,边学边更新学习资料,就当记学习笔记一样使用,考前复习;
这对在校教师也很有帮助吧,毕竟个人的力量有限,教师可以组织让多个学生一起参与共建一个题库资源,共享题库资源,提高学习效率,对考试有信心。

来看下答题小程序项目的运行效果,动图如下,
在这里插入图片描述

动图中有删减,仅部分展示

项目源码

关于项目源码,已放在资源类别下,需要找一找,点此查找 答题-小程序-项目源码,(在手机上访问可能找不到,请用电脑浏览器查看),请放心下载,感谢支持。

请添加图片描述

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

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

相关文章

有效性常见标志词

有效性常见标志词 混淆概念常见标志词 ( 1 ) 既然…那么… ( 2 ) 也就是说… ( 3 ) 很显然… ( 4 ) 因为A 就是B…所以… ( 5 ) 某主体A 是 ,…

低代码01之构建项目框架

目录 低代码之构建框架11:项目初始化2:src / data.json 数据 ( 容器大小与渲染的表单数据 )3:App.vue ( 导入editor组件传递data.json之中的数据与 向下提供组件配置数据config )4:src / packages / editor…

我记不住的那些C语言的二维数组的函数传参

背景: 最近在复习数据结构和算法,顺带刷刷题,虽然很长时间不刷题了但还是原来熟悉的味道,每一次重学都是加深了上一次的理解。本次我们看一下如何将C语言的二维数组进行函数传参,C语言实现。 其实这个比较简单&#x…

springboot项目使用proguard配置代码混淆

springboot项目使用proguard配置代码混淆 代码混淆是一些软件开发过程中必不可少的步骤。 常用的代码混淆技术有 proguard maven plugin , yguard maven plugin, procyon maven plugin, dex maven plugin . 这些代码混淆技术大同小异,都是对maven打包生成class时进…

补充知识点

这里写目录标题 进制转换Java内置的进制转换介绍具体代码 有符号数据表示法整数强制转换之数据溢出浮点数进制转换浮点数储存 进制转换 Java内置的进制转换 介绍 也就是常用API里Integer的静态方法 具体代码 注意 最后一个方法,返回的是基于第二个参数为基数的第…

大模型部署实战(三)——ChatGLM-6B

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

SSR渲染-初识Nuxt-01

SSR服务端渲染 SSR服务端渲染:在后端将html页面处理好,前端直接展示(可以解决为后端给你传了一个html脚本,全段渲染) 为什么要有SSR服务端渲染? 可以解决单页面首屏加载慢的问题,同时有利于用…

在线分享怎么多接口批量查询快递信息

做物流和电商行业的小伙伴应该都知道,大量快递集中发出后,我们要做的就是及时查询和跟踪快递单号,这样能够有效避免快递发错或快递丢失等情况出现,小编今天给大家安利一款全自动批量查询跟踪快递单号的辅助工具,它支持…

【C++/嵌入式笔试面试八股】二、21.分层模型 | HTTP

分层模型 01.画出OSI和TCP/IP协议栈的对应关系 对应关系记忆2113 02.什么是OSI七层模型?每层列举2个协议。❤️ OSI七层模型及其包含的协议如下 物理层: 传输单位为bit 功能:通过物理媒介透明的传输比特流,确定机械及电气规范 主要包括的协议为:IEE802.3 CLOCK RJ45 数据链…

[学习笔记] [机器学习] 10. 支持向量机 SVM(SVM 算法原理、SVM API介绍、SVM 损失函数、SVM 回归、手写数字识别)

视频链接数据集下载地址:无需下载 学习目标: 了解什么是 SVM 算法掌握 SVM 算法的原理知道 SVM 算法的损失函数知道 SVM 算法的核函数了解 SVM 算法在回归问题中的使用应用 SVM 算法实现手写数字识别器 1. SVM 算法简介 学习目标: 了解 …

路径规划算法:基于阿基米德优化优化的路径规划算法- 附代码

路径规划算法:基于阿基米德优化优化的路径规划算法- 附代码 文章目录 路径规划算法:基于阿基米德优化优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用…

Spring Bean-生命周期

三连支持 一起鼓励 一起进步 Bean生命周期 文章目录 一、生命周期1.Bean中配置生命周期2.实现InitializingBean和DisposableBean接口3.PostConstruct & PreDestroy4.BeanPostProcessor接口 二、执行过程三、源码中使用的BeanPostProcessor1.以ApplicationContextAwareProce…

【Flutter】Flutter 如何实现主题 Theme 切换

文章目录 一、引言二、Flutter 中的主题(Theme)和主题数据(ThemeData)三、如何在 Flutter 中创建自定义主题四、在 Flutter 中实现主题切换五、完整的代码示例六、总结 一、引言 大家好,欢迎阅读这篇文章。今天我们要…

Android——发送和接收广播

实验名称: 发送和接收广播 实验目的: (1)能创建广播接收者,实现广播的注册 (2)能自定义广播,发送和接收广播 实验内容及原理&a…

uni-app 使用axios发请求 运行到微信开发者工具报错 Adapter “http‘ is not available in the build

场景 最近在使用uni-app开发H5移动端,跟往常一样使用axios发请求,做一些全局的请求拦截响应拦截操作 uni-app数据存储,uni-ui组件开发,配置axios,vuex。配置了vue.config.js文件做跨域操作 运行到谷歌浏览器一切正常…

[n00bzCTF 2023] CPR 最后还是差一个

Crypto AES 给了java的加密原码,AES加密,有key import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import java.n…

【论文导读】- Variational Graph Recurrent Neural Networks(VGRNN)

文章目录 文章信息摘要BackgroundGraph convolutional recurrent networks (GCRN)Semi-implicit variational inference (SIVI) Variational graph recurrent neural network (VGRNN)VGRNN modelSemi-implicit VGRNN (SI-VGRNN) 文章信息 Variational Graph Recurrent Neural …

1.OpenCV 运行环境配置(Python)

一、安装Python 1.在Python官网下载Python。Download Python | Python.org 下载有点慢,需耐心等一等。(用迅雷下载挺快) 2.下载完后,一步一步的安装即可。我本地安装在 D:\Python\,路径可以自定义。安装时勾选了添加…

​selenium+python做web端自动化测试框架与实例详解教程

最近受到万点暴击,由于公司业务出现问题,工作任务没那么繁重,有时间摸索seleniumpython自动化测试,结合网上查到的资料自己编写出适合web自动化测试的框架,由于本人也是刚刚开始学习python,这套自动化框架目…

Linux操作系统的启动流程

一、(通常)操作系统的启动流程步骤 【关于BIOS的介绍,如果是操作系统小白可以参考一下百度百科的解释:】 通常操作系统启动的流程一般包括以下步骤: BIOS自检:计算机开机后,会进入Power On Se…