本研究旨在开发一套基于SpringBoot和Vue技术的学生课堂教学电子自动化考勤管理系统,以应对传统考勤方式存在的种种不足和挑战。通过系统的设计与实现,实现教学管理的数字化转型,提升教学管理效率和信息化水平。该系统将为学校提供一种全新的考勤管理解决方案,为教师、学生和管理人员提供更便捷、准确的考勤服务。
在系统架构设计上,本研究充分利用SpringBoot框架的优势,实现了后端服务的快速开发和部署,同时结合Vue框架的前端技术,打造了用户友好、交互性强的前端界面。通过前后端技术的结合,实现了系统的高效运行和良好的用户体验,为学校提供了一套完善的电子考勤管理解决方案。
最后,通过对系统进行实际应用测试和用户反馈收集,验证了系统在提高考勤准确性、简化考勤流程、优化管理决策等方面的显著效果。本研究的成果将为学校教学管理提供有力支持,促进教育信息化的深入推进,为教学质量和管理效率的提升提供可靠的技术保障。
关键词:学生课堂教学电子自动化考勤管理系统;Java;MySQL;SpringBoot+Vue
Abstract
The purpose of this study is to develop a set of electronic automatic attendance management system based on SpringBoot and Vue technology, in order to deal with the shortcomings and challenges of traditional attendance management. Through the design and implementation of the system, the digital transformation of teaching management is realized, and the efficiency and information level of teaching management are improved. The system will provide a new attendance management solution for schools, providing teachers, students and administrators with more convenient and accurate attendance services.
In terms of system architecture design, this study made full use of the advantages of SpringBoot framework to realize the rapid development and deployment of back-end services, and combined with the front-end technology of Vue framework to create a user-friendly and interactive front-end interface. Through the combination of front and back end technology, the efficient operation and good user experience of the system are realized, and a perfect electronic attendance management solution is provided for the school.
Finally, through practical application testing and user feedback collection, the system is verified to improve the accuracy of attendance, simplify the attendance process, optimize the management decision and so on. The results of this study will provide strong support for school teaching management, promote the in-depth advancement of education informatization, and provide reliable technical support for the improvement of teaching quality and management efficiency.
Keywords: Electronic automatic attendance management system for students' classroom teaching; Java; MySQL; SpringBoot+Vue
1 绪论
近年来,随着信息技术的迅猛发展,教育行业也在不断探索如何利用先进技术提升教学质量和管理效率。课堂教学电子自动化考勤管理系统作为一种创新的解决方案,正逐渐受到广泛关注。通过结合SpringBoot和Vue等现代技术,可以实现系统的快速开发和灵活部署,为学校提供高效便捷的考勤管理服务。
传统的考勤方式存在诸多弊端,如容易造成数据错误、操作繁琐等问题,影响了教学秩序和管理效率。而引入电子自动化考勤系统,则能有效规范学生考勤流程、提高数据准确性,并为教师和管理人员提供实时的考勤信息反馈,有力地支持教学管理工作的开展。
通过对学生课堂出勤情况进行自动化管理,不仅可以减轻教师的工作负担,提升教学效率,还能为学校领导提供数据支持,帮助他们更好地了解学生学习情况和课堂管理状况,从而更好地制定教学策略和管理政策,促进教育教学的持续优化和提升。因此,开发基于SpringBoot和Vue的学生课堂教学电子自动化考勤管理系统具有重要的现实意义和广阔的应用前景。
学生课堂教学电子自动化考勤管理系统基于SpringBoot和Vue的开发与应用,不仅可以优化学校教学管理流程,提高工作效率,还有助于构建数字化校园环境,推动教育信息化进程。通过引入现代技术手段,可以实现考勤数据的实时监控和分析,为教育管理部门提供科学依据,从而更好地指导教学实践,提升教学质量。
该系统的研发与应用,有助于规范学生考勤行为,减少学生旷课现象,提高学生出勤率和学习积极性。通过电子化考勤管理,不仅可以有效监督学生学习情况,还能为学生提供更加规范和便捷的教学环境,培养学生的自律意识和责任感,促进良好的学习氛围的形成。
同时,这一系统的研究与应用,也将为教育管理者提供数据支持和决策依据,帮助他们更好地制定教学方针和管理政策。基于SpringBoot和Vue技术的学生考勤管理系统,将为教育管理部门提供更多的信息化工具和管理手段,提升教育教学管理的科学化水平,推动学校管理模式的创新和进步。
1.3论文结构与章节安排
论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对网站需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:
第一章:引言。第一章主要介绍了课题研究的背景,系统开发的意义和本文的研究内容与主要工作。
第二章:系统需求分析。第二章主要从系统的用户、功能等方面进行需求分析。
第三章:系统设计。第三章主要对系统框架、系统功能模块、数据库进行功能设计。
第四章:系统实现。第四章主要介绍了系统框架搭建、系统界面的实现。
第五章:系统测试。第五章主要对系统的部分界面进行测试并对主要功能进行测试
2 学生课堂教学电子自动化考勤管理系统系统分析
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。
2.1 可行性分析
(1)技术可行性:
技术可行性指的是对于搭建框架的可行性,以及有更优秀的技术出现时系统的技术更新换代的纳新性如何,开发时间成本费用比如何。
现有的JAVA语言能够迎合所有系统的搭建。开发这个学生课堂教学电子自动化考勤管理系统的时候我采用了SpringBoot+Vue用以运行整体程序。
(2)经济可行性:
SpringBoot+Vue的自动配置功能可以根据应用程序的依赖和环境来进行自动配置,减少了大量的手动配置工作,可以降低开发成本,SpringBoot+Vue的开发效率和生产力非常高,它提供了一系列快速构建和开发的功能。这也有助于减少开发成本;SpringBoot+Vue的代码质量和可维护性较高,可以降低后期维护成本,因此开发SpringBoot+Vue学生课堂教学电子自动化考勤管理系统在经济上是可行的。
(3)市场需求可行性:
通过结合Spring Boot后端框架和Vue前端框架,这一设计与实现具有较高的市场可行性,能够满足用户对于便捷、快速、安全的银行卡业务处理的需求,促进银行业务的数字化转型和发展。因此,开发基于SpringBoot+Vue的学生课堂教学电子自动化考勤管理系统是符合市场需求的。
业务流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。
用户成功登入系统后就能够实现增加数据的操作,增加数据的编号是特定的,系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证合法通过就显示增加数据成功了,相反的话,就没有增加成功,图2-1显示的就是在增加数据时的流程。
图2-1 数据增加流程图
数据修改时的流程和上面介绍的数据增加时的流程差不多,如图2-2所示。
图2-2 数据修改流程图
如果系统里面存在一些没有用的数据的话,相关的管理人员还可以对这些数据进行删除,图2-3就是数据删除时的流程图。
图2-3 数据删除流程图
按照学生课堂教学电子自动化考勤管理系统的角色,主要包括学生用户模块、教师用户模块和管理员模块这三大部分。
学生用户:
(1)注册登录:用户通过注册登录系统,可通过点击头像中我的账户,对个人信息进行增删改查。比如个人资料、头像和密码修改。
(2)班级信息管理:学生用户点击可查看班级信息列表。
(3)课程信息管理:学生用户点击可查看课程信息列表。
(4)考勤信息管理:学生用户点击可查看考勤信息列表;点击“签到”按钮可填写签到信息,包括上课签到日期、签到背书和当前位置定位;点击“请假”按钮可填写请假信息,包括请假时间、请假原因和当前位置定位。
(5)签到信息管理:学生用户点击可查看签到信息列表。
(6)请假信息管理:学生用户点击可查看请假信息列表。
(7)成绩信息管理:学生用户点击可查看成绩信息列表。
教师用户:
(1)注册登录:用户通过注册登录系统,可通过点击头像中我的账户,对个人信息进行增删改查。比如个人资料、头像和密码修改。
(2)班级信息管理:教师用户点击可查看班级信息列表和班级信息添加;点击“班级信息添加”,选择教师用户、学生用户,输入班级名称、班级主任、学生人数和教师人数。
(3)课程信息管理:教师用户点击可查看课程信息列表和教师信息添加;点击“课程信息列表”,选择教师用户、学生用户,输入课程名称、课程分类、老师姓名、课程时长和课程大纲,点击“提交”按钮进行添加。
(4)考勤信息管理:教师用户点击可查看考勤信息列表和考勤信息添加;点击“考勤信息添加”,选择教师用户、学生用户和学生姓名,输入学生学号、班级名称、学期期数,选择考勤情况、考勤时间和输入考勤备注,点击“提交”进行添加。
(5)签到信息管理:教师用户点击可查看签到信息列表。
(6)请假信息管理:教师用户点击可查看请假信息列表,同时对请假信息进行审核回复。
(7)成绩信息管理:教师用户点击可查看成绩信息列表和成绩信息添加;点击“成绩信息添加”,选择教师用户和学生用户,输入学生学号、学生姓名、学期名称、班级名称、成绩名称和成绩详情,点击“提交”按钮进行添加。
管理员:
(1)登录:管理员的账号是在数据列表中直接设置生成的,不需要进行注册,可直接输入账号密码登录,同时可对管理员资料进行增删改查。
(2)后台首页:管理员点击可查看考勤信息统计数据图。
(3)系统用户:当管理员点击“系统用户”时,可管理管理员、学生用户和教师用户,同时可对系统用户进行增删改查。
(4)班级信息管理:管理员点击可查看班级信息列表。
(5)课程信息管理:管理员点击可查看课程信息列表。
(6)考勤信息管理:管理员点击可查看考勤信息列表。
(7)签到信息管理:管理员点击可查看签到信息列表。
(8)请假信息管理:管理员点击可查看请假信息列表。
(9)成绩信息管理:管理员点击可查看成绩信息列表。
学生课堂教学电子自动化考勤管理系统的非功能性需求比如学生课堂教学电子自动化考勤管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表2-1学生课堂教学电子自动化考勤管理系统非功能需求表
安全性 | 主要指学生课堂教学电子自动化考勤管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指学生课堂教学电子自动化考勤管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响学生课堂教学电子自动化考勤管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着学生课堂教学电子自动化考勤管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 学生课堂教学电子自动化考勤管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4 系统用例分析
通过2.3功能的分析,得出了本学生课堂教学电子自动化考勤管理系统的用例图:
图2-4 用户角色(学生用户和教师用户)的用例展示。
图2-6就是管理员角色的用例展示。
本章主要讨论的内容包括学生课堂教学电子自动化考勤管理系统的功能模块设计、数据库系统设计。
3.1 系统架构设计
本学生课堂教学电子自动化考勤管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1学生课堂教学电子自动化考勤管理系统系统架构设计图
表现层(UI):又称UI层,主要完成本学生课堂教学电子自动化考勤管理系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本学生课堂教学电子自动化考勤管理系统时的舒适度。UI的界面设计也要适应不同版本的学生课堂教学电子自动化考勤管理系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本学生课堂教学电子自动化考勤管理系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本学生课堂教学电子自动化考勤管理系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本学生课堂教学电子自动化考勤管理系统的数据存储和管理功能。
3.2 系统功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本学生课堂教学电子自动化考勤管理系统中的用例。那么接下来就要开始对本学生课堂教学电子自动化考勤管理系统的架构、主要功能和数据库开始进行设计。学生课堂教学电子自动化考勤管理系统根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。
图3-2 学生课堂教学电子自动化考勤管理系统功能模块图
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个学生课堂教学电子自动化考勤管理系统中主要的数据库表总E-R实体关系图。
图3-6 学生课堂教学电子自动化考勤管理系统总E-R关系图
通过上一小节中学生课堂教学电子自动化考勤管理系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表attendance_information (考勤信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | attendance_information_id | int | 10 | 0 | N | Y | 考勤信息ID | |
2 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
3 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
4 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
5 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
6 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
7 | number_of_semesters | int | 10 | 0 | Y | N | 0 | 学期期数数 |
8 | attendance_status | varchar | 64 | 0 | Y | N | 考勤状况 | |
9 | attendance_time | datetime | 19 | 0 | Y | N | 考勤时间 | |
10 | attendance_notes | text | 65535 | 0 | Y | N | 考勤备注 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | class_information_id | int | 10 | 0 | N | Y | 班级信息ID | |
2 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
3 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
4 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
5 | class_director | varchar | 64 | 0 | Y | N | 班级主任 | |
6 | number_of_students | int | 10 | 0 | Y | N | 0 | 学生人数 |
7 | number_of_teachers | int | 10 | 0 | Y | N | 0 | 教师人数 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | course_information_id | int | 10 | 0 | N | Y | 课程信息ID | |
2 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
3 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
4 | course_name | varchar | 64 | 0 | Y | N | 课程名称 | |
5 | course_classification | varchar | 64 | 0 | Y | N | 课程分类 | |
6 | teachers_name | varchar | 64 | 0 | Y | N | 老师姓名 | |
7 | course_duration | varchar | 64 | 0 | Y | N | 课程时长 | |
8 | course_outline | text | 65535 | 0 | Y | N | 课程大纲 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | grade_information_id | int | 10 | 0 | N | Y | 成绩信息ID | |
2 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
3 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
4 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
5 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
6 | semester_name | varchar | 64 | 0 | Y | N | 学期名称 | |
7 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
8 | grade_name | varchar | 64 | 0 | Y | N | 成绩名称 | |
9 | grade_details | text | 65535 | 0 | Y | N | 成绩详情 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | leave_information_id | int | 10 | 0 | N | Y | 请假信息ID | |
2 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
3 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
4 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
5 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
6 | leave_time | datetime | 19 | 0 | Y | N | 请假时间 | |
7 | reason_for_leave | text | 65535 | 0 | Y | N | 请假原因 | |
8 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
9 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
10 | location_address | varchar | 64 | 0 | Y | N | 当前位置 | |
11 | location_lng | varchar | 64 | 0 | Y | N | 当前位置经度 | |
12 | location_lat | varchar | 64 | 0 | Y | N | 当前位置纬度 | |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sign_in_information_id | int | 10 | 0 | N | Y | 签到信息ID | |
2 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
3 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
4 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
5 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
6 | sign_in_time | date | 10 | 0 | Y | N | 上课签到 | |
7 | sign_in_remarks | text | 65535 | 0 | Y | N | 签到备注 | |
8 | location_address | varchar | 64 | 0 | Y | N | 当前位置 | |
9 | location_lng | varchar | 64 | 0 | Y | N | 当前位置经度 | |
10 | location_lat | varchar | 64 | 0 | Y | N | 当前位置纬度 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_users_id | int | 10 | 0 | N | Y | 学生用户ID | |
2 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
3 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
4 | mobile_phone_number | varchar | 16 | 0 | Y | N | 手机号码 | |
5 | evidence_number | varchar | 255 | 0 | Y | N | 证件号码 | |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_users_id | int | 10 | 0 | N | Y | 教师用户ID | |
2 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
3 | teacher_id | varchar | 64 | 0 | Y | N | 教师工号 | |
4 | mobile_phone_number | varchar | 16 | 0 | Y | N | 手机号码 | |
5 | evidence_number | varchar | 255 | 0 | Y | N | 证件号码 | |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
4 学生课堂教学电子自动化考勤管理系统详细设计与实现
学生课堂教学电子自动化考勤管理系统的详细设计与实现主要是根据前面的学生课堂教学电子自动化考勤管理系统的需求分析和学生课堂教学电子自动化考勤管理系统的总体设计来设计页面并实现业务逻辑。主要从学生课堂教学电子自动化考勤管理系统界面实现、业务逻辑实现这两部分进行介绍。
4.1教师用户功能模块
4.1.1 用户注册界面
用户右上角“注册”按钮进入注册页面填写账号、密码、确认密码、昵称、邮箱、身份、用户姓名、性别等信息后点击“注册”按钮,系统将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,系统用户都需注册,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用户注册界面展示如下图所示。
图4-1 用户注册界面图
用户注册的关键代码如下:
/**
* 注册
* @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);
}
4.1.2 用户登录界面
用户注册后可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在验证信息一致才能成功登录系统;否则将会提示相应错误信息,用户登录界面如下图所示。
图4-2用户登录界面图
用户登录关键代码如下:
/**
* 登录
* @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<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
4.1.3 课程信息管理界面
课程信息管理:教师用户点击可查看课程信息列表和教师信息添加;点击“课程信息列表”,选择教师用户、学生用户,输入课程名称、课程分类、老师姓名、课程时长和课程大纲,点击“提交”按钮进行添加。界面如下图所示。
图4-3 课程信息管理界面图
4.1.4 考勤信息管理界面
考勤信息管理:教师用户点击可查看考勤信息列表和考勤信息添加;点击“考勤信息添加”,选择教师用户、学生用户和学生姓名,输入学生学号、班级名称、学期期数,选择考勤情况、考勤时间和输入考勤备注,点击“提交”进行添加。界面如下图所示。
图4-4 考勤信息管理界面图
4.1.5 成绩信息管理界面
成绩信息管理:教师用户点击可查看成绩信息列表和成绩信息添加;点击“成绩信息添加”,选择教师用户和学生用户,输入学生学号、学生姓名、学期名称、班级名称、成绩名称和成绩详情,点击“提交”按钮进行添加。展示页面如图所示。
图4-5 成绩信息界面图
4.2管理员功能模块
4.2.1 后台首页
后台首页:管理员点击可查看考勤信息统计数据图。界面如下图所示。
图4-6 后台首页界面图
系统用户:当管理员点击“系统用户”时,可管理管理员、学生用户和教师用户,同时可对系统用户进行增删改查。界面如下图所示。
图4-7 系统用户理界面图
考勤信息管理:学生用户点击可查看考勤信息列表;点击“签到”按钮可填写签到信息,包括上课签到日期、签到背书和当前位置定位;点击“请假”按钮可填写请假信息,包括请假时间、请假原因和当前位置定位。展示页面如图所示。
图4-8 考勤信息管理界面图
5系统测试
5.1 系统测试用例
系统测试包括:用户登录功能测试、成绩信息查询功能测试、课程信息添加、密码修改功能测试,如表5-1、5-2、5-3、5-4所示:
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
成绩信息查看功能测试:
表5-2 成绩信息查看功能测试表
用例名称 | 成绩信息查看 |
目的 | 测试成绩信息查看功能 |
前提 | 用户登录 |
测试流程 | 点击成绩信息管理 |
预期结果 | 可以查看到所有成绩信息 |
实际结果 | 实际结果与预期结果一致 |
教师添加课程信息界面测试:
表5-3 教师添加课程信息界面测试表
用例名称 | 课程信息添加测试用例 | ||
目的 | 测试课程信息添加功能 | ||
前提 | 教师用户正常登录情况下 | ||
测试流程 | 1)教师点击课程信息管理,然后点击添加后并填写信息。 2)点击进行提交。 | ||
预期结果 | 提交以后,页面首页会显示新的课程信息 | ||
实际结果 | 实际结果与预期结果一致 | ||
实际结果 | 实际结果与预期结果一致 |
密码修改搜索功能测试:
表5-4 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
通过编写学生课堂教学电子自动化考勤管理系统的测试用例,已经检测完毕用户登录功能测试、成绩信息查看功能测试、课程信息添加、密码修改功能测试,通过这4大模块为学生课堂教学电子自动化考勤管理系统的后期推广运营提供了强力的技术支撑。
结 论
在学生课堂教学电子自动化考勤管理系统开发之前,需要先对用户的具体需求进行分析。包括系统的可行性分析、功能需求分析以及其他需求等。在可行性分析过程中,对系统实现的技术性、经济性以及管理等方面进行了分析。总体上证明了系统实施的可行性。
本文总结了学生课堂教学电子自动化考勤管理系统实现背景与现状,然后阐述了系统的具体业务需求,并根据系统需求对系统结构以及功能模块等进行了详细地设计,将整个系统划分为多个不同的功能模块。在分析系统功能需求时,对整个系统的总体架构以及功能模块等进行了分析,并选择合适的系统开发技术完成了对各个模块的开发工作。系统开发完成之后进行了部署,同时进行了系统的测试过程,通过测试证明了系统在功能以及性能等方面都达到了预期的要求,具有较高的稳定性与可靠性。
参考文献
[1]武际斌,段良华,金永亮. 基于Vue+SpringBoot的课程思政素材库的设计与实现[C]//百色学院马克思主义学院.2023年思想政治教育论坛论文集.[出版者不详],2023:3.DOI:10.26914/c.cnkihy.2023.087218.
[2]姜一波.基于SpringBoot+Vue的在线考试系统设计与实现[J].无线互联科技,2023,20(23):68-71.
[3]唐琳.基于人脸识别技术的学生课堂考勤管理系统的设计与实现[J].数字技术与应用,2023,41(09):208-210.DOI:10.19695/j.cnki.cn12-1369.2023.09.65.
[4]银莉,杜啸楠.基于SpringBoot和Vue的校园积分系统的设计与实现[J].集成电路应用,2023,40(07):414-415.DOI:10.19339/j.issn.1674-2583.2023.07.187.
[5]银莉,杜啸楠.基于SpringBoot和Vue的社区服务平台设计与实现[J].电子技术,2022,51(12):182-183.
[6]李鹏,闵慧.基于Android的蓝牙考勤课堂管理系统设计与实现[J].电脑编程技巧与维护,2022(10):69-73.DOI:10.16184/j.cnki.comprg.2022.10.005.
[7]Mingtao Z ,Gang Z ,Meihong Q . [J]. Computational Intelligence and Neuroscience,2022,2022.
[8]齐宁.高等职业院校学生课堂考勤管理系统的设计与功能分析[J].电子技术与软件工程,2022(12):255-258.
[9]李新春,魏武,贾宝山,等.基于蓝牙和校园WLAN的课堂考勤系统设计[J].传感器与微系统,2022,41(05):87-90.DOI:10.13873/J.1000-9787(2022)05-0087-04.
[10]单树倩,任佳勋.基于SpringBoot和Vue框架的数据库原理网站设计与实现[J].电脑知识与技术,2021,17(30):40-41+50.DOI:10.14004/j.cnki.ckt.2021.2868.
[11]余久久,尹陈,张继山,等.基于安卓平台的轻量级课堂考勤管理系统设计与实现[J].通化师范学院学报,2021,42(10):84-88.DOI:10.13877/j.cnki.cn22-1284.2021.10.013.
[12]张伟. 基于SpringBoot和Vue的综合教学管理平台设计与实现[D].重庆大学,2022.DOI:10.27670/d.cnki.gcqdu.2021.003900.
[13]罗榆凌,范涛,刘金辉,等.基于RFID技术的高校课堂考勤管理系统[J].电子测试,2020(23):66-68.DOI:10.16520/j.cnki.1000-8519.2020.23.023.
[14]巫春玲,冯志文,钟沈豪,等.基于人脸识别技术的高校课堂自动考勤管理系统[J].智能建筑与智慧城市,2020(05):20-24.DOI:10.13655/j.cnki.ibci.2020.05.007.
[15]孙晓磊,冯涛,李朋,等.高校信息系统数据共享技术的研究与分析[J].河北水利电力学院学报,2020,30(01):50-53.DOI:10.16046/j.cnki.issn2096-5680.2020.01.009.
[16]蔡李生. 基于微小人脸识别的智能考勤管理系统[D].电子科技大学,2020.DOI:10.27005/d.cnki.gdzku.2020.003191.
[17]张笑寒,曹菊英,王明亮,等.基于Python语言的学生考勤管理系统的设计与实现[J].信息技术与信息化,2019(09):156-159.
[18]吴建明,郑健.基于移动互联网的课堂考勤管理系统设计研究[J].中国教育信息化,2019(11):72-74.
[19]姬翠萍.人脸识别技术在课堂考勤管理中的应用研究[J].网络安全技术与应用,2019(05):40-41.
[20]郑银环.智慧课堂学生考勤管理研究与设计[J].现代信息科技,2019,3(09):1-4+7.
我首先要感谢我的论文指导老师。在论文的完成过程中,是在指导老师的精心指导下完成的。在论文的完成过程之中,导师对我的耐心地指导,提出了建设性意见给了我巨大的帮助,倾注了大量的心血。导师严谨的治学态度、一丝不苟的敬业精神、高水平的教学能力都给我树立了成功的典范,这对于我以后的生活和学习中都起到了巨大的积极的影响。
与此同时,我还要感谢我班的同学们对我的关怀和帮助,他们又是我的同学,又是我的朋友,同时也是我学习的榜样。正是由于大家给予我的大力支持才使我顺利地完成了大学学业,感谢在大学期间给予我帮助的所有老师和同学们。
最后,我还要感谢我的父母,你们的养育之恩我永远不会忘记,将来我也要用我的成绩回报你们。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~