SSM实验室门禁管理系统

摘  要

高校实验室是高校教学工作中保密性很强的工作,针对当前高校实验室管理中使用机械门造成管理不便的情况,进行研究,通过分析高校实验室门禁管理系统的工作原理以及特点,针对当前高校实验室管理中的难点问题,给出高校实验室设计门禁管理系统的方法,保证高校实验室的管理安全。

整个开发过程首先对系统进行需求分析,得出其主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结,得出系统中存在的不足及需要改进的地方,为以后的系统维护提供了方便,同时也为今后开发类似系统提供了借鉴和帮助。

本系统开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与实验室门禁管理系统的实际需求相结合,确定了SSM开发实验室门禁管理系统的使用。

关键字:门禁管理 ; SSM;数据库

SSM laboratory access control management system

   Abstracts

University laboratory is a highly confidential work in university teaching. In view of the inconvenience caused by the use of mechanical doors in the current university laboratory management, this paper studies the working principle and characteristics of the university laboratory access control management system, and puts forward the method of designing the access control management system in the university laboratory in view of the difficult problems in the current university laboratory management, so as to ensure the management safety of the university laboratory.

The whole development process first analyzes the requirements of the system and obtains its main functions. Then the overall design and detailed design of the system are carried out. The overall design mainly includes system function design, system overall structure design, system data structure design and system security design; The detailed design mainly includes the realization of system database access, the specific realization of main function modules, the key code of module realization and so on. Finally, the function of the system is tested, and the test results are analyzed and summarized, and the shortcomings and areas that need to be improved in the system are obtained, which not only provides convenience for future system maintenance, but also provides reference and help for the development of similar systems in the future.

The development of this system uses the existing mature technology reference, takes the source code as the template, analyzes the combination of function adjustment and the actual needs of the laboratory access control management system, and determines the use of SSM to develop the laboratory access control management system.

Key words: Access control management; SSM;database

目  录

摘  要

目  录

第1章 绪论

1.1课题背景

1.2国内外研究现状

1.3研究内容

第2章 关键技术研究

第3章  需求分析 8

3.1可行性分析 9

3.1.1 技术可行性 9

3.1.2经济可行性 9

3.1.3 操作可行性 10

3.1.4 法律可行性 10

3.2系统分析 11

3.3系统设计原则 11

3.4业务流程分析 12

3.4.1操作流程 12

3.4.2添加信息流程

3.4.3删除信息流程

第4章 系统总体设计

4.1系统功能模块

4.2数据库设计 21

4.2.1数据库简介 21

4.2.2数据库设计 21

第5章  系统实现 38

5.1系统用户功能模块 38

第6章 系统测试 49

6.1系统测试的目的 49

6.2测试策略 50

6.3测试特性及分析 50

6.4功能测试 50

6.5测试结果 51

结  论 52

参考文献 53

致  谢 55

1章 绪论

1.1课题背景

随着社会对人才需求类型的转变,实验教学在高校教学中所占比重不断提升,导致高校实验窒承担着越来越重的教学任务。目前,实验员除了负责实验室的日常管理工作外,还要肩负部分的实验教学工作。为了缓解实验员的工作压力和提高工作效率,更为了对实验室进行智能化管理,门禁管理系统的使用成为必然趋势。传统的实验室管理,需要管理员根据课表定时去开关门,且每个实验室都有多把钥匙,管理难度大,安全性差。而门禁系统的使用不但解决了这些问题,更方便了师生对实验室的使用。本文设计的“实验室门禁管理系统”,主要工作如下:1、首先阐述研究门禁管理系统的背景及意义,以及国内外目前使用门禁系统的现状、发展趋势,再根据学校的现实情况,包括目前已使用的系统和实验中心实际需求,制定出设计计划和实施方案。2、详细介绍了门禁管理系统的需求。3、最后对全文进行总结,指出系统目前可能还存在问题和未来要改进方向。

1.2国内外研究现状 

国外门禁系统的使用比国内起步早,在使用的普及度上也比国内高。国外对卡的应用也比较早,卡的发展带动了门禁系统的发展,形成了大批量的生产厂家。欧美门禁市场已开始进入IC卡门禁系统成熟阶段,产业已开始细分,出现了只生产IC卡和读卡器的公司。

随着市场的不断成熟,各大公司因技术和专业人员的积累,开始出现了垄断势头。顺应当代科学技术的发展以及人们对门禁系统的需求,国外当前主流的门禁系统很多都开始,提供TCP/ITP网络作为系统的连接方式。由于多年的经验和技术上的积累,国外的门禁系统设计和生产厂商所推出的产品在系统的稳定性和兼容性上比国内的产品更具有优势。虽然这些产品功能繁多,性能良好,但价格普遍较高,操作复杂。

