计算机毕业设计-基于微信小程序高校学生课堂扫码考勤签到系统-校园考勤打卡签到小程序

2023-11-15

注意:该项目只展示部分功能,如需了解,评论区咨询即可。

1.开发环境

开发语言:Java
数据库:MySQL
编译工具:Idea、Eclipse、MyEclipse (选其一),微信开发者工具
其他:jdk1.8、Maven

eclipse 下载
mysql 5.7 下载
jdk 1.8 下载
tomcat 8.0 下载
maven 3.5 下载
idea 下载

2.系统的设计背景

       随着时代的变化,移动APP的种类和功能逐渐变得多种多样,占用手机的内存也随之越来越大,拿手机游戏举例,单独一个王者荣耀,最初下载占用的内存大概是10个G,后来随着升级包的累加,渐渐游戏内存占用能达到20个G甚至更多,为此人们对手机性能的要求也越来越高,因为如果存储容量被占用太多的时候手机的运转将变得越来越慢,但与此对应的是越高性能的手机价格就越高,且高频的卸载安装也会更加缩短手机的使用寿命,并非大众都能负担,因此几乎不占内存,随开随用的小程序APP就变得炙手可热起来。

       尽管随着时代的迁移,计算机技术的发展越来越快,但其核心仍旧不变,大到阿里,知乎等知名大厂的项目,小到个人开发的小游戏,签到系统,读书笔记等,其目的都是为了给人们提供更好的生产生活服务,本文基于校园签到场景,为解决课堂签到时间长,签到准确率不高等问题,设计了一个基于微信小程序开发的学生课堂扫码考勤签到系统,使用工具为微信开发工作者,后端开发语言为java,数据库使用了常用的mysql,采用的后端框架为Sspringboot,是前后端分离开发,设计模式上采用了mvc的设计模式,令数据层,业务层,视图层可以解耦合,有利于后续的更新维护工作。

3 各角色功能模块

3.1 用户

登录、首页、查看课程信息、课程详情、扫码签到、查看签到记录、设置、申请课程、我的管理、在线反馈、更多信息

3.2 管理员

登录、首页、设置、我的管理、添加课程、搜索课程、申请课程、签到主页、查看学生

4 系统页面展示

4.1 学生端功能模块展示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 教师端功能模块展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 更多推荐

2023年计算机毕业设计选题大全 计算机毕业设计选题推荐
基于微信小程序的在线小说阅读系统SpringBoot
基于微信小程序的大学生心理预约咨询系统
基于SSM+Vue汽车保养预约系统
基于协同过滤算法的农特产商城微信小程序

6 部分功能代码

6.1 签到功能核心代码

/**
 * 签到控制层
 */
@RestController
@RequestMapping("/api/sign")
public class SignController extends BaseLogService {

    @Autowired
    private SignService signService;

    @Override
    protected Class getType() {
        return SignController.class;
    }

    @PostMapping("/create")
    public ResponseWrapper<Sign> create(@RequestBody @Validated(value = SignRequest.Create.class) SignRequest request, @CurrentUser User user) {
        Sign sign = signService.create(request, user);

        ResponseWrapper<Sign> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(sign);

        return responseWrapper;
    }

    @PostMapping("/qrcode")
    public ResponseWrapper<Sign> qrcode(@RequestBody @Validated(value = SignRequest.QrCode.class) SignRequest request, @CurrentUser User user) {
        Sign sign = signService.qrcode(request, user);

        ResponseWrapper<Sign> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(sign);

        return responseWrapper;
    }

6.2 点名功能核心代码

/**
 * 点名控制层

 */
@RestController
@RequestMapping("/api/call")
public class CallController extends BaseLogService {

    @Autowired
    private CallService callService;

    @Override
    protected Class getType() {
        return CallController.class;
    }

    @PostMapping("/create")
    public ResponseWrapper<Call> create(@RequestBody @Validated(value = CallRequest.Create.class) CallRequest request, @CurrentUser User user) {
        Call call = callService.create(request, user);

        ResponseWrapper<Call> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(call);

        return responseWrapper;
    }

