计算机毕业设计项目推荐,29681 防疫小区人员出入申请智能管理系统(开题答辩+程序定制+全套文案 )上万套实战教程手把手教学JAVA、PHP,node.js,C++、python、大屏数据可视化等

 

科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设防疫小区人员出入申请智能管理系统。

本设计主要实现集人性化、高效率、便捷等优点于一身的防疫小区人员出入申请智能管理系统 ,完成系统用户、出门登记、入门登记、健康打卡、发热报备、接种信息、紧急求助、报警管理、疫情信息等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。防疫小区人员出入申请智能管理系统使用Java语言,采用基于 MVVM模式的ssm技术进行开发,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,配合Java+ssm技术完成系统的开发。

关键词:防疫小区人员出入申请智能管理系统 ;MYSQL数据库;ssm框架

Intelligent Management System for Personnel Entry and Exit Application in Epidemic Prevention Community

Abstract

The rapid development of technology has caused tremendous changes in people's daily lives, and the rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The arrival of the information age has become an unstoppable fashion trend, and the history of human development is entering a new era. In practical application, the working rules and development steps of the application software are to use Java technology to build an intelligent management system for personnel entry and exit applications in epidemic prevention communities.

This design mainly implements an intelligent management system for personnel entry and exit applications in epidemic prevention communities that combines the advantages of humanization, efficiency, and convenience. It completes functional modules such as system users, exit registration, entry registration, health check-in, fever reporting, vaccination information, emergency help, alarm management, and epidemic information. The system communicates with the server through a browser to achieve data interaction and changes. This system improves work efficiency and reduces errors and omissions in data storage through scientific management and convenient services. The intelligent management system for personnel access application in the epidemic prevention community uses Java language and adopts the MSM technology based on MVVM mode for development. In terms of data, Microsoft's MySQL relational database is mainly used as the data storage medium, and the system development is completed with Java+ssm technology.

Key words: Intelligent management system for personnel entry and exit applications in epidemic prevention communities; MYSQL database; SSM framework

  

 

ABSTRACT

  

1 绪论 1

1.1背景及意义 1

1.2研究内容 1

第2章 开发技术介绍 3

2.1 B/S架构

2.2 MySQL数据库

2.3 ssm框架介绍 4

3 系统分析 6

3.1可行性分析 6

3.1.1经济可行性 6

3.1.2技术可行性 6

3.1.3操作可行性 6

3.1.4 时间可行性 7

3.1.5 法律可行性 7

3.2需求分析 7

3.3业务流程分析 7

3.4数据流程分析 8

4 系统设计 9

4.1系统结构设计 9

4.2功能模块设计 9

4.3数据库设计 10

4.3.1 E-R图设计 10

4.3.2表设计 11

5  系统实现 20

5.1 用户功能模块 20

5.2管理员功能模块 22

6  系统测试 25

6.1 程序测试基本概念 25

6.2 程序测试具体内容 25

6.2.1 测试的重要性及目的 25

6.2.2登录测试 25

6.2.3学生管理模块测试 26

6.3 系统的优点 27

7  总结 38

   29

参考文献 30

1 绪论

1.1背景及意义

系统管理也都将通过计算机进行整体智能化操作,对于防疫小区人员出入申请智能管理系统所牵扯的管理及数据保存都是非常多的,例如管理员;系统用户、出门登记、入门登记、健康打卡、发热报备、接种信息、紧急求助、报警管理、疫情信息等,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比较传统,而且想要统计数据信息比较麻烦,还受时间和空间的影响,所以为此开发了防疫小区人员出入申请智能管理系统;为用户提供了方便管理平台,方便管理员查看及维护,并且可以通过需求进行内容的编辑及维护等;对于用户而言,可以随时进行查询所需信息,管理员可以足不出户就可以获取到系统的数据信息等,而且还能节省用户很多时间,所以开发防疫小区人员出入申请智能管理系统给管理者带来了很大的方便,同时也方便管理员对用户信息进行处理。

本论文防疫小区人员出入申请智能管理系统主要牵扯到的程序,数据库与计算机技术等。覆盖知识面大,可以大大的提高系统人员工作效率。

1.2研究内容

1.不同管理员的登录问题:根据管理员的类别(管理员、居民用户)实现管理员操作权限的区分并显示不同的操作界面。

2.数据库的连接问题:数据库连接为系统中的关键技术。

