当前位置: 首页 > news >正文

基于Java、SpringBoot和uniapp在线考试系统安卓APP和微信小程序

摘要

基于Java、SpringBoot和uniapp的在线考试系统安卓APP微信小程序是一种结合了现代Web开发技术和移动应用技术的解决方案,旨在为教育机构提供一个方便、高效和灵活的在线考试平台。该系统采用Java语言进行后端开发,使用SpringBoot框架简化企业级应用的开发流程。同时,利用uniapp框架开发跨平台的移动应用程序和微信小程序,以满足不同用户的需求。

在这个系统中,用户可以在安卓设备上安装APP或通过微信搜索小程序来访问在线考试功能。学生可以参加考试、查看成绩和学习进度,教师可以创建和管理试卷,设置考试时间限制等。

总之,基于Java、SpringBoot和uniapp的在线考试系统安卓APP微信小程序为教育机构提供了一个便捷、高效和灵活的在线考试解决方案,有助于提高教育质量和效率。

使用的技术

后端:Java语言,SpringBoot框架,MySql数据库,Maven依赖管理等;

前端:Vue.js语法的uni-app框架。

版本1实现的功能

管理员、教师、学生三种角色;

用户登录:管理员、教师和学生均可以使用自己的账号和密码进行登录APP;

人员管理:管理员可以对老师和学生的身份信息编辑、删除,老师可以对学生的身份信息进行编辑和删除;

考试记录:参与过考试的人员可以查看自己的考试记录,包括成绩和试题答案;

试卷管理:管理员和老师可以对试卷进行管理,包括添加试卷、添加试题、发布试卷等操作;

版本2在1的基础上新增如下功能

由原来的只支持APP改为支持APP和微信小程序;

管理员和教师新增PC浏览器端后台管理(移动端功能没有减少),管理员后台(用户管理、试卷管理、题库管理),教师后台(试卷管理、题库管理);

新增题库管理,试卷可以从题库选择已有的试题;

试卷添加之后可以一键自动组卷,添加试题到试卷里面去,也可以手动修改试卷的试题内容;

教师和管理员可以为试卷添加考试人员,只有被添加的人才能进行那套试卷的在线考试。

部分后端代码展示

