springboot大学生考勤系统--附源码41904

摘要

随着高校信息化建设的不断推进,大学生考勤管理逐渐向数字化、智能化方向发展。本文设计并实现了一款基于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

目录

摘要

Abstract

1 绪论

1.1 研究背景与意义

1.1.1 研究背景

1.1.2 研究意义

1.2 国内外研究现状

1.2.1 国内现状

1.2.2 国外现状

1.3 主要研究内容

2 相关技术介绍

2.1 Java语言

2.2 B/S框架

2.3 SpringBoot框架

2.4 Vue技术

2.5 MySQL数据库

3 系统需求分析

3.1 功能需求分析

3.1.1 学生用户功能

3.1.2 教师用户功能

3.1.3 管理员功能

3.2 可行性分析

3.2.1 技术可行性

3.2.2 操作可行性

3.2.3 经济可行性

4 系统设计

4.1 系统总体功能设计

4.2 系统设计流程

4.2.1 用户登录流程

4.2.2 添加信息流程

4.2.3 修改信息流程

4.2.4 删除信息流程

4.3 数据库表ER

4.4 数据库表物理设计

5 系统实现

5.1 学生用户功能实现

5.1.1 新闻资讯

5.1.2 课程信息

5.1.3 请假申请

5.1.4 个人中心

5.2 教师用户功能实现

5.2.1 课程信息管理

5.2.2 考勤统计管理

5.3 管理员功能

5.3.1 请假申请管理

5.3.2 系统管理

5.3.3 资源管理

6 系统测试

6.1 测试目的

6.2 测试方法

6.3 测试内容

6.4 测试结论

7 总结

参考文献

致谢

1绪论

1.1研究背景与意义

1.1.1研究背景

随着高等教育规模的不断扩大,传统的大学生考勤管理模式面临着越来越多的挑战。传统的纸质签到和手动记录方式不仅效率低下,而且容易出错,难以满足现代教育管理的需求。此外,高校课程安排复杂多样,学生选课、上课地点与时间灵活多变,进一步增加了考勤管理的难度。因此,开发一套高效、准确、易于操作的数字化考勤系统显得尤为重要。通过引入信息化技术,可以实现对学生出勤情况的实时监控与统计分析,为教师提供科学的教学管理依据,同时也方便了学生对自己学习状态的掌握。

在信息技术快速发展的背景下,基于SpringBoot+Vue的技术栈成为了构建高效、稳定网络应用的理想选择。SpringBoot以其简化配置、快速构建微服务的优势,成为后端开发的主流框架之一;而Vue.js则凭借其响应式数据绑定和组件化开发模式,大大提升了前端开发效率和用户体验。结合两者优势构建的大学生考勤系统,不仅可以提高系统的可维护性和扩展性,还能确保良好的用户交互体验。这种技术组合为解决传统考勤管理问题提供了新的思路和方法,推动了高校教学管理向智能化、信息化方向发展。

1.1.2研究意义

开发基于SpringBoot+Vue的大学生考勤系统具有重要的现实意义。首先,该系统能够极大地提高高校教学管理的效率和准确性。传统的手动考勤方式容易出现数据记录错误或丢失的问题,而数字化考勤系统通过自动化手段实时收集、处理和分析学生的出勤信息,减少了人为因素导致的误差。此外,系统提供的多维度统计报表功能,使教师和管理人员可以更加直观地了解学生的出勤情况及趋势,从而采取针对性的教学调整措施。这不仅有助于提升教学质量,还能促进学生自律性的培养,为学校的教学管理工作提供强有力的数据支持。

其次,从技术应用与创新的角度来看,本系统的实现推动了教育信息化的发展进程。采用SpringBoot与Vue.js结合的技术方案,展示了现代Web开发框架在构建复杂业务场景中的强大能力。这种前后端分离的架构设计不仅提升了系统的响应速度和用户体验,还为后续的功能扩展和维护提供了便利。同时,通过权限管理和角色划分,确保了系统的安全性和灵活性,使得不同用户能够在各自的权限范围内高效工作。整体而言,该系统的研究与应用,不仅为高校考勤管理提供了一种新的解决方案,也为其他领域的信息化建设提供了有益的参考案例。