    @PostMapping("/delete")
    public ResponseWrapper<Call> delete(@RequestBody @Validated(value = CallRequest.Delete.class) CallRequest request, @CurrentUser User user) {
        callService.delete(request, user);

        ResponseWrapper<Call> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(null);

        return responseWrapper;
    }

    @PostMapping("/list/password")
    public ResponseWrapper<List<Call>> listByPasswordAndLocation(@RequestBody @Validated(value = CallRequest.ListByPasswordAndLocation.class) CallRequest request, @CurrentUser User user) {
        List<Call> calls = callService.listByPasswordAndLocation(request, user);

        ResponseWrapper<List<Call>> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(calls);

        return responseWrapper;
    }

    @GetMapping("/list")
    public ResponseWrapper<List<?>> list(@CurrentUser User user) {
        List<?> calls = callService.list(user);

        ResponseWrapper<List<?>> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(calls);

        return responseWrapper;
    }

    @PostMapping("/view")
    public ResponseWrapper<Object> view(@RequestBody @Validated(value = CallRequest.View.class) CallRequest request, @CurrentUser User user) {
        Object call = callService.view(request, user);

        ResponseWrapper<Object> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(call);

        return responseWrapper;
    }

    @PostMapping("/search")
    public ResponseWrapper<List<?>> search(@RequestBody @Validated(value = CallRequest.Search.class) CallRequest request, @CurrentUser User user) {
        List<?> calls = callService.search(request, user);

        ResponseWrapper<List<?>> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(calls);

        return responseWrapper;
    }

    @PostMapping("/list/course")
    public ResponseWrapper<List<?>> listByCourse(@RequestBody @Validated(value = CallRequest.ListByCourse.class) CallRequest request, @CurrentUser User user) {
        List<?> calls = callService.listByCourse(request, user);

        ResponseWrapper<List<?>> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(calls);

        return responseWrapper;
    }

    @PostMapping("/list/student")
    public ResponseWrapper<List<SignRecordVo>> listRecord(@RequestBody @Validated(value = CallRequest.ListStudent.class) CallRequest request, @CurrentUser User user) {
        List<SignRecordVo> signRecordVos = callService.listStudent(request, user);

        ResponseWrapper<List<SignRecordVo>> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(signRecordVos);

        return responseWrapper;
    }

    /**
     * 点名二维码
     *
     * @return
     */
    @PostMapping(value = "/qrcode")
    public ResponseWrapper<byte[]> qRCode(@RequestBody @Validated(value = CallRequest.QrCode.class) CallRequest request, @CurrentUser User user) {
        String content = callService.qrCode(request, user);
        byte[] imageData = QRCode.from(content).withSize(500, 500).to(ImageType.PNG).stream().toByteArray();

        ResponseWrapper<byte[]> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(imageData);

        return responseWrapper;
    }

    @GetMapping("/export")
    public ResponseEntity<byte[]> export(@CurrentUser User user) throws UnsupportedEncodingException {
        byte[] body = callService.exportToExcel(user);
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String name = "签到记录(" + dateFormat.format(new Date()) + ").xlsx";
        String fileName = new String(name.getBytes("utf-8"), "iso-8859-1");
        HttpHeaders headers = new HttpHeaders();
        headers.setContentDispositionFormData("attachment", fileName);
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        HttpStatus statusCode = HttpStatus.OK;
        ResponseEntity<byte[]> entity = new ResponseEntity<>(body, headers, statusCode);
        return entity;
    }

6.3 课程申请功能核心代码

**
 * 课程申请控制层
 */
@RestController
@RequestMapping("/api/course/application")
public class CourseApplicationController {

    @Autowired
    private CourseApplicationService courseApplicationService;

    @PostMapping("/apply")
    public ResponseWrapper<CourseApplication> apply(@RequestBody @Validated(value = CourseApplyRequest.Apply.class) CourseApplyRequest request, @CurrentUser User user) {
        CourseApplication apply = courseApplicationService.apply(request, user);

        ResponseWrapper<CourseApplication> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(apply);

        return responseWrapper;
    }