我国对门禁系统的研究起步较晚,门禁系统控制比较传统。门禁系统的发展和卡的发展密不可分。目前从控制手段来看,国内门禁系统主要有密码式门禁系统、射频卡门禁系统、指纹门禁系统等,其中以射频感应卡门禁系统最多。国内生产的感应式门禁系统和指纹门禁系统价格较国外同类产品低大约10%-50%,但产品可靠性和安全性差一点。我国在要求有极高安全性和保密性IC卡制作及读写设备方面技术还处在相对落后状态。目前国内大部分门禁系统只能对门进行简单的开关控制,还没有形成对门状态、控制、安全等全方位实时显示控制的系统。这种简单的控制确实可以满足低要求场合安全和控制的基本需求。但是在某些要求较高的特殊场合,就不得不采用更为安全的控制系统来代替了。不过我国已表现出了长期迅速发展的趋势,门禁系统的开发和设计也得到快速的发展。

1.3研究内容

一开始,本文就对系统内谈到的基本知识,从整体上进行了描述,并在此基础上进行了系统分析。为了能够使本系统较好、较为完善的被设计实现出来,就必须先进行分析调查。基于之前相关的基础,在功能上,对新系统进行了细致的分析。然后通过详细的分析,进行系统设计,其次,系统在实施的可行性上,我选择了SSM框架来进行开发设计,在数据存储上,采用 Mysql数据库来进行设计。由于java 和Mysql都已经非常成熟,因此无论在各个方面,都非常可靠安全实用。最后对系统进行测试完善并发布。

2 关键技术研究

2.1java简介

Java语言具有非常多种的特性:(1)跨平台的无关性;(2)面向对象; (3)安全性得以保障;(4)支持多个任务;(5)多种编写方式,代码编写简单。对比其他的低级语言、高级语言,Java语言具有明显的显著优势以及未来开阔的前景,可以广泛的应用在个人笔记本电脑、大数据、大型游戏等等。

首先,Java语言具有面向对象的特性,并且易于理解。关于对象,其实可以理解成每一种事物都是一种对象,包括我们人类自身都是一种对象。利用面向对象语言的基本特征来解决软件开发中的实际问题,为有效软件开发提供了技术支持。

其次,Java 语言具有很好的跨平台无关性。所编写出来的应用程序是Java语言编写的,那么就无需再使用编译器来修改程序代码,可以直接在任何计算机系统中运行,Windows系统可以运行,在Linux系统中也可以,也就是经过一次编译,可以到处运行,所以Java语言具有卓越的可移植性,可以很好的跨平台实现。

2.2 Mysql数据库

Mysql是一个多用户、多线程的服务器,采用SQL的数据库,数据库管理系统是基于SQL的用户以及服务器模式的关系,它的优点有强大的功能、操作简单、管理方便、可靠安全、运行较快、多线程、跨平台性、完全网络化、稳定性等,非常适合Web站点或者其他应用软件,在数据库后端的开发。此外,利用许多语言,会员可以编写和访问Mysql数据库的程序。Mysql数据库也是开放源代码的,开发者越来越喜欢使用Mysql关系数据库,应用范围也被推而广之。这是由于速度快和易用性, Web站点或应用软件的数据库后端的开发也都在使用它。

mysql 数据库它有很多的优点,例如它在操作上能够让人通俗易懂、功能强大、信息储存量高等优点。所以被人们广泛应用,对于mysql数据库来说它一般主要是对数据进行编码和查询,而且在很多的设计当中都应用到了该数据库,在此过程当中我们可以对常规的数据进行查询和组合,所以我们在进行使用mysql数据库的时候只要对编写一小段的数据就能实现相应的功能。数据库,就是数据存储的储藏室,只不过数据是存储在计算机上的,而不是现实中的储藏室,数据的存放是按固定格式,而不是无序的,则定义就是 :长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要包括数据表的建立,数据存储、修改和增加数据,为了使数据库系统能够正常运行,相关人员进行的管理工作。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。

2.3 B/S结构

BROWSER/SERVER程序架构方式是使用电脑中安装的各种浏览器来进行访问和使用的,相比C/S的程序结构不需要进行程序的安装就可以直接使用。BROWSER/SERVER架构的运行方式是在远程的服务器上进行安装一个,然后在任何接入互联网的电脑上访问和使用。BROWSER/SERVER架构的开发方式给用户带来了极大的便利,在任何时间和地点都可以使用开发的程序系统。

在B/S的结构中,用户可以在任何可以上网的地方访问和使用系统网站的功能,没有地域和时间等方面的限制,B/S结构是把程序完整放置到计算机网络的服务器上,通过计算机互联网给用户提供远程的网络服务。在三层体系结构的B/S系统中,通过浏览器,会员可以对很多服务器发出请求, B/S系统会很大程度的降低工作量,用户只需要安装运行较少的用户端即可,大量的工作将由服务器承担,另外,服务器也完成包括访问数据库,执行应用程序的工作等等。