1.2国内外研究现状

1.2.1国内现状

在国内,随着信息技术在教育领域的广泛应用,高校考勤管理系统的发展也经历了从传统模式向数字化、智能化转变的过程。早期的考勤方式主要依赖于纸质签到表和教师的手工记录,这种方式不仅耗时费力,而且数据处理效率低下,难以满足日益复杂的教育管理需求。近年来,随着互联网技术的发展,越来越多的高校开始采用电子化的考勤手段,如刷卡考勤、指纹识别、面部识别等,这些技术的应用极大地提高了考勤的准确性和效率。然而,尽管技术上有了显著进步,但在实际应用中仍存在一些问题,比如系统集成度不高、用户体验不佳、数据分析能力有限等。

当前,国内高校对于信息化考勤系统的建设越来越重视,并且在实践中不断探索更加高效合理的解决方案。许多高校与科技企业合作,利用云计算、大数据等前沿技术开发定制化的考勤管理系统,以期实现教育资源的有效整合和优化配置。同时,随着移动互联网的普及,基于移动端的考勤应用也逐渐兴起,允许学生和教师通过智能手机或平板电脑随时随地进行考勤操作和信息查询,这无疑进一步提升了系统的便捷性和灵活性。尽管如此,如何确保系统的稳定运行、数据的安全性以及提升用户的整体满意度仍然是未来需要持续关注和改进的方向。此外,针对不同高校的具体需求,提供个性化服务和功能定制也成为了一个重要的发展趋势。

1.2.2国外现状

在国外,学生考勤管理系统的发展同样经历了从传统纸质记录向电子化、自动化系统转变的过程。许多高等教育机构已经广泛采用了先进的信息技术来优化考勤管理流程。例如,在美国和欧洲的一些大学,已经开始使用基于RFID(射频识别)、生物识别技术(如指纹或面部识别)的智能考勤系统。这些系统不仅提高了考勤的准确性和效率,还能够与学校的其他管理系统(如课程管理系统、学籍管理系统等)无缝集成,为教师和管理人员提供全面的学生出勤数据支持。此外,一些学校还利用移动应用程序让学生和家长能够实时查看出勤情况,增强了家校沟通。

在技术应用方面,国外的教育机构更加注重系统的易用性、安全性和数据分析能力。例如,通过采用云计算技术,实现了考勤数据的云端存储和处理,使得数据访问更加便捷,同时也提升了数据的安全性和隐私保护水平。另外,借助大数据分析工具,学校可以对学生出勤数据进行深入挖掘,发现潜在问题,并采取针对性措施提高学生的到课率。例如,某些系统能够根据历史出勤数据预测哪些学生可能面临出勤问题,从而提前介入提供帮助。尽管如此,随着技术的不断进步,如何持续提升系统的智能化水平,更好地服务于个性化教学需求,依然是国外教育机构面临的挑战。同时,不同国家和地区由于法律法规、文化差异等因素,在系统部署和应用上也存在一定的差异性。

1.3主要研究内容

本研究的主要内容聚焦于设计并实现一个基于SpringBoot+Vue的大学生考勤系统,旨在通过信息化手段提升高校教学管理的效率与准确性。具体而言,系统将涵盖学生用户、教师用户和管理员三大角色的功能需求,包括但不限于选课信息管理、签到记录、请假申请、考勤统计等核心模块。利用SpringBoot框架构建稳定高效的后端服务,提供RESTful接口支持数据交互;前端则采用Vue.js实现动态交互界面,确保良好的用户体验。此外,系统还将集成多维度的数据分析功能,帮助教师和管理人员实时监控学生的出勤情况,并据此作出科学的教学调整决策。同时,通过对不同用户角色进行细致的权限设置,确保系统的安全性与灵活性,满足个性化需求,为智慧校园建设贡献力量。

2相关技术介绍

2.1Java语言

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系统需求分析

3.1功能需求分析

3.1.1学生用户功能

(1)注册登录:用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。

(2)首页:用户进入大学生考勤系统的时候,首先映入眼帘的是系统的首页、通知公告、新闻资讯、课程信息、请假申请等信息。