    @PostMapping("/handle")
    public ResponseWrapper<CourseApplication> handle(@RequestBody @Validated(value = CourseApplyRequest.Handle.class) CourseApplyRequest request, @CurrentUser User user) {
        CourseApplication apply = courseApplicationService.handle(request, user);

        ResponseWrapper<CourseApplication> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(apply);

        return responseWrapper;
    }

    @GetMapping("/list")
    public ResponseWrapper<List<CourseApplication>> handle(@CurrentUser User user) {
        List<CourseApplication> courseApplications = courseApplicationService.list(user);

        ResponseWrapper<List<CourseApplication>> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(courseApplications);

        return responseWrapper;
    }

    @PostMapping("/view")
    public ResponseWrapper<CourseApplication> view(@RequestBody @Validated(value = CourseApplyRequest.View.class) CourseApplyRequest request) {
        CourseApplication apply = courseApplicationService.view(request);

        ResponseWrapper<CourseApplication> responseWrapper = new ResponseWrapper<>();
        responseWrapper.success(apply);

        return responseWrapper;
    }

源码项目、定制开发、代码讲解、答辩辅导
希望和大家多多交流!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机毕业设计-基于微信小程序高校学生课堂扫码考勤签到系统-校园考勤打卡签到小程序 的相关文章

  • 如何在java swing中的每个页面中打印带有页脚的整个JPanel

    好吧 这可能很简单 但想不通 我有一个包含 JTable 的 JPanel JTable 包含很少的行 有时更多 因为我推入其中的表模型取决于数据库 但是 我不使用任何包含 JTable 的 JScolpane 因此 当 JTable 包含
  • Java Swing:清除JList而不触发监听器

    我的情况如下 我有一个 JList 只要在列表中进行选择 它就会触发搜索 使用 ListSelectionListener 我正在尝试使用以下命令重置列表上的选择list clearSelection 这样做的问题是使用clearSelec
  • 使用多个构造函数创建不可变类

    我正在阅读这一页 https docs oracle com javase tutorial essential concurrency imstrat html关于在 Java 中创建不可变类 并决定根据页面上概述的规范修改我正在编写的类
  • 使用 Java 编程式 HTML 文档生成

    有谁知道如何在 Java 中以编程方式生成 HTMLDocument 对象 而不需要在外部生成字符串 然后使用 HTMLEditorKit read 来解析它 我问的两个原因 首先 我的 HTML 生成例程需要非常快 并且我认为将字符串解析
  • Maven + Cobertura:无法找到[您的班级]。你指定了源目录吗?

    我有 MyMath 类 有两个简单的方法 multi 和 add 和测试类只会测试多种方法 public class MainTest Test public void testMultiply MyMath tester new MyMa
  • 删除 servlet 中的 cookie 时出现问题

    我尝试使用以下代码删除 servlet 中的 cookie Cookie minIdCookie null for Cookie c req getCookies if c getName equals iPlanetDirectoryPr
  • 如何正确配置Tomcat SSLHostConfig?

    我正在按照本教程在 tomcat 中启用 ssl https medium com raupach how to install lets encrypt with tomcat 3db8a469e3d2 https medium com
  • firestore快照监听器生命周期和定价之间有什么关系?

    在我的活动中 我有一个字符串列表 这些字符串表示我想要附加快照侦听器的 Firestore 文档 我使用 Acivity ModelView 存储库结构 在活动的 onCreate 中 我向 ViewModelProvider 询问适当的
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • 在 Mac 上使用 JRE 打开 jar 文件

    我有一个 jar 文件 旨在通过命令行运行 我不打算在运行应用程序的机器上进行任何java开发 我的思考过程是 因此我应该只需要JRE而不是JDK 此外 JDK 大约是 JRE 的 4 倍 我不想下载它 在 Mac 上安装 JRE 时 它不
  • grails 上的同步块在 Windows 上有效,但在 Linux 上无效

    我有一个 grails 应用程序 它依赖于服务中的同步块 当我在 Windows 上运行它时 同步按预期工作 但当我在 ams linux 上运行时 会出现 StaleObjectStateException 该问题在以下示例中重现 cla
  • Java G1 GC 处理引用对象运行缓慢

