SSM天山产业园访客与疫情防控系统毕业设计-附源码191123

摘  要

如今计算机行业的发展极为快速,搭载于计算机软件运行的数据库管理系统在各行各业得到了广泛的运用,其在数据管理方面具有的准确性和高效性为大中小企业的日常运营提供了巨大的帮助。自从2020年新冠疫情爆发以来,防疫成了社会关注的重中之重,在天山产业园访客与疫情防控中,一开始对疫情防控都是通过手工方式的,手工管理方式是相当繁琐的,并且手工操作的出错率是相当高的。为了节省在防疫相关的信息管理过程中所需要花费的人力和时间成本,现利用计算机技术开发出一个天山产业园访客与疫情防控系统用于天山产业园区疫情防控以及完成相关记录操作。本文以选择java开发语言中ssm+mysql数据库来存储数据,以B/S为运行模式,开发了一个天山产业园访客与疫情防控系统,划分为了用户和管理员两种角色,实现了对天山产业园防疫信息的查询、预约、登记等功能模块。经过了多次的测试和结果评估,该天山产业园访客与疫情防控系统已经能够满足园区防疫的实际应用的需要并可以成功上线运行使用了。

关键词天山产业园访客与疫情防控javassm

Abstract

Nowadays, the development of computer industry is very fast. The database management system equipped with computer software has been widely used in all walks of life. Its accuracy and efficiency in data management provide great help for the daily operation of large, medium and small enterprises. Since the outbreak of COVID-19 in 2020, epidemic prevention has become the top priority among priorities. In the Tianshan Industrial Park visitors and epidemic prevention and control, the epidemic prevention and control started from the manual way. Manual management is rather cumbersome, and the error rate of manual operation is quite high. In order to save the cost of manpower and time in the process of epidemic prevention related information management, a visitor and epidemic prevention and control system of Tianshan Industrial Park is developed by using computer technology to prevent and control the epidemic situation in Tianshan Industrial Park and complete relevant recording operations. In this paper, SSM + MySQL database in java development language is selected to store data. Taking B / s as the operation mode, a visitor and epidemic prevention and control system of Tianshan Industrial Park is developed. It is divided into two roles: employee, user and administrator. The functional modules such as query, reservation and registration of epidemic prevention information of Tianshan Industrial Park are realized. After many tests and results evaluation, the visitor and epidemic prevention and control system of Tianshan Industrial Park has been able to meet the needs of the practical application of epidemic prevention in the park and can be successfully put into operation.

Key words: Visitors and epidemic prevention and control of Tianshan Industrial Park; java; ssm

目录

1 绪论

1.1 课题研究背景

1.2国内外研究现状

1.3相关技术介绍

2 天山产业园访客与疫情防控系统分析

2.1 可行性分析

2.1.1 技术可行性分析

2.1.2 经济可行性分析

2.2 系统需求分析

2.2.1 功能性需求分析

2.2.2 非功能性分析

2.3 系统用例分析

3 天山产业园访客与疫情防控系统总体设计

3.1 系统模块设计

3.2 数据库设计

3.3.1 数据库概念结构设计

3.2.2 数据库逻辑结构设计

4 天山产业园访客与疫情防控系统设计与实现

4.1 系统首页页面

4.2 注册页面

4.3 登录页面

4.4 园区资讯页面

4.5考勤打卡页面

4.6 预约信息页面

4.7 车辆信息页面

4.8 用户管理页面

4.9 内容管理页面

4.10 部门管理页面

4.11 岗位分类管理页面

5天山产业园访客与疫情防控系统测试

5.1 调试部分问题

5.2 系统测试用例

5.3 系统测试结果

结论

参考文献

  

1 绪论

1.1 课题研究背景

当前,新型冠状病毒感染的肺炎疫情防控工作正在全面推进,力度持续加大,但疫情形势依然复杂严峻。随着春节假期已结束,全国大多数地区开始迎来复工,有序做好返程疫情防控等工作艰巨繁重。

