ssm安全生产培训管理平台-毕业计划源码 26918

打印 上一主题 下一主题

主题 695|帖子 695|积分 2085

  ssm安全生产培训管理平台

  目录

  摘  要
  Abstract
  第1章  前  言
  1.1  研究背景
  1.2  研究现状
  1.3  系统开辟目标
  第2章  系统开辟环境
  2.1 JAVA简介
  2.2 MySql数据库
  2.3  B/S架构
  2.4 JSP技术介绍
  2.5 SSM三大框架
  第3章  需求分析
  3.1  需求分析
  3.2  系统可行性分析
  3.2.1 技术可行性
  3.2.2 经济可行性
  3.2.3 操纵可行性
  3.3  项目计划目标与原则
  3.4  系统流程分析
  第4章  架构计划
  4.1  系统体系布局
  4.2  数据库实体计划
  4.3  数据库表计划
  第5章  系统实现
  5.1  登录
  5.2  前台功能模块
  5.3  后台管理员功能模块
  第6章  系统测试
  6.1  测试目的
  6.2  测试方法
  6.3  功能测试
  6.4  测试结论
  第7章 结  论
  参考文献
  致  谢
  
   
摘  要

  在经济大发展的期间,安全生产培训管理平台作为企业的安全培训职能部门,在变化头脑观念强化服务意识的前提下,提高自身素质和工作质量,努力围绕安全生产培训管理平台中心使命开展工作,国家对安全越来越重视,为企业的发展献力献策,才气实现安全生产培训管理平台的有效发挥,本文将通过安全生产培训管理平台的信息,分析在一样平常工作中安全生产培训管理平台存在哪些问题探讨出进一步提升工作服从,管理本领的对策。
  系统接纳了Java技术,将所有业务模块接纳以欣赏器交互的模式,选择MySQL作为系统的数据库,开辟工具选择My eclipse来进行系统的计划。基本实现了安全生产培训管理平台应有的主要功能模块,本系统有管理员、员工,管理员:管理员:首页、站点管理(轮播图、公告栏)用户管理(管理员、员工)内容管理(安全要闻、要闻分类列表)更多管理(生产培训、共享资源、共享资源分类、学习课件),前台;首页、公告消息、安全要闻、共享资源、学习课件,员工;首页、更多管理(生产培训、共享资源、学习课件)管理等操纵。
  对系统进行测试后,改善了程序逻辑和代码。同时确保系统中所有的程序都能正常运行,所有的功能都能操纵,而且该系统有很好的操纵体验,实现了对于安全生产培训管理平台和企业双赢。
  
  关键词:安全生产培训管理平台;SSM框架 ;Mysql数据库;Java语言 
  
  
Abstract

  In the era of great economic development, the safety production training management platform, as the safety training functional department of the enterprise, can realize the effective play of the safety production training management platform only by changing ideas and strengthening service awareness, improving their own quality and work quality, and striving to work around the central task of the safety production training management platform, This article will analyze what problems exist in the daily work of the safety production training management platform through the information of the safety production training management platform, and discuss the countermeasures to further improve the work efficiency and management ability.
  The system adopts Java technology, adopts browser interaction mode for all business modules, selects MySQL as the system database, and selects My eclipse as the development tool to design the system. Basically realized the main functional modules of the safety production training management platform. The system includes administrators, employees, administrators: home page, site management (broadcast map, bulletin board), user management (administrators, employees), content management (safety news, news classified list), more management (production training, shared resources, shared resource classification, learning courseware), and the front desk; Home page, announcement, safety news, shared resources, learning courseware, employees; Home page, more management (production training, sharing resources, learning courseware) management and other operations.
  After testing the system, the program logic and code are improved. At the same time, it ensures that all programs in the system can operate normally, all functions can be operated, and the system has a good operating experience, realizing a win-win situation for the safety production training management platform and the enterprise.
  Keywords: safety production training management platform; SSM framework; MySQL database; Java Language
  
  
第1章  前  言