B/S结构主要有三层,分别为数据层、控制逻辑层和视图层。用户通过视图层,让控制层调用数据层的数据,从而达到整个访问过程。三层相互独立,维护方便,使用安全,三层有互相调用,提高效率。

2.4 SSM三大框架

1.Spring的优势:

通过Spring的IOC特性,将对象之间的依赖关系交给了Spring控制,方便解耦,简化了开发。

2.Spring MVC的优势:

SpringMVC是使用了MVC设计思想的轻量级web框架,对web层进行解耦,使我们的开发更简洁。

3.Mybatis的优势:

数据库的操作(sql)采用xml文件配置,解除了sql和代码的耦合,提供映射标签,支持对象和和数据库orm字段关系的映射,支持对象关系映射标签,支持对象关系的组建提供了xml标签,支持动态的sql。

第3章  需求分析

任何一个项目在开发研究前,都需要对研发系统本身的需求做一个认真的分析,市场的调研是不可忽视的,从而明确目标,对整个系统的开发有一个更加准确的定位。在这个章节,需要对系统的性能分析,业务流程分析,和数据等进行分析,实验室门禁管理系统的整体界面简单,功能完善。

需求的可行性是分析和讨论发达的系统能达到什么样的要求。开发的系统或网站是否符合之前的要求。只有在预先评估系统的开发中,才能在系统开发和实施之前完成需求。系统在开发和运用过程中,在技术可行性、操作可行性、经济可行性和法律可行性这几点展开的详细说明,证明了这几点是可行的。在技术可行性中主要说明SSM是目前是较为通用、成熟的技术,具有较为强大的数据库开发功能、以及具有方便快捷的数据库接口设计功能。在现有的调研情况和所掌握的技术是必要可行的。在经济可行性中,主要说明了系统从调研时期的费用和后期维护和可节约的成本。操作可行性主要说明了系统和操作的简便性具有操作简便和上手快的特点。在法律可行性上,符合要求不涉及到侵权等问题在社会中能起到提高效率的作用。

从系统需求分析、功能分析、性能分析等进行了设计和说明。系统需求分析对于实验室门禁管理系统的需求进行了深入分析,证明了系统在市场中的需求。

实验室门禁管理系统完成设计,可能受到时间以及空间上的制衡。因此,在开始设计每一个项目的时候,必须对系统进行可行性分析,只有这样才能够降低项目所带来的危害,减少人力、物力以及财力方面的损耗。该系统的可行性分析主要集中在技术可行性、经济可行性、运行可行性和社会可行性四个方面。从以上几个方面讨论了该系统的可行性。

3.1可行性分析

可行性分析目的是根据所开发系统的用户需求,明确研究方向和目标,通过可行性分析确定系统的框架和功能模块。

可行性分析是对任何管理系统的需求、技术和经济的分析。其中最重要的技术方面的可行性,技术可行性是分析软件开发技术的应用开发系统是可行的。其次,分析软件系统的需求,分析软件需求能否满足预先设计的功能需求。最后讨论了系统的操作可行性和经济可行性。

3.1.1 技术可行性

无论是台式机还是笔记本,计算机都以非常迅猛的速度占据着人们的工作与生活,那么能够辅助计算机帮助人们改变工作与生活状态的就是那些安装在计算机上的功能软件。本文所要设计的系统,从简单易懂的思想出发,将通过文字索引提示协助用户操作。

系统的开发环境和配置可以由我们自己安装。系统采用ASP.NET开发工具,根据技术语言修改和维护数据信息,并结合要求使系统运行更加稳定安全,从而完成实现系统的开发。网络技术的快速发展使网络传输速度越来越快,价格越来越低,安全性越来越高,其所有硬件平台都能完全满足高校故障报修管理系统开发的需要。

因此,我们从两个方面进行了可行性研究,可以看出系统的技术可行性发展没有问题。

3.1.2 经济可行性

任何软件系统在其发展将考虑后者经济可行性的一部分,也就是说软件的开发成本和设计所需的花费和随后的操作可能带来的经济效益是匹配,除了考虑这部分的软件是否可以给用户带来经济效益。

经济可行性包括系统实现过程中所需资源的研究。系统实现过程中所需资源主要包括人力资源、自然资源等。实验室门禁管理系统的开发是由开发者自己开发,不需要购买其他软件或者端口之类的,而且实验室门禁管理系统的开发之前所做的市场调研及其他的故障报修系统,都是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于实验室门禁管理系统的开发在经济上是完全可行的,没有任何费用支出的。

使用SSM是比较成熟的技术,所以实验室门禁管理系统的开发在经济上是没有问题的。

3.1.3 操作可行性