天山产业园区人员物流往来密集、流动性大,管控困难,是疫情防控的重要阵地。既要做到协助产业园区生产恢复,又要做到疫情可防控。疫情期间,产业园区管理面临人流量大、外来人员出入,疫情防控安全管理不足等问题。针对天山产业园访客与疫情防控安全管理问题,本文研究推出"天山产业园访客与疫情防控系统"通过整合产业园区数据资源,结合现代物联网数据,构建一体化服务,帮助产业园区有效开展防疫工作。结合信息化运营等手段降低风险,杜绝隐患,确保产业园区来往人员安全,助力产业园区落实疫情期间的人员出入、预约、考勤打卡信息管理和园区疫情防控工作。

1.2国内外研究现状

由于这几年来,计算机技术的逐日发展,在现代化的生活中,我们所需要的各种信息的处理操作都是通过使用计算机来完成的,有了计算机就可以方便的对各种信息进行查询和维护了。因此需要实现对天山产业园访客与疫情防控的电子化,提天山产业园区疫情防控管理效能和使用效能。

因为国内外传统的产业园防疫管理方式是基于手工的,而人的精力和工作准确度是有限的,所以传统的产业园疫情防控管理方式难免会存在效率低下、准确率低等缺点,还伴随着人力资源的大量浪费。在管理的工作中,所涉及到的工作电脑机器比人类更为擅长,能够达到快速、准确、耗费资源小等要求。基于这些显著的优点,如果能设计一套完整且贴合具体天山产业园需求的访客与疫情防控系统,那么将大大地提高天山产业园的疫情防控工作效率。在具备这样的天山产业园访客与疫情防控系统之下,天山产业园的管理人员只需配备少量的专业人员对数据库进行日常数据审核、管理以及定期维护。整个过程中管理人员只需提供少量的必要信息,大部分数据处理工作皆由数据库和相关程序来完成,节省了大量时间。如果数据库中的某部分信息存在错误,那么管理人员可以通过批量修改等方式来降低排错过程中所要花费的时间和精力。因此,为天山产业园开发一个称职的产业园访客与疫情防控系统是十分有必要的。

1.3相关技术介绍

(1)天山产业园访客与疫情防控系统中的web后台管理中的后端不再使用古老的jsp+javabean+servlet技术,而是使用当前主流的ssm框架,它减少java配置代码,简化编程代码,目前ssm框架也是很多企业选择的框架之一。

(2)天山产业园访客与疫情防控系统中的web后台管理中的前端使用的是ssm框架,它配合ajax和jquery可以美化页面设计。

(3)流行vue框架结合jQuery技术,在jQuery基础上扩展一些插件,通过自己定义插件更好的实现前端的设计。

(4)天山产业园访客与疫情防控系统中数据库用的mysql5.7,它执行效率高。

2 天山产业园访客与疫情防控系统分析

2.1 可行性分析

2.1.1 技术可行性分析

通过了解对天山产业园访客与疫情防控系统的真实需求后,将天山产业园访客与疫情防控系统所需要的角色划分整理成了下图2-1,图2-2和图2-3。

从开发工具来看,由于天山产业园访客与疫情防控系统是基于JAVA的,因此有很多开发工具都可以进行开发,这些功能强大的开发工具可以给我来设计天山产业园访客与疫情防控系统带来非常大的方便。

从天山产业园访客与疫情防控系统的本身技术来说,对于我来开发一个天山产业园访客与疫情防控系统这个毕设是不费事的。天山产业园访客与疫情防控系统的开发可以简单的分为前台端、后台端开发以及数据库开发。其中的大部分技术难点在我上学时已经使用过了,同时网络上很多技术点可以让我来借鉴。Web后台管理使用JAVA的ssm架构开发,数据库使用mysql,页面上使用javascript脚本,因此为我在开发天山产业园访客与疫情防控系统这个毕设上省去了很多多余代码,这给我的毕设项目编写带来了极大的便利。综上所述,从技术层面来看开发天山产业园访客与疫情防控系统是可行的。