1.1  研究背景
传统的安全生产培训管理平台方式是在线下实体进行的,用户需要到线下进行实际的安全生产培训信息,而随着安全生产的不断遍及,越来越多的企业也开始出于各种各样的理由而热衷网上发展 ,传统的线下安全生产培训模式已经无法满足人们的需求了。
互联网的产生,带来了网络的再次高速发展,人们的生活得到了翻天覆地的变化。人们可以随时随地的享受互联网带来的方便快捷,在生活工作中的方方面面的需要都能在网络上实现,好比生产培训、共享资源、共享资源分类等等。也就是说网络成了人们目前最直接、最方便、最轻松的接入口。
在当今世界,互联网快速发展的现在,怎样使用互联网创造更简单高效的生活,这是我们首要讨论的。需要安全生产培训管理平台相干网站,一方面使得管理员可以对安全生产培训管理平台的信息进行实时更新和信息化的管理,可以较为轻易的获取学习课件、安全生产信息等等。另一方面用户可以使用互联网更直观的查看安全生产的相干信息。与传统的安全生产培训管理平台方式相比,用户安全生产培训的方式更加轻松,系统的操纵更加的准确,这是一种潜伏趋势,大概可以有效加快安全生产培训管理平台的遍及情况。
1.2  研究现状
经过调查,目前当代人的生活节奏加快,生活压力也在逐渐的增长,网络的发展给人们带来的便利,人们对安全生产管理不断的了解,越来越多的企业开始加入了项目这个行业中,但是我国对于安全生产培训管理平台信息管理效果低下,而且堕落率也很高。因此各人都在寻找一款更加专业化的安全生产培训管理平台。
随着安全生产培训管理平台的不断出现,用户需求不断增多,安全生产培训管理平台也不断的得到强大,本系统主要根据管理员和员工的实际需要,方便用户使用互联网实现对安全生产培训管理平台的了解、对比,同时让管理者可以通过这个系统对用户实际需求以及各办公信息的所有了解和项目情况进行管理。计划该系统主要目的是为了方便用户可以有一个非常好的平台体验,管理员也可以通过该系统进行更加方便的管理操纵,实现了之前指定好的计划。
1.3  系统开辟目标
对于网站的计划,要保证主界面的整齐有序,可以或许抓住人的眼球,不会产生视觉疲劳,更重要的是,带给人轻易操纵的直观感受,如许才气留住用户去进使用用,增长三分热度的延续期。在系统的后台计划上,要接纳非常简便有效的技术,开辟方便的同时,便于以后的维护。我们不但要确保所有的功能都可以或许满足用户的需求,用户还要能自己自动通过网站去实现想要的操纵,而管理者的简单通过网站对用户的需求情况进行了解和管理。为到达这一目的,提出以下目标:
(1)用户可以实时查看最新的生产中心信息,以及相干资讯;
(2)用户可以查看各安全生产培训的信息,选择自己较为合适的的学习课件;
(3)用户可以通过系统信息进行查看安全生产培训通知;
(4)管理员可以在后台方便管理后台网页的各种信息;
(5)用户可以方便查询、项目的状态。

第2章  系统开辟环境

2.1 JAVA简介

Java主要接纳CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,JSP(java server pages),和XML技术。JAVA语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的使命,开辟者只需要知道一些概念就可以或许编写出一些应用程序。Java程序相对较小,其代码可以或许在小机器上运行。Java是一种盘算机编程语言,具有封装、继续和多态性三个主要特性,广泛应用于企业Web应用程序开辟和移动应用程序开辟。
Java语言和一般编译器以及直译的区别在于,Java起首将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开辟,它已经得到了改进。
2.2 MySql数据库

Mysql的语言黑白布局化的,用户可以在数据上进行工作。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事件化处理的情况下,MySQL是管理内容最好的选择。而且因为Mysql的语言和布局比力简单,但是功能和存储信息量很强大,以是得到了普遍的应用。

Mysql数据库在编程过程中的作用是很广泛的,为用户进行数据查询带来了的方便。Mysql数据库的应用因其灵活性强,功能强大,以是在实现某功能时只需要一小段代码,而不像其他程序需要编写大段代码。总体来说,Mysql数据库的语言相对要简便很多。

数据流程分析主要就是数据存储的储藏室,它是在盘算机上进行的,而不是实际中的储藏室。数据的存放是按固定格式,而不是无序的,其界说就是:长期有固定格式,可以共享的存储在盘算机存储器上。数据库管理主要是数据存储、修改和增长以及数据表的创建。为了保证系统数据的正常运行,一些有本领的处理者可以进行管理而不需要专业的人来处理。数据表的创建,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开辟主要应用了Mysql进行对数据的管理。

2.3  B/S架构 

B/S布局的特点也非常多,例如在很多欣赏器中都可以做出信号请求。而且可以得当的减轻用户的工作量,通过对客户端安装或者是配置少量的运行软件就可以或许渐渐减少用户的工作量,这些功能的操纵主要是由服务器来进行控制的,由于该软件的技术不断成熟,最主要的特点就是与欣赏器相互配合为软件开辟带来了极大的便利,不仅可以或许减少开辟成本,还可以或许不断加强系统的软件功能,层层相互独立和展现层是该B/S布局完成相互连接的主要特性。
2.4 JSP技术介绍

