摘 要
随着计算机的发展及网络技术的应用,当今社会正快速向信息自动化社会前进,信息自动化的作用也闲的的尤为重要,特别是各行业的管理领域,智能化信息处理已是提高效率、规范管理、客观审查的最有效方法。近年来,随着移动互联网的快速发展,员工的考勤管理成为企业,事业单位人事管理的重要内容,各种层出不穷的考勤系统也逐渐被应用到考勤管理中,比如本文研究的高校考勤小程序。实际运用于学校对学生日常考勤信息的记录跟管理。
本文主要通过对微信小程序与考勤管理系统结合,在详细的需求分析的基础上,根据功能设计确定了数据库结构,实现完整的代码编写。高校考勤小程序使用使用Java语言的Springboot框架,采用MVVM模式进行开发,完成了系统的主要模块的页面设计和功能实现。
关键词:高校考勤;Springboot框架;微信小程序
Design and implementation of college attendance applet
Abstract
With the development of computer and the application of network technology, today's society is rapidly moving towards information automation society, and the role of information automation is particularly important, especially in the management field of various industries. Intelligent information processing has been the most effective method to improve efficiency, standardize management and objective review. In recent years, with the rapid development of mobile Internet, employee attendance management has become an important content of personnel management in enterprises and institutions. Various emerging attendance systems have been gradually applied to attendance management, such as the college attendance applet studied in this paper. It is actually applied to the school's record and management of students' daily attendance information.
This paper mainly combines the wechat applet with the attendance management system, determines the database structure according to the functional design on the basis of detailed demand analysis, and realizes the complete coding. The college attendance applet uses the springboot framework of Java language and MVVM mode to complete the page design and function implementation of the main modules of the system.
Key words:College attendance; Springboot framework; Wechat applet
目 录
第1章 绪论
1.1 研究背景与意义
1.2 开发现状
1.3 论文组成结构
第2章 开发工具及相关技术介绍
2.1 J2EE技术
2.2 小程序框架以及目录结构介绍
2.3 MVVM模式
2.4 B/S结构
2.5 Springboot框架
2.6 Mysql数据库
2.7 B/S体系工作原理
2.8 微信开发者工具
第3章 系统分析
3.1 可行性分析
3.1.1 经济可行性
3.1.2 技术可行性
3.1.3 操作可行性
3.2 功能性需求分析
3.3 非功能性需求分析
3.4 业务流程分析
第4章 系统设计
4.1 系统架构设计
4.2 功能模块设计
4.3 数据库设计
4.3.1 概念模型设计
4.3.2 数据库逻辑设计
4.3.3 数据库表设计
第5章 系统实现 13
5.1 用户登录的实现 14
5.2 系统前台主要功能实现 14
5.2.1 首页的实现 14
5.2.2 用户注册的实现 15
5.2.3 考勤信息展示的实现 15
5.2.4 课程信息的实现 16
5.3 系统后台主要功能实现 17
5.3.1 用户管理的实现 18
5.3.2 考勤信息管理的实现 19
5.3.3 课程管理的实现 20
第6章 系统测试 22
6.1 系统可靠性测试 23
6.2 系统功能性测试 24
6.3 系统合格性测试 25
6.4 测试结果 26
第7章 总结与展望 27
参考文献 28
致谢 29
第一章 绪论
1.1 研究背景与意义
目前社会上信息管理系统发展飞快,各个学校都引入了信息管理软件来管理自己日益增长的各种信息,学校内的个各种考勤管理系统也有了很大的发展,商业化的学校信息管理软件也不少。而目前学校的这项工作还处于不够完善状态,主要是信息资源的数字化程度低,大部分历史积累的数据,尚未完全数字化。为了不受时间和地点的限制,智能手机用户可以通过移动网络访问网站和处理各种业务和互联网,这是一个有效的将应用系统的功能扩展到手机终端的方法。现今各种智能手机层出不穷,各类基于手机平台的软件应运而生,新的技术不断推出,各种学校实现信息化的解决方案不断成熟。面向对象程序设计语言的广泛使用,各种成熟关系数据库的不断完善与推出,再加上面向对象的软件开发过程广泛应用,软件开发过程变得越来越容易,开发出的系统变得越来越实用,许多企业使用信息系统后,明显提高了学校制度的管理效率。
高校考勤小程序是一个有利于学校与学生之间进行信息交互的平台。我们都知道,在各个学校中,考勤工作不仅工作量大,而且时间非常紧迫。在过去的学校中,学校多采用传统的签到和报表的形式进行管理,效率和透明度较差,并且也容易出错,随着数据库技术的发展和企业信息化建设的进行,使用信息化手段管理高校学生考勤工作也成为大势所趋,它为学校的考勤管理工作节约了大量的人力和物力,也大大减轻了考勤工作人员的工作量。传统的高校考勤制度因为耗费大量人工且准确率问低问题较大。使用微信小程序与考勤系统结合,据有以下优点:检索快、查找方便、可靠性高、存储量大、保密性好、成本低等。能够极大地提高效率,也是学校科学化、正规化管理的重要条件。
1.2 开发现状
随着计算机技术的高速发展,在全世界的各行各业中,计算机辅助管理得到了广泛应用。针对计算机辅助人力资源方面的考勤管理工作,国内外研究者开展了广泛的研究,这些研究为推动企业、学校、工厂等考勤管理的信息化和现代化建设提供了良好的借鉴,在学校考勤系统建设方面,国内外研究者们比较关注硬件技术的革新,利用指纹、虹膜、人脸等特征实施考勤,具有人员验证、出入授权、查询统计和防盗报警等功能。常见的学校考勤管理系统有中控科技的指纹识别考勤机、舒特公司的拍照考勤机、汉王科技的人脸识别考勤机、垦高云考勤系统、群英云考勤系统等。这类产品都已发展的较为成熟,强调验证和考勤记录功能,适合应用于考勤时间和考勤地点较固定的场合(如企事业单位、学校、工厂等)。随着越来越多学校的普及应用之下,不断优化以及更新的学校教师职工管理系统,让学校管理者管理学校事务方面更加科学化,效率化,准确化。
在我国各院校中,学生打卡考勤管理是教学管理中的重要组成部分,因此,研究和开发适合各学校需求的打卡考勤管理系统具有重要意义。其意义在于:可以实现学生考勤管理的信息化,降低考勤管理的成本,提高工作效率;可以及时掌握各级学生的考勤状态,发现教学过程中的问题;有助于促进考勤管理的规范化,管理决策等提供数据分析支持,对学校发展有着重要的影响。
1.3 论文组成结构
根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出中小学教师考勤打卡管理系统。
本文共有七章,如下所示。
第一章概述了高校考勤小程序的研究目的和意义;精炼地总结了国内外在内的领域研究情况和未来的研究趋势,最后给出了论文的组成结构。
第二章简要概述了本文所用的开发技术和工具。
第三章简要对系统各业务流程进行需求分析、可行性分析。
第四章对高校考勤小程序进行设计。
第五章对高校考勤小程序进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。
第六章对高校考勤小程序采用测试用例的方式来对一些主要功能模块测试,最后得出测试结果。
第七章总结全文并对未来的研究做出展望。
第二章 开发工具及相关技术介绍
2.1 J2EE技术
人可以掌握多门外语,而一个计算机科学家精通的大多是编程语言,它不是人类的自然语言,比如C语言、Java、Perl等等。由于不同的公司开发出的“中间件”不够规范,所以Sun公司推出J2EE,用这个标准来解决弊病。它提供了良好的机制,让每个层次允许与之相对的服务器、组件运行,使得系统的搭建稳定可用、开发高效、维护方便。
2.2 小程序框架以及目录结构介绍
整个小程序框架系统分为两部分:逻辑层和视图层。小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 小程序 体验的服务。小程序在视图层与逻辑层间提供了数据传输和事件系统,提供了自己的视图层以及逻辑层框架,让开发者能够专注于数据与逻辑。框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。在逻辑层做数据修改,在视图层就会做相应的更新。框架提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序 。
2.3 MVVM模式
MVVM模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。
视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVVM 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。
模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。
控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。
2.4 B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
2.5 Spring boot框架
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
2.6 Mysql数据库
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的高校考勤小程序在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对多元化智能选课系统后台数据进行存储操作。
2.7 B/S体系工作原理
B/S架构采取浏览器请求,服务器响应的工作模式。
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。
-
- 微信开发者工具
微信开发者工具现在已经被小程序开发团队开发运行,目前微信开发者工具任然在不断的完善中,在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具,开发者工具将使用这个微信帐号的信息进行小程序的开发和调试。
机型选择:小程序以智能手机的屏幕尺寸为设计标准,进行切图。
预览界面:写好视图布局后点击编译,用来刷新视图界面。
控制台:方便调试打印输出信息。
上传代码:上传到腾讯服务器,提交审核必经步骤。上传代码时可以填写版本号和备注信息。
资源文件:一般可以在资源文件进行对应项目的文件目录的断点调试。
显示远程调试:手机端和PC端开发工具联调对用户而言是非常实用的。
本地数据存储:显示的是本地存储的数据。
视图调试:标组件以子父层级结构呈现,方便调试。
微信限制在2M 以内的代码体积;开发中一般不校验合法域名信息;小程序后台要做配置服务器域名。
以上就是在开发过程中微信开发者工具常用到的功能,微信开发者工具也在不断的完善。
第三章 系统分析
3.1 可行性分析
本系统将在经济、技术、操作这三个角度上进行可行性分析。
3.1. 1 经济可行性
整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台二手移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,真个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。
3.1.2 技术可行性
技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于Springboot框架,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用Mysql数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。
3.13 操作可行性
高校考勤小程序的使用界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用Springboot开发,人性化和完善化是B/S结构开发比较显要的特点使得用户操作相比较其他更加简洁方便。易操作、易管理、交互性好在本系统操作上体现得淋漓尽致。
3.2 功能性需求分析
前台需求:
- 学生模块:主要包括用户的注册和登陆、用户个人信息管理。
- 考勤模块:主要包括学校学生考勤记录信息等功能。
(3)点名签到模块:主要存储点名签到信息数据等功能。
(4)课程模块:主要包括课程信息等功能。
(5)个人信息模块:主要是存储个人信息。
(6)校园资讯模块:主要可以浏览校园资讯信息。
后台需求:
(1)用户管理:主要包括用户列表、用户等级管理功能。
(2)考勤管理:主要包括学校学生考勤打卡列表,考勤信息管理。
(3)课程管理:主要包括课程信息管理。
(4)校园资讯:主要发布校园资讯信息。对资讯信息进行管理维护,
系统用例图如下所示。
图3-1系统用例图
3.3 非功能性需求分析
随着用户量的增加,系统可能会需要同时服务上千、上万个页面,服务器需要同时响应大量用户的操作,这就要求系统需要有良好的可扩展性,否则系统会出现延迟,卡顿甚至服务器崩溃的问题。高扩展性可以使软件保持旺盛的生命力,同时也能够使系统更好的适应用户增加、提高性能需求、增加应用功能等改变。
系统中保存了大量用户和管理员的个人信息,因此,保证系统服务器和数据安全是在开发过程中需要考虑的重要问题。安全性包括服务器安全、操作系统安全、数据库安全、程序代码安全以及用户个人信息和支付安全等,系统可以通过采用防火墙技术、加密技术、认证技术等来增强其安全性,只有一个健壮安全的系统才能具有长久的生命力。
3.4 业务流程分析
高校考勤小程序的前台中,用户模块和考勤模块进行数据交互,实现学生打卡考勤的功能。前台的功能主要包括用户模块、课程信息模块、签到打卡模块、学生考勤模块。
高校考勤小程序的后台中,管理员对用户在前台提交申请产生的数据进行处理,以满足用户的需求。前台系统和后台系统有数据交互,整个系统各个部分相互独立又密不可分。后台的功能主要包括站点管理、用户管理、课程管理、签到管理、考勤管理。
系统业务流程图如下所示。
图3-2系统业务流程图
第四章 系统设计
4.1 系统架构设计
软件系统的功能是多样的,在软件设计的过程中分层进行的思维是极为重要的,这样的思维可以在软件开发的过程中很大程度降低层之间的耦合度,这一点是符合“低耦合、高内聚”的软件设计原则的。因此,可以把高校考勤小程序划分为显示层、数据层和业务层。在系统的架构中,为了方便上层调用完成相应的功能,每个层次都会为其对应的上层提供相应的接口。
系统架构图如下所示。
图4-1系统架构图
1.显示层
此层主要是为用户提供计算机交互的UI界面,它根据用户的相应操作来提供相应的逻辑处理。
2.数据库层
数据库不仅是对软件所涉及的实体映射,而且也是系统读取和处理数据的关键所在。本系统的整个操作流程设计都是围绕着数据库里面的数据所展开的。
3.业务层
主要是通过系统的业务层中的业务逻辑来实现业务需求,依据相应的需求,剖析实现的策略和对应的业务逻辑,其优劣,在很大程度上决定了软件的质量,所以,整个系统成败的主要原因在于业务的逻辑实现。
4.2 功能模块设计
通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。
图4-2系统功能结构图
注册/登录
游客(未进行注册或登陆的用户)可以浏览搜索校园资讯。用户注册首先需要进行表单验证,来验证用户名和手机号码是否合法,然后验证用户名和手机号是否已经存在,验证通过即可注册。
注册成功后,用户可以通过输入用户名来登录系统,输入密码后进行验证。登录成功后,用户可以使用考勤、签到、个人资料修改、个人信息管理等功能。
个人信息管理
用户登录系统后,在账户设置中,可以修改昵称、头像、手机号、登陆密码、收货地址等个人基本信息。
考勤信息
系统首页展示了用户在系统完成考勤记录,系统通过模糊查询搜索到用户的考勤记录。
查看个人信息详情
用户在查看我的个人信息列表时,可以点击个人资料,人后对个人资料进行修改保存等。
考勤打卡列表
管理员可以在“考勤打卡列表”中展示用户考勤打卡信息记录,包含考勤打卡时间,考勤打卡属性以及类目等考勤打卡信息。管理员可以对考勤打卡信息进行搜索。
考勤信息添加
添加考勤打卡首先需要输入教师考勤打卡基本信息,如考勤打卡内容、教师职位、教师姓名等;然后需要编辑考勤打卡信息详情,如考勤打卡具体时间,考勤打卡内容等。管理员也可以删除已添加的考勤打卡。
4.3 数据库设计
4.3.1 概念模型设计
概念设计包括实体和联系两部分,如该系统中,用户是一个实体,其属性包括用户 ID 标识、用户名、密码、电话、地址等属性。联系是指实体之间有意义的关联,包括一对一、一对多、多对多三种类型。
系统E-R图如下所示。
图4-3系统E-R图
在图中,用户考勤信息,关系为1:N,管理员审核用户考勤,关系为1:N,用户和课程的关系为1:1,用户和点名签到的关系为1:N。
4.3.2 数据库逻辑设计
针对系统的实体和属性,结合数据设计思想,对系统的逻辑设计的内容进行如下描述。
考勤信息(考勤编号、打卡时间、考勤信息)。
课程管理(课程管理编号、课程名称、类型、上课地点、上课时间、授课老师、课程介绍)。
校园资讯管理(校园资讯编号、标题、内容)。
4.3.3 数据库表设计
数据库表是设计和实现系统的一个重要基础。以下列出了该购物系统几个重要的数据库表。
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
student_id | int | 11 | 是 | 是 | 学生ID |
student_number | varchar | 64 | 是 | 否 | 学号 |
gender | varchar | 64 | 否 | 否 | 性别 |
age | varchar | 64 | 否 | 否 | 年龄 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
teacher_id | int | 11 | 是 | 是 | 教师ID |
job_number | varchar | 64 | 是 | 否 | 工号 |
gender | varchar | 64 | 否 | 否 | 性别 |
age | varchar | 64 | 否 | 否 | 年龄 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
roll_call_id | int | 11 | 是 | 是 | 点名签到ID |
course_name | varchar | 64 | 否 | 否 | 课程名称 |
class_time | varchar | 64 | 否 | 否 | 上课时间 |
class_place | varchar | 64 | 否 | 否 | 上课地点 |
instructor | int | 11 | 否 | 否 | 授课教师 |
check_in_time_limit | varchar | 64 | 否 | 否 | 签到限时 |
hits | int | 11 | 是 | 否 | 点击数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
timer_title | varchar | 64 | 否 | 否 | 计时器标题 |
timing_start_time | datetime | 0 | 否 | 否 | 计时开始时间 |
timing_end_time | datetime | 0 | 否 | 否 | 计时结束时间 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
my_course_id | int | 11 | 是 | 是 | 我的课程ID |
course_name | varchar | 64 | 否 | 否 | 课程名称 |
course_type | varchar | 64 | 否 | 否 | 课程类型 |
course_cycle | varchar | 64 | 否 | 否 | 课程周期 |
class_place | varchar | 64 | 否 | 否 | 上课地点 |
class_time | varchar | 64 | 否 | 否 | 上课时间 |
instructor | int | 11 | 否 | 否 | 授课教师 |
student_number | int | 11 | 否 | 否 | 学号 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
course_information_id | int | 11 | 是 | 是 | 课程信息ID |
course_name | varchar | 64 | 否 | 否 | 课程名称 |
course_type | varchar | 64 | 否 | 否 | 课程类型 |
course_cycle | varchar | 64 | 否 | 否 | 课程周期 |
class_place | varchar | 64 | 否 | 否 | 上课地点 |
class_time | varchar | 64 | 否 | 否 | 上课时间 |
instructor | int | 11 | 否 | 否 | 授课教师 |
course_introduction | text | 0 | 否 | 否 | 课程介绍 |
hits | int | 11 | 是 | 否 | 点击数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
course_category_id | int | 11 | 是 | 是 | 课程类别ID |
course_type | varchar | 64 | 否 | 否 | 课程类型 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
attendance_information_id | int | 11 | 是 | 是 | 考勤信息ID |
course_name | varchar | 64 | 否 | 否 | 课程名称 |
class_time | varchar | 64 | 否 | 否 | 上课时间 |
class_place | varchar | 64 | 否 | 否 | 上课地点 |
instructor | int | 11 | 否 | 否 | 授课教师 |
check_in_date | date | 0 | 否 | 否 | 签到日期 |
check_in_status | varchar | 64 | 否 | 否 | 签到状态 |
check_in_student | int | 11 | 否 | 否 | 签到学生 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
第五章 系统实现
5.1 用户登录的实现
用户注册完成后,点击“登陆”进入到登陆页面,输入用户名和密码,点击“登陆”按钮,对用户名和密码进行验证,根据传入的用户名和密码在数据库中是否能查询到一条用户信息,若不能返回用户信息则登陆失败,页面提示用户名或密码错误。
登录界面如下图所示。
图5-1登录界面
用户登录的逻辑代码如下所示。
/**
* 登录
* @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.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}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.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
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());
tokenService.save(accessToken);
// 返回用户信息
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, "账号或密码不正确");
}
}
5.2 系统前台主要功能实现
5.2.1 首页的实现
用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、购买中小学教师考勤打卡,且要易于修改和维护,同时还要保证用户合法和系统安全。
5.2.2 用户注册的实现
用户进入系统首页后,点击“注册”链接进入到注册页面,按照页面提示输入用户名、密码和手机号,页面进行表单验证,验证输入的用户名和手机号是否合法,表单验证通过后,点击“立即注册”按钮,利用 Ajax 技术,对用户名和手机号实现页面无刷新验证,检测数据库中是否已经存在该用户名或手机号,若数据库中不存在,则注册成功,注册成功后,自动跳转到登录页面。
用户注册界面如下所示。
图5-2用户注册界面
用户注册的关键代码如下。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
5.2.3 考勤信息展示的实现
考勤信息展示页是展示系统用户考勤信息的页面,通过sql语句:"select shangpinxinximingcheng,id,tupian,jiage,addtime from shangpinxinxi order by addtime desc",将所有是考勤按考勤信息列表降序排列。
考勤信息展示页面,如下图所示。
图5-3考勤信息展示页面
考勤信息的关键代码如下。
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
5.2.4 课程信息的实现
用户在浏览课程信息时,首先查询数据库表中是否已经存在该课程信息记录,若存在直接将课程信息导出,若不存在则创建一个新的添加对象,添加成功,数据库中的课程信息表添加一条信息。用户还可以点击“我的课程信息”查看添加到表中的课程信息,系统通过读取 session获取到用户 ID,将用户 ID 传递到后台。
教师课程信息界面如下图所示。
图5-4教师课程信息界面
5.3 系统后台主要功能实现
5.3.1 用户管理的实现
管理员对系统用户的管理,在yhzhgl.php实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,提交到mod.php中,使用sql命令更新密码。
用户管理界面如下图所示。
图5-5用户管理界面
用户管理关键代码如下。
@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);
}
5.3.2 考勤信息管理的实现
管理员可以获取系统中所有用户的考勤信息列表并对其进行编辑。管理员在添加用户考勤信息时,需要输入考勤基本信息,如时间、详情、用户信息等,还需要输入考勤信息详情描述,包括对考勤信息功能的描述以及展示图片等。添加考勤信息完成,数据库考勤信息表添加一条信息。管理员可以搜索用户考勤信息,同时可以对已经添加的用户考勤信息进行编辑。
考勤信息管理界面如下图所示。
图5-6考勤信息管理界面
5.3.3 课程管理的实现
管理员在后台管理界面点击到所有课程界面dingdan_list.php,向控制层dingdanAction发送请求,搜索当前所有课程信息,dingdanAction向课程数据访问层调用搜索全部课程的请求,向数据库的课程表搜索当前所有课程并将课程信息以对象的形式层层返回到dingdan_list.php界面,显示出当前所有课程信息。同时可以删除过期课程,确认已有课程,进行审核处理。
课程管理界面如下图所示。
图5-7课程管理界面
课程管理的关键代码如下。
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
Query count = service.avg(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
第六章 系统测试
6.1 系统可靠性测试
以进入系统首页的访问速度为例展示系统的性能测试;系统的主要用户群体是购物理念较为先进的消费者,系统要在3秒钟内响应;需要完成页面的菜单栏、首页轮播图片、类目及考勤列表以及各功能模块入口等元素的显示。
6.2 系统功能性测试
功能性测试是指执行指定的工作流程,通过对一个系统的所有特性和功能都进行测试确保符合需求和规范。
系统功能性测试表如下表所示。
表6-1系统功能性测试表
编号 | 测试功能 | 测试内容 | 测试结果 |
1 | 用户登录 | 1.验证用户名与密码的正确性。 2.验证密码是否可见。 | 通过 |
2 | 首页展示 | 1.首页数据是否成功加载。 2.验证搜索功能的准确性。 3.验证是否可以异步加载。 4.验证导航栏按钮。 | 通过 |
3 | 个人信息修改 | 1.验证登录名是否可以正常更改。 2.验证联系方式是否可以更改。 3.验证收货地址可以正常修改。 4.验证密码是否可以修改。 | 通过 |
4 | 用户管理 | 1.用户是否可以生成。 2.用户信息是否准确。 | 通过 |
5 | 考勤管理 | 1.考勤信息是否与上传一致。 2.是否能完成信息修改。 3.验证信息修改。 | 通过 |
6 | 报名签到 | 1.能否正常提交报名签到。 2.处理报名签到。 | 通过 |
7 | 添加考勤 | 1.上传中考勤是否添加验证。 2.信息是否成功上传。 3.验证表单是否提交成功。 | 通过 |
6.3 系统合格性测试
集成测试后,所有的模块已经全部连接完毕,形成了一个完整的系统。合格性测试是在集成测试完毕后,进一步对系统进行综合性的检测。经过合格性测试,可以检查出系统是否符合系统的设计,能够完成需求的所有功能。本系统经过最后的测试,所有模块功能都能按预定要求工作。
6.4 测试结果
在实际测试中,经过一系列系统性的测试,使我们能够及时发现一些系统在设计中出现的疏忽和漏洞。经过严密的测试,不仅发现了模块内部的错误,也查找到模块连接后产生的错误。经过测试,对系统产生错误的地方进行优化、修改和完善,使得系统能够实现最初设计的基本功能。
第七章 总结与展望
本文针对高校考勤小程序的特点和用户需求,利用 Java相关技术、Web 开发技术和MVVM 模式等技术,通过详细的需求分析、页面设计和功能设计,最终实现了一个基于微信小程序的高校考勤系统。
系统实现了包括用户模块、考勤模块、课程信息模块和点名签到模块的前台系统以及包括用户管理模块、考勤管理模块、课程管理模块的后台系统。另外,系统还进行了数据安全设计,并添加了用户的访问控制,建立了一个完整、健壮、安全稳定的高校考勤小程序。
该系统的特点有:
(1)简单大方,易于操作的 Web 页面;
(2)利用 Ajax 技术使页面进行无刷新更新;
(3)系统具有考勤信息上传功能。
(4)有良好的安全性和可扩展性,增强了系统的可靠性,使系统保持持久的生命力。
由于时间限制和本人能力条件有限,该系统还存在一些不足,今后也会出现许多新的开发技术,未来还可以对系统做出如下改进:
(1)优化系统页面,使页面更加美观且方便操作;
(2)优化系统添加功能,提供多条件选择查询搜索;
(5)进一步提高系统的安全性,使系统更加健壮;
(6)优化数据和代码,提升软件效率,方便系统维护和扩展。
参考文献
[1]王强,崔靖茹,张哲,董凡,成永刚.高校智慧教室考勤系统的设计与实现[J].中国教育信息化,2021(19):74-78.
[2]史栋. 主动式无线网络接入管理考勤系统的设计与实现[D].西安石油大学,2021.
[3]Nick HartKate Tromble. Data Must Lead the Way to Reopening Our Schools[J]. Nextgov.com (Online),2021:
[4]强 惠宁. 教师考勤管理 循规而不蹈矩 ----大武口区属学校教师考勤管理的分析与思考例谈[J]. 教育研究,2020,2(9):
[5]茆琦,俞美香.高职院校学生课堂考勤管理中的问题及策略研究——以苏州市职业大学机电工程学院为例[J].轻工科技,2020,36(07):173-174.
[6]王应博. 具有签到功能的中学班级手机集中存放管理系统研发[D].中国地质大学(北京),2020.
[7]Yulianingsih Y,Niswati Z,Rangka I B,Marti’ah S. Implementation design of monitoring attendance for teacher at elementary school with scattered location[J]. Journal of Physics: Conference Series,2019,1318:
[8]王晓龙,陈昭昭.发展中高职院校的考勤制度分析[J].南方农机,2019,50(14):115.
[9]张家海.学校管理:立制度之本,活人文之源[J].教书育人,2019(17):8-10.
[10]戴轩辕.教师考勤:是“控制”,还是“激励”[J].教书育人,2019(17):52-53.
[11]许传勇. 农村小学现代学校制度建设研究[D].青岛大学,2019.
[12]王运祺.探索指纹技术在高职院校考勤管理系统中的应用[J].鸭绿江(下半月),2019(05):116-118.
[13]汪正贵.莫忽视学校管理中的隐性成本问题[J].中小学管理,2018(09):42-44.
[14]朱琳. 教师信息管理系统的设计与实现[D].天津师范大学,2018.
[15]程丽丽,叶玮光,王兆明.企业管理模式在职业教育课堂中的应用探索[J].现代职业教育,2018(04):6-7.
[16]姜国玉.规范教学管理,提高教学效率[J].齐齐哈尔师范高等专科学校学报,2018(01):66-67.
[17]何汉敏.对当前学校管理误区的思考——兼谈人性化管理在学校管理中的应用[J].小学生(教学实践),2017(02):2.
致谢
时光飞逝,转眼间我在学校的这些年生活即将结束,回顾这几年的学习生活,收获良多,既有幸福也有难过,学校生活的结束对于我来说也是一个新的开始。论文即将完成,在此,我心中有许多想要感谢的人。首先感谢我的导师,不仅在学习研究方面加以指导,也在生活和为人处世上给予帮助。还要感谢授课老师,你们严谨的学术精神和积极向上的工作态度都在激励我的成长和进步。感谢多年来一直生活在一起的室友,谢谢你们多年来的陪伴和照顾。最后,要感谢各位论文评审老师,感谢您们在百忙之中抽空评阅本论文并给出宝贵的意见和建议。