操作可行性是指系统不能有太复杂的操作和使用流程。实验室门禁管理系统基于SSM框架,访问和操作界面简单、操作方便。用户只要连接到网络就可以访问和操作。系统在界面设计上就很有善意让人感觉心旷神怡,首先这就能给操作者一种好心情,可以让工作人员以更好的心态工作,其次也很美观,在系统的使用中要不光应用到了系统完善的功能还欣赏了系统简洁的外观。其次就是系统的功能方面了,在系统的日常使用中会一点简单电脑操作的工作人员也都可以应付自如。因此,它具有操作简单,管理方便,交互性强的特点,在操作上是非常可行的。

3.1.4 法律可行性

系统平台的设计与开发与国家政策法规之间不存在冲突。此外,平台的设计和开发采用的操作和工作模式符合用户的日常习惯,操作方便、灵活、易于管理,具有较高的实用性。开发过程中所采用的数据均来自开源代码,不存在知识产权的争议,在法律上也是行的通的。

综上所述,开发一个基于SSM的实验室门禁管理系统是可行的。

3.2系统分析

实验室门禁管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。

系统所要实现的功能分析,对于现在网络方便的管理,系统要实现用户可以直接在平台上进行查看所有数据信息,根据需求可以进行在线添加,删除等信息,这样既能节省时间,不用再像传统的方式耽误时间,真的很难去满足用户的各种需求。所以实验室门禁管理系统的开发不仅仅是能满足用户的需求,还能提高管理员的工作效率,减少原有不必要的工作量。

3.3系统设计原则

1、关于实验室门禁管理系统的基本要求

(1)功能要求:可以管理首页、用户管理、课表安排管理、人员来访记录管理、预约登记管理、来访情况管理等功能模块。

(2)性能:在不同操作系统上均能无差错实现在不同类型的用户登入相应界面后能不出差错、方便地进行预期操作。

(3)安全与保密要求:用户都必须通过注册、登录才能进入系统,并且用户的权限也需要根据用户的类型进行限定。

(4)环境要求:支持多种平台,可在Windows系列、Vista系统等多种操作系统下使用。

2、开发目标

实验室门禁管理系统的主要开发目标如下:

(1)实现为维修信息管理的系统化、规范化和自动化;

(2)减少维护人员的工作量以及实现用户对信息的控制和管理。

(3)方便查询信息及管理信息等;

(4)通过网络操作,改善处理问题的效率,提高操作人员利用率;

(5)考虑到用户多样性特点,要求界面简单,操作简便。

3、经济效益

设计系统的目的是为了更好的进行节省人员成本及各种开销,因此需要对系统开发的成本和效益进行考虑。

3.4业务流程分析

3.4.1操作流程

系统登录流程图,如图所示:

图3-1登录流程图

3.4.2添加信息流程

添加信息流程图,如图所示:

图3-2添加信息流程图

3.4.3删除信息流程

删除信息流程图,如图所示:

图3-3删除信息流程图

4 系统总体设计

4.1系统功能模块

(1)管理员需求如图4-1所示:

图4-1管理员用例图

4.2数据库设计

4.2.1数据库简介

数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。

4.2.2数据库设计

(1)系统的E-R图

概念模型是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。

(2)实体属性图

系统结构如图4-6。

图4-4系统结构图

课表安排实体图如图4-5。

图4-5课表安排实体图

预约登记管理实体图如图4-6。

图4-6预约登记管理实体图

来访人员登记实体图如图4-7。

图4-7来访人员登记实体图

(3)数据库设计表

名称

类型

长度

不是null

主键

注释

super_user_id

int

11

超级用户ID

full_name

varchar

64

姓名

identity

varchar

64

身份

contact_information

varchar

64

联系方式

access_code

varchar

64

门禁密码

remarks

varchar

64

备注

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

reservation_registration_id

int

11

预约登记ID

full_name

varchar

64

姓名

id

varchar

255

身份证

contact_information

varchar

64

联系方式

time_of_appointment

datetime

0

预约时间

remarks

varchar

64

备注

reason_for_appointment

text

0

预约原因

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

auth_id

int

11

授权ID:

user_group

varchar

64

用户组:

mod_name

varchar

64

模块名:

table_name

varchar

64

表名:

page_title

varchar

255

页面标题:

path

varchar

255

路由路径:

position

varchar

32

位置:

mode

varchar

32

跳转方式:

add

tinyint

1

是否可增加:

del

tinyint

1

是否可删除:

set

tinyint

1

是否可修改:

get

tinyint

1

是否可查看:

field_add

varchar

500

添加字段:

field_set

varchar

500

修改字段:

field_get

varchar

500

查询字段:

table_nav_name

varchar

255

跨表导航名称:

table_nav

varchar

255

跨表导航:

option

text

0

配置:

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

名称

类型

长度

不是null

主键

注释

schedule_arrangement_id

int

11

课表安排ID

course_name

varchar

64

课程名称

course_type

varchar