JSP技术本身是一种脚本语言,但它的功能是非常强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了用户的需求。JavaBeans 可以对JSP技术的程序进行扩展,从而形成新的应用程序,而且JavaBeans的代码可以重复使用,以是就便于对程序进行维护。JavaBean 组件有内部的接口,可以帮助不同的人对系统进行访问。1999年,Sun微系统公司正式推出了JSP技术,这是一种动态技术,是基于整个JAVA体系和JavaServlet提出的,是具有普遍实用性的WEB技术,也是本系统计划的核心技术之一。JSP技术可以或许极大的提高WEB网页的运行速度。这些内容会与脚本结合,而且由JavaBean和Servlet组件封装。所有的脚本均在服务器端运行,JSP引擎会针对客户端所 提交的申请进行表明,然后天生脚本程序和JSP标识,然后通过HTML/XML页面将结果反馈给欣赏器。因此,开辟人员切身计划终极页面的格式和HTML/XML标识时,完全可以使用JSP技术。
以是结合安全生产培训管理平台的需求及功能模块的实现,使用JSP技术是最合适的,而且JSP的拓展性比力好,对于系统在后期使用过程中可以不断对系统功能进行拓展,是系统更完成,更方便的满足用户管理。

2.5 SSM三大框架

1.Spring的优势:
通过Spring的IOC特性,将对象之间的依靠关系交给了Spring控制,方便解耦,简化了开辟。
2.Spring MVC的优势:
SpringMVC是使用了MVC计划头脑的轻量级web框架,对web层进行解耦,使我们的开辟更简便。
3.Mybatis的优势:
数据库的操纵(sql)接纳xml文件配置,解除了sql和代码的耦合,提供映射标签,支持对象和和数据库orm字段关系的映射,支持对象关系映射标签,支持对象关系的组建提供了xml标签,支持动态的sql。


第3章  需求分析

3.1  需求分析
开辟系统的过程中,去调查用户的功能诉求,对需要存在的功能进行需求分析是特别重要的,且对于系统的开辟有着实际的意义,计划安全生产培训管理平台通过对用户的需求进行分析,结合实际情况进行开辟研究,对用户的所有需求做出一个完整的基本的框架,然后一步一步的完成、实现。需求分析可以为系统的开辟提供一个目标,只有按照这个目标进行开辟计划,才气进行完整的开辟,如许计划出的系统才有使用的意义,才气在竞争激烈的软件市场中生存,才气真正的帮助人们解决问题,提高实际的服从。
3.2  系统可行性分析
3.2.1 技术可行性
本系统接纳的是目前应用最广泛的程序进行技术的支持,主要的技术支持是java语言,他作为一个相当成熟的语言程序,在众多的软件开辟中起着很大作用。而且用java语言编辑出来程序可以直接运行,不需要借助其他的翻译器进行翻译。以是在技术方面是完全可以行的。
3.2.2 经济可行性
本项目开辟的初志就是为了节约,因为系统开辟的所有过程都是我自己开辟的,而且在开辟过程使用到的技术也都是市面上常见的轻易操纵的,以是不需要请专业的人士花资金来进行系统的开辟,而且在项目开辟的过程中我也学到了更多的知识。开辟的这个软件可以在网络中进行免费的下载,对盘算机的软硬件没有很高的要求,因此这个项目黑白常实惠的,在经济方面是完全可性的。
3.2.3 操纵可行性
操纵可行性也就是系统的可用性,一个系统的操纵是否轻易决定着这个系统的使用度,在系统的操纵方面的计划我都是接纳简便易懂的方式,操纵的整个菜单界面整齐有序,所有的功能都有序的排列,不会出现重叠或者需要转换的征象,用户想要哪方面的操纵都可以直接进行操纵,以是该系统任何人都可以进行操纵,不需要有相干专业的技术如许用户在操纵起来就轻易很多。
3.3  项目计划目标与原则
1、关于安全生产培训管理平台的基本要求
(1)功能要求:管理员:首页、站点管理(轮播图、公告栏)用户管理(管理员、员工)内容管理(安全要闻、要闻分类列表)更多管理(生产培训、共享资源、共享资源分类)
员工;首页、更多管理(生产培训、共享资源、学习课件),
(2)性能:因为安全生产培训管理平台管理中有很多的信息需要存储,因此对于系统的存储量有很大的要求,需要有一个强大的数据库的支持才气确保所有的信息都能安全稳定的进行存储。
(3)安全与保密要求:用户都必须注册、登录才气进入系统。
(4)环境要求:支持Windows系列、Vista系统等多种操纵系统使用。
2、计划原则
本安全生产培训管理平台接纳JSP技术,Mysql数据库开辟,充分保证了系统稳定性、完整性。
(1)系统相应服从:由于是安全生产培训管理平台,因此就需要系统的相应服从黑白常高的,而且可以支持很多人同时进行系统的使用。
(2)界面简便清晰:系统界面要简单有序,所有的功能一清二楚。
(3)储存性高:因为是安全生产培训管理平台,以是就会在数据库要求上比力严格,信息录入的比力多,而且丰富复杂, 这就需要一个强大的数据库来存放更多的数据和保证数据的时时性。
(4)易学性:系统的计划肯定要简单,使得用户使用起来非常好的顺手。
(5)稳定性需求:该系统在使用过程中必须保持稳定,不要出现卡顿、模糊等情况。
(6)稳定性:由于是安全生产培训管理平台,因此系统运行必须要非常的稳定。
3.4  系统流程分析
用户需要拥有属于自己的账号和暗码,且必须准确,如许才气顺利登录到系统中。进入网站后,用户可以自行查询项目情况,在自己满意的项目的详情页面的最后,可以直接选择安全生产操纵。具体流程如下图3-2所示:


图3-2 用户操纵流程图

为了保证系统的安全性,要使用本系统对系统信息进行管理,必须先登岸到系统中。其具体登录流程图如图3-3所示:

图3-3 系统操纵流程图



第4章  架构计划

4.1  系统体系布局
安全生产培训管理平台的布局图4-1所示:


图4-1 系统布局

登录系统布局图,如图4-2所示:


图4-2 登录布局图

系统布局图,如图4-3所示:

图4-3 系统布局图

4.2  数据库实体计划
数据库的功能就是对系统中所有的数据进行存储和管理。所有的数据可以在数据库中产时间的进行存储,方便用户的使用。而且所有的数据库中的数据也应该具有肯定的共享性,任何的系统可以对一些数据进使用用,同时还应该保持肯定的独立性,每一个数据库中的数据都有很强的安全性,可以被很好的存放到数据库,没有进行身份的验证是不能对这些数据进行查看和使用的。数据库的计划需要明确每一个实体之间的联系,系统的E-R图如下图所示::
管理员实体主要存储管理信息包罗用户名、暗码、角色。管理员信息属性图如图4-5所示。

图4-5 管理员信息实体属性图

1、生产培训管理信息实体图如图4-6所示:

图4-6生产培训管理实体图

2、管理员信息实体图如图4-7所示:


图4-7管理员信息实体图

4.3  数据库表计划
当安全生产培训管理平台在运行的时候,数据库要能确保自己的独立性,想要哪部分的数据就选择相应的设置选项,对应的数据就会以表格的形式展现出来。当对这一个功能进行设置,他就会与数据库进行连接,会在对话框中弹出相应的数据源。





chart





字段名称

范例

长度

不是null

主键

字段阐明

chart_id

int

10


主键

谈天ID

user_id

int

11



用户ID

title

varchar

64



标题

content

longtext

0



内容

nickname

varchar

32



昵称

avatar

varchar

255



头像

create_time

timestamp

0



创建时间

update_time

timestamp

0



更新时间

reply_id

int

11



回复ID






collect





字段名称

范例

长度

不是null

主键

字段阐明

collect_id

int

10


主键

收藏ID

user_id

int

10



收藏人ID

source_table

varchar

255



泉源表

source_field

varchar

255



泉源字段

source_id

int

10



泉源ID

title

varchar

255



标题

img

varchar

255



封面

create_time

timestamp

0



创建时间

update_time

timestamp

0



更新时间






comment





字段名称

范例

长度

不是null

主键

字段阐明

comment_id

int

11


主键

批评ID

user_id

int

11



批评人ID

reply_to_id

int

11



回复批评ID空为0

content

longtext

0



内容

nickname

varchar

255



昵称

avatar

varchar

255



头像地点

create_time

timestamp

0



创建时间

update_time

timestamp

0



更新时间

source_table

varchar

255



泉源表

source_field

varchar

255



泉源字段

source_id

int

10



泉源ID






learning_courseware





字段名称

范例

长度

不是null

主键

字段阐明

learning_courseware_id

int

11


主键

学习课件ID

courseware_name

varchar

64



课件名称

courseware_type

varchar

64



课件范例

cover

varchar

255



封面

release_time

date

0



发布时间

content_introduction

longtext

0



内容介绍

related_materials

varchar

255



相干质料

hits

int

11



点击数

praise_len

int

11



点赞数

recommend

int

11



智能推荐

create_time

datetime

0



创建时间

update_time

timestamp

0



更新时间






production_training





字段名称

范例

长度

不是null

主键

字段阐明

production_training_id

int

11


主键

生产培训ID

training_topic

varchar

64



培训主题

cover

varchar

255



封面

trainee_no

int

11



培训员工号

full_name

varchar

64



姓名

department

varchar

64



部门

training_time

date

0



培训时间

training_place

varchar

64



培训地点

training_materials

varchar

255



培训质料