public ResponseResult<Object> queryListWithNum(ExamPaper examPaper) {QueryWrapper<ExamPaper> queryWrapper;if(StringUtils.isNotEmpty(examPaper.getPaperName())) {queryWrapper= new QueryWrapper<ExamPaper>();queryWrapper.like("paper_name",examPaper.getPaperName());}else {queryWrapper= new QueryWrapper<ExamPaper>(examPaper);}List<ExamPaper> paperList = examPaperMapper.selectList(queryWrapper);for (ExamPaper paper:paperList){ExamTest examTest = new ExamTest();examTest.setValidFlag(1);examTest.setState(0);examTest.setPid(paper.getPid());QueryWrapper<ExamTest> queryWrapperTest = new QueryWrapper<ExamTest>(examTest);paper.setUnStartNum(examTestMapper.selectCount(queryWrapperTest));examTest.setState(1);paper.setPassNum(examTestMapper.selectCount(queryWrapperTest));examTest.setState(2);paper.setFailNum(examTestMapper.selectCount(queryWrapperTest));ExamQuestion examQuestion = new ExamQuestion();examQuestion.setValidFlag(1);examQuestion.setType(0);QueryWrapper<ExamQuestion> queryWrapperQuestion = new QueryWrapper<ExamQuestion>(examQuestion);paper.setSingleCount(examQuestionMapper.selectCount(queryWrapperQuestion));examQuestion.setType(1);paper.setMultiCount(examQuestionMapper.selectCount(queryWrapperQuestion));examQuestion.setType(2);paper.setJudgeCount(examQuestionMapper.selectCount(queryWrapperQuestion));}return new ResponseResult<Object>(ResponseCode.SUCCESS,"查询成功",paperList);}public ResponseResult<Object> autoCreatePaper(ExamPaper examPaper) {QueryWrapper<ExamPaper> queryWrapper = new QueryWrapper<ExamPaper>(examPaper);examPaper = examPaperMapper.selectOne(queryWrapper);ExamQuestion examQuestion = new ExamQuestion();examQuestion.setValidFlag(1);examQuestion.setType(0);examQuestion.setPid(examPaper.getPid().intValue());QueryWrapper<ExamQuestion> queryWrapperQuestion = new QueryWrapper<ExamQuestion>(examQuestion);examPaper.setSingleCount(examQuestionMapper.selectCount(queryWrapperQuestion));examQuestion.setType(1);examPaper.setMultiCount(examQuestionMapper.selectCount(queryWrapperQuestion));examQuestion.setType(2);examPaper.setJudgeCount(examQuestionMapper.selectCount(queryWrapperQuestion));if(examPaper.getSingleNum()>0){int limit = examPaper.getSingleNum() - examPaper.getSingleCount();if(limit > 0){List<ExamQuestion> randQue = examQuestionMapper.getRandQuestion(0,limit);autoAddItem(randQue, examPaper);}}if(examPaper.getMultiNum()>0){int limit = examPaper.getMultiNum() - examPaper.getMultiCount();if(limit > 0){List<ExamQuestion> randQue = examQuestionMapper.getRandQuestion(1,limit);autoAddItem(randQue, examPaper);}}if(examPaper.getSingleNum()>0){int limit = examPaper.getJudgeNum() - examPaper.getJudgeCount();if(limit > 0){List<ExamQuestion> randQue = examQuestionMapper.getRandQuestion(2,limit);autoAddItem(randQue, examPaper);}}return new ResponseResult<Object>(ResponseCode.SUCCESS,"创建成功");}public void autoAddItem(List<ExamQuestion> randQue,ExamPaper paper){if(randQue==null||randQue.isEmpty())return;for(ExamQuestion one:randQue){one.setPid(paper.getPid().intValue());one.setQid(null);examQuestionMapper.insert(one);}}

部分前端代码展示

<template>  <view class="container">  <view class="user-section"><image class="bg" src="/static/user-bg.jpg"></image><view class="user-info-box"><view class="portrait-box"><image style="background-color: white;" class="portrait" :src="getHead()"></image></view><view class="info-box" ><text class="username">{{ user.nickName || '游客'}}</text><view class="info-box" v-if="user.userName"><text class="username">姓名:<text class="u-tips-color">{{  user.userName }}</text></text></view><view class="info-box" v-if="user.userClass"><text class="username">班级:<text class="u-tips-color">{{  user.userClass }}</text></text></view></view></view></view><view class="u-flex u-direction-row u-row-center" v-if="!user"><view class="container"><view class="list-cell " style="text-align: center;"><text class="cell-tit" style="color: #909399;">游客无法享受购物的快乐</text></view><view class="list-cell log-out-btn" @click="toLogin"><text class="cell-tit">前往登录</text></view></view></view><view v-if="user"class="cover-container":style="[{transform: coverTransform,transition: coverTransition}]"@touchstart="coverTouchstart"@touchmove="coverTouchmove"@touchend="coverTouchend"><image class="arc" src="/static/arc.png"></image><view v-if="user.type != 2"><view class="tj-sction u-p-t-20 u-font-30" style="color: #2979ff;">管理专区</view><view class="" style="background-color: white;"><view @click="jumpToAddUser(2)" class="u-p-20 u-border-bottom">添加学生</view><view   @click="jumpToAddUser(1)" v-if="user.type==0" class="u-p-20 u-border-bottom">添加教师</view><view  @click="jumpToUsrList"  class="u-p-20 u-border-bottom">人员管理</view><view  @click="jumpToResList"  class="u-p-20">题库管理</view></view></view><!-- 浏览历史 --><view class="history-section icon"><view class="sec-header"><text>其他功能</text></view><list-cell icon="icon-shezhi1" iconColor="#e07472" title="设置" border="" @eventClick="navTo('/pages/set/set')"></list-cell><list-cell icon="icon-share" iconColor="#3f80de" title="退出登录" border="" @eventClick="toLogout"></list-cell></view></view></view>  
</template>  