(3)通知公告:用户点击可查看网站公告、关于我们、联系方式和网站介绍等信息, 方便用户浏览了解系统公告信息 。

(4)新闻资讯:用户点击可查看新闻资讯,同时可对咨讯文章进行点赞、收藏和评论。

(5)课程信息:用户点击可通过搜索课程名称、班级名称进行查看课程信息列表,可点击进入查看课程信息详情,可进行点赞、收藏和评论。点击“选课”按钮可添加选课信息,包括选课次数和选课备注。

(6)请假申请:用户点击可添加请假信息,包括请假日期、请假次数和请假原因。

(7)我的账户:用户可以在个人账户中查看并管理自己的个人信息。包括个人资料、修改密码等 。

(8)个人中心:个人中心包含多个功能模块,如个人首页、选课信息、签到记录、请假申请和收藏。

选课信息:用户点击可查看选课信息列表。

签到记录:用户点击可查看签到记录列表。

请假申请:用户点可查看请假申请审核详情。

收藏:用户点击可对历史收藏信息查看或删除。

学生用户用例图如下:

图3-1学生用户用例图

3.1.2教师用户功能

(1)注册登录:用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。

(2)后台首页:教师用户点击可查看选课信息、签到记录信息统计数据图。

(3)课程信息管理:教师用户点击可查看课程信息列表和课程信息添加;点击进入“课程信息添加”可查看详情信息,包括课程名称、授课教师、班级名称、教师姓名、授课时间、授课地点、课程封面、课程介绍。

(4)选课信息管理:教师用户点击可查看选课信息列表。

(5)签到记录管理:教师用户点击可查看签到记录列表。

(6)考勤统计管理:教师用户点击可查看考勤统计列表和考勤统计添加;点击进入“考勤统计添加”可填写相关信息,包括教师用户、教师姓名、统计对象、出勤次数、迟到次数、缺勤次数和统计备注。

(7)通知公告管理:教师用户点击可查看网站公告、关于我们、联系方式和网站介绍等信息, 方便用户浏览了解系统公告信息 。

教师用户用例图如下:

图3-2教师用户用例图

3.1.3管理员功能

(1)登录:管理员账号密码由系统生成,可使用账号密码可进行登录系统后台,使用系统功能进行管理,并可对自己的个人信息和密码进行管控。

(2)后台首页:管理员点击可查看选课信息、签到记录信息、请假申请、考勤统计信息数据图。

(3)系统用户:管理员点击可查看系统用户(管理员、学生用户、教师用户)列表中某个用户的详情,可以对用户信息进行查询、审核、添加和删除操作。

(4)课程信息管理:管理员点击可查看课程信息列表,管理员也具备添加、删除、修改课程信息的权限。

(5)选课信息管理:管理员点击可查看学生用户的选课信息列表,可点击“导出”按钮将选课信息进行导出保存查看。

(6)签到记录管理:管理员点击可查看学生用户的签到记录列表。

(7)请假申请管理:管理员点击可查看学生用户的请假申请列表,可点击“审核”按钮对请假信息进行审核回复。同时管理员有添加请假信息的权限。

(8)考勤统计管理:管理员点击可查看考勤统计列表,可点击“导出”按钮将考勤统计信息进行导出保存查看。

(9)系统管理:管理员点击可查看轮播图管理;如需添加新的轮播图,点击右侧“添加”按钮,上传图片,输入标题和链接,点击“确认””按钮进行添加;同时可对轮播图进行增删改查。

(10)通知公告管理:当管理点击“通知公告管理”时,可查看通知公告;如需添加新的公告信息,点击右侧“添加”按钮,输入标题和正文,点击“确认”按钮进行添加。

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

(12)权限管理:管理员可以对不同用户角色进行权限设置,控制不同用户的操作权限和访问范围。

教管理员用例图如下:

图3-3管理员用例图

3.2可行性分析

3.2.1技术可行性

系统采用当前主流的SpringBoot和Vue.js开发框架,具备良好的技术基础。这些技术已被广泛应用于多种商业项目,具备成熟的文档和社区支持,便于开发获取必要的资源与解决方案。个人拥有丰富的相关技术经验,能够有效应对潜在技术挑战。所需的软硬件资源易于获取,且具备良好的兼容性,降低了技术实现的难度。