training_content

longtext

0



培训内容

recommend

int

11



智能推荐

create_time

datetime

0



创建时间

update_time

timestamp

0



更新时间






shared_resource





字段名称

范例

长度

不是null

主键

字段阐明

shared_resource_id

int

11


主键

共享资源ID

resource_name

varchar

64



资源名称

resource_type

varchar

64



资源范例

source

varchar

64



泉源

release_time

date

0



发布时间

share_link

varchar

255



共享链接

content_introduction

text

0



内容介绍

hits

int

11



点击数

praise_len

int

11



点赞数

recommend

int

11



智能推荐

create_time

datetime

0



创建时间

update_time

timestamp

0



更新时间






shared_resource_classification





字段名称

范例

长度

不是null

主键

字段阐明

shared_resource_classification_id

int

11


主键

共享资源分类ID

resource_type

varchar

64



资源范例

remarks

varchar

64



备注

recommend

int

11



智能推荐

create_time

datetime

0



创建时间

update_time

timestamp

0



更新时间






slides





字段名称

范例

长度

不是null

主键

字段阐明

slides_id

int

10


主键

轮播图ID

title

varchar

64



标题

content

varchar

255



内容

url

varchar

255



链接

img

varchar

255



轮播图

hits

int

10



点击量

create_time

timestamp

0



创建时间

update_time

timestamp

0



更新时间






staff





字段名称

范例

长度

不是null

主键

字段阐明

staff_id

int

11


主键

员工ID

employee_id

varchar

64



员工工号

full_name

varchar

64



姓名

department

varchar

64



部门

position

varchar

64



职位

examine_state

varchar

16



审核状态

recommend

int

11



智能推荐

user_id

int

11



用户ID

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-1所示。

图5-1系统功能界面图

首页功能代码如下:

package com.project.demo.utils;

import java.util.UUID;

/**
 * <p>
 * 高效GUID产生算法(sequence),基于Snowflake实现64位自增ID算法。 <br>
 */
public class IdWorker {

    private IdWorker() {
    }

    /**
     * 主机和进程的机器码
     */
    private static Sequence worker = new Sequence(0, 0);

    public static long getId() {
        return worker.nextId();
    }

    /**
     * 由于js精度问题,只能处理到15位,以是一般情况下将其转换成字符串
     * @return
     */
    public static String getIdAsString() {
        return String.valueOf(getId());
    }

    /**
     * <p>
     * 获取去掉"-" UUID
     * </p>
     */
    public static synchronized String get32UUID() {
        return UUID.randomUUID().toString().replace("-", "");
    }

}
entity实体类,使用java类去映射数据库中的数据库表,以AccessToken.java为例,里面含有数据库表名称,表中的主键字段,表中其他字段与Java属性间的映射,代码如下:
/**
 * 暂时访问牌(AccessToken)表实体类
 *
 */
@TableName("access_token")
@Data
@EqualsAndHashCode(callSuper = false)
public class AccessToken implements Serializable {

    private static final long serialVersionUID = 913269304437207500L;

    /**
     * 暂时访问牌ID
     */
    @TableId(value = "token_id", type = IdType.AUTO)
    private Integer tokenId;

    /**
     * 暂时访问牌
     */
    @TableField(value = "token")
    private String token;

    /**
     * 最大寿命:默认2小时
     */
    @TableField(value = "maxage")
    private Integer maxage;

    /**
     * 创建时间:
     */
    @TableField(value = "create_time")
    private Timestamp createTime;

    /**
     * 更新时间:
     */
    @TableField(value = "update_time")
    private Timestamp updateTime;

    /**
     * 用户信息
     */
    @TableField(value = "user_id")
    private Integer user_id;

}
   

   用户注册,在用户注册页面通过填写用户名、暗码、姓名、手机、邮箱、地点等信息完成用户注册,如图5-2所示。在个人中心页面通过填写用户名、暗码、姓名、性别、上传图片、手机、邮箱、地点等信息进行信息更新,如图5-3所示。

图5-2用户注册界面图


注册代码如下:

  /**
     * 注册
     * @return
     */
    @PostMapping("register")
    public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
        // 查询用户
        Map<String, String> query = new HashMap<>();
        Map<String,Object> map = service.readBody(request.getReader());
        query.put("username",String.valueOf(map.get("username")));
        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);
}

    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){
        E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
        baseMapper.insert(entity);
        log.info("[{}] - 插入操纵:{}",entity);
}
共享资源,共享资源页面可以查看资源名称、资源范例、泉源、发布时间等操纵。共享资源如下图5-3所示:

图5-3共享资源界面