    我已经在 J ava 上运行了计数器 它24小时工作 每秒点击通过100次左右 白天 GC 处理时间从 20 60 毫秒缓慢上升到 10000 60000 毫秒 然后下降到 20 60 毫秒 这种模式不时地重复 从 GC 日志中我发现 GC
  • java 属性文件作为枚举

    是否可以将属性文件转换为枚举 我有一个包含很多设置的属性文件 例如 equipment height equipment widht equipment depth and many more like this and not all a
  • 嵌入式 tomcat 7 servlet 3.0 注释不起作用

    我有一个精简的测试项目 其中包含 Servlet 版本 3 0 用注释声明 如下所示 WebServlet test public class TestServlet extends HttpServlet private static f
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • RMI 服务器:rmiregistry 或 LocateRegistry.createRegistry

    对于服务器端的RMI 我们需要启动吗rmiregistry程序 或者只是调用LocateRegistry createRegistry 如果两者都可以的话 各有什么优点和缺点 他们是同一件事 rmiregistry是一个单独的程序 您可以从
  • java中的比较器链

    正在阅读Oracle 关于接口的 Java 教程 https docs oracle com javase tutorial java IandI createinterface html其中给出了一个例子Card 打牌 我试图理解接口中的
  • 将字符串中的字符向左移动

    我是 Stack Overflow 的新手 有一道编程课的实验室问题一直困扰着我 该问题要求我们将字符串 s 的元素向左移动 k 次 例如 如果输入是 Hello World 和3 它将输出 lo WorldHel 对于非常大的 k 值 它
  • Java泛型类型

    当我有一个界面时 public interface Foo
  • 监控 Java 应用程序上的锁争用

    我正在尝试创建一个小基准 在 Groovy 中 以显示几个同步方法上的高线程争用 当监控自愿上下文切换时 应该会出现高争用 在 Linux 中 这可以通过 pidstat 来实现 程序如下 class Res private int n s

随机推荐

  • Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载

    前往老猿Python博文目录 一 简介 MoviePy是一个用于视频编辑的Python模块 可用于进行视频的基本操作 如剪切 拼接 标题插入 视频合成 也称非线性编辑 视频处理或创建高级效果 它可以读写最常见的视频格式 MoviePy能处理
  • Xshell连接Ubuntu详细过程

    一 打开虚拟机VMware 二 启动虚拟机 输入密码 进入Ubuntu系统界面 三 鼠标右键 选择 在终端打开 出现终端对话框 四 在命令行输入 sudo apt get install openssh server 安装openssh s
  • 2017校招Java开发笔试题集

    美丽联合 二分查找要求结点 A 有序 顺序存储 B 有序 链接存储 C 无序 顺序存储 D 无序 链接存储 答案选 A 引入线索二叉树的目的是 A 加快查找结点的前驱或后继结点的速度 B 为了能在二叉树中方便插入和删除 C 为了能方便找到双
  • 使用STM32CubeMx配置STM32输入捕获功能

    输入捕获原理 在输入捕获模式下 当检测到ICx信号上相应的边沿后 计数器的当前值被锁存到捕获 比较寄存 器 TIMx CCRx 中 当发生捕获事件时 相应的CCxIF标志 TIMx SR寄存器 被置1 如果开放 了中断或者DMA操作 则将产
  • tools:context=".MainActivity的作用

    http blog csdn net caiwenfeng for 23 article details 8373569
  • Spring AOP 的搭建与源码分析

    AOP 面向切面编程 一 AOP 概述 AOP 的实现步骤 示例 二 通过 EnableAspectJAutoProxy 了解 AOP 原理 1 分析 EnableAspectJAutoProxy 2 复习 Spring 容器启动后 bea
  • Jq手搓一个简易版分页器

    分页器的效果如下 1 分页器dom结构 前面要有你将渲染列表的dom结构 这里省略 div class news trends fy div class left img src imags nof icon left png 左箭头 di
  • python异步爬虫