从用户体验来看,市面上很多被广泛使用的系统案例可以让我来参考,因此我可以综合它们的页面交互设计的优点,基于我的毕设项目特点来进行改版,最后达到令用户满意的页面交互体验。综上所述,从技术层面来看开发天山产业园访客与疫情防控系统是可行的。

2.1.2 经济可行性分析

天山产业园访客与疫情防控系统的开发成本来看,天山产业园访客与疫情防控系统的设计和开发都是我自己完成的,没有其他成本上的开销。

天山产业园访客与疫情防控系统的维护成本来看,天山产业园访客与疫情防控系统的开发遵循一套完整的代码编写规范,并且天山产业园访客与疫情防控系统的结构设计非常灵活,遵循高内聚低耦合的原则,因此易于维护和迭代开发。

天山产业园访客与疫情防控系统上线之后,上线前期我会根据真实需求来调查,对使用我开发的天山产业园访客与疫情防控系统来制定一套符合的使用费。系统运行稳定后我会将推广范围到其他的校园当中,其他校园可以使用我的天山产业园访客与疫情防控系统,只需要缴纳一点点的定金,我会给他们引入广告投资和自营业务。

综合以上的分析,天山产业园访客与疫情防控系统所带来的经济效益将会带来极大的收益。并且随着我的推广,来使用我开发的天山产业园访客与疫情防控系统的市场将越来越大,天山产业园访客与疫情防控系统带来的利润也就越来越多。因此,从经济层面来看开发天山产业园访客与疫情防控系统的是可行的。

2.2 系统需求分析

2.2.1 功能性需求分析

天山产业园访客与疫情防控系统从角色上划分为了用户用户和管理员两种角色。

管理员用户角色:

(1)登录:管理员的账号是在数据表表中直接设置生成的,不需要进行注册;

(2)站点管理:当点击“站点管理”这一菜单的时候,会出现轮播图+公告栏两个子菜单,可以对这两个模块进行增删改查操作;

(3)用户管理:当点击“用户管理”这一菜单的时候,会出现管理员+用户两个子菜单,可以对这个模块进行增删改查操作;

(4)内容管理:当点击“内容管理”这一菜单的时候,会出现资讯列表+资讯分类个子菜单,能够对前台的资讯信息进行发布管理,同时对前台展示的资讯信息进行增删改查操作;

(5)更多管理:当点击“更多”这一菜单的时候,会出现部门管理+岗位分类+考勤打卡+车辆管理+会议室管理+预约管理+应急突出管理个子菜单,能够对部门信息进行增删改查操作,对访客园区预约以及车辆信息进行审核管理,以及实现对用户提交的考勤打卡信息进行维护管理;

用户用户角色:

(1)注册登录模块:当用户想要进入本天山产业园访客与疫情防控系统中对信息进行考勤打卡以及资讯浏览等操作的时候,就必须要登录到系统当中,要是新的用户没有天山产业园访客与疫情防控系统的账号的话,点击“注册”按钮,就会进入到新用户注册这个界面上,用户输入对应的账号(必须填写)+密码(必须填写)+确认密码(必须填写,而且要与密码一直)+昵称+邮箱+手机号+选择用户身份等等,,然后点击“注册”,系统在用户这一数据库中会查询账号是不是存在,两次密码是不是一样,都填写正确就会注册成功,然后再进行登录,如果是之前已经注册过的用户很长时间没有使用,忘记密码,也可以点击“忘记密码”进行找回;

2)公告栏:在首页导航栏上我们会看到“公告信息”这一菜单,我们点击进入进去以后,会看到所有管理员在后台发布的公告信息;