共享资源代码如下:

 public Map<String, Object> success(Object o) {
        Map<String, Object> map = new HashMap<>();
        if (o == null) {
            map.put("result", null);
            return map;
        }
        if (o instanceof List) {
            if (((List) o).size() == 1) {
               o =  ((List) o).get(0);
                map.put("result", o);
            }else {
                String jsonString = JSONObject.toJSONString(o);
                JSONArray objects = service.covertArray(JSONObject.parseArray(jsonString));
                map.put("result", objects);
            }
        } else if (o instanceof Integer || o instanceof String) {
            map.put("result", o);
        } else {
            String jsonString = JSONObject.toJSONString(o);
            JSONObject jsonObject = JSONObject.parseObject(jsonString);
            JSONObject j = service.covertObject(jsonObject);
            map.put("result", j);
        }
        return map;
}

学习课件,学习课件页面可以查看课件名称、课件范例、发布时间等操纵。学习课件如下图5-4所示:

图5-4前台学习课件界面

学习课件代码如下:
 @PostMapping("/upload")
    public Map<String, Object> upload(@RequestParam(value = "file",required=false) MultipartFile file,HttpServletRequest request) {
        log.info("进入方法");
        if (file.isEmpty()) {
            return error(30000, "没有选择文件");
        }
        try {
            //判断有没路径,没有则创建
            String filePath = request.getSession().getServletContext().getRealPath("\\") +"upload\\";
//            String filePath = System.getProperty("user.dir") + "\\target\\classes\\static\\upload\\";
            File targetDir = new File(filePath);
            if (!targetDir.exists() && !targetDir.isDirectory()) {
                if (targetDir.mkdirs()) {
                    log.info("创建目录成功");
                } else {
                    log.error("创建目录失败");
                }
            }
//            String path = ResourceUtils.getURL("classpath:").getPath() + "static/upload/";
//            String filePath = path.replace('/', '\\').substring(1, path.length());
            String fileName = file.getOriginalFilename();
            int lastIndexOf = fileName.lastIndexOf(".");
            //获取文件的后缀名 .jpg
            String suffix = fileName.substring(lastIndexOf);
            fileName = IdWorker.getId()+suffix;
            File dest = new File(filePath + fileName);
            log.info("文件路径:{}", dest.getPath());
            log.info("文件名:{}", dest.getName());
            file.transferTo(dest);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("url", "/api/upload/" + fileName);
            return success(jsonObject);
        } catch (IOException e) {
            log.info("上传失败:{}", e.getMessage());
        }
        return error(30000, "上传失败");
}
5.3  台管理员功能模块

用户管理,管理员进入系统可以对用户管理管理进行添加、修改等操纵。用户管理如下图5-5所示:

图5-5用户管理界面图

生产培训,在生产培训页面,管理员通过对培训主题、封面、培训员工号、姓名、部门、培训内容、培训时间、培训地点、培训资料,进行添加、查看、修改等操纵。生产培训如下图5-6所示:

图5-6生产培训管理界面

管理员进入系统可以对共享资源、资源范例、泉源、发布时间、共享链接、内容管理进行添加、修改及查看批评等操纵。共享资源如下图5-7所示:

图5-7共享资源功能界面图


第6章  系统测试

6.1  测试目的
随着互联网不断的发展,目前各大领域都使用互联网进行了信息的管理,质量问题是很重要的标准,也决定着是否有更多的人使用。以是软件的质量我们必须要把关,必须要把软件做好,做到位,少出不须要的问题,如许才气有更多的用户使用,而且得到更多的推广。以是,我们在开辟完系统后,需要进行大量的测试,以确保系统的稳定性和可使用性,并要确定系统的质量能否做到满足不同人的需求。这是系统在开辟计划中非常重要的环节,测试的结果直接关系到系统的好坏。
集成测试:在系统测试当中会出现很多的问题,我们要实时的进行标注而且在进行测试的时候要接纳自动化的测试,如许即准确又快速,而且不会出现疲劳,手动的测试很轻易出现疲劳期,而且测试的结果也有时候会堕落,以是在测试的时候才去自动测试时最好的测试方法。
在测试的过程中实时的发现问题,而且进行问题的解决,如许计划出的系统可以正常稳定的运行,不会出现巨大的问题。我所进行的软件测试参照以下三个步调进行测试:
(1)模块测试:对系统中的每一项都进行针对的测试,发现并找到问题。
(2)系统测试:让系统长时间进行各种情况下的运行,反馈运行期间的稳定性问题并解决。
(3)验收测试:其他测试完成后,最后检测阶段,确保软件准备停当。
6.2  测试方法
在对系统进行测试的时候我们主要应用到两种测试的方法,通过测试我们就能找出可能存在的问题保证系统成功运行。
从软件的内部构造和具体实验是否有关系的观点来看:黑盒测试和白盒测试。
1)黑盒测试:测试系统功能,当用户进行相应的操纵时,系统是否可以或许实时且准确的反馈数据,并执行相应功能。需要对功能以及使用方法进行具体的测试,保证所有的操纵信息都可以或许完整的输出输入。
2)白盒测试:主要是对系统的布局进行测试,了解系统在运行过程中是否可以正常的工作。
安全生产培训管理平台的测试也会从下面几方面进行:
(1)窗体测试:例如用户登录界面,在用户名和暗码输入时,需要界面窗口弹出,给予用户反馈,我对窗口的计划进行了测试,确保每一个窗口在用户进行相应操纵后,可以或许实时的弹出。
(2)数据跟踪:进行数据跟踪,我们就能知道系统功能是否在顺利的执行当中。将数据库中的相干的信息进行变更,弹出我们需要的相对应的数据信息。同时,在追踪过程中,我们也更轻易的发现系统的问题所在,便于解决问题和维护系统。
(3)综合测试:完成上述测试后,需要对系统进行由内而外的重新检测,来宏观的发现系统中存在的问题,而且实时的进行解决,系统的计划要结合实际的使用情况有针对性的进行开辟,可以满足不同人的需求。
6.3  功能测试
本安全生产培训管理平台计划基本到达我抱负的开辟状态,在各个功能的运行方面,表现较为良好,基本满足用户的使用需求,实时矫正了较多的错误信息。总体说来,软件通过了相应的测试。
表6-1:用户登录测试表