    本文主要包括以下内容 线程池实现并发爬虫 回调方法实现异步爬虫 协程技术的介绍 一个基于协程的异步编程模型 协程实现异步爬虫 线程池 回调 协程 我们希望通过并发执行来加快爬虫抓取页面的速度 一般的实现方式有三种 线程池方式 开一个线程池
  • 2023华为od机试统一考试B卷【雨花石难题】

    题目描述 MELON是一个热爱雨花石的人 他拥有一堆数量为n的精美雨花石 每块石头的重量都不相同 现在 MELON想要将这些雨花石平均分给他的朋友S和W 以使两人所得到的石头的重量相等 你需要设计一个程序 来帮助MELON确认是否可以实现这
  • 近期思维片段

    1 感觉360这样的公司就是让少数明眼人讨厌 让大多数人不知不觉接受 2 点子 lt 我买了 gt 购物分享 把自己买过的经验分享出来 3 不要负面思维 No negative thinking 4 突然想起几年前那些熟悉的名字 现在都没有
  • js匹配数组中对应的值_JS 数组中查找符合条件的数据索引

    日常工作中经常会需要我们前端获取后端为我们传递的数据放在页面中渲染的问题 大批量的数据后端会根据具体的情况来放在数组中传递给我们 但是如果遇到数组中有需要特殊需要处理的数据怎么办 原来100个数据 渲染规则完全一致 这个时候我们用一个循环就
  • 阿里云服务器安装宝塔面板图文教程

    购买完云服务器ECS后 对于新手而言如何搭建Web环境是比较棘手的 分享一款简单易用的主机面板 宝塔面板 分享阿里云服务器安装宝塔面板图文教程 本文以 Linux云服务器 CentOS 7 4 64位系统为例 一 开放安全组端口 什么是安全
  • 【已解决】使用pyaudio内录声卡声音及相关问题

    使用pyaudio内录声卡声音及相关问题解决 目录 使用pyaudio内录声卡声音及相关问题解决 1 实现代码 1 1 Recorder类 1 2 调用方法 2 问题一 选择设备实现内录 外录 解决报错 OSError Errno 9999
  • java中的异常

    throw和throws的区别 相同 都是用于做异常的抛出处理的 不同点 使用的位置 throws 使用在函数上 throw使用在函数内 后面接受的内容的个数不同 throws 后跟的是异常类 可以跟多个 用逗号隔开 throws只声明异常
  • python中rsa解密_python中的RSA加密和J中的解密

    我对密码学完全陌生 我想从服务器端生成RSA密钥对并将其发送到所有客户端 浏览器 但在此之前 我只需在python中加密数据并发送到索引 html文件 并尝试用JavaScript解密 问题是当我通过random generator Ran
  • CMake 用法导览

    原文地址 http www cnblogs com coderfenghc archive 2013 01 20 2846621 html Preface 本文是CMake官方文档CMake Tutorial http www cmake
  • Unity中定时器的简易使用

    定时器写法1 float total time void Update this total time Time deltaTime if total time gt 5 5秒后停止 return 定时器写法2 void Hello thi
  • Linux部署Tomcat无法访问

    前言 环境 RedHat7 0 Tomcat7 JDK7 安装配置成功之后 启动tomcat服务 然后使用本地浏览器访问http xx xx xx xx 8080 无法访问 解决过程 首先怀疑是配置问题 终端输出 echo JAVA HOM
  • Java CSV文件读取、写入及追加工具类

    Java CSV文件读取 写入及追加工具类 追加 FileOutputStream out new FileOutputStream file true 第二个参数true代表追加 CSVUtil java import lombok ex
  • 计算机毕业设计-基于微信小程序高校学生课堂扫码考勤签到系统-校园考勤打卡签到小程序

    注意 该项目只展示部分功能 如需了解 评论区咨询即可 本文目录 1 开发环境 2 系统的设计背景 3 各角色功能模块 3 1 用户 3 2 管理员 4 系统页面展示 4 1 学生端功能模块展示 4 2 教师端功能模块展示 5 更多推荐 6