3园区资讯:在首页导航栏上我们会看到“园区资讯”这一菜单,我们点击进入进去以后,会看到所有管理员在后台发布的园区资讯信息,能够对喜欢的园区资讯进行点赞,如果下次想要更快的找到这篇资讯,也可以进行收藏、评论;

4部门信息:在首页导航栏上我们会看到“部门信息”这一菜单,我们点击进入进去以后,会看到所有管理员在后台发布的部门信息,我们可以查看部门信息详情

5考勤打卡:在“我的”下可以提交用户考勤打卡信息;

6用户:这个功能是管理员后台的功能,可以对用户信息进行查看;

7)预约信息用户在后台里面可以查看具体预约信息;

8车辆信息用户在“车辆信息”界面中可以提交车辆登记信息;

2.2.2 非功能性分析

天山产业园访客与疫情防控系统的非功能性需求比如天山产业园访客与疫情防控系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:

2-1天山产业园访客与疫情防控系统非功能需求表

安全性

主要指天山产业园访客与疫情防控系统数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指天山产业园访客与疫情防控系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响天山产业园访客与疫情防控系统占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着天山产业园访客与疫情防控系统页面展示内容进行操作,就可以了。

可维护性

天山产业园访客与疫情防控系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

2.3 系统用例分析

根据上一节功能分析,可以得出系统的用例,用户角色用例如图2.1所示。

图2.1 天山产业园访客与疫情防控系统中用户角色用例图

天山产业园访客与疫情防控系统的管理员是维护整个天山产业园访客与疫情防控系统中一系列数据流程,管理员角色用例如图2.3所示。

图2.2 天山产业园访客与疫情防控系统管理员角色用例图

3 天山产业园访客与疫情防控系统总体设计

3.1 系统模块设计

根据第二章中天山产业园访客与疫情防控系统的功能分析可知,天山产业园访客与疫情防控系统中整体功能模块图如图3.1所示, 

图3.1 天山产业园访客与疫情防控系统功能模块图

3.2 数据库设计

3.3.1 数据库概念结构设计

下面是整个天山产业园访客与疫情防控系统中主要的数据库表总E-R实体关系

图3.2 天山产业园访客与疫情防控系统总E-R关系图

3.2.2 数据库逻辑结构设计

通过上一小节中天山产业园访客与疫情防控系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

(1)article信息如表3.1所示,主要用于管理员后台增删改查以及前台用户的查看浏览等:

名称

类型

长度

不是null

主键

注释

staff_id

int

11

用户ID

gender

varchar

64

性别

department

varchar

64

部门

post

varchar

64

岗位

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

clock_in_id

int

11

考勤打卡ID

staff

int

11

用户

employee_number

varchar

64

职工号

department

varchar

64

部门

post

varchar

64

岗位

remarks

varchar

64

备注

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

conference_room_id

int

11

会议室ID

conference_room_no

varchar

64

会议室号

meeting_room_type

varchar

64

会议室类型

meeting_room_drawing

varchar

255

会议室图

floor

varchar

64

楼层

unit

varchar

64

单元

number_of_meeting_rooms

int

11

会议室数

hits

int

11

点击数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

department_management_id

int

11

部门管理ID

department

varchar

64

部门

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

emergency_outburst_id

int

11

应急突出ID

scheme_no

varchar

64

方案编号

scheme_name

varchar

64

方案名称

emergency_type

text

0

应急类型

disposal_plan

text

0

处置方案

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

job_classification_id

int

11

岗位分类ID

post

varchar

64

岗位

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

reservation_information_id

int

11

预约信息ID

conference_room_no

varchar

64

会议室号

meeting_room_type

varchar

64

会议室类型

floor

varchar

64

楼层

unit

varchar

64

单元

number_of_appointments

int

11

预约数

appointment_person

int

11

预约人

department

varchar

64

部门

post

varchar

64

岗位

travel_code

varchar

255

行程码

health_code

varchar

255

健康码

examine_state

varchar

16

审核状态

examine_reply

varchar

16

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是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