模块名称

测试用例

预期结果

实际结果

是否通过

登录模块

用户名:admin   暗码:123  

弹堕落误提示,提示暗码错误

弹堕落误提示,提示暗码错误

通过

登录模块

用户名:123   

暗码:admin   

弹堕落误提示,提示用户名错误

弹堕落误提示,提示用户名错误

通过

登录模块

用户名:admin   

暗码:admin   

管理员登录成功

管理员登录成功

通过



表6-3:修改暗码测试表

模块名称

测试用例

预期结果

实际结果

是否通过

修改暗码模块

原暗码:666

新暗码:123

确认暗码:123  

弹堕落误提示,提示原暗码错误

弹堕落误提示,提示原暗码错误

通过

修改暗码模块

原暗码:admin   新暗码:123

确认暗码:333  

弹堕落误提示,提示确认暗码不一致

弹堕落误提示,提示确认暗码不一致

通过

修改暗码模块

原暗码:admin   新暗码:123

确认暗码:123  

暗码修改成功

暗码修改成功

通过


6.4  测试结论
测试的过程要按照指定好的计划一步一步的实验,测试时候肯定不要发急,而且将测试的结果进行具体的记录,我们在进行测试的时候做好选择自动化的测试,如许更加的准确也更快捷,假如接纳人工测试的方法就不会这么的方便,很可能会出现一些问题,而且极其测试不会疲劳也不会出现问题。在测试的时候肯定要非常专注,时候关注着测试的结果,一旦发现非常实时进行修改,;最后,测试完之后的文档应该生存下来,方便以后测试时用到。
通过测试,我们也可以直观的感受到,在我们最开始进行系统计划的时候,先把思路理清楚,才气有时机把代码写好。有好的逻辑性的代码在后期的测试中才气避免出现问题,也可以给我们节流很多的时间和不须要的操纵。

第7章 结  论

 安全生产培训管理平台为用户提供了公平的、相互包容的、操纵方便的使用系统,基本满足了用户的使用需要,以及我最初的开辟目标和方向。Java语言、MySQL数据库等技术时是我开辟的基础,这些技术都有各自的优点,学好这些技术,至关重要。通过这些优点计划出来的系统可以或许正常稳定的运行,而且可以满足人们的所有需求,在对系统的需求以及各个模块进行了具体的分析后,有针对性的进行计划,最后通过测试,系统可以或许正常的运行,该安全生产培训管理平台计划完成。
本次开辟过程中使用的是Java技术,该技术具有代码编写简单方便,对平台没有要求对技术方面也没有要求,而且有很好的面像对象性,以是在技术方面是相当成熟的。使用java技术作为系统主要的技术支持可以使得系统可以或许正常的运行而且实现相应的功能。在这次的系统的计划过程中碰到了很多的困难,幸好有老师同学们的帮助,在他们的帮助下完成了这次系统的计划。
通过这次安全生产培训管理平台的开辟,我参考了很多相干系统的例子,取长补短,汲取了其他系统的长处,渐渐对该系统进行了美满,但是该系统照旧有很多的不足之处,有待以后进一步学习。
实践证实,安全生产培训管理平台有着非常好的发展前景,经过测试运行,系统各项功能都非常美满,界面美丽,使用方便,操纵轻易,在技术理论上已经成熟。