64

课程类型

number_of_courses

varchar

64

课程人数

lecturer_

varchar

64

授课人

contact_information_of_lecturer

varchar

64

授课人联系方式

teaching_period

varchar

64

授课时间段

teaching_date

date

0

授课日期

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

visit_situation_id

int

11

来访情况ID

date

date

0

日期

visit_type

varchar

64

来访类型

number_of_visitors

varchar

64

来访人数

remarks

varchar

64

备注

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

personnel_visit_record_id

int

11

人员来访记录ID

full_name

varchar

64

姓名

id

varchar

255

身份证

contact_information

varchar

64

联系方式

entry_time

datetime

0

进入时间

departure_time

datetime

0

离开时间

remarks

varchar

64

备注

reason_for_visit

text

0

来访原因

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

第5章  系统实现

5.1系统用户功能模块

系统用户登录,通过输入系统用户名,密码,角色等信息进入实验室门禁管理系统,如图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;

QueryWrapper wrapper = new QueryWrapper<User>();

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());

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, "账号或密码不正确");

}

}

public String select(Map<String,String> query,Map<String,String> config){

StringBuffer sql = new StringBuffer("select ");

sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

}

if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

}

if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

}

log.info("[{}] - 查询操作,sql: {}",table,sql);

return sql.toString();

}

public List selectBaseList(String select) {

List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

List<E> list = new ArrayList<>();

for (Map<String,Object> map:mapList) {

list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

}

return list;

}

管理员登录进入实验室门禁管理系统可以查看首页,用户管理(管理员)更多管理(课表安排管理、预约登记管理、人员来访记录管理、来访情况管理)等内容,如图5-2所示。

图5-2管理员功能界面图

预约登记管理,在预约登记管理页面可以对用户信息、预约时间、预约原因等信息进行管理,并可根据需要进行修改,删除或查看详细内容等操作,如图5-3所示。

图5-3预约登记管理界面图

系统用户管理,在系统用户信息管理页面可以添加系统用户、系统用户名、性别信息维护管理、并可根据需要对系统用户进行修改,删除或查看详细内容等操作,如图5-4所示。

图5-4系统用户管理界面图

系统用户管理界面逻辑代码如下:

@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());

}

超级用户管理,在超级用户信息管理页面可以对姓名、门禁密码信息进行管理维护、并可根据需要对超级用户进行修改,删除或查看详细内容等操作,如图5-5所示。

图5-5超级用户管理界面图

课表安排管理,在课表安排信息页面可以对课程名称、类型、课程人数、授课人、授课时间、授课日期等进行管理,并可根据需要进行修改,删除或查看详细内容等操作,如图5-6所示。

图5-6课表安排管理界面图

课表安排管理的逻辑代码如下:

@PostMapping("/add")

@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);

}

public Map<String,Object> readBody(BufferedReader reader){

BufferedReader br = null;

StringBuilder sb = new StringBuilder("");

try{

br = reader;

String str;

while ((str = br.readLine()) != null){

sb.append(str);

}

br.close();

String json = sb.toString();

return JSONObject.parseObject(json, Map.class);

}catch (IOException e){

e.printStackTrace();

}finally{

if (null != br){

try{

br.close();

}catch (IOException e){

e.printStackTrace();

}

}

}

return null;

}

public void insert(Map<String,Object> body){

StringBuffer sql = new StringBuffer("INSERT INTO ");

sql.append("`").append(table).append("`").append(" (");

for (Map.Entry<String,Object> entry:body.entrySet()){

sql.append("`"+humpToLine(entry.getKey())+"`").append(",");

}

sql.deleteCharAt(sql.length()-1);

sql.append(") VALUES (");

for (Map.Entry<String,Object> entry:body.entrySet()){

Object value = entry.getValue();

if (value instanceof String){

sql.append("'").append(entry.getValue()).append("'").append(",");

}else {

sql.append(entry.getValue()).append(",");

}

}

sql.deleteCharAt(sql.length() - 1);

sql.append(")");

log.info("[{}] - 插入操作:{}",table,sql);

Query query = runCountSql(sql.toString());

query.executeUpdate();

}

人员来访记录管理,在人员来访记录列表页面可以将来访人员信息、进入时间、离开时间、来访原因等进行审核管理,并可根据需要进行修改,删除或查看详细内容等操作,如图5-7所示。

图5-7人员来访记录管理界面图

来访情况管理,在来访情况列表页面可以对日期、来访类型、来访人数信息内容进行管理维护,并可根据需要进行修改,删除或查看详细内容等操作,如图5-8所示。

图5-8来访情况管理界面图

来访情况管理界面逻辑代码如下:

@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);

}

第6章 系统测试