更新时间:

名称

类型

长度

不是null

主键

注释

vehicle_information_id

int

11

车辆信息ID

license_plate_number

varchar

64

车牌号

vehicle_color

varchar

64

车辆颜色

staff

int

11

用户

department

varchar

64

部门

post

varchar

64

岗位

license_plate_map

varchar

255

车牌图

examine_state

varchar

16

审核状态

examine_reply

varchar

16

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

upload_id

int

11

上传ID

name

varchar

64

文件名

path

varchar

255

访问路径

file

varchar

255

文件路径

display

varchar

255

显示顺序

father_id

int

11

父级ID

dir

varchar

255

文件夹

type

varchar

32

文件类型

名称

类型

长度

不是null

主键

注释

notice_id

mediumint

8

公告id:

title

varchar

125

标题:

content

longtext

0

正文:

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

4 天山产业园访客与疫情防控系统设计与实现

天山产业园访客与疫情防控系统的详细设计与实现主要是根据前面的天山产业园访客与疫情防控系统的需求分析和天山产业园访客与疫情防控系统的总体设计来设计页面并实现业务逻辑。主要从天山产业园访客与疫情防控系统界面实现、业务逻辑实现这两部分进行介绍。

4.1 系统首页页面

当进入天山产业园访客与疫情防控系统的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4.1所示。

图4.1 管理员界面图

4.2 注册页面

不是天山产业园访客与疫情防控系统中正式会员的是可以在线进行注册的,如果你没有本天山产业园访客与疫情防控系统的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可会员注册成功。注册界面实现了用户注册,其注册界面展示如下图4。2所示。

图4.2 注册界面图

用户注册逻辑代码如下:

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        query.put("username",user.getUsername());

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

4.3 登录页面

天山产业园访客与疫情防控系统中的前台上注册后的会员是可以通过自己的账户名和密码进行登录的,当会员输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到天山产业园访客与疫情防控系统首页中;否则将会提示相应错误信息,用户登录界面如下图4.3所示。

