基于JSP的小区停车管理系统设计与实现

需求分析

问题提出

应用环境:传统停车场采用人工管理的办法,有一些不可避免的缺点,如效率低,安全性差。为了解决这些不足,在智能小区中采用停车场自动管理系统。

用户:生活在小区中的居民和需要临时停车的客户

必要性和意义:IT 行业的高速发展让计算机技术深入日常生活的每一个细节,在各个领域中,计算机技术的应用帮助人们减少劳动量,提高工作效率,发挥着越来越重要的作用。随着城市化程度的加深,房地产行业日益兴盛,越来越多的小区散布在城市里,小区中来往的车辆与日俱增,停车场是小区里不可缺少的一个部分,对停车场的管理也是非常重要,这就使得各停车场需要更加先进、更加完善的停车场管理系统,开发一个停车场管理系统迎合了现代的公司发展趋势,对居民合理管理和他人的练习信息起到重要意义。为车主带来方便。我结合本次实验开发以下的小区停车场管理系统,使小区里的车辆能得到有序的管理。

系统分析

数据流图

顶层数据流图是为了方便开发人员与用户更好的够同,以及位系统的设计提供帮助。

图 1.1 顶层数据流图

各功能的数据流图可让用户更清晰的观察功能的实现。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yZwqiHR8-1654590768317)(https://www.writebug.com/myres/static/uploads/2022/6/7/1ac24993031a512f8795aaee3e50c8c8.writebug)]

图 1.2 IC 卡管理数据流图

图 1.3 出入停车场数据流图

图 1.4 车位管理数据流图

数据字典

数据项的描述

数据项: IC 卡号

含义说明: IC 卡的编号

数据类型: 字符型

长度: 14

取值含义: 办卡年份 + 日期 +6 位随机数

取值范围:14 位数字

与其他数据项的逻辑关系:无

数据项:停车位编号

含义说明: 给所有的停车位一个编号

数据类型: 字符型

长度: 3

取值含义: 400 个停车位号中的一个

取值范围:0—400

与其他数据项的逻辑关系:与 IC 卡号是一一对应关系

数据项: 车主

含义说明: 车主的姓名

数据类型: 字符型

长度: 2-10

取值含义: 车主的姓名

取值范围:人的名字

与其他数据项的逻辑关系:无

数据项: 车主的住址

含义说明: 车主在小区中住在哪里

数据类型: 字符型

长度: 20 以内

取值含义: 车主在小区中的具体住址

取值范围:中文字符、可见字符和数字

与其他数据项的逻辑关系:与 IC 卡号和车主姓名一一对应

数据项: 车牌号

含义说明: 车主的车牌号

数据类型: 字符型

长度: 7

取值含义: 车主的车牌号

取值范围:中文字符、大写英文字符和数字

与其他数据项的逻辑关系:以 IC 卡号和车主姓名一一对应

数据项: 停车区域

含义说明: 停车场的具体区域

数据类型: 字符型

长度: 2

取值含义: 停车区域有 A 区和 B 区

取值范围:A 区、B 区

与其他数据项的逻辑关系:无

数据项: 停车位标志

含义说明: 停车位的标志

数据类型: 字符型

长度: 6

取值含义: 车位是否有固定车主

取值范围:固定车主车位和空

与其他数据项的逻辑关系:停车位标志决定该车是否可停临时车

数据项: 停车位状态

含义说明: 停车位是否停了车

数据类型: int

长度: 1

取值含义: 停车位当前是否停了车

取值范围:0 或 1

与其他数据项的逻辑关系:停车位状态决定可使用车位数

数据项: 临时卡 id

含义说明: 临时车的临时 IC 卡号

数据类型: 字符型

长度: 14

取值含义: 临时车的临时 IC 卡号

取值范围:开卡年份 + 日期 +6 位随机数

与其他数据项的逻辑关系:无

数据项: 车入场日期

含义说明: 车什么时候进入的停车场

数据类型: Date

长度: 10

取值含义: 车什么时候进入的停车场

取值范围:正常日期

与其他数据项的逻辑关系:决定临时车的停车费用

数据项: 车入场具体时间

含义说明: 车是几点几分进入的停车场

数据类型: time

长度: 8

取值含义: 车是几点几分进入的停车场

取值范围:正常的时间

与其他数据项的逻辑关系:决定临时车的停车费用

数据项: 车出场日期

含义说明: 车什么时候离开的停车场

数据类型: Date

长度: 10

取值含义: 车什么时候离开的停车场

取值范围:正常日期

与其他数据项的逻辑关系:决定临时车的停车费用

数据项: 车离开停车场具体时间

含义说明: 车是几点几分离开的停车场

数据类型: time

长度: 8

取值含义: 车是几点几分离开的停车场

取值范围:正常的时间

与其他数据项的逻辑关系:决定临时车的停车费用

数据项: 临时车费用

含义说明: 临时车离开停车场时要交的费用

数据类型:double

长度: 5

取值含义:临时车离开停车场是要交的费用

取值范围:大于 0 的双精度数

与其他数据项的逻辑关系:无

数据结构的描述

数据结构:管理员

含义说明:定义了一位管理员的相关信息

组成: ID,角色,名字,密码,手机号

数据结构:IC 卡

含义说明:是停车场管理系统的主题数据结构,是小区固定车主的相关信息

组成: 由 IC 卡的 ID,车位号,车主名字,性别,车主住址,车主车牌号组成

数据结构:停车位

含义说明:停车场提供停车服务的必备设施,是停车场的重要组成部分

组成: 车位编号,车位状态,车位类型,车位区域

数据结构:临时车

含义说明:临时车主在停车场的相关信息

组成: 临时 IC 卡号,车位号,车牌号,进出停车场时间,停车费用

数据结构:小区车主

含义说明:小区车主在停车场的相关信息

组成: 固定 IC 卡号,进出停车场时间

数据流的描述

数据流是数据结构在系统内传输的路径。对数据流的描述通常包括以下内容:数据流名、说明、数据流来源、数据流去向、组成等。

数据流编号: F1

数据流名称: 停车场车位信息表

简述: 供管理员查询停车场车位信息。

数据流来源: 小区停车场进出口闸道

数据流去向: 车主

数据流组成: 车位类型,车位编号,区域,车位状态

数据流量: 100/天

高峰流量: 300/天

数据流编号: F2

数据流名称: IC 卡信息表

简述: 供管理员查询管理 IC 卡信息。

数据流来源: 小区停车场进出口管理处

数据流去向: 车主

数据流组成: IC 卡号,车位编号,车主名字,车主性别,车主住址,车主车牌号

数据流量: 50/天

高峰流量: 150/天

数据流编号: F3

数据流名称: 小区车主停车信息表

简述: 登记小区车主进出停车场的信息

数据流来源: 小区停车场进出口管理处

数据流去向: 车主

数据流组成: IC 卡号,进出停车场时间

数据流量: 50/天

高峰流量: 150/天

数据流编号: F4

数据流名称: 临时停车信息表

简述: 登记临时进出停车场的信息

数据流来源: 小区停车场进出口管理处

数据流去向: 临时车主

数据流组成: 临时 IC 卡号,临时车车牌号,停车位号,进出停车场时间,停车费用

数据流量: 50/天

高峰流量: 150/天

数据流编号: F5

数据流名称: 管理员信息表

简述: 记录管理员的相关信息和权限

数据流来源: 小区停车场进出口管理处

数据流去向: 管理员

数据流组成: 管理员 ID,角色,名字,密码,手机号

数据流量: 2/天

高峰流量: 2/天

处理过程

处理逻辑编号: P1

处理逻辑名称: 更新停车场车位信息

简述: 有停车的车主后,要及时更新车位信息

输入的数据流: 停车场车位信息表

处理描述: 对车位信息数据进行更新操作

输出的数据流: 新的车位信息

处理逻辑编号: P2

处理逻辑名称:IC 卡的管理

简述: 若有小区车主要买固定车位,就添加固定车位 IC 卡

输入的数据流: IC 卡信息表

处理描述: 对 IC 卡信息数据进行更新操作

输出的数据流: 新的 IC 卡信息

处理逻辑编号: P3

处理逻辑名称:固定车主信息管理

简述: 小区车主中由固定车位车主的相关信息管理

输入的数据流: 固定车主车位信息表

处理描述: 按车主相应信息进行停车管理,对数据表进行更新

输出的数据流: 新的固定车主车位信息表

处理逻辑编号: P4

处理逻辑名称:临时车主信息管理

简述: 临时车主的相关信息管理

输入的数据流: 临时车主车位信息表

处理描述: 按临时相应信息进行停车管理,对数据表进行更新

输出的数据流: 新的临时车主车位信息表

数据存储的描述

数据存储编号: S1

数据存储名称: 停车场车位信息数据

简述: 记录车位信息

数据存储组成: 姓名,车位所在区域,车位状态,车位信息

关键字: 车位编号

输入数据流: 停车场车位信息表

输出数据流: 新的停车场车位信息表

存取频度: 300/天

数据存储编号: S2

数据存储名称: IC 卡信息数据

简述: 记录 IC 卡信息

数据存储组成:IC 卡号,车位编号,车主名字,性别,车主住址,车牌号

关键字: IC 卡号

输入数据流: IC 卡信息表,车位信息表

输出数据流: 新的 IC 卡信息表

存取频度: 150/天

数据存储编号: S3

数据存储名称: 固定车主停车信息数据

简述: 记录固定车主停车信息

数据存储组成: 固定车主 IC 卡号,进出停车场时间

关键字: 固定车主 IC 卡号

输入数据流: 固定车主停车信息表,IC 卡信息表

输出数据流: 新的固定车主停车信息表

存取频度: 150/天

数据存储编号: S4

数据存储名称: 临时车主停车信息数据

简述: 记录临时车主停车信息

数据存储组成: 临时车主 IC 卡号,停车位号,进出停车场时间,车牌号,停车费用

关键字: 临时车主 IC 卡号

输入数据流: 临时车主停车信息表

输出数据流: 新的临时车主停车信息表

存取频度: 150/天

功能需求

根据停车场管理系统的理念,此停车场管理系统必须满足以下需求:

IC 卡信息管理:添加 IC 卡类型,管理 IC 卡类型。管理 IC 卡信息可以对车主的 IC 卡信息进行增、删、改、查。

固定车主停车管理:出入场设置、停车场信息管理。出入场设置可以设用户的入场和出场,相应的在停车信息中有一个展现。停车信息管理可以对车主的停车信息进行查询和删除。

临时车辆信息管理:车主入场信息,车主出场设置。车主入场在相应的表中展现,在车主出场时进行收费,临时车车主停车信息管理可以对临时车主的信息进行删除和查询。

车位信息管理:管理车位、添加车位,管理车位信息模块可以对车主车位信息进行增、删、改。

功能结构图如下:

非功能性需求

为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的非功能性需求:

系统处理的准确性和及时性

系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足用户对信息的处理。由于系统的查询功能对于整个系统的功能和性能完成很重要。从系统的多个数据来源来看,车位信息查询、IC 卡信息查询、车辆信息查询,其准确性很大程度上决定了系统的成败。因此,在系统开发过程中,系统采用优化的 SQL 语句及安全扩展存储过程来保证系统的准确性和及时性。

系统的开放性和系统的可扩充性

系统在开发过程中,应该充分考虑以后的可扩充性。例如系统权限和车位信息设置等模块也会不断的更新和完善。所有这些都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、 替换完成系统的升级和更新换代。

系统的易用性

本停车场管理系统面向的用户是小区工作人员,而有些使用人员往往对计算机并不 是非常熟悉,所以系统操作上要求简单、方便、快捷,便于用户使用。这就要求系统能 够提供良好的用户接口,易用的人机交互界面。

开发与运行环境

开发工具:JDK-8、HTML、JavaScript、Eclipse 集成开发环境、MySQL 数据库管理系统、Tomcat 服务器运行环境:谷歌浏览器、火狐浏览器、IE 浏览器效果最佳,其他主流浏览器也可。

eclipse for Java EE

Eclipse 是著名的跨平台的自由集成开发环境(IDE)。最初主要用来 Java 语言开发,通过安装不同的插件 Eclipse 可以支持不同的计算机语言,比如 C++ 和 Python 等开发工具。Eclipse 的本身只是一个框架平台,但是众多插件的支持使得 Eclipse 拥有其他功能相对固定的 IDE 软件很难具有的灵活性。许多软件开发商以 Eclipse 为框架开发自己的 IDE。

Tomcat 9.0 服务器

Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。由于有了 Sun 的参与和支持,最新的 Servlet 和 JSP 规范总是能在 Tomcat 中得到体现。因为 Tomcat 技术先进、性能稳定,而且免费,因而深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。

MySQL 数据库管理系统

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 Web 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

2 数据库设计与实现

概念设计

根据需求分析形成的数据字典和数据流图,抽象得到的实体有:

固定 IC 卡(卡号,车主姓名,车主住址,车牌号)

停车位(车位号,车位区域,车位状态,车位信息)

固定车主(进场日期,出场日期)

临时车主(卡号,车位号,车牌号,进场日期,出场日期,停车花费)

管理员(管理员 id,姓名,密码,手机号)

实体之间的联系如下:

一个车主停在一个停车位。

一个固定车主有一个固定 IC 卡,一个临时车主有一条临时信息

每个车主都会分配一个停车位

图 2.1 停车场管理系统 E-R 图

逻辑设计与物理设计

逻辑设计

实体转换的关系模式有固定 IC 卡,停车位,固定车主,临时车主。

“固定拥有”联系与固定车主关系模式合并。

“停车位拥有”联系分别与固定 IC 卡和临时车主卡关系模式合并。

停车场管理系统的关系模式如下:

固定 IC 卡(卡号,车主姓名,车主住址,车牌号,停车位号)

停车位(车位号,车位区域,车位状态,车位信息)

固定车主(IC 卡号,进场日期,出场日期)

临时车主(IC 卡号,停车位号,车牌号,进场日期,出场日期,停车花费)

管理员(管理员 id,姓名,密码,手机号)

说明:固定 IC 卡关系模式的外码为停车位号,被参照关系为停车位关系模式;

临时车主关系模式的外码为停车位号,被参照关系为停车位关系模式

固定车主关系模式的外码为固定 IC 卡号,被参照关系是固定 IC 卡关系模式

定义用户子模式如下:

空停车位(车位号,区域,车位信息)

物理设计

在 Parking 数据库上,根据关系模式,定义基本表。表结构如下:

车位表:存储小区车位的信息表。

表 2.1 Seat(车位表)

属性列名 属性说明 数据类型 外码 备注
Seat_id 车位号 Varchar(3) 主码
Seat_section 车位区域 Varchar(2) not null
Seat_state 车位状态 Int(2) 0 或 1(0 为空)
Seat_tag 车位信息 Varchar(50) 反映是否为固定车位

固定 IC 卡表:存储固定 IC 卡表。

表 2.2 FixedCard(固定 IC 卡表)

属性列名 属性说明 数据类型 外码 备注
Card_id 卡号 Varchar(14) 主码 固定 IC 卡号
Name 车主姓名 Varchar(10)
Address 车主住址 Varchar(20)
Car_num 车牌号 Varchar(7)
Seat_id 停车位号 Varchar(3) 外码 参照 Seat 表

临时车主表:存储临时车主表。

表 2.3 TempCard(临时车主表)

属性列名 属性说明 数据类型 外码 备注
Card_id IC 卡号 Varchar(14) 主码 外码 参照 TempCard 表
Seat_id 停车位号 Varchar(3)
Car_nu 车牌号 Varchar(7)
Entry_date 进场日期 Date
Entry_time 进场时间 Time
Out_date 出场日期 Date
Out_time 出场时间 Time
Pay 停车花费 Double(5)

固定车主表:存储固定车主表。

表 2.4 Fixed(固定车主表)

属性列名 属性说明 数据类型 外码 备注
Card_id IC 卡号 Varchar(14) 主码 外码 参照 FixedCard 表
Entry_date 进场日期 Date
Entry_time 进场时间 Time
Out_date 出场日期 Date
Out_time 出场时间 Time

管理员表:存储管理员信息。

表 2.5 Admins(管理员表)

属性列名 属性说明 数据类型 外码 备注
Admin_id 管理员 ID Varchar(5) 主码
Name 姓名 Varchar(15) 管理员的姓名
Password 密码 Varchar(15)
Phonenum 手机号 Varchar(11) 管理员的手机号

定义的视图如下:

固定车主及其固定车位状态视图。

表 2.6 voutfixed(视图)

属性列名 属性说明 数据类型 外码 备注
Card_id 卡号 Varchar(14)
Name 车主姓名 Varchar(10)
Address 车主住址 Varchar(20)
Car_num 车牌号 Varchar(7)
Seat_id 停车位号 Varchar(3)
Seat_state 车位状态 Int(2)

固定车主停车信息视图。

表 2.7 vfixed(视图)

属性列名 属性说明 数据类型 外码 备注
Card_id IC 卡号 Varchar(14)
Entry_date 进场日期 Date
Entry_time 进场时间 Time
Out_date 出场日期 Date
Out_time 出场时间 Time
Seat_id 停车位号 Int(2)
Name 车主姓名 Varchar(10)
Address 地址 Varchar(20)
Car_num 车牌号 Varchar(7)

根据处理需求,建立相关索引,如表 2.8 所示

ALTER TABLE FixedCard ADD PRIMARY KEY(`Card_id`)
CREATE INDEX fcar_num ON fixed(`car_num`)
CREATE INDEX tcar_num ON tempcard(`car_num`)
ALTER TABLE Seat ADD PRIMARY KEY(`Seat_id`)

表 2.8 索引列表

关系模式 索引属性列 索引类型
固定 IC 卡 IC 卡号 主键索引
固定车主 车牌号 普通索引
临时车主 车牌号 普通索引
停车位 车位号 主键索引

数据库实现

定义 Parking 数据库:

CREATE DATABASE parking DEFAULT CHARACTER SET utf8 ;

在 Navicat 中根据具体数据库设计建立数据库中的各个关系模式表。

按照设计的数据库结构,使用 Excel 组织数据,将表格中的数据进行标准化处理,并对应的数据列的名称插入进表格上方第一行。

在 Navicat 可视化操作的数据库表中找到“导入”,并在弹窗中找到对应的 execl 表格文件类型,点击下一步。

选择需要导入的文件路径,并选择文件中的工作表,点击下一步。

确定默认设置,确认目标表和源表,源栏位和目标栏位的对应关系,最后确定导入模式,若添加数据,默认选项即可实现需求,参数设置完成后,点击开始,等待文件添加完成,当出现 Finished-Successfully,即导入成功。

为防止测试数据违反有关约束,可先用 Excel 等工具产生数据库测试数据,然后利用 Navicat 软件导入这些数据。

3 应用程序设计

界面设计(部分)

图 3.1 车位信息管理界面

图 3.2 固定车主添加界面

图 3.3 临时车主停车信息

  • 图 3.4 固定车主出入场界面
  • 数据库存取技术
  • JDBC 技术

JDBC(Java DataBase Connectivity,java 数据库连接)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

JDBC API 既支持数据库访问的两层模型(C/S),同时也支持三层模型(B/S)。在两层模型中,Java applet 或应用程序将直接与数据库进行对话。这将需要一个 JDBC 驱动程序来与所访问的特定数据库管理系统进行 通讯。用户的 SQL 语句被送往数据库中,而其结果将被送回给用户。数据库可以位于另一台计算机上,用户通过网络连接到上面。这就叫做客户机/服务器配置,其中用户的计算机为客户机,提供数据库的计算机为服务器。网络可以是 Intranet(它可将公司职员连接起来),也可以是 Internet。

在三层模型中,命令先是被发送到服务的"中间层",然后由它将 SQL 语句发送给数据库。数据库对 SQL 语句进行处理并将结果送回到中间层,中间层再将结果送回给用户。MIS 主管们都发现三层模型很吸引人,因为可用中间层来控制对公司数据的访问和可作的的更新的种类。中间层的另一个好处是,用户可以利用易于使用的高级 API,而中间层将把它转换为相应的低级调用。最后,许多情况下三层结构可提供一些性能上的好处。

JDBC 是面向对象的接口标准,一般有具体的数据库厂商提供。它的主要功能是存放在数据库中的数据,通过对象定义了一系列与数据库系统进行交互的类和接口。通过接口对象,应用程序可以完成与数据库的连接、执行 SQL 语句、从数据库中获取结果、获取状态及错误信息、终止事务和连接。

JDBC 为 Java 程序提供统一的、无缝地操作各种数据库的结构。因为实际应用中常常无法确定用户想访问什么类型的数据库,程序员使用 JDBC 编程时可以不关心它要操作的数据库是哪个厂家的产品,从而提高了软件的通用性。只要系统上安装了正确的驱动程序,JDBC 应用程序就可以访问其相关的数据库。

程序详细设计与实现

主要算法框图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MuolmE9S-1654590768322)(https://www.writebug.com/myres/static/uploads/2022/6/7/25c8218bef3df1340d303edb9389d01a.writebug)]

图 3.5 临时车主进出场流程图 图 3.6 固定车主进出场流程图

图 3.7 获取空余车位流程图

典型程序代码

服务段代码:

临时车主入场代码:

图 3.8 临时车主入场代码

临时车主信息展示代码:

获取临时车主停车信息代码

临时车主出场代码:

图 3.10 临时车主出场代码

测试及结果

典型测试(黑盒):

临时车主入场添加信息:

图 3.11 临时车主入场测试图

入场后可看到临时车主信息表有了临时车主入场信息(最下面,未出场的):

图 3.12 临时车主信息表测试图

进入出入场设置,选择该车出场:

图 3.13 临时车主出场测试图

出场成功:

图 3.14 临时车主出场测试结果图

4 参考文献

数据库系统概论(第 5 版),王珊 萨师煊,高等教育出版社,2017.3

软件工程导论(第 6 版),张海藩 牟永敏,清华大学出版社,2013.10

Java Web 程序设计,明日科技,人民邮电出版社,2015.9

Java 网络编程精解,孙玉琴,电子工业出版社,2007.6

猜你喜欢

转载自blog.csdn.net/newlw/article/details/125168210