springboot建筑工地员工安全预警APP 毕业设计-附源码81682

摘  要

本研究基于Spring Boot框架开发了一款建筑工地员工安全预警APP。该APP主要面向管理员和工地领导,旨在提供实时的安全预警和管理功能,以保障员工的安全和提高工地的安全管理水平。通过对系统需求的分析和设计,采用了合理的数据库结构和前后端技术实现,系统实现了管理员权限管理、工地信息管理、员工工种管理、员工考勤管理、粉尘数据监测、安全预警推送以及培训教育等功能。借助Spring Boot框架的优势,系统具备良好的代码模块化、可扩展性和易维护性。在系统开发过程中,充分进行了测试和优化,以确保系统的稳定性和性能。同时,注重用户体验,通过友好的界面设计和操作流程,为用户提供便捷的安全预警和管理服务。

本研究的建筑工地员工安全预警APP旨在为工地提供准确、及时的安全预警和管理解决方案,提升工地的安全管理水平,保障员工的安全和健康。通过该APP,管理员和工地领导可以实时监控工地的安全状况,处理安全事件,并进行培训教育;员工可以通过APP获取安全预警信息,记录考勤情况,学习安全知识等。

关键词:建筑工地员工安全预警APP;Java;MySQL; springboot

Abstract

This study developed a construction site employee safety warning app based on the Spring Boot framework. This app is mainly aimed at administrators and construction site leaders, aiming to provide real-time safety warning and management functions to ensure the safety of employees and improve the safety management level of construction sites. Through the analysis and design of system requirements, a reasonable database structure and front-end and back-end technology implementation were adopted. The system achieved functions such as administrator permission management, construction site information management, employee job type management, employee attendance management, dust data monitoring, safety warning push, and training and education. By leveraging the advantages of the Spring Boot framework, the system has good code modularity, scalability, and ease of maintenance. During the system development process, sufficient testing and optimization were conducted to ensure the stability and performance of the system. At the same time, we focus on user experience and provide convenient security warning and management services for users through friendly interface design and operation processes.

The safety warning app for construction site employees in this study aims to provide accurate and timely safety warning and management solutions for construction sites, improve the safety management level of construction sites, and ensure the safety and health of employees. Through this app, administrators and construction site leaders can monitor the safety status of the construction site in real time, handle safety incidents, and provide training and education; Employees can obtain security warning information, record attendance, and learn security knowledge through the APP.

Key words :Construction site employee safety warning APP; Java; MySQL; Springboot

  

  

  

1 绪论

1.1 研究背景 (目的) 和意义

1.2国内外研究现状

1.3研究内容

1.4论文结构与章节安排

2 相关技术介绍 2

2.1 Java编程语言 2

2.2 Android技术 2

2.3 MySQL数据库管理系统 2

2.4 Springboot框架..............................................2

3 系统需求分析

3.1可行性分析

3.1.1 技术可行性分析

3.1.2 操作可行性分析

3.1.3 经济可行性分析

3.2功能需求分析

3.3用例分析

4系统总体设计

4.1系统功能模块设计

4.1.1 前台页面设计

4.1.2 用户模块设计

4.1.3 评论管理模块设计

4.1.4安全预警管理模块设计

4.2数据库设计

4.2.1数据库概要设计

4.2.2数据库逻辑设计

5系统详细实现

5.1 系统总体的逻辑结构图

5.1.1系统MVC结构图

5.1.2系统的三层架构图

5.2系统功能实现

5.2.1系统主页功能实现

5.2.2用户注册登录功能实现

5.2.3评论功能实现

5.2.4工地资讯功能实现

5.2.5粉尘数据功能实现......................................

5.2.6用户管理功能实现

5.2.7工地员工功能实现

5.2.8安全预警管理功能实现

5.2.9培训教育管理功能实现

6系统测试

6.1 系统测试目的

6.2 系统可用性测试

6.3 系统典型测试用例

6.4 测试总结

总结

参考文献

  

1 绪论

1.1 研究背景 (目的) 和意义

(一)研究背景

在建筑工地施工过程中,员工面临着各种潜在的安全风险和危害。为了保障员工的安全和健康,提高工地的安全管理水平,开展建筑工地员工安全预警APP的研究与设计具有重要意义。传统的工地安全管理往往依赖于人工巡查和纸质报告,存在着信息传递滞后、反应不及时等问题。而通过开发一款基于移动设备的安全预警APP,可以实现实时监测和预警,提高工地安全管理的效率和准确性。

