摘要
随着高校信息化建设的不断推进,大学生考勤管理逐渐向数字化、智能化方向发展。本文设计并实现了一款基于SpringBoot+Vue的大学生考勤系统,旨在提升学生考勤管理效率和用户体验。系统分为学生用户、教师用户和管理员三大角色,涵盖选课信息、签到记录、请假申请、考勤统计等核心功能模块。通过前后端分离架构,后端采用SpringBoot框架提供RESTful接口,前端使用Vue.js构建动态交互界面,实现了数据的高效传输与展示。同时,系统支持多角色权限管理,确保不同用户能够安全、便捷地完成相关操作。
本系统在实际应用中表现出较强的实用性和可扩展性。学生用户可通过系统查看课程信息、提交请假申请并管理个人数据;教师用户能够进行课程管理、考勤统计及审核学生请假信息;管理员则负责系统整体维护,包括用户管理、资源管理和权限分配等。通过整合签到记录、请假申请和考勤统计等功能,系统为高校提供了全面的考勤解决方案,有效提升了教学管理效率和信息化水平,为智慧校园建设提供了有力支持。
关键词:大学生考勤;SpringBoot;MySQL;Vue
Abstract
With the continuous advancement of information construction in colleges and universities, the attendance management of college students has gradually developed in the direction of digitalization and intelligence. This paper designs and implements a college student attendance system based on SpringBoot+Vue, aiming at improving the efficiency of student attendance management and user experience. The system is divided into three roles: student user, teacher user and administrator, covering the core function modules such as course selection information, sign-in record, leave application and attendance statistics. The back-end uses SpringBoot framework to provide RESTful interfaces, and the front-end uses Vue.js to build dynamic interactive interfaces to realize efficient data transmission and display. In addition, the system supports multi-role rights management to ensure that different users can perform related operations safely and conveniently.
The system shows strong practicability and expansibility in practical application. Student users can view course information, submit leave applications and manage personal data through the system; Teacher users can conduct course management, attendance statistics and review student leave information; The administrator is responsible for overall system maintenance, including user management, resource management, and permission allocation. By integrating the functions of check-in record, leave application and attendance statistics, the system provides a comprehensive attendance solution for colleges and universities, effectively improves the efficiency of teaching management and information technology level, and provides strong support for the construction of smart campus.
Key words: College students' attendance; SpringBoot; MySQL; Vue
目录
1绪论
随着高等教育规模的不断扩大,传统的大学生考勤管理模式面临着越来越多的挑战。传统的纸质签到和手动记录方式不仅效率低下,而且容易出错,难以满足现代教育管理的需求。此外,高校课程安排复杂多样,学生选课、上课地点与时间灵活多变,进一步增加了考勤管理的难度。因此,开发一套高效、准确、易于操作的数字化考勤系统显得尤为重要。通过引入信息化技术,可以实现对学生出勤情况的实时监控与统计分析,为教师提供科学的教学管理依据,同时也方便了学生对自己学习状态的掌握。
在信息技术快速发展的背景下,基于SpringBoot+Vue的技术栈成为了构建高效、稳定网络应用的理想选择。SpringBoot以其简化配置、快速构建微服务的优势,成为后端开发的主流框架之一;而Vue.js则凭借其响应式数据绑定和组件化开发模式,大大提升了前端开发效率和用户体验。结合两者优势构建的大学生考勤系统,不仅可以提高系统的可维护性和扩展性,还能确保良好的用户交互体验。这种技术组合为解决传统考勤管理问题提供了新的思路和方法,推动了高校教学管理向智能化、信息化方向发展。
开发基于SpringBoot+Vue的大学生考勤系统具有重要的现实意义。首先,该系统能够极大地提高高校教学管理的效率和准确性。传统的手动考勤方式容易出现数据记录错误或丢失的问题,而数字化考勤系统通过自动化手段实时收集、处理和分析学生的出勤信息,减少了人为因素导致的误差。此外,系统提供的多维度统计报表功能,使教师和管理人员可以更加直观地了解学生的出勤情况及趋势,从而采取针对性的教学调整措施。这不仅有助于提升教学质量,还能促进学生自律性的培养,为学校的教学管理工作提供强有力的数据支持。
其次,从技术应用与创新的角度来看,本系统的实现推动了教育信息化的发展进程。采用SpringBoot与Vue.js结合的技术方案,展示了现代Web开发框架在构建复杂业务场景中的强大能力。这种前后端分离的架构设计不仅提升了系统的响应速度和用户体验,还为后续的功能扩展和维护提供了便利。同时,通过权限管理和角色划分,确保了系统的安全性和灵活性,使得不同用户能够在各自的权限范围内高效工作。整体而言,该系统的研究与应用,不仅为高校考勤管理提供了一种新的解决方案,也为其他领域的信息化建设提供了有益的参考案例。
在国内,随着信息技术在教育领域的广泛应用,高校考勤管理系统的发展也经历了从传统模式向数字化、智能化转变的过程。早期的考勤方式主要依赖于纸质签到表和教师的手工记录,这种方式不仅耗时费力,而且数据处理效率低下,难以满足日益复杂的教育管理需求。近年来,随着互联网技术的发展,越来越多的高校开始采用电子化的考勤手段,如刷卡考勤、指纹识别、面部识别等,这些技术的应用极大地提高了考勤的准确性和效率。然而,尽管技术上有了显著进步,但在实际应用中仍存在一些问题,比如系统集成度不高、用户体验不佳、数据分析能力有限等。
当前,国内高校对于信息化考勤系统的建设越来越重视,并且在实践中不断探索更加高效合理的解决方案。许多高校与科技企业合作,利用云计算、大数据等前沿技术开发定制化的考勤管理系统,以期实现教育资源的有效整合和优化配置。同时,随着移动互联网的普及,基于移动端的考勤应用也逐渐兴起,允许学生和教师通过智能手机或平板电脑随时随地进行考勤操作和信息查询,这无疑进一步提升了系统的便捷性和灵活性。尽管如此,如何确保系统的稳定运行、数据的安全性以及提升用户的整体满意度仍然是未来需要持续关注和改进的方向。此外,针对不同高校的具体需求,提供个性化服务和功能定制也成为了一个重要的发展趋势。
在国外,学生考勤管理系统的发展同样经历了从传统纸质记录向电子化、自动化系统转变的过程。许多高等教育机构已经广泛采用了先进的信息技术来优化考勤管理流程。例如,在美国和欧洲的一些大学,已经开始使用基于RFID(射频识别)、生物识别技术(如指纹或面部识别)的智能考勤系统。这些系统不仅提高了考勤的准确性和效率,还能够与学校的其他管理系统(如课程管理系统、学籍管理系统等)无缝集成,为教师和管理人员提供全面的学生出勤数据支持。此外,一些学校还利用移动应用程序让学生和家长能够实时查看出勤情况,增强了家校沟通。
在技术应用方面,国外的教育机构更加注重系统的易用性、安全性和数据分析能力。例如,通过采用云计算技术,实现了考勤数据的云端存储和处理,使得数据访问更加便捷,同时也提升了数据的安全性和隐私保护水平。另外,借助大数据分析工具,学校可以对学生出勤数据进行深入挖掘,发现潜在问题,并采取针对性措施提高学生的到课率。例如,某些系统能够根据历史出勤数据预测哪些学生可能面临出勤问题,从而提前介入提供帮助。尽管如此,随着技术的不断进步,如何持续提升系统的智能化水平,更好地服务于个性化教学需求,依然是国外教育机构面临的挑战。同时,不同国家和地区由于法律法规、文化差异等因素,在系统部署和应用上也存在一定的差异性。
本研究的主要内容聚焦于设计并实现一个基于SpringBoot+Vue的大学生考勤系统,旨在通过信息化手段提升高校教学管理的效率与准确性。具体而言,系统将涵盖学生用户、教师用户和管理员三大角色的功能需求,包括但不限于选课信息管理、签到记录、请假申请、考勤统计等核心模块。利用SpringBoot框架构建稳定高效的后端服务,提供RESTful接口支持数据交互;前端则采用Vue.js实现动态交互界面,确保良好的用户体验。此外,系统还将集成多维度的数据分析功能,帮助教师和管理人员实时监控学生的出勤情况,并据此作出科学的教学调整决策。同时,通过对不同用户角色进行细致的权限设置,确保系统的安全性与灵活性,满足个性化需求,为智慧校园建设贡献力量。
2相关技术介绍
Java语言是一种广泛使用的高级编程语言,具有平台无关性、面向对象特性和丰富的标准库。Java通过Java虚拟机(JVM)实现跨平台运行,开发者可以编写一次代码,在任何支持JVM的环境中执行[1]。Java的面向对象特性使得代码复用和模块化变得更加容易,促进了软件的维护和扩展。Java支持多线程编程,允许开发者在同一程序中同时执行多个任务,提升了应用程序的性能。
Java语言的语法结构简洁且易于理解,吸引了大量开发者。Java的标准库包含数据结构、输入输出处理、网络编程等众多功能模块。这使得开发者在构建应用程序时能够高效利用已有工具,减少重复劳动。Java广泛应用于企业级应用、移动应用、Web开发和大数据处理等领域。
2.2 B/S框架
B/S(Browser/Server)架构是一种基于浏览器和服务器的系统架构模式,用户通过浏览器与服务器进行交互。B/S架构简化了客户端的部署和管理,用户无需在本地安装复杂的软件,只需使用标准浏览器即可访问应用程序。服务器端负责处理业务逻辑和数据存储,客户端则主要负责展示用户界面和数据交互[2]。B/S架构的设计使得系统更新和维护集中在服务器端,降低了维护成本。
B/S架构通常采用Web技术进行实现,包括HTML、CSS和JavaScript等。用户在浏览器中发起请求,服务器响应并返回数据。数据传输通常通过HTTP或HTTPS协议进行,B/S架构的灵活性使其适用于在线购物、信息管理系统和社交网络等各类应用场景[3]。由于其易于扩展性,B/S架构可以方便地支持大规模用户访问,适应不断变化的业务需求。
2.3 SpringBoot框架
SpringBoot框架是基于Spring框架的开源项目,简化Java应用程序的开发过程。SpringBoot通过约定优于配置的理念,减少了传统Spring应用的繁琐配置,开发者可以快速搭建和部署应用程序。框架提供了一系列默认配置,支持自动化配置,简化了应用启动的复杂性[4]。SpringBoot内置了嵌入式Web服务器,使得开发者能够独立运行Java应用,无需外部容器。
SpringBoot支持微服务架构,开发者可以轻松创建和管理多个微服务。框架集成了丰富的功能模块,包括安全、数据访问和消息中间件等,支持RESTful API和JSON数据格式的处理[5]。SpringBoot还提供了强大的监控和管理功能,允许开发者实时监控应用的健康状态和性能指标。借助SpringBoot,开发者能够高效构建和维护现代企业级应用,满足复杂业务需求。
2.4 Vue技术
Vue是一种渐进式JavaScript框架,专注于构建用户界面。Vue采用组件化的开发模式,允许开发者将应用程序拆分为独立的、可重用的组件,从而提高了开发效率和代码的可维护性[6]。框架的核心库专注于视图层,支持数据绑定和DOM操作,提供了简洁的API。Vue的虚拟DOM机制提升了应用的性能,减少了实际DOM操作的次数。
Vue支持双向数据绑定,能够自动更新视图与模型之间的变化。开发者可以通过Vue的指令系统,简化数据展示和事件处理。Vue还支持路由管理和状态管理,使得开发复杂单页面应用变得更加容易[7]。借助Vue的生态系统,开发者能够使用多种工具和库来扩展功能,满足不同的业务需求。Vue在前端开发中逐渐成为主流选择,受到广泛关注和应用。
2.5 MySQL数据库
MySQL是一种开源关系型数据库管理系统,广泛应用于Web应用和企业级数据存储。MySQL支持结构化查询语言,允许开发者通过标准语句进行数据的创建、读取、更新和删除操作[8]。数据库通过表格形式组织数据,支持数据完整性和约束条件的定义。MySQL的存储引擎机制使得用户可以根据具体需求选择不同的存储引擎,以优化性能和功能。
MySQL具有高性能和可扩展性,支持大规模数据存储和高并发访问。系统提供了丰富的用户权限管理和数据加密安全特性。MySQL能够与多种编程语言和框架兼容,广泛应用于内容管理系统、电子商务平台和数据分析等各种场景。
3系统需求分析
(1)注册登录:用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。
(2)首页:用户进入大学生考勤系统的时候,首先映入眼帘的是系统的首页、通知公告、新闻资讯、课程信息、请假申请等信息。
(3)通知公告:用户点击可查看网站公告、关于我们、联系方式和网站介绍等信息, 方便用户浏览了解系统公告信息 。
(4)新闻资讯:用户点击可查看新闻资讯,同时可对咨讯文章进行点赞、收藏和评论。
(5)课程信息:用户点击可通过搜索课程名称、班级名称进行查看课程信息列表,可点击进入查看课程信息详情,可进行点赞、收藏和评论。点击“选课”按钮可添加选课信息,包括选课次数和选课备注。
(6)请假申请:用户点击可添加请假信息,包括请假日期、请假次数和请假原因。
(7)我的账户:用户可以在个人账户中查看并管理自己的个人信息。包括个人资料、修改密码等 。
(8)个人中心:个人中心包含多个功能模块,如个人首页、选课信息、签到记录、请假申请和收藏。
选课信息:用户点击可查看选课信息列表。
签到记录:用户点击可查看签到记录列表。
请假申请:用户点可查看请假申请审核详情。
收藏:用户点击可对历史收藏信息查看或删除。
学生用户用例图如下:

图3-1学生用户用例图
(1)注册登录:用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。
(2)后台首页:教师用户点击可查看选课信息、签到记录信息统计数据图。
(3)课程信息管理:教师用户点击可查看课程信息列表和课程信息添加;点击进入“课程信息添加”可查看详情信息,包括课程名称、授课教师、班级名称、教师姓名、授课时间、授课地点、课程封面、课程介绍。
(4)选课信息管理:教师用户点击可查看选课信息列表。
(5)签到记录管理:教师用户点击可查看签到记录列表。
(6)考勤统计管理:教师用户点击可查看考勤统计列表和考勤统计添加;点击进入“考勤统计添加”可填写相关信息,包括教师用户、教师姓名、统计对象、出勤次数、迟到次数、缺勤次数和统计备注。
(7)通知公告管理:教师用户点击可查看网站公告、关于我们、联系方式和网站介绍等信息, 方便用户浏览了解系统公告信息 。
教师用户用例图如下:

图3-2教师用户用例图
(1)登录:管理员账号密码由系统生成,可使用账号密码可进行登录系统后台,使用系统功能进行管理,并可对自己的个人信息和密码进行管控。
(2)后台首页:管理员点击可查看选课信息、签到记录信息、请假申请、考勤统计信息数据图。
(3)系统用户:管理员点击可查看系统用户(管理员、学生用户、教师用户)列表中某个用户的详情,可以对用户信息进行查询、审核、添加和删除操作。
(4)课程信息管理:管理员点击可查看课程信息列表,管理员也具备添加、删除、修改课程信息的权限。
(5)选课信息管理:管理员点击可查看学生用户的选课信息列表,可点击“导出”按钮将选课信息进行导出保存查看。
(6)签到记录管理:管理员点击可查看学生用户的签到记录列表。
(7)请假申请管理:管理员点击可查看学生用户的请假申请列表,可点击“审核”按钮对请假信息进行审核回复。同时管理员有添加请假信息的权限。
(8)考勤统计管理:管理员点击可查看考勤统计列表,可点击“导出”按钮将考勤统计信息进行导出保存查看。
(9)系统管理:管理员点击可查看轮播图管理;如需添加新的轮播图,点击右侧“添加”按钮,上传图片,输入标题和链接,点击“确认””按钮进行添加;同时可对轮播图进行增删改查。
(10)通知公告管理:当管理点击“通知公告管理”时,可查看通知公告;如需添加新的公告信息,点击右侧“添加”按钮,输入标题和正文,点击“确认”按钮进行添加。
(11)资源管理:管理员点击可查新闻资讯和资讯分类;如需添加新的资讯,点击“添加”按钮,上传封面图,输入标题,选择分类,输入标签、描述和正文,点击“确认”按钮进行添加。同时可对资讯和分类进行增删改查。
(12)权限管理:管理员可以对不同用户角色进行权限设置,控制不同用户的操作权限和访问范围。
教管理员用例图如下:

图3-3管理员用例图
系统采用当前主流的SpringBoot和Vue.js开发框架,具备良好的技术基础。这些技术已被广泛应用于多种商业项目,具备成熟的文档和社区支持,便于开发获取必要的资源与解决方案。个人拥有丰富的相关技术经验,能够有效应对潜在技术挑战。所需的软硬件资源易于获取,且具备良好的兼容性,降低了技术实现的难度。
系统具备直观友好的用户界面,支持简便的导航和功能访问,极大地提升了用户的使用体验。系统提供了自定义的工作流程和角色权限管理,使不同层级的用户能够快速上手,完成各自的任务。。
系统所使用的软件为开源技术,降低了使用费用,同时硬件成本较低,使得整体初始投入相对合理,具备较高性价比。因此,系统在经济上是完全可行的。
4系统设计
4.1系统总体功能设计

图4-1 系统功能结构图
4.2.1用户登录流程
用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如图4-2所示。

图4-2登录流程图
4.2.2添加信息流程
管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如图4-3所示。

图4-3添加信息流程图
4.2.3修改信息流程
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入;若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图4-4所示。

图4-4修改信息流程图
4.2.4删除信息流程
用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节;若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如图4-5所示。

图4-5删除信息流程图
数据库概念模型是数据库设计的一个阶段,它描述了数据库中数据的逻辑结构和之间的关系,而不关注具体的实现细节[9]。概念模型通常用于数据库设计的初期阶段,以帮助开发人员和用户理解数据库中存储的数据以及数据之间的关系。
数据库概念模型通常采用高层次的概念来描述数据,常见的概念模型包括实体-关系模型(Entity-Relationship Model,ERM)、面向对象模型(Object-Oriented Model)等。在概念模型中,数据被抽象为实体(Entity)和实体之间的关系(Relationship),并且定义了实体的属性(Attribute),通常以E-R图来表达。
系统全局E-R图如图4-6所示。