3.2.2操作可行性

系统具备直观友好的用户界面,支持简便的导航和功能访问,极大地提升了用户的使用体验。系统提供了自定义的工作流程和角色权限管理,使不同层级的用户能够快速上手,完成各自的任务。。

3.2.3经济可行性

系统所使用的软件为开源技术,降低了使用费用,同时硬件成本较低,使得整体初始投入相对合理,具备较高性价比。因此,系统在经济上是完全可行的。

4系统设计

4.1系统总体功能设计

系统功能结构图如图4-1所示。

图4-1 系统功能结构图

4.2系统设计流程

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删除信息流程图

4.3数据库表ER

数据库概念模型是数据库设计的一个阶段,它描述了数据库中数据的逻辑结构和之间的关系,而不关注具体的实现细节[9]。概念模型通常用于数据库设计的初期阶段,以帮助开发人员和用户理解数据库中存储的数据以及数据之间的关系。

数据库概念模型通常采用高层次的概念来描述数据,常见的概念模型包括实体-关系模型(Entity-Relationship Model,ERM)、面向对象模型(Object-Oriented Model)等。在概念模型中,数据被抽象为实体(Entity)和实体之间的关系(Relationship),并且定义了实体的属性(Attribute),通常以E-R图来表达。

系统全局E-R图如图4-6所示。

图4-6系统E-R图

4.4数据库表物理设计

表 4-1-access_token(登陆访问时长)

编号

字段名

类型

长度

是否非空

是否主键

注释

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

email

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.1新闻资讯

新闻资讯:用户点击可查看新闻资讯,同时可对咨讯文章进行点赞、收藏和评论。界面如图5-1所示。

图5-1新闻资讯界面。

5.1.2课程信息

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

图5-2课程信息界面。


图5-3选课信息界面。

5.1.3请假申请

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

图5-4请假申请界面。

5.1.4个人中心

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

图5-5个人中心界面。

5.2教师用户功能实现

5.2.1课程信息管理

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

图5-8课程信息添加界面。

5.2.2考勤统计管理

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

图5-9考勤统计添加界面。

5.3管理员功能

5.3.1请假申请管理

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

图5-10请假申请管理界面。

5.3.2系统管理

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

图5-11系统管理界面。

5.3.3资源管理

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

6系统测试

6.1测试目的

测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性[10]。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。

6.2测试方法

在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。

常见的测试用例包括功能测试用例、边界测试用例和异常测试用例[12]。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。

在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。

6.3测试内容

系统的测试用例表格如下图所示。

表6-1 系统测试用例表

测试项

测试用例

问题

结论

登录功能测试

打开登录页面 输入正确的用户名和密码 点击“登录”按钮

符合预期

登录功能测试

打开登录页面 输入错误的用户名 输入正确的密码 点击“登录”按钮

符合预期

登录功能测试

打开登录页面 输入正确的用户名 输入错误的密码 点击“登录”按钮

符合预期

登录功能测试

打开登录页面 输入不存在的用户名和密码 点击“登录”按钮

符合预期

注册功能测试

打开注册页面 输入合法的用户名、密码、邮箱等信息 点击“注册”按钮

符合预期

注册功能测试

打开注册页面 输入已存在的用户名 输入其他合法信息 点击“注册”按钮

符合预期

注册功能测试

打开注册页面 输入合法用户名但密码不符合要求(如长度不足) 点击“注册”按钮

符合预期

注册功能测试

打开注册页面 输入合法用户名和密码但邮箱格式错误 点击“注册”按钮

符合预期

查看课程信息测试

登录系统 进入课程信息页面 浏览课程名称、班级、地点等信息

符合预期

查看课程信息测试

登录系统 进入课程信息页面 使用搜索栏输入关键词搜索课程信息

符合预期

查看课程信息测试

登录系统 进入课程信息页面 点击课程详情查看完整信息

符合预期

查看课程信息测试

登录系统 进入课程信息页面 不输入任何搜索条件直接点击搜索

符合预期

6.4测试结论