系统测试主要是通过测试确定系统的可操作性,系统故障必须在规定的时间内纠正,否则会造成严重的经济损失。验证系统内的保护机制,以防止未经授权的入侵。在安全测试中,测试人员的作用是试图闯入系统并使用各种方法来试图突破防御。因此,系统安全设计的标准是找到一种使入侵系统更先进的方法。

6.1系统测试的目的

程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,在测试过程中发现问题并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题并对其进行修改,虽然耗时费力,但对于系统的开发长期使用而言是非常重要和必要的。

软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。

实验室门禁管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在实验室门禁管理系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。

6.2测试策略

测试系统主要针对以下三个方面进行测试:

1、基于SSM的框架码的单元测试,集成测试,系统测试和验收测试结果;

2、测试对象中列出的可测试或不可接受的特征和功能;

3、分析并记录测试要求:日期的书面文件不影响测试的设计、开发和执行。

6.3测试特性及分析

系统测试的特性如下:

(1)挑剔性:测试是为了找出系统的错误,在系统测试时我们要严格苛刻,十分挑剔。

(2)复杂性:测试是一个非常复杂的过程。

(3)不彻底性:虽然系统经过测试,但测试仍然会存在不够彻底的问题,测试不能保证系统后期运行完整无误,所以要在后期不断的检查、修改。

(4)经济性:通场这种测试称为“选择测试(Selective Testing)”。在测试时要遵守经济性的原则。

经过测试,产品的稳定性和成熟度可以大大提高,产品质量也可以得到保证。

6.4功能测试

系统测试方面,我们通常运用的是白盒测试以及黑盒测试这两种方法。白盒测试是指在了解系统内部工作流程的前提下,可以根据需求规范验证系统内部操作是否能够正常运行的测试;而黑盒测试指的是,倘若知道了这个系统的全部功能,可以进行测试检测系统中的每一个功能是否满足正常使用。

功能测试,主要是对系统的用户登录进行详细的测试,但是登录不可以是任何人都可以登录成功的,所以对登录进行详细测试。

用户登录测试:

模块名称

测试用例

预期结果

实际结果

是否通过

登录模块

用户名:001

密码:002

弹出错误提示,提示密码错误

弹出错误提示,提示密码错误

通过

登录模块

用户名:002

密码:001

弹出错误提示,提示用户名错误

弹出错误提示,提示用户名错误

通过

登录模块

用户名:001

密码:001

管理员登录成功

管理员登录成功

通过

删除分类测试:

模块名称

测试用例

预期结果

实际结果

是否通过

删除分类模块

分类名:最新通知

删除成功、页面自动跳转

删除成功、页面自动跳转

通过

修改密码测试:

模块名称

测试用例

预期结果

实际结果

是否通过

修改密码模块

原密码:888

新密码:123

确认密码:123

弹出错误提示,提示原密码错误

弹出错误提示,提示原密码错误

通过

修改密码模块

原密码:888

新密码:123

确认密码:333

弹出错误提示,提示确认密码不一致

弹出错误提示,提示确认密码不一致

通过

修改密码模块

原密码:888

新密码:123

确认密码:123

密码修改成功

密码修改成功

通过

通过对功能的测试,实验室门禁管理系统的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。

6.5测试结果

经过对一系列测试结果的有效分析,本平台开发系统符合用户的要求和需求。所有的基本功能相对齐全,操作起来简单方便,测试系统性能良好,作为大众化系统使用是比较值得推广宣传的。

结  论

此时项目已经完成,即使实施的时间不是很长,但是在这个过程中需要准备很长的一段时间去对系统设计开发所实际用到的技术进行学习和巩固。在学习的过程中,我逐渐认识到了我自身存在的一些不足。对于一些控制是必要的应用技能,能够理解,整个过程中仅仅是掌握了常用的性能和控制方法,我觉得还是相对来说挺容易的。从该系统中,系统的分析和设计的调查数据,已经经历了几个月,并且努力了几个月,该系统现在已经完成。很显然,该系统仍有很多不成熟的地方,在系统设计过程中有许多技术缺陷存在。在设计的过程中也涉及到了很多自己无法解决的问题,主要通过找专业的网站和论坛来解决这些问题,对于圆满完成我的毕业设计,他们也贡献了很大一部分力量。

系统的开发环境和配置都是可以自行安装的,系统使用SSM框架开发工具,使用比较成熟的MySQL数据库进行对系统后台的数据交互,根据技术语言结合需求对数据库进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。

在设计系统的过程中还遇到了一个棘手的问题,那就是自己的英语水平还有待提高,很多关于网站技术开发的资料文献都是英文版的,关键词语以及技术性词汇不能很好的理解。只有在借助翻译软件的实时性翻译功能的辅助下才勉强看懂。显然英语水平的高低直接影响到系统的开发过程。

回顾毕业设计的整个过程,既付出了努力与汗水也收获了很多难以忘怀的美好经历。虽然在系统开发过程中经历了各种各样的困难,自己也在不断研究与探索,可是系统的实现仍有许多不足之处。但是经过系统编程工作的学习让我有了更多的信心,相信在未来的路上我会走的更好。