3.数据的一致性和安全问题:本系统必须保证数据的一致性和安全,才能实现有效的管理。不能让没有权限的管理员对数据进行操作并且定期对数据库进行备份。

4.界面开发:系统界面的设计很重要,要使界面具有亲和力。

5.分析信息化现状;

6.研究防疫小区人员出入申请智能管理系统的现状及存在的问题;

7.研究系统平台的总体架构、总体设计、数据库设计、数据库安全设计及功能设计;

8.研究平台各个子系统的功能及实现的方法、信息技术的融合、信息安全技术的维护;

9.进行防疫小区人员出入申请智能管理系统的功能设计。

2 开发技术介绍

2.B/S架构

B/S架构(浏览器/服务器)是当前应用最为广泛的一种架构,能够使系统的开发变得容易、易操作、易于维护。当你在你的电脑上安装一个数据库和几个非常常见的浏览器时,你就可以使用这个结构。B/S结构可以直接用于 B/S系统,并且 B/S架构可以在实际应用中大大降低了系统的运行维护。在 B/S平台上,各数据库彼此独立,具有很高的安全性。由于 B/S架构可以清晰地观察到系统所处理的业务,使管理者可以及时做出决定,从而避免了企业的亏损。B/S架构的本质特征是集中式管理,用户通过系统产生的数据,将其存入数据库,便于以后的应用,从而达到了各种需要。

B/S模型由一个浏览器、一个网络服务器、一个数据库服务器三个层级构成。数据管理采用了当前大部分现有B/S系统的表现层、应用层和数据层,Web浏览器是为了满足用户的要求而设计的,在数据处理和逻辑过程中使用的中间应用层,从而形成分布式的运行模式。B/S体系结构的逻辑是:在前端完成的处理,将主要的业务逻辑交给后台,而前端只负责少量的请求、渲染等。由于因特网技术的迅速发展,B/S体系结构使得任何时间、任何地点都能访问到该系统。

图2-1 B/S模式三层结构图

2.2 MySql数据库

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

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

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

2.ssm框架介绍

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

 Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
 SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
 mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

3 系统分析

3.1可行性分析

本文的设计的系统将会分别从经济的可行性,技术的可行性以及操作的可行性等方面进行全面的可行性的分析。

3.1.1经济可行性

本系统是防疫小区人员出入申请智能管理系统,面向的是电脑用户所以成本并不高,维护和调试只需个别成员参与,所以人力投入也很少。虽说人力和资金的投入不是很多,但是面临的增益是十分的可观尤其是从长远角度来看,所谓知识是无价的,而保管者需要面临很多困扰,而防疫小区人员出入申请智能管理系统很大程度上解决了这一问题,未来,需要投入到资源保管的人十分的少,不需要很多的人就够了,人少却又能保证信息的安全,那么对人员的资金就可以减少不少,并且工作人员并不会很辛苦。

使用的数据库是MySQL数据库,对于小型网站来讲是很低的成本,大大减少了空间,而原有的空间则可以用来处理别的事物。

3.1.2技术可行性

在技术方面也是完全可以做到的,目前所拥有的技术足以开发出一个完整的防疫小区人员出入申请智能管理系统。因为面向的对象较为单一,所以所需要的技术并不复杂,皆是学校内所学到的知识,而且所需要的工具也不是很复杂。本系统采用ssm技术、Java编程语言和Mysql数据库进行开发设计,作为计算机专业学生,在学校期间就接触到许多关于编程方面的知识,当然也包括各种编程软件,对他们的了解度也比较系统,所以从技术方面来讲也是可以实行的。

3.1.3操作可行性

本系统的开发,运用的是基础技术,面向的是单一群体,所以不会造成信息拥堵和崩溃的局面,所以运行时是可以较快的执行用户的命令的。而存在于页面的数据都会以表单的形式传送到数据库,所以不会造成混乱。

就目前而言,计算机普及的时代,学习维护和运用系统并不会很困难,所以人员方面是可以实行的,而且系统可以运用在不同的计算机上,所以这里也是可以运行的。

3.1.4 时间可行性

就时间而言,因为项目并不是很庞大,所以是可以在时间范围内完成的。但是需要好好把握时间的安排,因为本次毕业设计是单人的,所以需要自我监督和敦促,不能见异思迁,一定要先有一个明确的时间规划表。才能在有限的时间内完成本系统

3.1.5 法律可行性