参考文献

[1]李乐.Java语言应用研究[J].智慧中国,2022(09):80-81.
[2]马鸿飞,丁丽娜.基于MySQL的验光数据库[J].科技资讯,2022,20(17):8-10.DOI:10.16661/j.cnki.1672-3791.2201-5042-9296.
[3]郑戟明,董云朝,柳青.MySQL数据库数据导入导出方法的探讨[J].电脑知识与技术,2022,18(22):24-25.DOI:10.14004/j.cnki.ckt.2022.1517.
[4]宋旸.使用Java语言开辟Web应用软件的知识探讨[J].中国设备工程,2022(14):121-123.
[5]杨卓凡.基于MySQL不同存储引擎下数据存储服从研究[J].电脑知识与技术,2022,18(21):18-20.DOI:10.14004/j.cnki.ckt.2022.1232.
[6]曹奇丽.智慧教学在“Java语言课程”中的应用探索[J].信息系统工程,2022(06):157-160.
[7]贺斌.盘算机软件开辟中JAVA语言的应用研究[J].中国设备工程,2022(11):247-249.
[8]Wu Daiwen. The Application and Management System of Scientific Research Projects Based on PHP and MySQL[J]. Journal of Interconnection Networks,2022,22(Supp02).
[9]黄加伟,夏兴,冯子潇.基于SSM+VUE框架的楼宇电能综合管控系统[J].盘算技术与自动化,2022,41(01):184-188.DOI:10.16339/j.cnki.jsjsyzdh.202201033.
[10]杨迎.Java语言非常处理机制的分析[J].电子技术,2022,51(03):42-43.
[11]曹嵩彭,王鹏宇.浅析Java语言在软件开辟中的应用[J].信息记录质料,2022,23(03):114-116.DOI:10.16009/j.cnki.cn13-1295/tq.2022.03.009.
[12]孟维成.对基于Java语言实现数据库的访问研究[J].软件,2022,43(02):169-171.
[13]吴华,李湉,张世贵,李心灵,杨滔.STEP中EXPRESS语言到Java语言的映射方法[J].机器工程师,2022(02):117-120.
[14]王慧芳,孙方,陈玉,朱茜.基于SSM框架的大数据个性化推荐系统计划[J].信息与电脑(理论版),2022,34(02):90-92.
[15]刘学玉.JAVA编程语言在盘算机软件开辟中的应用[J].电子技术与软件工程,2022(01):57-60.
[16]Siyi Liu. Explore Java Language and Android Mobile Software Development[J]. International Journal of Frontiers in Engineering Technology,2021,3.0(2.0).
[17]Kevin Kline. The Java Language Extension for SQL Server Is Now Open Source[J]. Database Trends and Applications,2020,34(4).
[18]向成艺, “三项岗位人员”安全生产本领省级网络考核平台建立及推广应用. 四川省,四川省安全科学技术研究院,2020-05-26.
[19]贾娜莉,徐阳,李莉莉,李惠.“互联网+”安全培训的研究与应用[J].安全,2018,39(10):57-59.
[20]吴立活,刁娴静,王智杰.安全生产教育培训管理系统的开辟与应用[J].中国矿业,2017,26(S2):401-405+411.

                      致  谢
光阴似箭,一晃大学生活即将已往了。一直以严谨的态度和积极的热情投身于学习和工作中,虽然有竞争,也有泪水,但是通过我不断学习和奋斗不断的美满自己,不仅很好的完成了我的学业而且也让我的各方面得到了发展,取得了很大的进步。
大学的生活也即将结束,虽然也有许多的不舍,但是终究是要告别的。追念大学的学习生活,有泪水也有汗水。在此期间我严格要求自己,凭着对知识的猛烈追求,受苦研讨,勤奋好学,态度端正,目标明确,牢固的掌握了一些专业知识和技能,做到了理论联系实际。除了专业知识的学习外,我还不断的扩展我的知识面,从不同的领域以不同的方式来获得新的知识。夺取成为一名各方面都很及格的大学生。
这次的毕业计划,是我独自完成周期最长,也是耗力最大的一个项目。值得庆幸的是,在我毕业计划完成的过程当中,有许多帮助我的同学和老师。在几个月的开辟过程中,我碰到了大巨细小无数个问题。是我的舍友和老师,不断地帮助鼓励。
我的指导老师,在自身工作非常繁忙的情况下,依然能做到实时规复我们发去的问题邮件,并抽时间对我们进行线下的辅导。指出我们计划上的失误,逻辑错误以及学习规划问题,可以说没有导师的帮助,我的毕设会陷入死胡同,是导师为我指点了迷津,像迷雾中的路灯,为我指明方向!


   
请关注点赞+私信博主,免费领取项目源码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表