参考文献

[1]王江霖,黄彩霞,樊旭龙.基于SSM框架的网络资源共享平台的研究与实现[J].电脑知识与技术,2021,17(28):76-78.DOI:10.14004/j.cnki.ckt.2021.2999.

[2]曹华山.SSM框架在Web应用开发中的设计与实现[J].无线互联科技,2021,18(11):108-109.

[3]陈钊.SSM框架在Web应用开发中的设计与实现研究[J].电脑知识与技术,2021,17(10):226-227.DOI:10.14004/j.cnki.ckt.2021.1097.

[4]胡先智,梁艳,王力,李宏伟,张晓宇.基于卡脸识别的实验室门禁管理系统设计与实现[J].计算机产品与流通,2020(11):122-123.

[5]徐伟,张程,艾伟清.基于图像处理技术的实验室智能门禁管理系统设计[J].常熟理工学院学报,2019,33(02):48-51.DOI:10.16101/j.cnki.cn32-1749/z.2019.02.010.

[6]张天津.高校实验室门禁与考勤管理系统的设计与实现[J].宁德师范学院学报(自然科学版),2018,30(02):197-200.DOI:10.15911/j.cnki.35-1311/n.2018.02.018.

[7]刘烈君. 实验室门禁管理系统的设计与实施[D].东南大学,2018.

[8]王元槐.基于非接触式TCP/IP协议的实验室门禁管理系统[J].甘肃冶金,2018,40(01):87-89+93.DOI:10.16042/j.cnki.cn62-1053/tf.2018.01.028.

[9]王小琼.基于ZigBee技术的实验室门禁自助预约服务管理系统的架构[J].科技视界,2017(21):111.DOI:10.19694/j.cnki.issn2095-2457.2017.21.068.

[10]张世杰. 实验室开放管理关键技术研究与开发[D].北京邮电大学,2017.

[11]冯德尹.基于B/S架构的实验室门禁管理系统设计[J].电脑编程技巧与维护,2014(16):59-61.DOI:10.16184/j.cnki.comprg.2014.16.038.

[12]严士超,果莉,李明,房俊龙,张继成.基于泛在网技术的实验室智能门禁考勤管理系统的研究[J].实验技术与管理,2014,31(05):162-163+170.DOI:10.16791/j.cnki.sjg.2014.05.041.

[13]杨文浩. 交互式实验室门禁及管理系统的设计与研究[D].吉林大学,2012.

[14]李郁峰,高小明.基于网络的低成本实验室门禁管理系统[J].实验室研究与探索,2010,29(06):169-171+194.

[15]朱玉玉,蔡波.实验室门禁管理系统的设计[J].兵工自动化,2005(04):92-94.


致  谢

时间过得真快,眨眼之间,大学四年的学习生活即将结束,无论是在学习还是生活的这四年,老师们给了我很多帮助,让我终身受益匪浅。老师们不仅帮我树立了正确的人生观和价值观,还帮我养成了很多好习惯,树立了终身学习的意识。在此,我要对我的所有老师表示衷心的感谢。与此同时,我还要感谢陪伴我在这四年里一起成长的伙伴们。他们给了我无私的帮助和关怀,让我在人生最好的四年中获得许多真诚的友谊。

毕业设计是大学四年的最后一个答卷,我们正忙着这四年的美好结束。在毕业项目主题选择的早期阶段,我很紧张担心自己选择的主题很复杂,难以理解,觉得不能这样做会影响我的毕业。是指导老师给我们提供了毕业设计的主题和具体要求,让我们对毕业设计不要太模糊,如果对主题有任何异议,要及时跟他沟通,并且还帮我们介绍他带过的优秀学哥学姐,对我们进行指导,这样再设计上遇到的问题就可以及时得到解决,对我们完成毕业设计提供好的指导条件。

对于毕业设计项目主要是对我在大学所学的专业知识进行一次综合的考验,让我们通过所学的技术知识可以真正的运用到实际动手开发中,通过项目的开发让我意识到自己很多地方的不足,所学知识的不扎实,不能很好的将自己所学的知识运用到系统实际开发上。后来通过自己在图书馆查阅大量书籍,完成系统的设计大纲,阅读笔记和翻译,毕业设计不仅要考验我们的个人能力,还要测验我们的学习态度,做到细节的事情。对于指导老师的帮助,我的毕业设计才可以顺利的完成,我非常感谢。

最后要感谢我的同学们,是你们不断的帮助、鼓励、熬夜、保持调试,测试程序,最终完成实验室门禁管理系统的运行。我们在交流,谈论时间,将是我们未来的财富,我要深深地感谢你。