图4-6系统E-R图
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-article(文章)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | 是 | 是 | 文章id | |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | 是 | 否 | 点击数 | |
| 5 | praise_len | int | 是 | 否 | 点赞数 | |
| 6 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-3-article_type(文章分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-attendance_statistics(考勤统计)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | attendance_statistics_id | int | 是 | 是 | 考勤统计ID | |
| 2 | teacher_users | int | 否 | 否 | 教师用户 | |
| 3 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 4 | statistical_object | varchar | 64 | 否 | 否 | 统计对象 |
| 5 | attendance_frequency | double | 否 | 否 | 出勤次数 | |
| 6 | number_of_latencies | double | 否 | 否 | 迟到次数 | |
| 7 | number_of_absences | double | 否 | 否 | 缺勤次数 | |
| 8 | statistical_remarks | text | 65535 | 否 | 否 | 统计备注 |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID |
表 4-9-course_information(课程信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | course_information_id | int | 是 | 是 | 课程信息ID | |
| 2 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 3 | teaching_teacher | int | 否 | 否 | 授课教师 | |
| 4 | class_name | varchar | 64 | 否 | 否 | 班级名称 |
| 5 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 6 | teaching_time | varchar | 64 | 否 | 否 | 授课时间 |
| 7 | teaching_location | varchar | 64 | 否 | 否 | 授课地点 |
| 8 | course_cover | varchar | 255 | 否 | 否 | 课程封面 |
| 9 | course_introduction | longtext | 4294967295 | 否 | 否 | 课程介绍 |
| 10 | praise_len | int | 是 | 否 | 点赞数 | |
| 11 | collect_len | int | 是 | 否 | 收藏数 | |
| 12 | comment_len | int | 是 | 否 | 评论数 | |
| 13 | course_selection_information_limit_times | int | 是 | 否 | 选课限制次数 | |
| 14 | create_time | datetime | 是 | 否 | 创建时间 | |
| 15 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-course_selection_information(选课信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | course_selection_information_id | int | 是 | 是 | 选课信息ID | |
| 2 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 3 | teaching_teacher | int | 否 | 否 | 授课教师 | |
| 4 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 5 | teaching_time | varchar | 64 | 否 | 否 | 授课时间 |
| 6 | teaching_location | varchar | 64 | 否 | 否 | 授课地点 |
| 7 | student_users | int | 否 | 否 | 学生用户 | |
| 8 | class_name | varchar | 64 | 否 | 否 | 班级名称 |
| 9 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 10 | number_of_course_selections | varchar | 64 | 否 | 否 | 选课次数 |
| 11 | course_selection_notes | text | 65535 | 否 | 否 | 选课备注 |
| 12 | sign_in_record_limit_times | int | 是 | 否 | 签到限制次数 | |
| 13 | create_time | datetime | 是 | 否 | 创建时间 | |
| 14 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 15 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 16 | source_id | int | 否 | 否 | 来源ID | |
| 17 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-11-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-12-leave_application(请假申请)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | leave_application_id | int | 是 | 是 | 请假申请ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | class_name | varchar | 64 | 否 | 否 | 班级名称 |
| 4 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 5 | leave_date | date | 否 | 否 | 请假日期 | |
| 6 | number_of_leave_requests | varchar | 64 | 否 | 否 | 请假次数 |
| 7 | reason_for_leave | text | 65535 | 否 | 否 | 请假原因 |
| 8 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 9 | examine_reply | varchar | 255 | 否 | 否 | 审核回复 |
| 10 | create_time | datetime | 是 | 否 | 创建时间 | |
| 11 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-13-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-14-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-15-sign_in_record(签到记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | sign_in_record_id | int | 是 | 是 | 签到记录ID | |
| 2 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 3 | teaching_teacher | int | 否 | 否 | 授课教师 | |
| 4 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 5 | teaching_time | varchar | 64 | 否 | 否 | 授课时间 |
| 6 | teaching_location | varchar | 64 | 否 | 否 | 授课地点 |
| 7 | student_users | int | 否 | 否 | 学生用户 | |
| 8 | class_name | varchar | 64 | 否 | 否 | 班级名称 |
| 9 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 10 | sign_in_date | date | 否 | 否 | 签到日期 | |
| 11 | check_in_frequency | varchar | 64 | 否 | 否 | 签到次数 |
| 12 | create_time | datetime | 是 | 否 | 创建时间 | |
| 13 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 14 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 15 | source_id | int | 否 | 否 | 来源ID | |
| 16 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-16-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-17-student_users(学生用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | student_users_id | int | 是 | 是 | 学生用户ID | |
| 2 | class_name | varchar | 64 | 否 | 否 | 班级名称 |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | student_gender | varchar | 64 | 否 | 否 | 学生性别 |
| 5 | student_phone_number | varchar | 64 | 否 | 否 | 学生电话 |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-18-teacher_users(教师用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | teacher_users_id | int | 是 | 是 | 教师用户ID | |
| 2 | class_name | varchar | 64 | 否 | 否 | 班级名称 |
| 3 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 4 | teacher_gender | varchar | 64 | 否 | 否 | 教师性别 |
| 5 | teachers_phone_number | varchar | 64 | 否 | 否 | 教师电话 |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-19-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-20-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-21-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
5系统实现
新闻资讯:用户点击可查看新闻资讯,同时可对咨讯文章进行点赞、收藏和评论。界面如图5-1所示。

图5-1新闻资讯界面。
课程信息:用户点击可通过搜索课程名称、班级名称进行查看课程信息列表,可点击进入查看课程信息详情,可进行点赞、收藏和评论。点击“选课”按钮可添加选课信息,包括选课次数和选课备注。界面如图5-2所示。

图5-2课程信息界面。

图5-3选课信息界面。
请假申请:用户点击可添加请假信息,包括请假日期、请假次数和请假原因。界面如下图所示。

图5-4请假申请界面。
个人中心集成了多个功能模块以满足不同需求,包括展示个人信息的个人首页、可查看选课信息列表的选课信息、显示签到记录的签到记录、用于查看请假申请审核详情的请假申请,以及允许用户查看或删除历史收藏信息的收藏模块。通过这些功能,用户可以方便地管理自己的学习和工作相关信息。界面如下图所示。

图5-5个人中心界面。
课程信息管理:教师用户点击可查看课程信息列表和课程信息添加;点击进入“课程信息添加”可查看详情信息,包括课程名称、授课教师、班级名称、教师姓名、授课时间、授课地点、课程封面、课程介绍界面如下图所示。

图5-8课程信息添加界面。
考勤统计管理:教师用户点击可查看考勤统计列表和考勤统计添加;点击进入“考勤统计添加”可填写相关信息,包括教师用户、教师姓名、统计对象、出勤次数、迟到次数、缺勤次数和统计备注。界面如下图所示。

图5-9考勤统计添加界面。
请假申请管理:管理员点击可查看学生用户的请假申请列表,可点击“审核”按钮对请假信息进行审核回复。同时管理员有添加请假信息的权限。界面下图所示。

图5-10请假申请管理界面。
系统管理:管理员点击可查看轮播图管理;如需添加新的轮播图,点击右侧“添加”按钮,上传图片,输入标题和链接,点击“确认””按钮进行添加;同时可对轮播图进行增删改查。界面如下图所示。

图5-11系统管理界面。
资源管理:管理员点击可查新闻资讯和资讯分类;如需添加新的资讯,点击“添加”按钮,上传封面图,输入标题,选择分类,输入标签、描述和正文,点击“确认”按钮进行添加。同时可对资讯和分类进行增删改查。界面如下图所示。

6系统测试
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性[10]。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例[12]。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
系统的测试用例表格如下图所示。
表6-1 系统测试用例表
| 测试项 | 测试用例 | 问题 | 结论 |
| 登录功能测试 | 打开登录页面 输入正确的用户名和密码 点击“登录”按钮 | 无 | 符合预期 |
| 登录功能测试 | 打开登录页面 输入错误的用户名 输入正确的密码 点击“登录”按钮 | 无 | 符合预期 |
| 登录功能测试 | 打开登录页面 输入正确的用户名 输入错误的密码 点击“登录”按钮 | 无 | 符合预期 |
| 登录功能测试 | 打开登录页面 输入不存在的用户名和密码 点击“登录”按钮 | 无 | 符合预期 |
| 注册功能测试 | 打开注册页面 输入合法的用户名、密码、邮箱等信息 点击“注册”按钮 | 无 | 符合预期 |
| 注册功能测试 | 打开注册页面 输入已存在的用户名 输入其他合法信息 点击“注册”按钮 | 无 | 符合预期 |
| 注册功能测试 | 打开注册页面 输入合法用户名但密码不符合要求(如长度不足) 点击“注册”按钮 | 无 | 符合预期 |
| 注册功能测试 | 打开注册页面 输入合法用户名和密码但邮箱格式错误 点击“注册”按钮 | 无 | 符合预期 |
| 查看课程信息测试 | 登录系统 进入课程信息页面 浏览课程名称、班级、地点等信息 | 无 | 符合预期 |
| 查看课程信息测试 | 登录系统 进入课程信息页面 使用搜索栏输入关键词搜索课程信息 | 无 | 符合预期 |
| 查看课程信息测试 | 登录系统 进入课程信息页面 点击课程详情查看完整信息 | 无 | 符合预期 |
| 查看课程信息测试 | 登录系统 进入课程信息页面 不输入任何搜索条件直接点击搜索 | 无 | 符合预期 |
经过对系统登录、注册、查看课程信息功能的测试,所有测试用例均按照既定步骤执行完毕。测试结果显示,各功能模块在正常输入和异常输入条件下均表现出预期的行为。登录功能能够准确识别用户名和密码的正确性,并对错误输入给予相应提示。注册功能对用户输入的合法性进行了有效校验,确保了注册信息的规范性。查看课程信息功能能够正常展示课程的基本信息,并支持搜索和详情查看操作。整体而言,测试过程中未发现功能缺陷,系统运行稳定,各项功能均符合设计预期。
经过系统全面的功能测试、性能测试和可靠性测试,本系统在测试环境下运行良好,功能模块均按照设计要求实现,核心功能表现稳定,未发现严重功能缺陷或阻塞性问题。所有关键测试用例均通过,覆盖率达到预期目标,验证了系统的功能性、稳定性和兼容性。
7总结
本研究成功设计并实现了一个基于SpringBoot+Vue的大学生考勤系统,该系统通过信息化手段有效提升了高校教学管理的效率与准确性。系统集成了选课信息管理、签到记录、请假申请、考勤统计等核心功能模块,不仅简化了传统的手动考勤流程,减少了人为错误的可能性,还为教师和管理人员提供了强大的数据分析支持,使他们能够更直观地了解学生的出勤情况,并据此采取相应的教学调整措施。此外,通过前后端分离架构,实现了数据的高效传输与展示,保证了系统的可维护性和扩展性。整个系统在提高学生自律性的同时,也增强了家校沟通的有效性,为智慧校园的建设奠定了坚实的基础。
总结而言,本研究不仅验证了基于SpringBoot+Vue技术栈构建高效考勤系统的可行性,同时也展示了其在实际应用中的巨大潜力。通过不断优化用户体验、加强数据安全保护及提升系统的智能化水平,本系统能够适应不同教育机构的具体需求,提供定制化的服务解决方案。然而,随着信息技术的快速发展,未来仍需持续关注新兴技术的应用,如人工智能、大数据分析等,以进一步增强系统的功能性和适应性。这将有助于推动教育管理模式的创新,更好地服务于现代化教育的发展需求,为构建更加智能、高效的教育生态系统贡献力量。
参考文献
- 尹应荆.JAVA编程语言在计算机软件开发中的应用[J].石河子科技,2023,(05):45-47.
- 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
- 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
- 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
- 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
- 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
- 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 周晓玉,崔文超.基于Web技术的数据库应用系统设计[J].信息与电脑(理论版),2023,35(09):189-191.
- 李俊萌.计算机软件测试技术与开发应用策略分析[J].信息记录材料,2023,24(03):50-52.
- Shrivastava A ,Prasad S J S ,Yeruva R A , et al.IoT Based RFID Attendance Monitoring System of Students using Arduino ESP8266 & Adafruit.io on Defined Area[J].Cybernetics and Systems,2025,56(1):21-32.
- 徐雪梅.学生考勤管理系统的设计和实现[J].科技风,2024,(33):40-41+70.DOI:10.19392/j.cnki.1671-7341.202433014.
- 江荣娜.基于NFC的学生考勤管理系统的设计与应用[J].科技创新与生产力,2024,45(05):39-42.
- 唐琳.基于人脸识别技术的学生课堂考勤管理系统的设计与实现[J].数字技术与应用,2023,41(09):208-210.DOI:10.19695/j.cnki.cn12-1369.2023.09.65.
- 刘琼,史诺,刘康.基于微信小程序的学生考勤系统的设计与实现[J].微型电脑应用,2023,39(01):173-176.
- 郝佳晶.基于WebGIS的学生考勤管理系统设计与实现[J].山西电子技术,2022,(05):59-61.
- Zhu Y .Design and Implementation of an IoT-based Student Attendance System[J].Journal of Research in Science and Engineering,2022,4(4):
- 胡胜丰,康美林.高校学生考勤统计分析系统设计[J].电脑编程技巧与维护,2021,(10):13-15.DOI:10.16184/j.cnki.comprg.2021.10.004.
- 王强,崔靖茹,张哲,等.高校智慧教室考勤系统的设计与实现[J].中国教育信息化,2021,(19):74-78.
- Bangun M ,Herman ,Ardian A , et al.Online Student Attendance System Using Android[J].Journal of Physics: Conference Series,2021,1933(1):
致谢
在本项目的实施过程中,许多人给予了我无私的支持和帮助,令我深感感谢。
我要衷心感谢我的指导老师。不仅在项目的初期提供了宝贵的建议,还在整个过程中给予了我细致入微的指导。专业知识和严谨态度始终激励着我,让我在遇到困难时能够保持信心,继续前行。每一次的讨论都让我对项目有了更深刻的理解,帮助我克服了许多技术难题。
我也要感谢参与用户测试的同学们。你们的反馈和建议为我们系统的优化提供了重要的参考,帮助我们更好地理解用户需求。正是因为有了你们的参与,我们才能够不断改进,提升系统的用户体验。感谢所有支持我的家人和朋友。你们的理解与鼓励让我在项目的紧张时刻始终能够保持积极的心态,成为我前进的动力。每当我遇到挑战时,想到你们的支持,我就能够重新振作,继续努力。最后,我要感谢所有在我职业发展过程中给予帮助的人。每一次的交流与分享都让我受益匪浅,拓宽了我的视野,让我在这条道路上走得更加坚定。
项目的完成不仅是我个人努力的结果,更是许多人共同支持与协作的成果。在此,我再次向所有关心和支持我的人表达衷心的感谢。希望未来我们能够继续携手,共同创造更多的价值和成就。
代码:
连接数据库的文件在Resources 文件夹下的application.yml文件,代码如下:
server:
port: 5000
servlet:
context-path: /api
spring:
mvc:
static-path-pattern: /upload/**
resources:
static-locations: file:此处填写地址/project93355/server/src/main/resources/static
datasource:
jdbc:mysql://127.0.0.1:3306/projectxxxxx?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
jackson:
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
项目启动文件Application.java,代码如下:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableJpaRepositories
@MapperScan("com.project.demo.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
修改数据代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
删除一条数据代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
通过请求的参数获取列表数据,代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
获取某个组下面的数量,代码如下:
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Integer value= service.selectSqlToInteger(service.groupCount(service.readQuery(request), service.readConfig(request)));
return success(value);
}
注册页登录代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
MD5加密,代码如下:
public String encryption(String plainText) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return re_md5;
}
登录页代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
找回密码,接收用户输入的用户名、密码、验证码,并进行条件判断,代码如下:
/**
* 找回密码
* @param form
* @return
*/
@PostMapping("forget_password")
public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
JSONObject ret = new JSONObject();
String username = form.getUsername();
String code = form.getCode();
String password = form.getPassword();
// 判断条件
if(code == null || code.length() == 0){
return error(30000, "验证码不能为空");
}
if(username == null || username.length() == 0){
return error(30000, "用户名不能为空");
}
if(password == null || password.length() == 0){
return error(30000, "密码不能为空");
}
请关注点赞+私信博主,免费领取项目源码
1770

被折叠的 条评论
为什么被折叠?