经过对系统登录、注册、查看课程信息功能的测试,所有测试用例均按照既定步骤执行完毕。测试结果显示,各功能模块在正常输入和异常输入条件下均表现出预期的行为。登录功能能够准确识别用户名和密码的正确性,并对错误输入给予相应提示。注册功能对用户输入的合法性进行了有效校验,确保了注册信息的规范性。查看课程信息功能能够正常展示课程的基本信息,并支持搜索和详情查看操作。整体而言,测试过程中未发现功能缺陷,系统运行稳定,各项功能均符合设计预期。

经过系统全面的功能测试、性能测试和可靠性测试,本系统在测试环境下运行良好,功能模块均按照设计要求实现,核心功能表现稳定,未发现严重功能缺陷或阻塞性问题。所有关键测试用例均通过,覆盖率达到预期目标,验证了系统的功能性、稳定性和兼容性。

7总结

本研究成功设计并实现了一个基于SpringBoot+Vue的大学生考勤系统,该系统通过信息化手段有效提升了高校教学管理的效率与准确性。系统集成了选课信息管理、签到记录、请假申请、考勤统计等核心功能模块,不仅简化了传统的手动考勤流程,减少了人为错误的可能性,还为教师和管理人员提供了强大的数据分析支持,使他们能够更直观地了解学生的出勤情况,并据此采取相应的教学调整措施。此外,通过前后端分离架构,实现了数据的高效传输与展示,保证了系统的可维护性和扩展性。整个系统在提高学生自律性的同时,也增强了家校沟通的有效性,为智慧校园的建设奠定了坚实的基础。

总结而言,本研究不仅验证了基于SpringBoot+Vue技术栈构建高效考勤系统的可行性,同时也展示了其在实际应用中的巨大潜力。通过不断优化用户体验、加强数据安全保护及提升系统的智能化水平,本系统能够适应不同教育机构的具体需求,提供定制化的服务解决方案。然而,随着信息技术的快速发展,未来仍需持续关注新兴技术的应用,如人工智能、大数据分析等,以进一步增强系统的功能性和适应性。这将有助于推动教育管理模式的创新,更好地服务于现代化教育的发展需求,为构建更加智能、高效的教育生态系统贡献力量。

参考文献

  1. 尹应荆.JAVA编程语言在计算机软件开发中的应用[J].石河子科技,2023,(05):45-47.
  2. 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
  3. 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
  4. 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
  5. 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
  6. 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
  7. 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
  8. 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
  9. 周晓玉,崔文超.基于Web技术的数据库应用系统设计[J].信息与电脑(理论版),2023,35(09):189-191.
  10. 李俊萌.计算机软件测试技术与开发应用策略分析[J].信息记录材料,2023,24(03):50-52.
  11. 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.
  12. 徐雪梅.学生考勤管理系统的设计和实现[J].科技风,2024,(33):40-41+70.DOI:10.19392/j.cnki.1671-7341.202433014.
  13. 江荣娜.基于NFC的学生考勤管理系统的设计与应用[J].科技创新与生产力,2024,45(05):39-42.
  14. 唐琳.基于人脸识别技术的学生课堂考勤管理系统的设计与实现[J].数字技术与应用,2023,41(09):208-210.DOI:10.19695/j.cnki.cn12-1369.2023.09.65.
  15. 刘琼,史诺,刘康.基于微信小程序的学生考勤系统的设计与实现[J].微型电脑应用,2023,39(01):173-176.
  16. 郝佳晶.基于WebGIS的学生考勤管理系统设计与实现[J].山西电子技术,2022,(05):59-61.
  17. Zhu Y .Design and Implementation of an IoT-based Student Attendance System[J].Journal of Research in Science and Engineering,2022,4(4):
  18. 胡胜丰,康美林.高校学生考勤统计分析系统设计[J].电脑编程技巧与维护,2021,(10):13-15.DOI:10.16184/j.cnki.comprg.2021.10.004.
  19. 王强,崔靖茹,张哲,等.高校智慧教室考勤系统的设计与实现[J].中国教育信息化,2021,(19):74-78.
  20. 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, "密码不能为空");

        }

请关注点赞+私信博主,免费领取项目源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值