毕业在即,在今后的工作和生活中,我会铭记师长们的教诲、同学们的帮助,继续不懈努力和追求,来报答所有支持和帮助过我的人!

点赞+收藏+关注  →  私信领取本源代码、数据库

SSM+实验室门禁管理系统 毕业设计-附源码221252相关推荐

  1. SSM实验室门禁管理系统毕业设计-附源码221252

    摘  要 高校实验室是高校教学工作中保密性很强的工作,针对当前高校实验室管理中使用机械门造成管理不便的情况,进行研究,通过分析高校实验室门禁管理系统的工作原理以及特点,针对当前高校实验室管理中的难点问 ...

  2. SSM+阳光大学宿舍管理系统 毕业设计-附源码211714

    基于SSM阳光大学宿舍管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时尚潮流, ...

  3. SSM+中小型企业绩效管理系统 毕业设计-附源码081536

    SSM中小型企业绩效管理系统 摘 要 在市场竞争日趋激烈的今天,利用人力资源来获取竞争优势已得到了管理者和学者们的共识.而绩效管理作为现代人力资源管理的核心问题,也逐渐被中小民营企业所重视.近年来,我 ...

  4. ssm+mysql+养老院信息管理系统 毕业设计-附源码181550

    ssm养老院信息管理系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采 ...

  5. SSM网约车管理系统毕业设计-附源码051630

    摘  要 时代的进步催生了一些事物,网约车便是近年社会发展的衍生物,并且在不长的时间内占领了大批市场,规模的日益扩大,一些负面的东西也开始浮出水面,犹如一颗石子投入水中,涟漪不断扩张.中国有句古话,无 ...

  6. SSM+老年人活动信息管理系统 毕业设计-附源码121730

    目  录 摘要 1 绪论 1.1研究背景 1.2国内外研究现状 1.3系统开发技术的特色 1.4论文结构与章节安排 2老年人活动信息管理系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数 ...

  7. 基于SSM的学生社团管理系统 毕业设计-附源码211531

    SSM学生社团管理系统设计与实现 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于社团管理也是十分常见的.过去使用手工的管理方式对学生社团进行管理,造成了管理繁琐.难以维 ...

  8. ssm欢欢宠物医院管理系统 毕业设计-附源码171734

    springboot欢欢宠物医院管理系统 摘 要 现如今生活质量提高,人们追求精神健康,与家中宠物朝夕相处,感情深厚,宠物渐渐成了我们身边的朋友.因而宠物生病了,需要去看病,自古医院救死扶伤,生命无贵 ...

  9. 基于SSM实现的人力资源管理系统【附源码】(毕设)

    一.项目简介 本项目是一套基于SSM实现的人力资源管理系统 或 人事管理系统 或 企业管理系统 或 HR管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者. 详细介绍 ...

最新文章

  1. 面试官,别再问高并发了!
  2. 从普通JAVA程序员到阿里P8架构师,他用了六年
  3. 分布式代码管理系统GIT
  4. node遍历给定目录下特定文件,内容合并到一个文件
  5. 动态dp模板题(树剖+dp+线段树)
  6. Spring5 新特性
  7. 笔记《JavaScript 权威指南》(第6版) 分条知识点概要1—词法结构
  8. 亚马逊的人工智能将实时语音识别错误率降低了6.2%
  9. 笔记本如何查看mac地址
  10. sql row_number() over() 来自动产生行号
  11. Leetcode高频题目整理(更新)
  12. Java中boolean占多少字节 boolean a = 123是不是正确?
  13. 电脑开机自动联服务器,如何让Mac开机自动连接到NAS或网上邻居上的电脑
  14. 2021高性价比蓝牙耳机榜单,学生党最爱五款平价蓝牙耳机分享
  15. Processing基础---绘制基本图形、颜色
  16. 1379690-01-3,3-Azido-D-alanine HCl结构式分享
  17. 安岳高中2021高考成绩查询,四川省安岳中学2021年排名
  18. icss之继承inherit
  19. Presto下载地址
  20. 手机通用root刷补Magisk教程

热门文章

  1. 港科夜闻|香港科大杨晶磊教授团队在单个核壳结构微胶囊力学及其复合材料的动态力学响应方面取得新进展...
  2. #阿里云原生最佳实践# 申通快递:核心业务系统云原生化上云技术详解
  3. android qq 6.2.1,Android/iPhone QQ 6.2 测试版发布
  4. 是否有刘海的机型(iPhoneX iPhoneXR iPhoneXS iPhoneXSMax)适配判断
  5. linux命令详解:pgrep命令
  6. php个税计算接口,拿走不谢:通过个税反算工资的公式(实用小工具)
  7. 《Java 后端面试经》数据库篇
  8. java扫描所在文件夹_如何在Java中扫描文件夹?
  9. 表实体字段忽略非数据库字段的注解
  10. 上门女婿 黄河九十九道湾