演示视频

基于Java和UniAPP在线考试系统安卓APP微信小程序

相关文章:

基于Java、SpringBoot和uniapp在线考试系统安卓APP和微信小程序

摘要 基于Java、SpringBoot和uniapp的在线考试系统安卓APP微信小程序是一种结合了现代Web开发技术和移动应用技术的解决方案&#xff0c;旨在为教育机构提供一个方便、高效和灵活的在线考试平台。该系统采用Java语言进行后端开发&#xff0c;使用SpringBoot框架简化企业级应用…...

抖音a-bogus加密解析(三)

要补的环境我给提示&#xff0c;大家自行操作&#xff0c;出了问题就是因为缺环境&#xff0c;没补好 window global; // reading _u未定义 window.requestAnimationFrame function () {} // XMLHttpRequest 未定义 window.XMLHttpRequest function () {} window.onwheelx …...

IS-IS DIS

原理概述 OSPF 协议支持4种网络类型&#xff0c; IS-IS 协议只支持两种网络类型&#xff0c;即广播网络和点到点网络。与 OSPF 协议相同&#xff0c; IS-IS 协议在广播网络中会将网络视为一个伪节点( Pseudonode &#xff0c;简称 PSN )&#xff0c;并选举出一台 DIS ( Designa…...

random和range

含义&#xff1a; random(1&#xff0c;10) 不包含10&#xff0c;用于生成随机数。它可以生成浮点数或整数&#xff0c;取决于具体的使用方式。 range(0&#xff0c;1) 不包含1&#xff0c;用于生成一个整数序列。它可以生成一个指定范围内的连续整数序列。 区别在于&#x…...

研二学妹面试字节,竟倒在了ThreadLocal上,这是不要应届生还是不要女生啊?

一、写在开头 今天和一个之前研二的学妹聊天&#xff0c;聊及她上周面试字节的情况&#xff0c;着实感受到了Java后端现在找工作的压力啊&#xff0c;记得在18&#xff0c;19年的时候&#xff0c;研究生计算机专业的学生&#xff0c;背背八股文找个Java开发工作毫无问题&#x…...

Golang:gammazero/deque是一个快速环形缓冲区deque(双端队列)实现

gammazero/deque是一个快速环形缓冲区deque&#xff08;双端队列&#xff09;实现。 文档 https://github.com/gammazero/deque 安装 go get github.com/gammazero/deque代码示例 先入先出队列 package mainimport ("fmt""github.com/gammazero/deque&quo…...

C++ 时间处理-统计函数运行时间

1. 关键词2. 问题3. 解决思路4. 代码实现 4.1. timecount.h4.2. timecount.cpp 5. 测试代码6. 运行结果7. 源码地址 1. 关键词 C 时间处理 统计函数运行时间 跨平台 2. 问题 C如何简单便捷地实现“函数运行时间的统计”功能&#xff1f; 3. 解决思路 类的构造函数&#x…...

JAVA面试题大全(十五)

1、Zookeeper 是什么&#xff1f; zookper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务。是 google chubby 的开源实现&#xff0c;是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护…...

使用python对指定文件夹下的pdf文件进行合并

使用python对指定文件夹下的pdf文件进行合并 介绍效果代码 介绍 对指定文件夹下的所有pdf文件进行合并成一个pdf文件。 效果 要合并的pdf文件&#xff0c;共计16个1页的pdf文件。 合并成功的pdf文件&#xff1a;一个16页的pdf文件。 代码 import os from PyPDF2 import …...