本系统所用的技术和资源均是合法的,引用的部分都有注明,参考文献等也是合乎规定的,是属于个人的创作成果,没有涉及到危害他人的知识产权的行为

3.2需求分析

针对现存的问题和需要,通过功能需求的分析,特建立了数字化、信息化的防疫小区人员出入申请智能管理系统。

本系统主要包含了登录、系统用户、出门登记、入门登记、健康打卡、发热报备、接种信息、紧急求助、报警管理、疫情信息等多个功能模块。下面分别简单阐述一下这几个功能模块需求。不同的权限对应相应的功能模块的需求,管理员权限的级别是最高的,所以所对应的需求是最多的,根据不同的权限分别简单阐述一下各个权限的需求。

3.3业务流程分析

总体业务流程:以管理员的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统,管理系统等功能操作 。

系统的业务流程如下图所示。

3-1系统业务流程图

3.4数据流程分析

数据流图的简称为DFD,是通过使用图形的方法对系统所具备的逻辑功能进行阐述,描述系统数据的流向和逻辑变换。由于该方法能将难以阐述的问题进行表述,因此被开发者广泛应用,是当前应用范围较为广泛的结构化系统分析方法。

零层数据流程是流程中最抽象的一层,它包括了登录管理、管理员功能管理和检索维护管理等功能模块,在登录模块使用到的数据存储有管理员账户信息文档、管理员信息文档,管理员功能管理模块需要的存储是管理员添加信息文档、查询信息文档、删除信息文档,检索维护是通过以上这些文档信息通过关键词进行搜索。

系统的1层数据流图如下图所示。

3-2系统数据流图(1层)

2层为管理员操作后台数据流图,管理员可以分别通过添加、修改和删除来对系统管理员进行管理,如下图所示:

3-4系统数据流图(2层)

4 系统设计

4.1系统结构设计

系统设计主要是管理员登录后对整个系统相关操作进行处理,可进行管理员的添加和删除,系统后台首页、系统用户、出门登记、入门登记、健康打卡、发热报备、接种信息、紧急求助、报警管理、疫情信息等操作。

系统的功能结构图如下图所示。

     

4-1系统功能结构图

4.2功能模块设计

管理员模块是本系统重要开发部分,它的使用对象是系统管理员,在进入管理员模块前,需要输入正确的用户姓名、密码和验证码,才能进入管理员模块。界面右上方有退出系统按钮,点击可退出管理员模块界面。

系统用户:管理员添加、管理、查询管理员信息并有修改他们密码的权限。

出门登记管理:管理员可以查询、添加、修改或删除出门登记的具体信息。

入门登记管理:管理员可以查看查询、添加、修改或删除入门登记的具体信息。

接种信息管理:管理员可以查询、添加、修改或删除接种的具体信息。

疫情信息管理:管理员可以查询、添加、修改或删除疫情的具体信息。

4.3数据库设计

系统里尤为关键的部分是在数据库方面,需要十分清晰的思路,所以从开始的设计时需要做到确立模块之间的联系,从而可以很明确的建立表间的联系和表中所需的内容。设计数据库还有一点是减少表的繁杂的创建,所以联系很关键,可以大大的减少,数据表中重复的事项。由此可以保证数据的完整和统一,不会造成数据的错误和重复,并且可以使数据得到数据库安全的保护,会使用户更加的放心

4.3.1 E-R图设计

概念设计是整个数据库设计的关键,在概念设计阶段,由需求分析得到了E-R模型。E-R图是识别功能模型与数据模型间关联关系的,在主题数据库的抽取和规范化的过程中,采用的是简化的E-R图表示方法,从而避免过繁过细的E-R图表示影响规划的直观和可用性。是对现实世界的抽象和概括,是数据库设计人员进行数据可设计的有力工具,能够方便直接地表达应用中的各种语义知识,令一方面它简单、清晰、易于用户理解

管理员实体包括管理员名称、密码和权限三个属性。

居民用户ER图如下图所示。

4-2居民用户ER

发热报备ER图如下图所示。

4-3发热报备ER

4.3.2表设计

数据库表是数据库重要的组成部分,其实数据库只是一个框架,数据库表才是数据库的本质,本系统数据库表如下:

表alarm_management (报警管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

alarm_management_id

int

10

0

N

Y

报警管理ID

2

alarm_date

date

10

0

Y

N

报警日期

3

resident_users

int

10

0

Y

N

0

居民用户

4

full_name

varchar

64

0

Y

N

姓名

5

alarm_type

varchar

64

0

Y

N

报警类型

6

alarm_content

text

65535

0

Y

N

报警内容

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表emergency_assistance (紧急求助)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

emergency_assistance_id

int

10

0

N

Y

紧急求助ID

2

date_of_assistance

date

10

0

Y

N

求助日期

3

seeking_help_from_residents

int

10

0

Y

N

0

求助居民

4

full_name

varchar

64

0

Y

N

姓名

5

reasons_for_seeking_help

text

65535

0

Y

N

求助原因

6

remarks

varchar

64

0

Y

N

备注信息

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表entry_registration (入门登记)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

entry_registration_id

int

10

0

N

Y

入门登记ID

2

entry_date

date

10

0

Y

N

入门日期

3

resident_users

int

10

0

Y

N

0

居民用户

4

full_name

varchar

64

0

Y

N

姓名

5

entry_type

varchar

64

0

Y

N

入门类型

6

remarks

varchar

64

0

Y

N

备注信息

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表epidemic_information (疫情信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

epidemic_information_id

int

10

0

N

Y

疫情信息ID

2

data_date

date

10

0

Y

N

数据日期

3

city_name

varchar

64

0

Y

N

城市名称

4

number_of_infected_persons

int

10

0

Y

N

0

感染人数

5

number_of_cured_people

int

10

0

Y

N

0

治愈人数

6

death_toll

int

10

0

Y

N

0

死亡人数

7

remarks

varchar

64

0

Y

N

备注信息

8

recommend

int

10

0

N

N

0

智能推荐

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表exit_registration (出门登记)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

exit_registration_id

int

10

0

N

Y

出门登记ID

2

departure_date

date

10

0

Y

N

出门日期

3

resident_users

int

10

0

Y

N

0

居民用户

4

full_name

varchar

64

0

Y

N

姓名

5

exit_type

varchar

64

0

Y

N

出门类型

6

application_description

varchar

64

0

Y

N

申请描述

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表fever_report (发热报备)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

fever_report_id

int

10

0

N

Y

发热报备ID

2

reporting_date

date

10

0

Y

N

报备日期

3

resident_users

int

10

0

Y

N

0

居民用户

4

reporter

varchar

64

0

Y

N

报备人

5

resident_relations

varchar

64

0

Y

N

居民关系

6

report_body_temperature

varchar

64

0

Y

N

报备体温

7

health_code

varchar

255

0

Y

N

健康码

8

journey_code

varchar

255

0

Y

N

行程码

9

examine_state

varchar

16

0

N

N

未审核

审核状态

10

examine_reply

varchar

16

0

Y

N

审核回复

11

recommend

int

10

0

N

N

0

智能推荐

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表health_check_in (健康打卡)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

health_check_in_id

int

10

0

N

Y

健康打卡ID

2

clock_in_date

date

10

0

Y

N

打卡日期

3

resident_users

int

10

0

Y

N

0

居民用户

4

full_name

varchar

64

0

Y

N

姓名

5

todays_body_temperature

int

10

0

Y

N

0

今日体温

6

health_code

varchar

255

0

Y

N

健康码

7

journey_code

varchar

255

0

Y

N

行程码

8

recommend

int

10

0

N

N

0

智能推荐

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表resident_users (居民用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

resident_users_id

int

10

0

N

Y

居民用户ID

2

full_name

varchar

64

0

Y

N

姓名

3

age

varchar

64

0

Y

N

年龄

4

gender

varchar

64

0

Y

N

性别

5

id

varchar

64

0

Y

N

身份证

6

examine_state

varchar

16

0

N

N

已通过

审核状态

7

recommend

int

10

0

N

N

0

智能推荐

8

user_id

int

10

0

N

N

0

用户ID

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表vaccination_information (接种信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

vaccination_information_id

int

10

0

N

Y

接种信息ID

2

date_of_vaccination

date

10

0

Y

N

接种日期

3

vaccine_name

varchar

64

0

Y

N

疫苗名称

4

vaccination_location

varchar

64

0

Y

N

接种地点

5

matters_needing_attention

varchar

64

0

Y

N

注意事项

6

remarks

varchar

64

0

Y

N

备注信息

7

recommend

int

10

0

N

N

0

智能推荐

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

第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 用户注册界面

注册关键代码如下所示。

/**

     * 注册

     * @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出门登记界面图

入门登记;在入门登记页面中查看入门日期、居民用户、姓名、入门类型、备注信息等内容;并进行详细操作,如图5-4所示。 

图5-4入门登记界面图

健康打卡;在健康打卡页面中查看打卡日期、居民用户、姓名、今日体温、健康码、行程码等内容;并进行详细操作,如图5-5所示。 

图5-5健康打卡界面图

发热报备;在发热报备页面中查看报备日期、居民用户、报备人、居民关系、报备体温、健康码、行程码等内容;并进行详细操作,如图5-6所示。

图5-6 发热报备界面图

接种信息;在接种信息页面中查看接种日期、疫苗名称、接种地点、注意事项、备注信息等内容;并进行详细操作,如图5-7所示。

图5-7 课程安排界面图

报警管理,在报警管理页面中可以看到报警日期、居民用户、姓名、报警类型、报警内容等内容,并进行详细操作,如图5-8所示。

图5-8报警管理界面图

5.2管理员功能模块

管理员等会成功以后会在首页界面以分析图的形式查看到系统中的出门登记统计和入门登记统计信息。界面如下图5-9所示。

图5-9管理员首页界面图

居民用户管理;在居民用户管理页面中可以对昵称、用户名、姓名、年龄、性别、身份证等内容进行查看、添加、修改或删除等操作,如图5-10所示。

图5-10居民用户管理界面图

居民用户管理代码如下。

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

图5-11出门登记管理界面图

健康打卡管理,在健康打卡管理页面中可以查看打卡日期、居民用户、姓名、今日体温、健康码、行程码等内容,并可根据需要进行查看、添加、修改或删除等操作,如图5-12所示。

图5-12健康打卡管理界面图

发热报备管理,在发热报备管理页面中可以查看报备日期、居民用户、报备人、居民关系、报备体温、健康码、行程码等内容,并可根据需要进行查看、添加、修改或删除等操作,如图5-13所示。

图5-13 发热报备管理界面图

    

接种信息管理,在接种信息管理页面中可以查看接种日期、疫苗名称、接种地点、注意事项、备注信息等内容,并可根据需要进行查看、添加、修改或删除等操作,如图5-14所示。

图5-14 接种信息管理界面图

6  系统测试

6.1 程序测试基本概念

程序测试是很重要的一个环节,当自身的程序已经完成时,仍需要测试来保证程序的正确性和可靠性,因为往往此时出现的错误就是用户可能会出现的错误,所以调试变得至关重要。唯有经过多次的调试才能够使系统达到完美的状态,使得用户可以安全,放心的使用程序,保障用户信息的安全是每个系统最基本的需求,因而调试也就是系统的最基本的要求。但是为了保证说最大程度减少开发者的工作量,应当分三个阶段来测试,初期,中期和最终期。前期:主要调试模块间的关系部分,看看是否是正确的,合理的,否则到后面会造成难以修改和总是出错的现象。中期:插入部分数据,看看是否数据库方面连接和设计得当,有些时候理念存在的是不能够在现实中完美实现的,并且调试界面找到最优的布局。最终期:插入全部数据,看是否正确,修改页面看是否能达到最初预期效果,检查功能是否完全实现。

6.2 程序测试具体内容

6.2.1 测试的重要性及目的

1.测试的重要性

只有经过反复的测试,才能够使系统得到最稳定的状态,才能把最好的一面展现给使用的用户,是极为关键的一个步骤。但是往往也是大家极容易忽视的一个部分,因为绝大部分的人认为这个部分是不重要的,但事实并非如此,任何系统不管怎样做都不可能完全去除错误,所以需要测试来最大程度的降低和减少错误。要在多环境下进行测试,以保证用户能够在不同环境配置下都能够正常使用。大多数,用户的需求是不断更新的,所以测试具有十分重要的意义,能够及时的把握到用户的最新动态,做出对系统的修改。

测试的目的

测试是为了让用户能够使用到系统的最好一面,能够充分利用到系统内的跟自己相关的部分。另一方面,从系统开发者的角度来说,这个举措有助于开发者在开发系统的同时能够与用户保持有好的关系,能够使开发的系统减少最多的错误和误差,并且有助于开发,边测试边开发,能够及时解决用户的需求,而开发者也能够减少返工的工作量,保证开发是朝着正确的道路前进的,并且对于用户来说能够定期看到一定的工作成果,也是更有助于提出更好的意见,而不是到末期突然提出大量的工作需求。这样可以使得用户和开发者之间的关系得到一定程度的改善,而开发者也从中得到更多改善系统的方向。

6.2.2登录测试

登录及管理员添加模块是对各个系统中不可缺少的功能之一,为了对在运行过程能正常的操作本项目就要对此进行测试。

1. 使用不同浏览器访问服务器的IP地址。

2. 输入特殊的信息登录系统,例如边界值等。

3. 查看登录及管理员添加之后登录系统所返回的结果。

无论系统管理员还是用户登录时都需要用户名和密码进行登录,当输入正确的用户名和密码观察是否正常登录。登录测试表如下表6-1所示:

6-1登录测试表

名称

功能名称

操作阐述

期盼结果

测试结果

登录信息管理

登录

系统管理员登录时输入

账号:admin密码:admin

进入后台主页面

成功

添加用户登录时输入

账号:zhangchao密码:000000

进入系统首页

成功

管理员可以管理添加用户的信息。添加测试表如下表6-2所示:

6-2添加测试表

名称

功能名称

操作阐述

期盼结果

测试结果

添加信息管理

添加

管理员进入添加用户管理页面

成功显示所有添加用户列表

成功

管理员进入添加用户管理页面,点击删除按钮

删除成功,出现删除成功的提示

成功

用户进入添加页面,按提示输入添加用户信息

添加成功,出现添加成功的提示

成功

6.2.3健康打卡管理模块测试

健康打卡管理信息模块对本界面中的数据和信息进行相对应得基本操作,主要有查看健康打卡,删除健康打卡等。

管理员在可以查看并删除健康打卡。健康打卡管理如表6-3所示:

6-3健康打卡管理测试表

模块名称

功能名称

操作描述

预期结果

测试结果

健康打卡信息管理

查看

管理员进入健康打卡管理页面,查看健康打卡 

所有健康打卡均显示

成功

删除

管理员进入健康打卡管理页面,点击删除按钮 

弹窗提示,删除成功

成功

6.3 系统的优点

本系统的优点在于界面简单,对于有计算机基本操作的人群均可以高效的使用,查询功能可以使使用者在大量的数据搜索时能够快速的找到所需要的内容,开发的结构简单所以便于日后进行维护和更新功能。信息的添加和查询,使得资源得到了充分的利用。功能并不复杂所以执行速度也较快,所以用户可以得到比较良好的体验,系统内部的增删改查也比较人性化,所以比较快捷和精准。用户为管理员用户,而身份而判别使得系统比较明了,更具有安全性,系统内的数据是得到了一定的保护的。而页面上添加用户,新增添了的一个优势在于,添加后的用户,需得到管理员的审核才能够使用,避免了恶意添加或是恶意进入用户内部的举动。并且管理员据有最高权限,保证数据的安全

7  总结

经过几个月的努力还坚持,防疫小区人员出入申请智能管理系统终于完成了,程序功能模块能按照需求来运行,能实现多管理员的迸发使用,但是系统由于设计经验以及旅行团知识的局限性,在本系统的开发过程中,在一些功能方面和业务逻辑方面做得不是很完善,系统还存在一些缺陷。界面的设计从布局到外观,受限于自身的设计功底较低,没能达到自己所要设计的界面要求,另一方面,系统存在一些没有考虑的问题和模块。

在学习的过程中首次进行独立设计工作,编码过程出现了许多问题和困难,原以为正确无误的程序运行过程中不会遇到问题,但是在运行过程中也总会出现各种各样的问题,在调试过程中找不出运行出错的原因。而这些基本问题却都是一些简单的问题,例如标点符号应该是英文状态下的,却因为不好的编程习惯造成了一些中文的符号输入,经过仔细观察和老师的帮组下,还是将问题解决了。

目前系统的功能比较简单,还存在许多瑕疵,这是一份遗憾,也是促进我不断进步的动力。

  

经历了近三个多月的动手实践及老师辛勤的指导和同学朋友热心的帮助下,本人的毕业设计防疫小区人员出入申请智能管理系统的基本功能也基本完成。

此次设计中,通过不断的探讨与学习使我熟悉、使我初步了解了Java相关技术。做的是一个ssm防疫小区人员出入申请智能管理系统,使我对做网站所需要,及运行的环境有了初步的了解,在此次设计中我翻阅了较多的书籍,在有限的时间了丰富了对防疫小区人员出入申请智能管理系统技术的知识也积累了少许的经验。起初对Java的初步认识,通过这次设计更进一步的了解了其工作原理,懂得了配置服务器环境,连接数据库源,在设计过程中,也学会了用ssm设计一个简单的页面,增强了动手的能力,激发了在此方面的兴趣。

但是由于时间、基础及缺乏实践等多方面的问题,还有诸多需要解决的问题依然存在,设计中很多方面考虑不够周全或者考虑不到。

非常感谢我的老师,我的同学,我的朋友并希望在今后的学习生活中不断陪养多方面的兴趣,不断学习进步从而能够实现独立完成。设计中存在的诸多缺点诚肯老师的原谅。

参考文献

[1]付恩狄,姚明亮,梁宇柔,彭伟军.基于JAVA技术的设备绝缘状态自动化监控方法[J].电气自动化,2023,45(02):36-38+41.

[2]苏佳旭,白燕,温晓东.基于Web前端与MySQL数据库的自然灾害应急信息共享平台设计与实现[J].电脑知识与技术,2023,19(05):74-77.DOI:10.14004/j.cnki.ckt.2023.0274.

[3]伍德鹏,李佩学.基于SSM框架的高职院校教学办公用品管理信息系统设计研究[J].轻工科技,2023,39(01):99-101.

[4]常婉纶,谈姝辰,屈小娥,田召.基于SSM框架的二级学院教科研信息共享系统的设计与实现[J].电脑知识与技术,2022,18(34):39-41.DOI:10.14004/j.cnki.ckt.2022.2208.

[5]李亚君. 基于SSM框架的B2C电子商城系统的设计与实现[D].合肥工业大学,2022.DOI:10.27101/d.cnki.ghfgu.2022.000313.

[6]沈志元,张文健.基于Java技术的医院管理系统的设计与实现[J].电脑知识与技术,2022,18(32):38-40+54.DOI:10.14004/j.cnki.ckt.2022.1994.

[7]张丽景,张文川.基于对比分析法的高职“MySQL数据库”课程设计——以兰州石化职业技术大学为例[J].现代信息科技,2022,6(21):188-191.DOI:10.19850/j.cnki.2096-4706.2022.21.046.

[8]曹泽翰.基于SSM框架的流体力学课程虚拟仿真实验平台设计[J].信息与电脑(理论版),2022,34(20):34-36.

[9]杨一帆.服务于MySQL数据库的在线监测系统设计[J].自动化技术与应用,2022,41(10):179-182.DOI:10.20033/j.1003-7241.(2022)10-0179-04.

[10]李罡,周正茂. 基于Java技术实现内存键值数据管理的方法及其装置[P]. 北京市:CN114840498B,2022-09-13.

[11]陈文康, 基于Java的物流仓储信息综合管理系统V1.0. 湖北省,武汉东湖学院,2022-02-01.

[12]刘汪洋,李宁. 一种应用于SSM框架的会话保持方法[P]. 山东省:CN113347235A,2021-09-03.

[13]He Xinbin,Bai Yongbin,Yue Lisen,Wang Haixiao,Liu Yi. Design and Implementation of Information System Based on Java Technology Platform[J]. Journal of Physics: Conference Series,2021,2033(1).

[14]Witsarut Sriratana,Vittaya Khagwian,Sutham Satthamsakul. Analysis of Electric Current by Using MySQL Database on Web Server for Machine Performance Evaluation: A Case Study of Air Conditioning System[J]. 제어로봇시스템학회 국제학술대회 논문집,2020.

[15]Margaretha Ohyver,Jurike V. Moniaga,Iwa Sungkawa,Bonifasius Edwin Subagyo,Ian Argus Chandra. The Comparison Firebase Realtime Database and MySQL Database Performance using Wilcoxon Signed-Rank Test[J]. Procedia Computer Science,2019,157(C).

[16]方春露,杨文琦,陈滔等. 基于Javaweb技术广东省学生体质争优运动处方数据库和视频库的构建[C]//中国生理学会运动生理学专业委员会,北京体育大学.2018年中国生理学会运动生理学专业委员会会议暨“科技创新与运动生理学”学术研讨会论文集.2018年中国生理学会运动生理学专业委员会会议暨“科技创新与运动生理学”学术研讨会论文集,2018:161-162.

免费领取项目源码,请关注●点赞●收藏并私信博主,谢谢~

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值