该APP主要面向管理员、工地领导,涵盖了管理员权限管理、工地信息管理、员工工种管理、员工考勤管理、粉尘数据监测、安全预警推送以及培训教育等核心功能模块。管理员和工地领导可以通过APP实时监控工地的安全状况,处理安全事件,并进行培训教育。通过建筑工地员工安全预警APP的研究与设计,可以提供准确、及时的安全预警和管理解决方案。该APP将实现工地安全信息的集中管理和快速传递,有助于避免事故的发生和减少安全风险。同时,通过培训教育功能,可以提升员工的安全意识和专业技能,进一步提高工地的安全管理水平。

建筑工地员工安全预警APP的设计与实现对于保障员工的安全和健康,提高工地的安全管理水平具有重要的意义。该APP将实现安全信息的快速传递和处理,提升员工的安全意识和专业技能,促进工地的安全文化建设和工作效率的提升。

(二)研究目的和意义

随着建筑工地规模的不断扩大和施工活动的增多,员工的安全和健康问题变得尤为重要。因此,开发一款建筑工地员工安全预警APP具有以下目的和意义。

首先,该APP旨在提供实时的安全预警和管理功能,以保障员工的安全和提高工地的安全管理水平。通过实时监测和预警系统,可以及时识别和处理潜在的安全风险,减少事故发生的可能性。这对于保护员工的生命安全和身体健康至关重要,同时也能提高工地的安全声誉和形象。

其次,该APP可以加强工地的安全管理和监督。管理员和工地领导可以通过APP实时查看工地的安全状况和问题,并进行相应的处理和改进。这将促使工地管理者更加重视安全问题,加强对员工的培训和教育,推动安全文化的建设和落实。

此外,该APP还能提供培训和教育资源,帮助员工提升安全意识和专业技能。通过在线培训课程和知识库的方式,员工可以学习相关安全知识、操作规范和最佳实践,从而更好地应对工地安全挑战。

最后,该APP的研发对于推动整个建筑行业的安全管理水平提升具有积极意义。通过将科技与建筑工地安全管理相结合,促进信息化和智能化的发展,不仅能提高工地的安全水平,还能为建筑行业提供一个良好的安全标杆,带动整个行业的改进和进步。

开发建筑工地员工安全预警APP的目的和意义在于保障员工的安全和健康,提高工地的安全管理水平,加强安全培训和教育,以及推动整个建筑行业的安全文化建设和发展。这将促进工地的安全和效率,并推动建筑行业向更安全、可持续的方向发展。

1.2国内外研究现状

随着建筑工地安全管理的重要性日益凸显,研究和开发建筑工地员工安全预警APP已成为国内外学术界和工业界的热点关注。目前,在该领域已经有一些研究和应用案例。

国内方面,许多研究机构和高校在建筑工地员工安全预警APP的研究上取得了积极进展。一些研究聚焦于利用传感器技术和无线通信手段,实时监测工地环境数据并进行安全预警。还有一些研究致力于开发基于移动互联网和云计算的安全管理平台,实现信息化、智能化的工地安全管理。

国外方面,许多发达国家也进行了类似的研究和应用探索。例如,美国、英国和澳大利亚等国家的研究机构和企业开发了各种类型的建筑工地员工安全预警APP。这些APP涵盖了工地信息管理、危险品识别、紧急救援、培训教育等功能,并通过传感器、智能设备和人工智能等技术手段,提供实时的安全预警和管理服务。

然而,目前在建筑工地员工安全预警APP领域还存在一些挑战和需要进一步研究的问题。例如,如何准确识别和预测潜在的安全风险,如何优化系统的响应速度和精确性,以及如何解决数据隐私和信息安全等方面的问题。

国内外在建筑工地员工安全预警APP的研究和应用方面已经取得了一定的成果。然而,仍有许多方面需要深入探索和改进。未来的研究可以着重于提高预警的准确性和实时性,优化用户体验和界面设计,加强数据隐私保护,以及与相关政府部门和企业合作推广应用,共同促进建筑工地安全管理水平的提升。

1.3研究内容

建筑工地员工安全预警APP的开发及实现,所需要的工作内容:

(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。

(2)系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,建筑工地员工安全预警APP的开发使用springboot框架,数据库进行平台的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成系统的实现。

(3)确定好系统使用的技术,进行在线确认系统所划分的用户角色,并且根据用户角色划分确定所要设计的功能模块,对建筑工地员工安全预警APP的设计主要划分别为管理员和用户角色对于系统员工用户可以根据自己的分管内容进行在线信息的处理及操作,管理员获取到所有用户的详细数据信息,并根据需求进行第一时间处理解决。

(4)系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。

1.4论文结构与章节安排

本文共分为六章,章节内容安排如下:

第一章:引言。第一章主要介绍了课题研究的背景意义,开发现状分析目前相关研究现状以及技术和本文的研究内容与主要工作。

第二章:相关结束介绍。第二章主要介绍了课题开发技术和框架

第三章:系统需求分析。第三章主要从系统的可行性、功能等方面进行需求分析。

第四章:系统总体设计。第四章主要对系统功能模块、数据库进行功能设计。

第五章:系统详细设计。第五章主要介绍了系统各个用户的功能、系统界面的实现。

第六章:系统测试。第六章主要对系统的部分界面进行测试并对主要功能进行测试

2 相关技术介绍

2.1 Java编程语言

早在上个世纪90年代,Java就由詹姆斯·高斯林进行开发,自诞生之日起,Java就一直深深的受到了程序开发者的广泛喜爱,它作为计算机主要的编程语言,一直到今。Java语言是真的是一种纯面向对象的计算机语言,在Java的世界中,所有的方法、数据类型、符号等都是以类的方式存在的,最顶层的就是Object,所有的类都是对object的继承。继承是Java中的核心思想,与C语言不同的是,子类只有一个父类,这样的好处就是操作更加的简便,让人更容易理解,在代码的书写上也会容易较多。Java另外一个特性就是多态性,调用父类接口的方法可以实现子类的实现,这样的好处就是很好的对实现方法进行了隐藏(封装),而且又能够把API进行公开,一举两得。接口思想很好的诠释了想象对象的思想,让面向对象编程渐渐转向面向接口编程。如今,随着编程思想的继续发展,Java也加入了一些函数式编程的思想,这样的好处就是让编程代码更加的简洁与方便。本管理系统采用Java编程语言进行后台的开发,一是鉴于标准化制定以后[4],Java语言常用于大型商业应用程序后台系统中,生态稳定;二是也希望通过本系统的开发提高自己编写Java代码的能力。

2.2 Android技术

Android是基于Linux内核的操作系统,早期由Google开发,后由开放手机联盟开发。它采用了软件堆的架构,主要分为三部分。底层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为GPhone。

它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分:底层以Linux核心为基础,由c语言开发,只提供基本功能。中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java编写。

2.3 MySQL数据库管理系统

数据库作为数据的存储地方是项目必须的,MySQL是一款非常优秀的关系型数据库,早期的Mysql并不是甲骨文公司的,后来才被他收购的。Mysql非常的小巧,安装包才几兆,sql语言的书写也比较容易学习,最重要的是mysql同时也是一款开源的软件,所以不需要额外进行付费,本系统本身也是以学习总结所学知识为主,在系统的开发上最好尽量使用免费的软件,所以选用mysql进行数据库管理。Mysql的容量也是非常大的,同时支持分库分表的操作,支持分布式,所以越来越多的中小企业选择该款数据库管理工具。另外值得一提的是,开源也有一个不好的地方,就是容易遭到破解和黑客攻击,所以mysql在使用上还是更多的使用在中小项目中。

2.4 Springboot框架

Spring boot是一种新的开源轻量级框架,它继承了Spring framework的优秀特性。它是Spring 4.0之后提供的一个自动启动框架,通过配置进一步简化了Spring应用程序的构建和开发的整个过程。此外,Springboot还集成了大量的框架,解决了依赖包的版本冲突和引用不稳定的问题。

SpringBoot有两个核心,快速启动和自动装配。快速启动是指Spring Boot通过main方法启动,而且内置Web容器(Tomcat)。自动装配是指采用习惯优于配置的理念,可以进行自动化配置(EnabelAutoConfiguration),框架采用注解和properties(或yaml)代替传统的Xml配置。

3 系统需求分析

3.1可行性分析

通过以下的系统总体需求分析,进而分析是否拥有达成需求的技术、资金和开发人员等条件。那么就从以下几点进行简单的说明:

3.1.1 技术可行性分析

建筑工地员工安全预警APP通过分析以上的系统需求,首先需要使用数据库存储各种数据,包括员工工种数据、工地员工数据、员工排班数据、粉尘数据等。其次,后端数据要调到页面上来,所以需要使用到前端技术,包括html,css 和javascript三大技术。当前端发出请求的时候,还需要中间件的支持等。这些技术在学校基本都学习过了,而且在使用上如果发生遗忘都可以查询到相关知识进行补充。所以总的来说,技术可行性是没有问题的。

3.1.2 操作可行性分析

总体来严,该系统的操作设计和逻辑设计还是比较简单的。因为总体的设计目标只是包括数据的读取等基本内容。而且,就目前使用的客户一般都是用户和管理人员,都是有较高文化的一群人和学习能力较强的人。但是还是要把程序的操作设计得尽量简单,比如预约看房等功能,比如用户的登录和登出功能等,都需要尽量的简单,这样让系统用户更容易上手。针对管理员的操作,这边需要指出,是需要一定的理解的,还是需要一定的计算机基本认识,如有需要,可以对其进行简单的介绍或者培训。

3.1.3 经济可行性分析

整体来说,项目的开发使用的硬件和软件还是不多的,硬件就是一台电脑,软件需求比较多,因为现在都有很多开源软件可是使用,所以投入也是不高的,项目使用的开源软件还是比较多的,比如mysql,tomcat,mybatis等,图标字体阿里巴巴的图标字体库,版本控制使用的git等。总体的投入主要就是开发的时间投入,所以总的来说,经济可行性也是没有问题的。

3.2功能需求分析

建筑工地员工安全预警APP的主要目的分为两个。

(1)建筑工地员工安全预警APP提供了一个用户和用户,用户与管理员进行互动交流的系统,用户可以通过注册获取一个帐户,查询粉尘数据。在这个系统中,用户之间可以进行随时查询安全预警等。

(2)该系统需要很好的功能扩充性和可维护性。由于该系统是涉及的用户比较多,对管理员来说同样也是一个信息管理系统,包括系统用户、员工工种、工地员工、员工考勤、粉尘数据、安全预警、培训教育等。而且,随着用户数量的增加,必然对程序的更新迭代要求更高,所有在开发的时候就需要注意程序的可维护性和可拓展性。

3.3用例分析

建筑工地员工安全预警APP中的管理员角色主要负责了如下功能操作。

(1)轮播图/通知公告管理功能需求:管理员可以对这两部分进行添加,修改,删除和查询等。

(2)系统用户功能需求:用户管理部分包括了管理员和工地领导两部分,管理员可以对这两部分进行添加,修改,删除以及查询等。

(3)员工工地管理功能需求:管理员可以对其进行添加,修改,删除,查询等。

(4)工地员工管理功能需求:管理员可以进行添加、查询,编辑,删除操作。

(5)员工排班管理功能需求:管理员可以进行添加、查询,编辑,删除操作。

(6)粉尘数据管理功能需求:管理员可以进行添加、查询、编辑,删除操作。

(7)安全预警管理功能需求:管理员可以进行添加、查询,编辑,删除操作。

(8)培训教育管理功能需求:管理员可以进行添加、查询,编辑,删除操作。

(9)资源管理:管理员可以对建筑工地员工安全预警APP前台展示的工地资讯以及资讯所属的分类进行管控。

图3-1管理员角色用例图

建筑工地员工安全预警APP中的前台工地领导角色主负责了如下功能操作。

(1)用户查看系统信息功能需求:用户可以通过系统首页查看建筑工地员工安全预警APP,包括首页,工地资讯、粉尘数据、安全预警、培训教育。

(2)粉尘数据:用户点击“粉尘数据”菜单可以查看所有粉尘数据信息,可以按照条件查看粉尘数据,或者输入关键词进行查询,点击可以进入粉尘数据详细展示界面。

(3)通知公告功能需求:用户登录系统以后,是可以进行对通知公告进行浏览。

(4)工地资讯:用户可以查看工地资讯信息,在查询到自己想要了解的工地资讯的时候,可以进入查看详细的介绍进行评论、点赞、收藏操作。

(5)安全预警:用户点击“安全预警”菜单可以查看所有安全预警信息,可以按照条件查看安全预警,或者输入关键词进行查询,点击可以进入安全预警详细展示界面。

图3-2 前台工地领导角色用例图

4系统总体设计

4.1系统功能模块设计

建筑工地员工安全预警APP的整体架构确定以后,再来看建筑工地员工安全预警APP的主要功能模块图。整体的功能模块包括前台和后台,前台就是主要的页面,包括首页,首页,通知公告、工地资讯、酒店信息、旅游景点、特色路线、文化历史、培训教育等页面。后台的模块主要实现了管理员用户,有系统用户、首页,通知公告、工地资讯、酒店信息、旅游景点、特色路线、文化历史、培训教育等。确定了模块以后,再设计各个模块的功能特点,方便抽取出各个模块的公共部分来。

图4-1建筑工地员工安全预警APP功能模块图

4.1.1 前台页面设计

本建筑工地员工安全预警APP的前台页面所有的页面设计主要是上中下的结构,这样的好处是让所有的页面更加的整洁。主题的页面颜色采用淡色为主,为突出页面的美观。主页面上分为导航栏,导航栏的每个导航项目设计为一张Java页面,除此之外,还有就是用户中心页面,后台管理的页面了。后台管理页面已简单的上下结构为主。

4.1.2 用户模块设计

(1)用户模块结构图

本系统的用户包括管理员和工地领导模块。两种用户模块的功能基本是相同的,所以以用户模块的结构图为例进行分析,如下图:

图4-2用户模块结构图

(2)各个结构的具体业务逻辑

a.查询用户信息:设计最基础的查询功能,主要就是根据用户id查询用户信息。该功能主要体现在管理员用户信息查询和用户自己查询信息的时候。

b.修改用户信息:用户可以根据情况,对自己的基本信息进行修改,包括名字修改、密码修改、头像修改等操作。

c.增加用户:用户可以通过注册来获得账号

d.删除用户信息:管理员没有权利进行删除信息的删除,最多把用户加入到黑名单中,禁止用户进行登录操作。

4.1.3 评论管理模块设计

(1)评论模块结构图

建筑工地员工安全预警APP是一个交流性质的公开系统,用户和用户之间可以对系统上的内容,比如资讯等进行点评,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的言论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:

图4-3评论模块结构图

(2)各个结构的具体业务逻辑

a.查询评论:设计最基础的查询功能,主要就是根据用户id查询该用户下的所有评论信息。

b.发布评论:工地领导用户可以根据情况,发布自己评论信息到系统上。

c.删除评论:管理员没有权限修改用户的评论信息,但是可以删除用户的整条评论。

4.1.4安全预警管理模块设计

(1)安全预警模块结构图

建筑工地员工安全预警APP是中需要存储不少用户安全预警,工地领导可以查看安全预警,管理员可以添加,修改,删除安全预警等,具体的结构图如下:

图4-4酒店信息模块结构图

(2)各个结构的具体业务逻辑

a.添加房产信息:管理员可以对安全预警进行添加。

b.修改房产信息:管理员可以对安全预警进行修改。

c.删除房产信息:管理员可以对安全预警进行删除。

3.2数据库设计

3.2.1数据库概要设计

建筑工地员工安全预警APP根据上面的E-R实体图,就再找到实体与实体之间的关系来,制作总的E-R图,实体之间的关系一共有4种,也就是一对一,多对一,一对多和多对多,总的E-R图是设计数据库表格的依据,如下图是系统的总E-R图。

图4-5系统总体E-R图

4.2.2数据库逻辑设计

通过上一小节中建筑工地员工安全预警APP中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表construction_site_employees (工地员工)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

construction_site_employees_id

int

10

0

N

Y

工地员工ID

2

employee_name

varchar

64

0

Y

N

员工姓名

3

employee_gender

varchar

64

0

Y

N

员工性别

4

employee_job_type

varchar

64

0

Y

N

员工工种

5

employee_phone_number

varchar

64

0

Y

N

员工电话

6

employee_leadership

int

10

0

Y

N

0

员工领导

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表construction_site_leader (工地领导)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

construction_site_leader_id

int

10

0

N

Y

工地领导ID

2

leaders_name

varchar

64

0

Y

N

领导姓名

3

leadership_gender

varchar

64

0

Y

N

领导性别

4

leaders_phone_number

varchar

64

0

Y

N

领导电话

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表dust_data (粉尘数据)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

dust_data_id

int

10

0

N

Y

粉尘数据ID

2

monitoring_location

varchar

64

0

Y

N

监测地点

3

monitoring_date

date

10

0

Y

N

监测日期

4

dust_concentration

varchar

64

0

Y

N

粉尘浓度

5

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表employee_attendance (员工考勤)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

employee_attendance_id

int

10

0

N

Y

员工考勤ID

2

employee_name

varchar

64

0

Y

N

员工姓名

3

employee_gender

varchar

64

0

Y

N

员工性别

4

employee_job_type

varchar

64

0

Y

N

员工工种

5

employee_leadership

int

10

0

Y

N

0

员工领导

6

attendance_month

varchar

64

0

Y

N

考勤月份

7

attendance_days

int

10

0

Y

N

0

出勤天数

8

absence_days

int

10

0

Y

N

0

缺勤天数

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表employee_job_type (员工工种)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

employee_job_type_id

int

10

0

N

Y

员工工种ID

2

employee_job_type

varchar

64

0

Y

N

员工工种

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表employee_scheduling (员工排班)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

employee_scheduling_id

int

10

0

N

Y

员工排班ID

2

schedule_title

varchar

64

0

Y

N

排班标题

3

employee_name

varchar

64

0

Y

N

员工姓名

4

employee_gender

varchar

64

0

Y

N

员工性别

5

employee_job_type

varchar

64

0

Y

N

员工工种

6

employee_leadership

int

10

0

Y

N

0

员工领导

7

employee_scheduling

text

65535

0

Y

N

员工排班

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表security_warning (安全预警)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

security_warning_id

int

10

0

N

Y

安全预警ID

2

warning_location

varchar

64

0

Y

N

预警地点

3

warning_time

datetime

19

0

Y

N

预警时间

4

trigger_personnel

varchar

64

0

Y

N

触发人员

5

warning_type

varchar

64

0

Y

N

预警类型

6

warning_information

text

65535

0

Y

N

预警信息

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表training_and_education (培训教育)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

training_and_education_id

int

10

0

N

Y

培训教育ID

2

employee_name

varchar

64

0

Y

N

员工姓名

3

training_type

varchar

64

0

Y

N

培训类型

4

training_location

varchar

64

0

Y

N

培训地点

5

training_time

datetime

19

0

Y

N

培训时间

6

training_content

text

65535

0

Y

N

培训内容

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

5系统详细实现

5.1 系统总体的逻辑结构图

5.1.1系统MVC结构图

首先从项目整体的进行逻辑设计,采用的是目前流行的MVC模式进行开发。Model层是系统的核心层,里面含有项目的核心逻辑代码和数据库,View层是Model层的显示实例,Controller的主要的功能就是处理用户与数据交互的。值得注意的是,MVC模式的特点是为了更好的对前台和后台进行解耦的操作,控制器就是充当解耦的中间层,他可以分发前台的请求,然后通过调用模型层来处理数据。本系统使用的控制器是springMVC,springMVC的dispatchServlet是对servlert的封装。

图5-1建筑工地员工安全预警APPMVC结构图

5.1.2系统的三层架构图

建筑工地员工安全预警APP使用的springboot框架搭建后台系统,把所有的对象都交予spring的ioc容器进行管理,这样的好处就是能够更好的让系统掌握对象的生命周期还有方便进行依赖注入,减少代码的书写量和对象之间的耦合。具体的三层包括,控制层、业务逻辑层和数据持久化层,也就是controller, service和dao层。Dao层的实现类通过mybatis映射文件进行实例化操作。三层架构的好处就是能够更好的对系统操作进行解耦,方便维护与分工。

图5-2建筑工地员工安全预警APP三大操作类结构图

4.2系统功能实现

4.2.1系统主页功能实现

用户进入首页之后会显示如下的一个窗口。如下图:

图4.3建筑工地员工安全预警APP主界面

由于该项目只是用来测试,用户登录首页展示的图片等数据有的是从项目本地拿到的,有的则是从数据库中获取的。页面中的搜索部分,页头部分等都是属于公共样式,可以进行公告样式的抽取,然后再引入到Java页面中。

4.2.2用户注册登录功能实现

该建筑工地员工安全预警APP用户是需要先注册的,没有登录的情况下,用户进行任何的操作,都会跳到登录页面,提示注册。具体的流程图和实现界面如下:

图5-4建筑工地员工安全预警APP用户注册登录流程图

图5-5建筑工地员工安全预警APP用户登录界面

登录的逻辑代码如下所示。

/**

     * 登录

     * @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.3评论功能实现

用户可以进行评论,以用户评论为例,界面如图:

图5-6建筑工地员工安全预警APP用户评论界面

主要的实现代码是:工地领导评论主要是对资讯信息进行评论。其中评论中保存了评论的宿主编号。

5.2.4工地资讯功能实现

当访客点击建筑工地员工安全预警APP中导航栏上的“工地资讯”后将会进入到该“工地资讯”列表的界面,然后选择想要看的工地资讯信息,点击进入到详细界面,在详细界面可以收藏+赞+评论等操作,具体的实现界面如下图:

图5-7工地资讯界面

5.2.5 粉尘数据功能实现

点击“粉尘数据”菜单可以查看所有粉尘数据信息,可以按照条件查看粉尘数据,或者输入关键词进行查询,点击可以进入粉尘数据详细展示界面,具体的实现界面如下:

图5-9建筑工地员工安全预警APP粉尘数据界面

5.2.6用户管理功能实现

管理员在用户管理模块,可以对用户信息进行管理,用户管理模块由管理员和工地领导两部分组成组成,这里以工地领导管理为例,具体的实现界面如下图:

图5-10用户管理界面

用户管理关键代码如下:

 @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

5.2.7工地员工功能实现

管理员点击“工地员工”会显示出所有的工地员工信息,支持输入员工姓名或者员工性别对工地员工信息进行查询,可以选择某一条工地员工信息,点击“删除”进行删除,也可以点击后面的“排班”“考勤”按钮对工地员工的排班/考勤信息进行更新维护,具体的实现界面如下图:

图5-11工地员工管理界面

工地员工管理关键代码如下:

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

    }

5.2.8安全预警管理功能实现

管理员点击“安全预警”会显示出所有的安全预警信息,支持输入预警地点或者预警时间对安全预警信息进行查询,可以选择某一条安全预警信息,点击“删除”进行删除,具体的实现界面如下图:

图5-12安全预警管理界面

安全预警管理关键代码如下:

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

    }

5.2.9 培训教育管理功能实现

点击“培训教育”按钮会显示自己发布的所有的培训教育,如果想要添加新的餐厅,点击“添加”按钮根据提示输入培训教育,点击“提交”后在培训教育界面就可以显示了,如果信息有错,点击“编辑”按钮可以对培训教育进行更新维护,也可以直接删除某一餐厅,界面如下图5-13所示。

图5-13培训教育管理界面

5系统测试

5.1 系统测试目的

系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。

5.2 系统可用性测试

系统的可用性测试是测试系统最基本的功能,比如鼠标点击是否可用,页面跳转是否正常等。下面是具体的测试结果。

表5-1建筑工地员工安全预警APP可用性测试

测试项

测试人员评价

窗口移动、改变大小、关闭等操作是否正常

操作模块是否友好

模块和提示内容等文字描述是否正确

模块布局是否合理、协调

模块的状态是否正确(对选中项能否发生对应切换)

键盘、鼠标操作是否支持

所需的数据项是否正确显示

操作流程是否合理

是否提供帮助信息

5.3 系统典型测试用例

对系统的主要页面和功能点的测试用例如下:

(1) 用户登陆系统测试用例如表 5-2 所示。

表5-2用户登录系统测试用例

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

(2)培训教育信息测试用例如表 5-3 所示

表5-3 培训教育测试用例

用例名称

培训教育

目的

测试培训教育功能

前提

测试流程

打开培训教育界面

预期结果

可以进行查看培训教育详细

实际结果

实际结果与预期结果一致

(3)评论试用例如表 5-4所示

表5-4评论测试用例

用例名称

评论

目的

测试评论模块功能

前提

测试流程

用户在评论区进行点评操作。

预期结果

评论提交以后,可以查看到自己的评论信息

实际结果

实际结果与预期结果一致

(4)安全预警添加信息测试用例如表 5-5 所示

表5-5 安全预警添加测试用例

用例名称

安全预警添加

目的

测试安全预警添加功能

前提

测试流程

管理员点击安全预警添加,输入安全预警

预期结果

提交安全预警后可以查看安全预警

实际结果

实际结果与预期结果一致

5.4 测试总结

通过系统的调试,能够检测项目的稳定性,为项目正式运行、稳定运行提供了可预测性的维护备案。能够帮助用户熟悉整个项目,并对项目可能出现的错误有所了解。本文提供了部分调试用例及调试日志,可以帮助用户解决简单的错误问题,也加深了开发者对于此框架下的项目编写的了解度,为后期开发者顺利完成项目、发布项目提供了非常大的帮助。

总结

本次设计中,我还学会了很多,例如良好的编程思想和完善的规划思想。在着手编程之前需要罗列出程序框架的大概,脑海中构建出程序的主题框架。做好这一步我们才能胸有成竹的经行开发项目。当设计框架了熟于心之后,需要思考本次编程所需的主要知识点和技术点,并充分学习。如此一来项目的开发才能循序渐进、如丝般顺滑,长久以往就能养成良好的开发习惯。一个程序好不好还要看出的bug多不多,如果在项目完成前做好bug的查验与预防可能发生的事故才能保证程序的稳定长久性运行。如果项目在完工后出现各种问题自己,那么在进入社会后,不仅会给公司团队带来麻烦和增加不必要的工作,还会导致客户流失,公司对自己的评价下降。

在本次项目中我也暴露了诸多问题。对于Java的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。

参考文献

[1]王斌,李峰,杨慧婷等. Android应用程序漏洞检测方法和工具新进展 [J]. 计算机技术与发展, 2024, 34 (02): 9-16.

[2]束方鹏,张逸. 基于SpringBoot框架的数据转换系统及方法[P]. 江苏省: CN117289914B, 2024-02-02.

[3]马超,常增亮,高兴国等. 基于Android平台的电力工程外业踏勘三维辅助系统设计与实现 [J]. 电力勘测设计, 2024, (01): 77-81+88. .

[4]宋晓燕,杨芬. Java程序设计语言的分层教学实践 [J]. 电子技术, 2023, 52 (11): 182-183.

[5]刘明,杨胜飞,张冶锋等. 基于SpringBoot框架的长距离输水工程水量监测系统设计 [J]. 云南水力发电, 2023, 39 (11): 359-362.

[6]张国芳. Java编程语言在计算机软件开发中的应用方向分析 [J]. 信息记录材料, 2023, 24 (11): 138-141.

[7]孟思明. 基于SpringBoot框架选购系统的设计与实现 [J]. 中国设备工程, 2023, (11): 94-95.

[8]赵延南,冯泳,张伟等. 一种车间生产安全预警系统和预警方法[P]. 陕西省: CN115909645B, 2023-06-06.

[9]Myat H W ,Hwei S T ,Yulei S . Event-aware precise dynamic slicing for automatic debugging of Android applications [J]. The Journal of Systems & Software, 2023, 198

[10]Xinbin H ,Yongbin B ,Lisen Y , et al. Design and Implementation of Information System Based on Java Technology Platform [J]. Journal of Physics: Conference Series, 2021, 2033 (1):

[11]关庆龄,李春. 一种能够安全预警的人员定位及实时健康监测系统 [J]. 机械工程师, 2021, (02): 93-95.

[12]李江澜,李欢. 基于贝叶斯-BP神经网络的机械制造企业安全预警方法研究 [J]. 安全与环境工程, 2020, 27 (01): 152-157+165.

[13]王轲. 基于大数据的空中交通管制运行安全预警研究 [J]. 通讯世界, 2019, (22): 352-353.

[14]梁伟刚. 员工安全心理预警管理系统技术研究与应用 [J]. 中州煤炭, 2019, (12): 42-46.

  

至此论文结束,感谢您的阅读。在此我要感谢我的导师,虽然我在实习期间很忙,论文撰写总是停停改改,但是导师依然十分负责,时不时的询问我的任务进展情况,跟进我的论文进度。虽然我在实习期间很忙,以至于很晚才开始进行论文撰写和编写程序的工作,但是在指导老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识,和经验,这些知识和经验令我受益匪浅。也从导师身上看到了自己的不足,不论是在即使层面上还是在对待工作的态度上,倒数如同明镜一般照出了我的缺点我的不足。此外,我还要感谢在我实习期间在论文和程序上帮助过我的同学和社会人士,此前我对于框架及JQuery和BootSatrp方面的一些知识还不了解,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测。没有他们我是不能顺利完成本次毕业设计的。至此,我的毕业设计就花上了一个圆满的句号了。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值