Day50 | 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 总结

代码随想录算法训练营Day50 | 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 总结 LeetCode 309.最佳买卖股票时机含冷冻期 题目链接&#xff1a;LeetCode 309.最佳买卖股票时机含冷冻期 思路&#xff1a; 四个状态。 保持持有股票&#xff0c;保持卖出股票…...

Steam在连接至服务器发生错误/连接服务器遇到问题解决办法

Steam作为全球最大的数字游戏分发平台&#xff0c;构建了一个活跃的玩家社区&#xff0c;用户可以创建个人资料&#xff0c;添加好友&#xff0c;组建群组&#xff0c;参与讨论&#xff0c;甚至直播自己的游戏过程。通过创意工坊&#xff0c;玩家还能分享自制的游戏模组、地图、…...

kafka 工作流程文件存储

爬虫组件分析 目录概述需求&#xff1a; 设计思路实现思路分析1.kafka 工作流程2.kafka 文件存储 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for…...

贪心算法4(c++)

过河的最短时间 题目描述 输入 在漆黑的夜里&#xff0c;N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话&#xff0c;大家是无论如何也不敢过桥去的。不幸的是&#xff0c;N个人一共只带了一只手电筒&#xff0c;而桥窄得只够让两个人同时过&#xff0c;如果…...

【无标题】yoloV8目标检测与实例分割--目标检测onnx模型部署

1. 模型转换 ONNX Runtime 是一个开源的高性能推理引擎&#xff0c;用于部署和运行机器学习模型&#xff0c;其设计的目标是优化执行open neural network exchange &#xff08;onnx&#xff09;格式定义各模型&#xff0c;onnx是一种用于表示机器学习模型的开放标准。ONNX Ru…...

深入理解与防御跨站脚本攻击(XSS):从搭建实验环境到实战演练的全面教程

跨站脚本攻击&#xff08;XSS&#xff09;是一种常见的网络攻击手段&#xff0c;它允许攻击者在受害者的浏览器中执行恶意脚本。以下是一个XSS攻击的实操教程&#xff0c;包括搭建实验环境、编写测试程序代码、挖掘和攻击XSS漏洞的步骤。 搭建实验环境 1. 安装DVWA&#xff…...

初步认识栈和队列

Hello&#xff0c;everyone&#xff0c;今天小编讲解栈和队列的知识&#xff01;&#xff01;&#xff01; 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&…...

插件:NGUI

一、版本 安装完毕后重启一下即可&#xff0c;否则可能创建的UI元素不生效 二、使用 Label文字 1、创建Canvs 2、只有根节点的这些脚本全部展开才能鼠标右键创建UI元素 3、选择字体 Label添加打字效果 Sprite图片 1、选择图集 2、选择图集中的精灵 InvisibleWidget容器 用来…...

网络爬虫原理及其应用

你是否想知道Google 和 Bing 等搜索引擎如何收集搜索结果中显示的所有数据。这是因为搜索引擎对其档案中的所有页面建立索引&#xff0c;以便它们可以根据查询返回最相关的结果。网络爬虫使搜索引擎能够处理这个过程。 本文重点介绍了网络爬虫的重要方面、网络爬虫为何重要、其…...

串口中断原理及实现

一、串口的原理 SM0、SM1——串行口工作模式 SM0SM1模式特点00模式0移位寄存器方式&#xff0c;用于I/O口扩展01模式18位UART,波特率可变10模式29位UART,波特率为时钟频率/32或/6411模式39位UART,波特率可变 TI、RI——发送、接收中断标志位 TITI0 允许发送>TI1 发送完成后…...

课时136:变量进阶_变量实践_高级赋值

2 变量进阶 2.1 变量实践 2.1.1 高级赋值 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 所谓的高级赋值&#xff0c;是另外的一种变量值获取方法&#xff0c;这里涉及到更多我们学习之外的一些shell内置变量格式,其实这部分…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...