🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示
摘 要
目前社会当中主要特征就是对于信息的传播比较快和信息内容的安全问题,原本进行办公的类型都耗费了很多的资源、传播的速度也是相对较慢、准确性不高等许多的不足。这个系统就是运用计算机软件来完成对于企业当中出勤率的管控,这样减少了人们整个的劳动力,也把工作效率得到了提升,与此同时又会把较为繁琐的工作变得轻而易举。
这个计算机系统是基础于SpringBoot的构造所研究开发的企业对于出勤进行管控的体系,基础于B/S类型,更好利用SpringBoot构造,运用上Java有关的语言,出现的数值存在储备在MySQL对应的数值库存当中,费用低的实际成本的达到了企业对于出勤的管控体系。能够更便捷的完成管控的需求。其中包含着出勤内容的管控,对于客户的管理,对于考勤的每日信息可以随时查看等特点。这个体系很容易运用、在客户使用的时候也是比较容易的,交互特征也是比较强,能够做到更可靠。
关键词:JSP,MYSQL,SpringBoot,考勤,管理系统
第1章 绪论
1.1 项目背景及意义
企业内部工作人员每天当中的出勤记录能够看出员工对于工作的积极性和工作是否高效。这种方式比较困难但是也在持续的前进,以前的通过人工记录出勤的企业工作人员工作时态度应用的方法并不正确,不但是这些不利之处,而且还比较的耗费时间和经营管理当中的成本。在这样的背景之下,对于企业所拥有的利益并不是特别好,企业没有办法更好的了解工作人员的态度和每天出勤的记录,因此不可以指定出很合适的工作人员管控方法。如果没有更好的管理方法,就不会得到相对好一点的未来。在这种前提之下,持续的出现了新型的方式来代替旧的办法。
在运用人工的方法处理是比较耗费时间、人们劳动力还有成本的,在计算当中极可能出现误差。企业对于工作人员的上班下班或者需要加班的时候这些状况展开总的统计,了解工作人员的日常工作状态,运用计算机软件办法对于出勤的信息内容展开计算并且进行相应的处理编制,选择且放弃没用的数据内容,归整收纳、获得有用的种种表格和出勤的统计数值。从企业进行管理控制的员工的方面来说,企业有着一整套比较完整的出勤管理控制体系,能够更好的控制管理企业的工作人员,对于员工的日常高效率工作也有所帮助,这样也相应的降低了企业的耗费。从这些来看,研制除了一个水平比较高并且很容易操作运转的企业出勤控制管理的整个体系,对于企业未来的良好发展有很大的作用。
1.2 国内外研究现状
企业对于出勤的管理整个的体系历史是比较久远的,开始运用比较正规的体系最少也是在公元三世纪的时候。就是因为这些历史因素,我们国家在经营的时候管理的能力并不理想,和比较发达一些的国家或者企业存在着比较大的区别。竞争也在日益的变强,在对于工作人员的管理控制分析方面,学习了很多的经验内容。进行管理控制的办法和现代化企业的规定也在持续规整,比较先进的国家外部的管理控制想法也慢慢的流入了中国,但是也留存着许多不足需要处理。最近的这些年,在对于计算机软件技术方面的持续变大,我们国家也变成的完整的信息化的国家。许多比较繁琐的问题在目前的科学发展当中有所解决。目前的国家有关的单位当中,计算机软件技术完成了对于企业出勤记录的整个体系应用比较广泛,对于工作人员的日常工作状态有所管理。在实习时期,企业运用的考察出勤的方式是通过IC卡来进行识别的办法。这样就很大可能得降低了员工的负担,尽可能的不出现人带来的误差,这样也就做到了高效性。
但是按照完整考核的目标对于考察出勤体系的完整性质进行衡量时,整个的出勤记录体系是在对于数值的管理加工和数据的整理规整两个当中能可以更好的完成职任。国家内部和外部现在比较领先的就是运用生物的有关办法对于人体内部的技能地位识别,并且不通过统计来对于数据进行规整聚集最后对数据进行规整加工。
1.3 主要研究内容
这篇文章就是联合了Web展开模型块状的研究开发,研究开发企业的有关出勤考察体系的整个过程。从整个体系的需要方面了解企业的整个管理控制体系展开了解。在体系的构造的完成并且实验当中展开了解。探究的目标就是为了管理的员工和工作人员可以及时的看到出勤规整记录和对于工资的统计的整个的出勤体系。
第2章 主要技术介绍
2.1 JSP 编程语言
JSP是由计算机制定的动态Web技术标准。JSP在Web服务器上展开,响应于客户发送的请求,根据有所需求的内容衍生出HTML、XML和另外的用其他文档类型的有关Web页,而且能够退还到申请者那。JSP有关的水平能够利用Java语言当成了整个过程中比对的语言,给使用者HTTP所提出的需求带来帮助,和服务器当中的另外的Java系统共同完成繁琐的规定。JSP带进Java语言的代码,更改不变状态的页面,把这种界面成了在形成模板动态当中的一点。运用JSP有关技能将内容信息分开和进行展示的文案稿子,Web的探究研发的人能够运用HTML或者XML有关的标准标志进行构造和将最后的页面起始化,主要的规则封存包装在标志识别符和JavaBeans当中,所以Web的运行管理者和对于页面进行设计构造的人都能够在没有任何作用的情况下编写和运用有关的JSP界面。
优势:1)体系得到多个平台的肯定与支持。这样就能够在所有平台当中,不管什么样的环境都能进行,或者说可能够应用到各种环境,并且能够从现实出发。和asp存在的区域限制性质对比,jsp的优势也是显而易见的。2)有特别良好的扩展性质。通过可以执行Servlet/JSP的有关JAR文档到对应的许多服务器聚集和均衡,对于事件的加工、信息的规整和服务器的运用,Java体现出了很强的活力。3)各种类型的展开救援。就和ASP相同,Java拥有着许多较好的研究开发工具,当中许多都是没有费用的,大多都能够更好的在多个平台中顺利运转。
不足:(1)就和ASP相同,Java拥有的许多优势也就成了能够直接致命的不足。这样跨越各个平台的特质和较强的能够延续的性质,就很大程度让产品变得繁琐。(2)因为java在对应的类驻留储存保留的机器当中运行,因此现实中运用储存保留机器的客户做比较是“性能价格比”。
2.2 MYSQL数据库
MySQL数据库,也就是把数据存放在不一样的表格当中,这些表格能够表示一些内容的类别,有利于查找内容和对于数据进行相应的管理。同样的,MySQL数据库也能作为一个开发资源不收费用的对于数据进行管理的道具,它的优势有耗费比较低、计算机软件占用空间小、开发资源无成本。在目前的中国应用MySQL数据库也是很广泛的,在这个体系研发当中,MySQL数据库做到了极为关键的地位。由于我们国家的最基本存在的行情,MySQL数据库可以更好的实行各种类型的超市需要,针对数据内容的存留储存和相应的控制可以更好的处理,无费用、成本很低、出现问题很好维修保护。
2.3 BS模式
B/S也就是Browser/Server,就是为浏览器或者服务器的框架构造,作为了web互联网构造类型。利用B/S研究开发的应用体系对于其客户都是能够简便运作的,只用互联网和浏览器就能够达到运转的要求,与此同时能够把很少的体统放到客户端进以加工,降低了服务器所承受的压力,而且能够应用AJAX方法加大交互性质,达到区域及时更新的目标,降低了整个过程的成本,使得体系很容易扩展的性质。
2.4 SpringBoot
SpringBoot是按照Pivotal的完整团队带出的全面的新型设计,其设计也是根据比较简化的新型Spring应的最开始的构造建立和完整的探索研究。这个构造能够让安排的现在进行分配设备,所以能够开发的工作人员不需要安排样板类型的分配装备设施。
第3章 需求分析
3.1 可行性分析
1、技术方面可行性:按照项目的运行水平方面来分析构造方法都是比较可行的。在一定的时期内能够完成要求规定当中的特征,应用质量水平能够有所保证,会有很好运用价值,应用的制造比较高效性,让公司在竞争当中提高了地位。
2、经济方面可行性:虽然整个体系研究开始的时候投入资金比较多,但是如果能够研发完成,对于企业的未来发展有很好的帮助,把握住强烈的竞争中存在的机会。所以,按照长久收益来说,这个工程能够研发完成,就能带来的利益远远高于最初投入的资金很多。
3、法律方面可行性:这个体系是全部自己探究研发设计的,所以肯定不会导致侵犯别人的权利,在法律方面是完全可行的。
4、运用方面可行性:在企业工作方面,因为平时信息加工的内容比较多,花费的时间是相对较长,很容易出现错误,在体系开始运作之后,能够完成在工作当中对于内容的加工、交互联系、监督管理和重要的选择。而且能够将企业更进一步的朝向互联网方向发展,让信息业务有了更坚实的基础。
通过上边的探究的发现,考虑到体系研究当中存在的效率和利益都会很大程度高于投入的资金,因此研发这项工程是重要的、能够实行的。
3.2 系统定义
企业对于出勤体系都会为公司工作人员管理的体系。对于公司这个构造的性质,对于工作人员各种出勤状况进行规整。同时对于规定时期内整理公司整个的出勤记录和有关职员的单人状况,更好的通过这个体系了解信息。编码完成对于公司工作人员出勤信息的更改等最基础的特征,考察出勤规整数据和有关职员的考察出勤带来的统计和搜索功能。
3.3 系统的性能要求
对于出勤管理的体系运用的是Java语言联合着SpringBoot构造和Tomcat服务器展开探究研发的,运用MySQL数据库当成研发时期数据留存储存的数据库。SpringBoot很大程度上增强了构造和服务器当中的全都可存在的性质,让服务器的操作当中做到高效性。运用MySQL数据库也是因为MySQL数据库对于索引方面有着很大帮助,对于查找搜寻内容做到高效性。很大程度上减少了时间成本,让性质能力角度变得更好。
3.4 功能分析
公司对于工作人员的出勤状况考察的体系也是为了了解上下班、请假等信息的归纳、统计和查询的全自动的过程。完成改善公司有关部门的运行现代化,更利于员工的打卡等这个内容的上交,利于管理者对于数据信息进行归纳,对于工作人员日常的上班状况进行审查,也有利于进行管理的有关部门查课并且统计整个的上班情况,这样能够看出企业员工的工作时长和状态,更高效的了解、控制员工的流动。
根据上边所说的,公司的工作人员对于出勤的管理体系有要求,需要对于员工日常的出勤展开全面的记录,之后在对于内容进行了解和规整,体现出的总结可以让管理的人更好的了解企业工作人员的状态和日常上班情况。
第4章 系统设计
4.1 总体功能概述
4.1.1系统功能模块的划分
分析企业的考勤管理系统过程可以看到,考勤管理系统中主要要解决的是:
1.考勤信息的管理;
2.考勤、出勤信息的请假及申请;
3.给系统设定用户登录权限;
4.设定密码更改功能等等。
根据以上分析的业务流程,结合传统的考勤系统的业务流程,待开发的考勤管理系统分为两个用户模块:员工和管理员。系统的功能模块图如图所示:
图4-1 系统总体功能模块图
4.1.2 系统的结构框架图
Firewall 防火墙
MYSQL: 系统服务器所使用的数据库管理系统(DBMS),一种结构化查询数据库的语言
事务流:数据进入模块后可能有多种路径进行处理。
ROLLBACK: 数据库的错误恢复机制。
4.3数据库设计
MySQL 提供了许多支持数据库应用程序的工具。这些工具中有些工具在数据仓库中使用得较频繁,而有些则是专用于解决数据仓库的特殊要求。这里列出的工具常用于数据仓库应用程序,但是大多数工具还可用于其它的数据库应用程序。
4.3.1 系统数据流程图
4.4 数据库的设计
4.4.1 数据库的概念设计
管理系统主要以管理员、员工来共同完成一个业务流程。他们之间存在着数据关联并且靠数据库关键字段进行索引,建立表关联。
4.4.2 数据库逻辑结构设计
本管理系统所存在的数据库中有不同的表结构,这些物理表中存放着各种网站所调用的数据,为整个网站的流程提供最基本的数据来源。本网站采用MySQL数据库它是由Microsoft公司开发。对于它的安全性和易操作性来说是开发者首选。
管理员信息表(编号、姓名、帐号、密码)
员工信息表(编号、姓名、性别、登陆用户名、登陆密码、电话、是否部门领导)
出勤信息表(编号、员工ID、天数)
请假申请信息表(编号、开始时间、结束时间、员工ID、申请状态、恢复信息、备注)
图5-3 管理员信息表属性图
4.4.3 数据库物理设计
是要存储在物理设备上的。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法)的过程,就是数据库的物理设计。物理结构依赖于给定的DBMS和和硬件系统,充分了解所用DBMS的内部特征,特别是存储结构和存取方法;充分了解应用环境,特别是应用的处理频率和响应时间要求;以及充分了解外存设备的特性。
表4.1管理员信息表
列名 | 说明 | 数据类型 | 数据长度 | 可否为空 | 键码 |
userid | 用户id | int | 4 | 否 | 主键 |
username | 用户名 | varchar | 51 | 是 | |
userpw | 密码 | varchar | 50 | 是 |
表4.2出勤信息表
列名 | 说明 | 数据类型 | 数据长度 | 可否为空 | 键码 |
id | 编号id | int | 4 | 否 | 主键 |
yuefen | 月份 | varchar | 50 | 是 | |
tianshu | 天数 | int | 4 | 是 | |
yuangong_id | 员工ID | int | 4 | 是 |
表4.3公告信息表
列名 | 说明 | 数据类型 | 数据长度 | 可否为空 | 键码 |
id | 编号 | varchar | 50 | 否 | 主键 |
title | 标题 | varchar | 50 | 是 | |
content | 内容 | varchar | 8000 | 是 | |
shijian | 时间 | varchar | 50 | 是 |
表4.4请假申请信息表
列名 | 说明 | 数据类型 | 数据长度 | 可否为空 | 键码 |
id | 编号 | int | 4 | 否 | 主键 |
kaishishijian | 开始时间 | varchar | 50 | 是 | |
jieshushijian | 结束时间 | varchar | 50 | 是 | |
beizhu | 备注 | varchar | 5000 | 是 | |
yuangong_id | 员工ID | int | 4 | 是 | |
shenhezhuangtai | 申请状态 | varchar | 50 | 是 | |
huifuxinxi | 恢复信息 | varchar | 50 | 是 |
表4.5员工信息表
列名 | 说明 | 数据类型 | 数据长度 | 可否为空 | 键码 |
id | id | int | 4 | 否 | 主键 |
bianhao | 编号 | varchar | 50 | 是 | |
name | 姓名 | varchar | 100 | 是 | |
sex | 性别 | varchar | 50 | 是 | |
shifoubumenlingdao | 是否部门领导 | varchar | 50 | 是 | |
loginname | 登录名 | varchar | 50 | 是 | |
loginpw | 登陆密码 | varchar | 50 | 是 | |
del | 电话 | varchar | 50 | 是 |
4.5 输入输出设计
出设计是系统设计中很容易被忽视的环节,又是一个重要的环节。一个好的输出系统设计可以为用户和系统双方带来良好的工作环境,一个好的输出设计可以为管理者提供简捷、明了、有效、实用的管理和控制信息。本管理系统输入设计数据根据输出的要求来选择。输出类型设计是根据需求设计为打印输出,这是用户通常要求的最主要的形式。输入内容设计主要是根据数据库设计和输出设计的结果来确定的。外部输入主要是键盘输入,内部输入只要是数据库中调用的信息,如会员资料信息的注册,在后台对帖子管理,用户信息,重要通知的添加。
4.6 存储过程的设计
存储过程(stored procedure)是Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。存储过程可以提高客户机重复向数据库服务器发送或请求的功能。存储过程通过接受参数并且返回状态值,以表示成功或失败。MySQL中的存储过程与其它编程语言中的过程类似,原因是存储过程具备以下功能。 (1)接受输入参数并以输入参数的形式将多个值返回调用过程或批处理。 (2)包含执行数据库操作的编程语句。 (3)向调用过程或批处理返回状态值,以表明成功或失败。 MySQL 存储过程是用Transact-SQL的CREATE PROCEDURE语句创建的,并可用ALTER PROCEDURE语句进行修改。
我们是便用查询分析器生成的,其代码如下:
--1、创建添加出勤表的存储过程
--(1)添加数据
Create procedure proc_addTableCWA(@CWAName varchar(30)) as insert into Table_CWA values(@CWAName) return @@identity
go
--(2)删除数据
Create procedure proc_delTableCWA(@CWAID int) as delete from Table_CWA where CWAID =@CWAID
return @@identity
go
--(3)修改数据
Create procedure proc_updateTableCWA(@CWAID int,@CWAName varchar(30)) asupdate Table_CWA set CWAName=@CWAName where CWAID=@CWAID return @@identity
go
--(4)查找数据
Create Procedure proc_selectTableCWA as select * from Table_CWA
go
Create Procedure proc_selectTableCWAName(@CWAName varchar(40)) as select * from Table_CWA where CWAName=@CWAName
Go
--2、创建添加级别表的存储过程
--(1)添加数据
create procedure proc_AddTableLevel(@PeopleLeval varchar(30)) as
insert into Table_Level values (@PeopleLeval) return @@identity
go
--(2)删除数据
Create Procedure proc_DelTableLevel(@PeopleLevelID int) as delete from Table_Level
where (PeopleLevelID=@PeopleLevelID) return @@identity
go
--(3)修改数据
Create Procedure proc_updateTableLevel(@PeopleLevelID int,@PeopleLeval varchar(30)) as
update Table_Level set PeopleLeval=@PeopleLeval where PeopleLevelID=@PeopleLevelID
return @@identity
go
--(4)查找数据
--全体查找
create Procedure proc_selectTableLevel as select * from Table_Level ORDER BY PeopleLevelID ASC
go
--根据PeopleLeval查找
create Procedure proc_selectTableLevelName(@PeopleLeval varchar(30)) as select * from Table_Level where PeopleLeval=@PeopleLeval
go
--3、创建添加个人情况表的存储过程
--建立个人情况的视图
CREATE VIEW dbo.view_people
AS SELECT dbo.Table_People.PeopleID,
dbo.Table_People.PeopleNumber, dbo.Table_People.PeopleName,
dbo.Table_People.PeopleSex, dbo.Table_Level.PeopleLeval
FROM dbo.Table_People INNER JOIN
dbo.Table_Level ON
dbo.Table_People.PeopleLevelID = dbo.Table_Level.PeopleLevelID
GO
--查找数据(1)
--全部查找
Create Procedure proc_selectTablePeople as select * from view_people
go
--根据编号查找
Create Procedure proc_selectTablePeopleNo(@PeoPleNumber char(6)) as
select * from view_people where PeoPleNumber=@PeoPleNumber
go
--根据时间和个人姓名查找
create procedure proc_SelectPeopleIformationNameTime
(@PeopleName varchar(30),@LYear int,@LMonth int,@LDay int,@LYear1 int,@LMonth1 int,@LDay1 int) as
select * from view_CheckOnWorkAttendance where PeopleName=@PeopleName and LYear>=@LYear and LMonth>=@LMonth and LDay >=@LDay and LYear<=@LYear1 and LMonth<=@LMonth1 and LDay <=@LDay1
go
--根据时间和职业查找
create procedure proc_SelectPeopleIformationLevelTime
(@PeopleLeval varchar(30),@LYear int,@LMonth int,@LDay int,@LYear1 int,@LMonth1 int,@LDay1 int) as
select * from view_CheckOnWorkAttendance where PeopleLeval=@PeopleLeval and LYear>=@LYear and LMonth>=@LMonth and LDay >=@LDay and LYear<=@LYear1 and LMonth<=@LMonth1 and LDay <=@LDay1
go
-
第5章 详细设计与实现
5.1 用户登陆
当系统登陆时,首先出现的是一个用户权限登陆的界面, 权限设置主要是维护系统的安全性和完整性。拥有管理员权限的操作员能对其他操作员进行相应的权限设置,没有权限的操作员不能对相应的窗口进行操作。如下图所示:
页面程序说明,如表5-1所示:
表5-1页面程序说明
程序名称 | |
程序文件 | Login.jsp |
页面传入参数 | Username,password |
页面提交URL | |
页面传出参数 | Session["username"] Session["group"] |
功能说明 | 登录系统 |
特殊注解 | 无 |
5.2 修改密码
当选中密码修改菜单时,输入一次旧密码,两次新密码,然后按修改按钮,密码修改成功。请务必记住自己的密码,并注意保密。
5.3 系统主界面
5.4 部门管理界面
此部分只有管理员可以进行操作,它可以进行添加删除部门,这些部门存在于企业并作为每一位工作人员的归属。如图所示。
5.5 员工管理
管理员记录新工作的工作人员信息,并给与工作人员一定的登陆权限,也可以删除退休或者辞职的工作人员。对于信息改变的工作人员进行信息修改。同时可以把需要的工作人员信息通过查找的方式调出来。例如输入关键字姓名,年龄学历等信息。如图所示。
本功能实现的是对员工的录入,填写新员工的基本信息,并且保存起来。本功能的程序流程图如图5-5所示。
2、员工查询功能
包含一个下拉列表。查询分为按账号查询和按姓名查询两种查询方式(此处为一个下拉列表)。按账号查询中,只要输入员工的账号就可以查询。按姓名查询中,只要输入员工的姓名就可以查询。本文只做出查询员工信息的程序流程图,如图5-6所示。
本功能实现的是对研究生档案的修改,并且保存起来。本功能的程序流程图如图5-7所示。
图5-7 员工修改流程图
本功能实现的是对研究生档案的删除。本功能的程序流程图如图5-8所示。
第6章 系统测试
6.1 系统测试的目的及意义
软件危机曾经出现了一个热点问题,为了攻克它,很多的计算机专家,软件工程师等都做了很多工作。时至今日,人们已经了解了软件危机是一种状态,软件里面会出现一些差错,出现之后就要影响系统或是软件开发的本钱,延长研发的进度,产品质量也会受到重创。有错是很正常的,而且也不能通过代码或人工改变,由人做的工作是不会做到完美无缺的,因此,我们要做软件测试,来尽量减少或是直接消除出现的问题,让我们的程序尽可能的完善。
6.2 系统测试的重要性
系统测试不仅是检测软件的整体行为表现,也是对软件开发设计的再确认。以前人们认为软件测试只是在运行维护阶段前面,在给用户成交产品的时候要保证产品的质量问题。但是现在,人们的观念转变了,软件工程界普遍觉得在软件生命周期的各个阶段,都要有软件测试的出现,只有这样一步一步测试,才能够接近我们的目标,还能够早发现早预防早解决,反之,如果最后才进行软件测试的话,发现的就会太晚了,会导致任务加剧。
其实,无论我们用什么样的技术或者是方法,仍然不能避免软件错误的发生。即使我们运用高级的语言代码,采用一些先进的开发方式,开发过程也尽可能不出现错误,这样虽然在很大程度上面能够减少错误产生的几率,但是还是不能完成杜绝它们。有一项关于软件测试的统计,测试的工作量要占总工作量的40%以上,可见测试还是占了很大的比重的。成本方面也不例外,费用占到了总支出的30%到50%。
6.3 系统测试的常用方法
软件测试的两种典型的方法分别是白盒和黑盒测试。
白盒测试:举个简单的例子,大家可以把软件看成透明的白色盒子,里面的一些内部逻辑结构我们都是能够看到的,这时候我们只需要对程序的内部逻辑机构里面选取一定的测试用例,就可以实现逻辑路径和过程的测试,这种测试称之为白盒测试。白盒测试有两种方法是我们经常会用到的,那就是逻辑和路径覆盖法。
黑盒测试:通俗的讲,我们可以把软件视为一个黑色不透明的盒子,里面结构我们都是能够看到的,这时候我们只需要对输入和输出的条件,找出确定测试的数据,看程序最后能不能准确输出我们想要的结果。等价分类法、猜错法、边界值分析法和因果图法是黑盒测试经常用到的方法。
6.4 测试用例
该项检测试检测系统的合法员工,对管理员输入的用户名、密码、进行验证。首先会验证输入数据的格式,如果格式不正确,会提示相应的信息在页面中,这是一个Ajax异步请求处理,保证用户的体验不会很差。做验证时不管是用户名错误还是密码错误,都
提示账号或密码错误。测试结果如表6-1所示
测试用例 | 登录测试 |
用例编号 | 1001 |
用例类型 | 功能测试 |
所用数据 | 用户名,密码,验证码 |
NO | 角色 | 测试内容 | 测试步骤 | 预期结果 |
1 | 管理员1 | 用户名输入正确 | 输入用户名:管理员1,点击登录 | 登录成功 |
2 | 管理员1 | 用户名错误 | 输入用户名 | 账号或密码错误 |
3 | 管理员1 | 密码正确 | 输入密码 :admin | 登录成功 |
4 | 管理员1 | 密码错误 | 输入密码: 123456 | 账号或密码错误 |
5 | 管理员1 | 登录 | 点击登录按钮 | 登陆成功,进入首页 |
结 论
从需求分析开始,对用户的要求进行需求性的初步了解,最后将需求分析进行总结,用来作为系统设计的前提。接下来开始搜集各种资料,开始系统的设计,从系统的模块到功能,一步一步的设计。在设计过程中发现很多自己不能解决的问题,上网查阅相关的书籍和询问朋友解决办法,慢慢的系统的设计即将结束,系统的设计结束意味着系统的初步实现已经开始。通过将系统设计时所得到的资料进行综合,将系统搭建起来,其中使用的是SpringBoot框架,数据库使用的是MySQL,结合一些技术和语言将代码进行实现。其中有用到Java语言,HTML语言,JSP等语言,考勤管理系统的开发不仅涉及到技术方面的问题,它涉及到相关的管理观念、管理体制和管理科学,以及一些制度和人为的因素,也粗略的看了这些方面相关的数据。如此一来,各个环节属于系统都需要有效、紧密的连接在一起,这样才能有条不紊的进行。最后经过多次测试,完成了本系统的开发。过程的艰难性然知道了事情的不容易,但是解决完问题的喜悦让我笑的像个孩子。有苦有甜,但是更多的是获得的收获,最后该系统基本达到预期结果。。
参考文献
[1]王养廷,郭慧,任宏德.Java程序设计能力培养的探索与实践[J].工业和信息化教育,2020(11):89-92.
[2]段莎莉.浅谈JAVA集合框架及其应用[J].信息技术与信息化,2020(10):104-106.
[3]熊智淳,陈旭,周伟,肖天雷,凌彦萃.基于Spring Boot框架结构的环境试验设备远程温湿度校准系统[J].上海计量测试,2020,47(05):28-31.
[4]孙媛媛.基于B/S架构的高职心理健康教育与咨询管理系统设计[J].自动化技术与应用,2020,39(10):179-181+185.
[5]郝兵,曹海英,元元.基于Java+Mybatis+Spring的桌球俱乐部收费系统的实现研究[J].电脑编程技巧与维护,2020(10):32-33+49.
[6]董晓睿,邸文华,崔健,商凯.基于Spring Boot的在线考试系统的设计与开发[J].电脑编程技巧与维护,2020(10):36-38.
[7]皇甫大双.SQL Server数据库中子查询的研究以及实例应用[J].电脑知识与技术,2020,16(28):46-47.
[8]杨众.基于Spring Boot的校园商城系统设计与实现[J].信息技术与信息化,2020(09):81-82.
[9]王瑶. 基于Hadoop框架的工业物联网实验平台构建与实现[D].西安石油大学,2020.
[10]耿庆阳. 基于Spring Boot与Vue的电子商城设计与实现[D].西安石油大学,2020.
[11]赵一品. 基于Spring Boot和MyBatis的银行知识库管理系统的设计与实现[D].山东大学,2020.
[12]肖文娟,王加胜.基于Vue和Spring Boot的校园记录管理Web App的设计与实现[J].计算机应用与软件,2020,37(04):25-30+88.
[13]Raneem Alghamdi,Alghamdi Raneem,Alsubaie Wafaa,Alharthi Renad,Alghamdi Wedyan,Alboaneen Dabiah A.,Alqahtani Nourah F. A Smart Attendance System for Imam Abdulrahman Bin Faisal University Using Facial Recognition[J]. Journal of Physics: Conference Series,2020,1627(1).
[14]Rizwan Qureshi. The Proposed Implementation of RFID based Attendance System[J]. International Journal of Software Engineering & Applications,2020,11(3).
[15]Sikandar Khan,Adeel Akram,Nighat Usman. Real Time Automatic Attendance System for Face Recognition Using Face API and OpenCV[J]. Wireless Personal Communications,2020(prepublish).
致 谢
本毕业设计(论文)的工作是在金庆勇老师的悉心指导下完成的,金庆勇老师严谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢老师对我的关心和指导。老师悉心指导我完成了毕业设计(论文),在学习上和生活上都给予了我很大的关心和帮助,在此向老师表示衷心的谢意。老师对于我的毕业设计(论文)都提出了许多的宝贵意见,在此表示衷心的感谢。在撰写毕业设计(论文)期间,同学们对我毕业设计(论文)中的需求分析研究工作给予了热情帮助,在此向他们表达我的感激之情。另外也感谢家人爸爸妈妈和爷爷奶奶,他们的理解和支持使我能够在学校专心完成我的学业。
核心代码展示
/**
* 公告通知
* 后端接口
* @author
* @email
* @date 2021-03-09 11:33:59
*/
@RestController
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(NewsEntity news){
EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
NewsView newsView = newsService.selectView(ew);
return R.ok("查询公告通知成功").put("data", newsView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request){
//ValidatorUtils.validateEntity(news);
newsService.updateById(news);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
newsService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = newsService.selectCount(wrapper);
return R.ok().put("count", count);
}
}