图4.3 登录界面图

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

 /**

     * 登录

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

}

4.4 园区资讯页面

当用户点击园区资讯以后就会进入到以下界面,用户可以输入关键词搜索资讯内容进行浏览,查看资讯的赞数以及点击数。其界面展示如下图4.4所示。

图4.4 园区资讯界面图

4.5考勤打卡页面

点击“考勤打卡”以后就会给我们展示考勤的页面,用户需要将每日打卡信息进行填写提交。其界面展示如下图4.5所示。

图4.5 考勤打卡界面图

考勤打卡的逻辑代码如下:

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

    }

4.6 预约信息页面

预约信息这一菜单,用户可以进行“预约信息”提交以及查看:部门+岗位+行程码+健康码+审核状态信息。其界面展示如下图4.6所示。

图4.6 预约信息界面图

4.7 车辆信息页面

用户点击“车辆信息”,选择“添加”按钮后就会进入到车辆信息添加这个界面,系统填写车牌号、车辆颜色、用户、部门、岗位信息,点击“提交”就添加成功了;其界面展示如下图4.7所示。

图4.7 车辆信息添加界面图

车辆信息添加界面逻辑代码如下:

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

}

4.8 用户管理页面

此功能为管理员的功能,管理员点击“用户管理”菜单后,会展示出管理员+用户两个子菜单,任何可以对其进行增删改查操作;其界面展示如下图4.8所示。

图4.8 用户管理界面图

4.9 内容管理页面

此功能为管理员的功能,管理员点击“系统内容管理”菜单后,会展示出资讯列表+资讯分类两个子菜单,任何可以对其进行增删改查操作;其界面展示如下图4.9所示。

图4.9 资讯管理界面图

4.10 部门管理页面

此功能为管理员的功能,管理员点击“部门管理”菜单后,会展示出部门具体信息,可以对其进行增删改查操作,其界面展示如下图4.10所示。

图4.10 部门管理界面图

部门管理界面逻辑代码如下:

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

}

4.11 岗位分类管理页面

此功能为管理员的功能,管理员点击“更多管理”菜单后能够对岗位信息进行分类,包括了添加+编辑+删除+查询,其界面展示如下图4.11所示。

图4.11 岗位分类管理界面图

岗位分类管理界面关键代码如下:

@RestController

@RequestMapping("auth")

public class AuthController extends BaseController<Auth, AuthService> {

    /**

     * 服务对象

     */

    @Autowired

    public AuthController(AuthService service) {

        setService(service);

5天山产业园访客与疫情防控系统测试

天山产业园访客与疫情防控系统测试是为了检验软件是否达到设计要求,是否存在错误,通过测试的方法来检查天山产业园访客与疫情防控系统,以便发现天山产业园访客与疫情防控系统中的错误。测试工作是保证天山产业园访客与疫情防控系统质量的关键。

5.1 调试部分问题

问题1:数据库无法添加中文。

解决过程:重新创建数据库,将库的编码格式改为utf8。

效果:能在新库的表中添加中文。

问题2:控制台报错前台与后台参数不一致

解决过程:检查代码,找到报错参数完成修改,继续报错,服务器移除项目重新运行。

效果:重启项目不再报错。

问题3:报错No bean named 'sysLogServiceImpl' available找不到名为sysLogServiceImpl的bean的对象。

解决过程:询问导师报错原因,发现错误原因是未添加注解@Service,需要在在impl实现类的外面添加@Service注解。

效果:重新debug项目无报错。

问题4:启动项目时报错:Mapped Statements collection does not contain value for

解决过程:网上搜索解决办法,出错可能的原因有多个,经过努力排查,错误原因是mapper映射地址有误。在mybatis-config里重新配置地址。

效果:项目启动正常

5.2 系统测试用例

系统测试包括:车辆添加功能测试、考勤打卡功能测试、会议室预约信息功能测试这四大功能测试,如表5.1到5.3所示:

表5.1车辆添加功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

车辆添加功能模块测试

管理员添加车辆功能是否正常

管理员登录成功后点击“添加车辆”菜单

管理员根据提示并依次输入车辆名称+车牌号+车辆颜色+用户+车辆图+部门详情等,后点击“提交”按钮

车辆添加信息功能正常

表5.2 考勤打卡功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

考勤打卡添加功能模块测试

用户添加考勤打卡功能是否正常

用户登录成功后点击“添加考勤打卡”菜单

用户根据提示并依次输入职工号+岗位等,后点击“提交”按钮

考勤打卡添加信息功能正常

表5.3预约信息功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

预约信息功能模块测试

预约信息功能是否正常

用户登录成功后点击会议室信息中的“预约”按钮

用户根据提示填写预约信息点击“提交”按钮

预约信息信息功能正常

5.3 系统测试结果

通过上面章节编写天山产业园访客与疫情防控系统的测试用例,已经测试完毕了车辆信息添加功能测试、考勤打卡功能测试、会议室预约功能测试,通过这大模块为天山产业园访客与疫情防控系统的后期推广运营提供了强力的技术支撑。

结论

至此,天山产业园访客与疫情防控系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如ssm、JAVA技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。

当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。

参考文献

[1]高轶鹏. 实现疫情防控和经济社会发展双赢[N]. 平顶山日报,2022-03-25(008).

[2]吴明阳,王森琛.基于SSM框架整合的客户服务系统设计和实现[J].新型工业化,2022,12(02):12-15.DOI:10.19335/j.cnki.2095-6649.2022.02.005.

[3]王慧芳,孙方,陈玉,朱茜.基于SSM框架的大数据个性化推荐系统设计[J].信息与电脑(理论版),2022,34(02):90-92.

[4]张金龙.疫情防控严防死守 誓保全年目标任务——白银集团坚决打赢疫情防控遭遇战阻击战[J].中国有色金属,2021(23):58-59.

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

[6]雷义伟,齐圣.基于C#.NET和SSM框架的通信台站动环监控系统实现技术[J].自动化技术与应用,2021,40(08):75-80.

[7]张助军. 疫情防控常态化对共青城市大学生创业企业的影响及应对策略[D].南昌大学,2021.

[8]秦建阳. 城市社区空间结构对新冠疫情防控影响研究[D].西北师范大学,2021.DOI:10.27410/d.cnki.gxbfu.2021.000981.

[9]徐望.常态化疫情防控下文旅产业演进策略[J].中国国情国力,2021(04):32-35.DOI:10.13561/j.cnki.zggqgl.2021.04.008.

[10]严书欢,朱江,石旦,彭美玲,吴子凡,吴逸.新冠疫情相关信访的原因分析及处置对策探索[J].江苏卫生事业管理,2021,32(02):254-256.

[11]任庆娟,顾梦琛,贾威,祁明亮,赵宇.关于疫情防控常态化下加强对中小微企业精准扶持的调查研究[J].今日科苑,2020(10):80-88.

[12]全先国,梁浩.建筑科技助力疫情防控——上海建筑科技产业园的探索与实践[J].建设科技,2020(06):46-48.DOI:10.16116/j.cnki.jskj.2020.06.011.

[13]李惠,张世哲,崔凯,董园园.一手抓疫情防控 一手抓复工复产[J].当代兵团,2020(05):37-38.

[14]李亚希,吴晓明.智慧防疫提升防控效果[J].中国物业管理,2020(03):65.

[15].乐山市落实措施 持续发力做好疫情防控工作[J].四川畜牧兽医,2020,47(02):7.

[16] Zhu Jiang, Shi Dan, Peng Meiling, Wu Zifan, Wu Yi Analysis of the reasons for COVID-19's related letters and visits and Its Countermeasures: [J]. Jiangsu health administration, 2021,32 (06): 233-238

[17]  Gu Mengchen, Jia Wei, Qi Mingliang, Zhao Yu Investigation and Research on strengthening precise support for small, medium and micro enterprises under the normalization of epidemic prevention and control [J] Today Keyuan, 2020 (10): 85-88

致  谢

时间过的很快,不知不觉,在中北大学的学习生活即将结束。毕业之际,我真诚地向帮助过我的老师、家人、同学、朋友们表达感谢。首先要感谢的是我的母校。感谢母校给了我美好的生活和优越的学习环境,使我能学到了很多知识,也不断的变得优秀;感谢家人在这四年期间一直给与我的爱和无条件的支持,让我没有后顾之忧地完成学业;感谢软件学院的任课老师们给我鼓励和认可,让我有信心去做好每一件事情;感谢同学们的帮助,让我的大用户活更有意义。在此次毕业设计的实现过程中, 我得到了老师们的耐心指导让我顺利完成了该设计。从最初的选题和开题开始,老师就给予我很多帮助,他们认真负责的态度、丰富的教学经验让我学到了很多。

同时也要感谢我敬爱的班主任和实训课程的老师,他们在各个方面都教给了我丰富的经验,在面对各种困难时如何处理。因为今年的特殊性,老师们不仅在学习中给我以精心的指导,同时还在其它方面给予我观关怀,指导老师不辞辛苦的为大家录制视频和一遍遍讲解让我心怀感激之情。在此,我真诚的感恩、感谢我的指导教师们。

还要感谢实习期间不厌其烦教导我鼓励我的技术师傅,他指导了我各个方面的技巧,尤其是编程方面,迄今我的很多技巧和编写规范都有赖于他的指导、纠正。

最后还要特别感谢身边的各位同学们,一直支持鼓励我,无论何时何种境况。我很荣幸获得同学们的帮助,也很开心能够和大家共度大学四年的时光。

最后的最后,再次发自肺腑的感谢所有帮助过我的人。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340