摘要:采用MyEclipse2014平台和Java语言开发了一款基于B/S结构的Web停车场管理系统。系统前台采用JSP技术动态生成Web网页,后台采用MVC开发模式降低代码的耦合度、提高代码的重用性。主要包含了系统信息管理、车位信息管理、IC卡信息管理、临时车辆停车管理和系统功能操作等模块。系统信息管理模块主要是对角色以及用户进行管理,车位信息管理模块主要是新增车位信息和车位信息的管理,IC卡信息管理模块主要是新增IC卡类型和IC卡基本信息的管理,临时车辆停车管理模块主要是新增临时停放车辆、车辆的出场信息和收取停车费用的管理,系统功能操作模块主要是对用户密码进行管理以及设置退出系统功能。该系统不仅具有良好的性能和扩展性,而且还具有较高的响应速度和效率,为实际生活中的停车场供了一个快速、简单、规范的管理平台。
关键字:J2EE;停车场管理;MyEclipse2014;MySQL;MVC
引 言
随着中国社会的发展以及人们生活水平的提高,许多家庭都有了购置车辆的想法,这也就造成了我国车辆数量的急剧增加,但车辆增加的同时也为城市交通带来了巨大压力,停车难问题日益凸显。停车场行业与汽车数量有着最直接的关系,停车场是供停放车辆使用的场地,为道路交通提供停车场会大量减轻车辆为交通带来的压力。随着社会的发展以及停车场的不断升级,人们对停车场管理系统的要求也越来越高。因为停车场管理模式以及需求的不同,所以管理员可根据自身条件选择一个高效率、低成本的停车管理系统。
现代化的停车场大多数都是通过将停车过程进行信息化处理来提高停车场的竞争力和管理效率。作为一个以停车场管理体系为基础而开发的应用管理系统,本停车场管理系统就是通过将车主、车辆、车位等管理过程进行信息化来规范停车场的管理,为高效率的交通设施作下坚实的基础。
本系统前端使用JSP技术动态的生成Web网页,JSP技术是J2EE的重要组成部分,也是开发Web应用程序的首要之选。后台采用JAVA语言编写,JAVA语言不仅有安全稳定的特点而且可以一次编写随处运行。数据库采用的是MySQL数据库,因为 MySQL 数据库的体积较小、运行速度快,所以MySQL数据库为中小型系统的首要选择。
第1章 绪 论
1.1 课题的研究背景
随着中国社会的发展以及人们生活水平的提高,汽车成为了人们日常出行不可缺少的一部分。随着汽车大范围的普及,人们对停车场的需求也逐渐增长。停车过程繁琐、收费不完善、劳动强度高等问题仍然存在于大多数的停车场管理中,而在本系统中针对这些问题进行了逐步的优化,提高了停车场的效率。
本系统前端采用JSP技术动态的生成Web网页。因为它具备实现动态网页所需要的功能,所以它是一个跨平台动态网页标准,同时它也被很多的大中型企业所采用。JSP技术是J2EE非常重要的组成部分,也是开发Web应用程序的首要之选。它使Web应用的开发得到简化和收益最大化。后台采用JAVA语言编写,JAVA语言不仅有安全稳定的特点而且还可以一次编写随处运行。JAVA语言是一个面向大众的、开放式的平台,因为是一种企业级应用规范的J2EE,所以被大多数企业用于实践操作来提高开发效率。
随着汽车数量大范围的增加以及社会的快速发展,一个方便、快捷的停车场显得尤为重要,而本系统因为简单、快捷的优点会成为人们的首要选择。通过JAVA开发各模块组合之后与MySQL数据库连接,使停车场管理系统具备了良好的信息管理,维护的时候比较容易,运行的时候效率也比较高,具有友好的界面和可移植性。
1.2 目的和意义
根据目前对交通和停车场状况的调查分析,一个完整的停车场管理系统显得非常重要。本停车场管理系统解决了一般停车场存在的利用率低、收费繁琐等问题,车主不仅可以快速的进出场节省时间,而且还避免了一些不必要的事情发生,极大地增加了停车的安全性和可靠性。本系统也秉持着以大众为核心,以服务大众为根本的宗旨。因为停车场管理系统是将数据存储在数据库中的,所以停车场管理系统在对于停车信息管理上展示效果更为直观。因此提高了人们生活效率使社会展更为迅速,让人们的生活更加美好。
1.3 国内外研究现状
现代化的停车场大多数都是通过将系统进行信息化处理来提高停车场的竞争力和管理效率。作为一个以停车场管理体系为基础而开发的应用管理系统,本停车场管理系统就是通过将车主、车辆、车位等管理过程进行信息化来规范停车场的管理,为高效率的交通设施作下坚实的基础。
目前在国外的一些地区,特别是欧洲的一些国家,停车产业的发展已有很多年的历史,并且已经达到了极好的有序发展。X的停车产业每年收入越达到260亿美元,占全美GDP的3.25%。我国的汽车2020年的保有量会达到2.8亿辆,早在2015年国家发改委发布了《关于加强城市停车设施建设的指导意见》,第一次将吸引社会资本、推进停车产业化纳入到了国家层面。因为社会的发展我国汽车数量的不断上升,产生了大量的停车需求,停车产业将迎来新的发展机遇。随着停车产业化的发展,大多数停车场会由原来的粗放经营模式转换为精细化经营模式。在目前停车场管理系统招标项目的中标企业中,停车场管理公司逐年上涨。2017年11月28日,华平投资集团对外宣布,向阳光海天停车管理集团投资共计15亿元,这次投资也是国内第一次、并且是最大的对停车行业的一笔股权投资。“互联网+停车”为停车产业迎来了新的发展思路,使停车业进入了智慧化、信息化的时代,提高了停车场的利用率以及高效共享率,对推进智慧交通战略具有着深远的意义。“互联网+停车场”会成为停车发展的主要方向。
1.4 系统开发的环境
1.4.1 开发工具与环境
开发工具与环境如图表1.1所示:
表1.1 开发工具与环境表
开发工具 | MyEclipse2014 |
数据库 | Mysql 5.5 |
辅助软件 | ProcessOn |
编程语言 | Java、Html、JavaScript |
1.4.2 软硬件平台要求
硬件平台:CPU:1.60GHz以及以上,内存:4G以及以上,硬盘:1T显示:1280×720分辨率最佳。
软件平台:操作系统:简体中文Microsoft Windows7,数据库:Mysql 5.5,开发工具:装有JDK的MyEclipse2014等工具,编程语言:Java。
1.5 系统设计的方法和技术
1.5.1 系统设计的方法
本系统在MyEclipse2014平台上运用Java语言来实现的。主要用到的技术为MVC设计方法进行开发。最初MVC是存在于软件程序中的,MVC三个字母分别对应的是模型层、视图层和控制层,采用MVC开发设计模式的目的是为了降低代码的耦合度和提高代码的重用性,MVC设计模式可以使不同的软件程序以不同的形式展现。例如数据的统计可以使用各种的柱状或者饼状图来展示。控制层主要是用来控制模型层和视图层可以进行同步运行,如果模型层发生了改变,视图层就会进行同步的更新做出相应的改变。MVC设计模式是在上世纪八十年代研发的一种软件开发设计模式,现如今已经被非常广泛的应用。且MVC设计模式是一个很好的工具箱,很多软件应用的视图都可以用它来处理。
MVC可以使用多个视图访问同一个服务器端的程序代码。例如,用户可以使用不同的客户端购买某一件东西,虽然使用的客户端不同但是处理购买东西的基本流程是一样的。因为后台返回给前端的数据没有进行格式化的处理,所以同样的构造不能被不同的视图共同使用。例如,不同的数据可以使用不同的展示形式,而改变这些展现形式只需要改变视图层的实现过程并不需要动用模型层和控制层,因为在表示层已经将使用的数据和业务实现的规则分开,所以编写程序的代码就可以进行大规模的重用。
1.5.2 系统所用相关的技术
本系统主要使用Java语言进行编写,JAVA语言是目前市场上比较流行的编程语言。使用MyEclipse2014和Tomcat作为后台服务器来运行,本系统选择使用了B/S体系结构,因为这种体系结构比较灵活,真正体现了一次开发处处运行。数据库设计选择了MySQL ,MySQL数据库不仅使用简便、服务稳定,而且还开放源代码且无版权制约,所以自主性强、使用成本低。接下来对本系统主要使用的平台和技术进行具体解释。
本系统使用MyEclipse开发平台进行程序服务器整合来提高开发过程效率。MyEclipse开发平台是对Eclipse 开发平台的进一步扩展,MyEclipse开发平台包含了完善的程序编码、程序调试、程序测试以及发布程序功能的整个过程,支持超文本标记语言HTML,层叠样式表CSS,数据库SQL等。本系统在MyEclipse开发平台主要使用Java语言进行开发。所以本系统也是基于Java的。
本系统Web服务器使用的是Tomcat,因为Tomcat具有较高的可靠性,适合中小型系统,不仅安装简单而且配置环境变量也简单,操作起来也非常的方便,Tomcat服务器还具有很多便捷的功能,不仅是Servlet和JSP容器,还可以处理HTML界面在所有的应用服务器中是比较小巧型的、轻量级的Web服务器。Tomcat是开发程序和调试JSP界面的首要选择。
本系统数据库采用的是MySQL数据库, MySQL数据库是关系数据库中的小清新,因为 MySQL 数据库的体积较小、运行速度快,所以它成为了中小型系统的首要选择。也因为MySQL数据库卓越的性能以及脱颖而出的特点,所以MySQL加上JAVA以及Tomcat的组合成为了非常好的开发环境。
本系统前台界面使用JSP技术动态的生成Web网页。具体是通过调用JSP引擎来生成JAVA文件,再将这个JAVA文件编译成类文件并执行这个类文件以生成动态网页。
对于目前的管理系统来说,主要采用两种主流的体系结构,分别是C/S模式和B/S模式。本系统使用的是B/S架构模式来完成设计的。这种结构可以进行信息分布式处理,有效降低资源成本,提高系统的性能。目前B/S 架构模式的应用范围非常的广泛,因为它不仅在处理模式方面上简化了客户端的操作,而且用户的桌面安装有浏览器便可运行自己的程序,B/S的架构模式将应用逻辑集中在服务器和中间件上,大大的提高了处理数据的能力。
第2章 系统分析
2.1 系统可行性分析
经济可行性方面,因为系统属于B/S模式,所以不需要大量的硬件支持即可在浏览器运行。该系统也是我自己独立开发完成,所以不需要额外的费用,因此成本低且效率高。综上所述在经济上本管理系统是可行的。
技术可行性方面,本系统前台使用JSP技术动态生成Web网页。后台采用JAVA语言提高代码的安全性和可靠性,采用MVC开发模式降低代码的耦合度、提高代码的重用性。基本可以满足停车场管理系统的正常开发。
操作可行性方面,因为设计本系统的初衷主要是为了方便人们的生活。所以功能设计操作方面尽可能的便捷并方便用户的使用。例如通过下拉菜单和弹窗来减少用户的操作。界面上的操作按钮也尽量的突显出来,方便用户能够快速的找到。因此操作可行性方面基本满足要求。
社会可行性方面,随着我国经济持续快速的发展,停车场的发展对促进城市规划的完善有着重大意义。一个好的停车场需要一个质量相当的停车场管理系统与之匹配,本系统解决了一般停车系统存在的效率低、过程繁琐等问题。因此本系统基本满足大多数停车场对管理系统的需求,所以具有较高的社会可行性。
通过以上四个方面的可行性分析之后,可得出本系统操作简单、容易上手,且具有较高的可行性。
2.2 系统性能分析
2.2.1 数据精确度
本停系统使用索引的方式来加快数据的查询速度,并且在系统中也对各种查询条件进行优化来确保数据的精确度。
2.2.2 时间特性
本系统使用异步交互的实现方式,避免用户等待时间较长,使用户在较短时间内完成操作,因此本系统时间特性良好。
2.2.3 适应性
开发本系统考虑了人们社会生活中停车场的流程节点,因为系统由作者独立开发,所以如果用户遇到问题时,作者能够及时的进行解答并会详细帮助用户尽快的熟练操作。
2.3 系统需求分析
目前国内的许多地方包括超市、火车站、汽车站以及小区都有停车场,不同的停车场对管理系统的要求不同,但大多数停车场的需求都会有一些共性问题。比如停车场管理过程繁琐、停车场车位利用率低等问题。停车场是供停放车辆使用的场地,为道路交通提供停车场会大量减轻车辆为交通带来的压力。随着社会的发展以及停车场的不断升级,人们对停车场管理系统的要求也越来越高。因为停车场管理方模式以及需求的不同,所以管理员可根据自身条件选择一个高效率、低成本的停车管理系统。因此为了提升管理效率就需要一个新型停车场管理系统。所以通过对社会生活中停车场管理系统的调查分析,开发了本停车场管理系统来提高停车场的效率和利用率。
第3章 系统的设计与实现
3.1系统总体结构设计
本系统以科技飞速发展的当下社会为背景,主要用来为人们的日常生活提供便利。为了帮助读者对本系统的整体结构以及模块间的关系有一个整体的了解,下面将对系统的总体结构进行论述。
本系统总共可分为六大块模块:分别有系统信息管理模块、车位信息管理模块、IC卡信息管理模块、固定车主停车管理模块、临时车辆停车管理模块以及系统功能操作模块。
系统信息管理模快:该模块可新增用户以及角色信息,同样的也可对新增的用户和角色信息进行基本功能操作。
车位信息管理模块:管理员登录系统之后找到菜单中的车位信息管理,点击添加车位信息菜单进入新增车位信息界面将新增的车位信息按照规定填写完成后,点击确定按钮提交就可以在管理车位信息操作界面中看到刚刚新增的车位基本信息。管理车位信息操作界面中可以查看所有添加的车位信息状况,也可对车位信息进行基本的功能操作。
IC卡信息管理模块:管理员登录系统之后找到菜单中的IC卡信息管理,点击添加IC卡菜单进入新增IC卡信息界面将新增IC卡信息按照规定填写完成后,点击确定按钮提交便可在IC卡信息管理界面查看到新增的IC卡信息。在管理IC卡操作界面,可根据IC基本信息对IC卡进行模糊查询,也可对IC卡进行编辑和删除。
固定车主停车管理:该模块是对停留时间久的车位进行的管理。固定车主停车管理的出入场设置中,可根据已添加的IC卡号添加入场信息,选中IC卡号下拉框可查询到之前添加的IC卡用户,点击确定按钮即可添加入场信息。下方的出场信息管理中可以查看到添加过的入场信息,也可对车辆进行设置是否出场,点击设置出场即可设置车辆出场。停车信息管理中可查看到所有固定车主的停车信息以及出入场时间。如果车辆未出场则在出场时间中显示车辆未出场。出入场设置界面管理员点击设置车辆出场操作时,系统会根据车主停留时间计算是否达到一周,达到一周时间系统将自动跳出提示框提示管理员收费,费用为一周四百元以此累加。管理员可将所有停车信息导出Excel表格。
临时车辆停车管理:该模块是为停留时间较短车辆设计的模块,车辆入场信息中可根据临时IC卡号和车牌号码添加入场信息。车辆出场信息界面可查看到车辆的基本信息以及出入场时间,根据车辆停留的时间计算停车费用,具体为将新增临时车辆停车信息填写完毕之后点击确定跳转至车主出场信息界面,这时在车主出场信息中新增的车辆信息只显示车辆入场时间则车主出场时间显示状态未出场,如果设置车辆出场可在操作列中点击结算功能系统将根据车辆停留时间收取费用。
系统功能操作模块:主要为两个功能一个是修改密码功能一个是退出系统功能。用户登录系统成功后,便能直接的找到这个模块,对自己的密码进行更新。该系统的主要结构图如图3.1所示:
图3.1 系统的层次结构图
3.2 系统总体业务流程设计
系统流程是从登录系统开始,经过一系列操作之后退出系统的过程。为了使读者能对停车场管理系统的总体业务流程有一个清晰的了解将用系统流程图来展示。主要业务流程如图3.2所示:
图3.2 系统的业务流程图
3.3数据库设计
3.3.1 数据库的概念结构设计
该系统数据库使用的是Mysql数据库,在系统的数据库中数据表设计的是否合理会体现出这个系统的设计是否合理。本停车场管理系统中,主要有用户、IC卡、车位信息、固定车主、临时车主和角色六个实体,接下来用下面的E-R图对这六个实体进行介绍展示。如E-R关系图3.3所示:
图3.3 E-R关系图
3.3.2 数据库的逻辑结构设计
下面是关于停车场管理系统的数据库表,主要的数据信息表大致结构分别如下:
用户表用户表主要用来记录用户的ID、用户姓名以及用户密码如表3.1所示:
表3.1 用户表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 说明 |
1 | User_id | Int | 11 | 是 | 否 | 用户id |
2 | Role_id | Int | 11 | 否 | 是 | 角色id |
3 | User_name | Varchar | 50 | 否 | 是 | 用户姓名 |
4 | Real_name | Varchar | 50 | 否 | 是 | 真实姓名 |
5 | User_pwd | Varchar | 50 | 否 | 是 | 用户密码 |
6 | User_phone | Varchar | 50 | 否 | 是 | 用户电话 |
IC卡信息表IC卡信息表用来记录IC卡号以及车主的基本信息,在数据库中建一个表专门用来存储、IC卡编号、车位编号、用户名称、用户性别、家庭住址和车牌号。如表3.2所示:
表3.2 IC卡信息表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 说明 |
1 | Card_id | Int | 11 | 是 | 否 | IC卡编号 |
2 | Seat_id | Int | 11 | 否 | 是 | 车位编号 |
3 | User_name | Varchar | 50 | 否 | 是 | 用户名称 |
4 | User_Sex | Varchar | 50 | 否 | 是 | 用户性别 |
5 | User_addr | Varchar | 50 | 否 | 是 | 家庭住址 |
6 | Car_num | Varchar | 50 | 否 | 是 | 车牌号 |
车位信息表车位信息表主要记录停车场的停车位信息,在数据库中建一个表专门用来存储车位ID、车位编号、所属区域、车位状态和车位备注。如表3.3所示:
表3.3 车位信息表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 说明 |
1 | Seat_id | Int | 11 | 是 | 否 | 车位ID |
2 | Seat_num | Varchar | 50 | 否 | 是 | 车位编号 |
3 | Seat_area | Varchar | 50 | 否 | 是 | 所属区域 |
4 | Seat_state | Varchar | 50 | 否 | 是 | 车位状态 |
5 | Seat_tag | Varchar | 50 | 否 | 是 | 车位备注 |
临时车辆停车管理信息表临时车辆停车管理信息表主要记录临时车主停车管理,在数据库中建一个表专门用来存储车位ID、IC卡id、车牌号码、车辆入场时间、车辆出场时间和停车费用。如表3.4所示:
表3.4 临时停车管理信息表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 说明 |
1 | temp_id | Int | 11 | 是 | 否 | 车位ID |
2 | Car_id | Int | 11 | 否 | 是 | 车位编号 |
3 | Car_num | Varchar | 50 | 否 | 是 | 车牌号码 |
4 | Entry_date | Varchar | 50 | 否 | 是 | 车辆入场日期 |
5 | Entry_time | Varchar | 50 | 否 | 是 | 车辆入场时间 |
6 | Out_date | Varchar | 50 | 否 | 是 | 车辆出场日期 |
7 | Out_time | Varchar | 50 | 否 | 是 | 车辆出场时间 |
8 | Temp_money | Varchar | 50 | 否 | 是 | 停车费用 |
固定停车管理信息表固定车主停车管理信息表主要记录固定车主停车管理,在数据库中建一个表专门用来存储车位ID、IC卡id、车辆入场日期、车辆出场日期。如表3.5所示:
表3.5 固定停车管理信息表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 说明 |
1 | fixed_id | Int | 11 | 是 | 否 | 车位ID |
2 | car_id | Int | 11 | 否 | 是 | IC卡id |
3 | entry_date | Varchar | 50 | 否 | 是 | 车辆入场日期 |
4 | entry_time | Varchar | 50 | 否 | 是 | 车辆入场时间 |
5 | Out_date | Varchar | 50 | 否 | 是 | 车辆出场日期 |
6 | Out_time | Varchar | 50 | 否 | 是 | 车辆出场时间 |
7 | Fixed_money | Varchar | 50 | 否 | 是 | 停车费用 |
角色表角色表主要记录角色有哪些名称,在数据库中建一个表专门用来存储角色ID、角色名称。如表3.6所示:
表3.6 角色表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 说明 |
1 | role_id | Int | 11 | 是 | 否 | 角色ID |
2 | role_name | Varchar | 50 | 否 | 是 | 角色名称 |
3.4 系统实现
3.4.1 登录注册功能实现
登录注册:系统运行成功后进入login.jsp登录界面。通过input标签的name获取到输入框填写的值并将这个值传入到后台数据库和user表相应的值进行对比。如果用户名和密码不存在则弹出提示框提示请注册,如果用户名或密码错误弹出提示框提示用户名或密码错误请重新登录。登录界面点击注册按钮开始注册,注册相当于在数据库中新增用户信息。注册前进行判断查看用户名是否已经存在,如果用户名已经存在数据库,则注册失败,弹出对话框提示用户重新输入,以上功能将由RegisterHandle函数来实现。登陆的流程如图3.4所示:
图3.4 登录流程图
3.4.2 系统信息管理功能实现
系统信息管理模块可新增用户和角色信息,同样的也可对新增的用户和角色信息进行基本功能操作。其主要业务结构图和流程图如图3.5、3.6所示:
图3.5 系统信息管理结构图
图3.6 系统信息管理流程图
添加角色:选中右边菜单触发超链接标签进入RoleAdd.jsp添加角色界面,在客户端输入编号和名称,点击确定触发BtnSure按钮提交表单,通过表单中的action地址找到RoleHandle类里面的InsertEntity()函数进行数据的添加。通过Request.getParameter()方法获取到客户端界面输入的值调用Role类里面的CheckExist()方法并进行If判断,将新增的角色编号和数据库中存在的角色编号进行对比,如果编号值重复则弹出提示框已存在该用户,数据添加失败。反之则添加数据成功并跳转到角色管理界面。
管理角色信息:管理角色信息可以角色信息进行查询、编辑、和删除操作。选中右边菜单触发超链接标签进入RoleMsg.jsp管理角色信息界面,通过Form表单中的action地址找到RoleHandle类并找到GetEntityByWhere()方法根据查询条件获取对象所有的数据列表,并将数据存放到Request对象里面。通过forward( request , response )方法将查询到的数据重定向到客户端的RoleMsg.jsp界面,在RoleMsg.jsp界面通过request.getAttribute(“list”)获取servlet端转发的list数据列表。在管理角色信息界面可以按照角色编号和角色名称进行查询,通过request.getParameter(“condition”)获取到查询字段的名称,再通过getEntityByWhere()方法执行语句对数据库进行查询。在RoleHandle类中通过getEntityByWhere()方法接收将查询到的数据返回给客户端通过客户端界面显示出来。编辑功能的实现首先在JSP页面获取通过url传过来的role_id,然后实例化Role 对象根据role_id获取Role数据,随后将将List数据转换成Object[]。然后通过输入框的value获取值。删除操作根据RoleHandle类找到deleteEntity()函数,再获取前台通过get方式传过来的role_id值然后调用Role类里面的deleteEntity()方法执行sql语句进行删除操作,删除成功后跳转至管理页面。
intwherePage=Integer.parseInt(role.getPageCountByWhere(where).toString());
List<Object> list=role.getEntityByWhere(where, page);
request.setAttribute(“list”,list);
request.getRequestDispatcher(“/Admin/RoleMsg.jsp”).forward(request,response);}
添加用户:选中右边菜单触发超链接标签进入UserAdd.jsp添加用户界面,将基本信息填写完毕后,点击确定触发BtnSure按钮提交表单,点击重置BtnCancel按钮,将清空输入框。通过表单中的action地址找到UserHandle类里面的InsertEntity()函数进行数据的添加。通过Request.getParameter()方法获取到客户端界面输入的值,并调用Role类里面的CheckExist()方法来执行SQL语句成功返回True错误返回False。最后将结果通过UserHandle类返回给客户端。
管理用户:在管理用户操作界面可对用户基本信息进行查询、编辑和删除操作。选中右边菜单触发超链接标签进入UserMsg.jsp管理用户信息界面,删除操作根据UserHandle类找到deleteEntity()函数,在deleteEntity()函数里面获取前台通过get方式传过来的JId值,然后调用User类里面的deleteEntity()方法执行sql语句进行删除操作,删除成功后跳转至管理页面。
3.4.3 车位信息管理功能实现
车位信息管理模块是对车位基本信息进行管理的模块,车位信息管理可根据车位基本信息进行添加。点击添加车位信息菜单连接进入新增车位基本信息界面将新增的车位基本信息按照规定填写完成后,点击确定按钮提交就可以在管理车位信息操作界面中看到刚刚新增的车位基本信息。管理车位信息操作界面中可查看所有添加的车位信息状况,也可对车位基本信息进行打印、编辑、删除操作。其主要结构和流程如图3.7、3.8所示:
图3.7 车位信息管理结构图
图3.8 车位信息管理流程图
添加车位信息:进入添加车位信息界面将信息填写完毕点击确定按钮,这时客户端会向服务端发送一个请求。通过Form表单的action地址找到SeatHandle类,通过SeatHandle类找到insertEntity()函数。在insertEntity()函数里面通过Seat类调用insertEntity()方法执行后台sql语句。再通过SeatHandle类的InsertEntity()函数进行IF判断如果seat.insertEntity()等于1添加数据成功反之数据添加失败。
管理车位信息:点击管理车位信息进入超链接,通过超链接找到链接地址SeatMsg.jsp,再通过SeatMsg.jsp里面Form表单action地址找到SeatHandle类,在SeatHandle类的getEntityByWhere()函数中获取数据列表。具体为通过Seat类的getEntityByWhere()函数获取查询后的车位信息列表,再在SeatHandle类的getEntityByWhere()函数将数据存放到Request对象里面,最后通过forward( request , response )请求转发到SeatMsg.jsp来响应客户端。删除操作根据SeatHandle类找到deleteEntity()函数,再获取前台通过get方式传过来的seat_id值然后调用Seat类里面的deleteEntity()方法执行sql语句进行删除操作,删除成功后跳转至管理页面。编辑车位信息是根据seat_id确定唯一值,在SeatEdit.jsp界面通过request.getParameter(“seat_id”).toString()获取到url传过来的seat_id,然后实例化Seat对象根据ID获取Seat数据最后将将List数据转换成Object[]通过obj获取车位信息值显示在输入框。
response.setCharacterEncoding(“UTF-8”);
String seat_id=request.getParameter(“seat_id”).toString();
DAL.Seat seat=new DAL.Seat();
List<Object> seatList=seat.getEntityById(seat_id);
Object[] obj=(Object[])seatList.get(0);
3.4.4 IC卡信息管理功能实现
IC卡信息管理模块是在管理员登录系统之后找到菜单中的IC卡信息管理,点击添加IC卡菜单进入新增IC卡信息界面将新增IC卡信息按照规定填写完成后,点击确定按钮提交便可在IC卡信息管理界面查看到新增的IC卡信息。管理IC卡操作界面,可根据IC基本信息对IC卡进行模糊查询,也可对IC卡进行编辑和删除。其主要结构和流程如图3.9、3.10所示:
图3.9 IC卡信息管理结构图
图3.10 IC卡信息管理流程图
添加IC卡类型:点击添加IC卡类型通过前端界面Index.jsp超链接进入CardAdd.jsp界面。添加时车位编号可直接下拉框显示,先实例化Seat对象然后获取到seat_id赋值给list并进行for循环随后将取得值放入object输出显示。
Seat seat=new Seat();
List<Object> list=seat.getNoUseSeat();
将信息填写完毕点击确定按钮提交Form表单,通过Form表单中的action地址找到CardHandle类的insertEntity()函数,在insertEntity()函数里面通过Card类的insertEntity()方法进行后台数据库的添加操作并将执行的数据存放到Request对象里面。如果数据添加成功提示数据添加成功并跳转到管理IC卡类型界面。
管理IC卡类型:点击管理IC卡类型通过前端界面Index.jsp超链接进入CardMsg.jsp界面。通过Form表单中的action找到CardHandle类,在CardHandle类找到getEntityByWhere()函数,在getEntityByWhere()函数中使用card类获取getEntityByWhere()方法用于查询数据列表,将获取后的查询列表存入list中,之后将list数据存放到request对象中,用于转发给前台页面使用。通过request的forward(request, response)方法将页面返回到CardMsg.jsp,在CardMsg.jsp界面获取servlet端转发的list数据列表并循环数据列表,生成表格行。编辑功能的实现首先在JSP页面获取通过url传过来的card_id,然后实例化Card对象根据card_id获取Card数据,随后将将List数据转换成Object[]。然后通过输入框的value获取值。删除操作根据CardHandle类找到deleteEntity()函数,再获取前台通过get方式传过来的card_id值然后调用Role类里面的deleteEntity()方法执行sql语句进行删除操作,删除成功后跳转至管理页面。
if(list!=null)
{out.print(“<tr><td>”+obj[0]+”</td><td>”+obj[6]+”</td><td>”+obj[2]+”</td><td>”+obj[3]+”</td><td>”+obj[4]+”</td><td>”+obj[5]+”</td><td><a href='”+path+”/Admin/CardEdit.jsp?card_id=”+obj[0]+”‘ class=’a_edit’>编辑</a><a href='”+path+”/CardHandle?type=1&card_id=”+obj[0]+”‘ class=’a_del’ onclick=’return confirm(\”是否确认删除?\”)’>删除</a></td></tr>”);}}
3.4.5 固定车主停车管理功能实现
固定车主停车管理是对停留时间久的车位进行的管理。固定车主停车管理的出入场设置中,可根据已添加的IC卡号添加入场信息,选中IC卡号下拉框可查询到之前添加的IC卡用户,点击确定按钮即可添加入场信息。便可在下方的出场信息管理中可以查看到添加过的入场信息,也可对车辆进行设置是否出场,点击设置出场即可设置车辆出场。停车信息管理中可查看到所有固定车主的停车信息以及出入场时间。如果车辆未出场则在出场时间中显示车辆未出场。出入场设置界面管理员点击设置车辆出场操作时,系统会根据车主停留时间计算是否达到一周,达到一周时间系统将自动跳出提示框提示管理员收费,费用为一周四百元以此累加。管理员可将所有停车信息导出Excel表格。其主要结构和流程如图3.11、3.12所示:
图3.11 固定车主停车管理结构图
图3.12 固定车主停车管理流程图
出入场设置:固定车主成功办理IC卡后在固定车主的出场设置界面中可获取固定车主的IC卡号,并根据车主的IC卡号来添加车主的入场信息。在界面通过下拉框的方式获取固定车主的IC卡号点击确定按钮将添加好的车主信息展示在下方的出场信息管理中。下拉框显示的车主信息是获取的车主添加IC卡成功之后信息,这个功能使用card_id作为标识符获取到Card的IC卡号,实例化Card类并通过Card类调用getEntity()函数将card_id值循环取出并显示在下拉框中。在出场信息管理中可以设置车辆的出场。点击设置车辆出场类似于一个删除操作将设置过车辆出场的车辆信息在出入场设置中删除,在此同时在停车信息管理里面出场日期会发生改变。停车信息管理的日期会从刚开始的未出场状态自动生成为一个确定的日期时间。
String result=obj[4].toString().equals(“1111-11-11″)?”未出场”:obj[4].toString();
out.print(“<tr><td>”+obj[0]+”</td><td>”+obj[1]+”</td><td>”+obj[7]+”</td><td>”+obj[6]+”</td><td>”+obj[2]+” “+obj[3]+”</td><td>”+result+”</td><td><a href='”+path+”/FixedHandle?type=1&fixed_id=”+obj[0]+”‘ class=’a_del’ onclick=’return confirm(\”是否确认删除?\”)’>删除</a></td></tr>”);}}
停车信息管理:在停车信息管理中可根据记录编号、IC卡号和车牌号码进行模糊查询。会显示车辆的入场日期时间可出场日期时间,如果车辆未出场则在出场日期显示车辆未出场。功能具体实现首先通过request.getAttribute()获取到FixedHandle类转发的list数据列表并循环数据列表生成表格行。还可将生成的表格生成Excel导出。根据记录编号、IC卡号和车牌号码进行模糊查询功能具体实现过程为在FixedHandle类找到getEntityByWhere()函数,在getEntityByWhere()函数中通过request.getParameter()获取查询字段的名字,通过Fixed类的getEntityByWhere()方法获取查询后的数据并将数据存放到request对象中,用于转发给前台页面使用。删除操作根据FixedHandle类找到deleteEntity()函数,再获取前台通过get方式传过来的Fixed_id值然后调用Temp类里面的deleteEntity()方法执行sql语句进行删除操作,删除成功后跳转至停车管理页面。
固定车主收费功能的实现:本系统的固定车主停车管理模块主要是为了停留至少一周时间的车主所设立的,所以在出入场设置界面管理员点击设置车辆出场操作时,系统会根据车主停留时间计算是否达到一周,达到一周时间之后系统将自动弹出提示框提示管理员收费,费用为一周四百元以此累加。管理员点击操作列的结算功能将跳转至结算界面,在结算界面会显示固定车主的基本信息以及停留时长和应收取的费用。具体实现为点击设置出场时进行IF判断,在IF判断里面获取车辆入场和出场累积时间,如果时间大于等于一周弹出请收费提示框并跳转至停车管理操作界面,如果时间小于一周弹出是否确认出场提示框。在停车信息管理界面,管理员选择时间大于一周的车主信息点击操作列的结算功能触发超链接跳转至FixedSettle.jsp界面,在FixedSettle.jsp页面获取url传过来的fixed_id并实例化Fixed对象,根据fixed_id获取Fixed数据并将Fixed数据转换成Object[]赋值给obj,通过obj获取到车辆停放时间以及基本信息。计算费用在function()函数里面首先通过日期列input标签的name获取到车辆入场时间和出场时间,之后通过获取到的出场时间减去入场时间。再用Math.ceil()方法向上取整得到一个整数时间并显示在输入框中,IF判断如果时间等于168小时则显示费用为400元。点击确定按钮之后系统跳转至车辆信息管理界面,这时车辆出场时间的状态改变由未出场状态变为具体出场时间。如果时间小于一周在停车信息管理界面车辆的出场时间也会变为具体时间,管理员可在结算界面查看车辆在停车场的停留时长不做结算。
3.4.6 临时车辆停车管理功能实现
临时车辆停车管理是为停留时间较短车辆设计的模块,车辆入场信息中可根据临时IC卡号和车牌号码添加入场信息。车辆出场信息中可查看到车辆的基本信息以及出入场时间,根据车辆停留的时间计算停车费用,具体为将新增临时车辆停车信息填写完毕之后点击确定跳转至车主出场信息界面,这时在车主出场信息中新增的车辆信息只显示车辆入场时间则车主出场时间显示状态未出场,如果设置车辆出场可在操作列中点击结算功能系统将根据车辆停留时间收取费用。其主要结构和流程如图3.13、3.14所示:
图3.13 临时车辆停车管理结构图
图3.14 临时车辆停车管理流程图
车主入场信息:车主入场信息相当于一个添加功能。填写好临时IC卡号和车牌号码点击确定按钮即可添加。点击提交按钮将触发Form表单,通过Form表单的action地址找到TempHandle类的insertEntity()函数,在insertEntity()函数里面通过request.getParameter()得到客户端传入的值。在insertEntity()函数里面调用Temp类的insertEntity()方法进行数据库操作,临时卡号和车牌号码不允许为空,在insertEntity()函数里面进行IF判断如果为空弹出提示框显示车牌号码不能为空。
if(!temp.checkExist(card_id)){
out.write(“<script>alert(‘车牌号不能为空’); location.href = ‘/Parking/TempHandle?type=4’;</script>”);}}
车主出场信息:具体功能实现为通过TempHandle类的getEntityByWhere()函数获取对象的所有数据列表,将数据存放到request对象中,通过request对象将数据转发给前台页面。在前台页面通过request.getAttribute()获取控制端转发的list数据表,循环数据列表生成表格显示。模糊查询功能具体实现过程为在TempHandle类找到getEntityByWhere()函数,在getEntityByWhere()函数中通过request.getParameter()获取查询字段的名字,通过Temp类的getEntityByWhere()方法获取查询后的数据并将数据存放到request对象中,用于转发给前台页面使用。删除操作根据TempHandle类找到deleteEntity()函数,再获取前台通过get方式传过来的temp_id值然后调用Temp类里面的deleteEntity()方法执行sql语句进行删除操作,删除成功后跳转至管理页面。
停放车辆收费功能实现:车主出场的时候根据车辆的停留时间进行收费,车辆如果未出场则在出场日期列显示车辆的状态为未出场状态,停车费用列状态显示为未结算状态。点击操作列的结算功能将跳转至结算界面,在结算界面会显示车辆基本信息以及停留时长和应收取的费用,停留时长一小时或不满一小时收费三元并以此叠加。具体实现为用户点击结算将触发超链接跳转至TempEdit.jsp页面,在TempEdit.jsp页面获取url传过来的temp_id并实例化Temp对象,根据temp_id获取Temp数据并将Temp数据转换成Object[]赋值给obj,通过obj获取到车辆停放时间以及基本信息。计算费用在function()函数里面首先通过日期列input标签的name获取到车辆入场时间和出场时间,之后通过获取到的出场时间减去入场时间。再用Math.ceil()方法向上取整得到一个整数时间并显示在输入框中,通过获取到的价格乘以时间最后得到一个总价。点击确定按钮之后系统跳转至车主出场信息界面,这时车辆出场时间的状态改变从未出场变为具体出场时间。
var lessTime=new Date(dateOut).getTime()-new Date(dateEntry).getTime();
var hours=Math.ceil(parseFloat(lessTime)/(1000*60*60));
$(“[name=time]”).val(hours);
$(“[name=temp_money]”).val($(“[name=price]”).val()*hours);
$(“[name=price]”).blur(function(){
$(“[name=temp_money]”).val($(“[name=price]”).val()*hours);});
3.4.7 系统功能操作功能实现
系统功能操作包括修改密码和退出登录功能,其主要流程如图3.15所示:
图3.15 系统功能操作流程图
修改密码功能实现:点击修改密码面界面输入原始密码使用UserHandle类的chagePwd()函数,在chagePwd()函数里面使用user类调用checkPwd()方法检查密码是否输入正确。新密码和确认新密码是在ChagePwd.jsp界面写了一个checkPwd()函数,如果两次密码输入不一致弹出一个提示框提示两次密码不一致请重亲输入。
退出登录功能:当用户退出系统时,点击退出登录会跳转到Logout.jsp页面,在Logout.jsp页面重定界面使用response的sendRedirect方法重定向到登录界面。
第4章 系统的测试
测试是为了发现软件项目设计中存在的缺陷而执行程序的过程,同时也是软件程序中的最后一个步骤。测试可以测试项目的性能是否符合要求,项目预期功能是否全部实现。也可以查找出软件设计的不足以及是否符合用户的需求。比如程序功能异常,前端界面拉伸问题等。总的来说测试就是测试软件是否达到了预期结果。
4.1 测试方法
软件测试方法有很多,常用的有白盒测试、黑盒测试和灰盒测试。白盒测试可以查看到系统的内部结构,并且使用软件的内部知识来进行数据的测试,所以白盒测试对测试人员的要求较高,需要测试人员有一定的编程经验。黑盒测试看不到系统的内部结构,被称为是功能测试。主要用来测试系统能否正常运行。灰盒测试是介于白盒和黑盒测试之间的一种测试方法。
4.2测试内容
将项目部署到服务器之后运行项目看是否会报错,系统项目不报错的情况下登录系统并查看系统各个功能是否能正常操作。
登陆界面如图4.1所示:注册界面如图4.2所示:
图4.1 登录界面
图4.2 注册界面
系统信息管理如图4.3所示,管理用户信息如图4.4所示:
车位信息管理如图4.5所示:管理车位信息如图4.6所示:
打开固定车主停车管理菜单栏如图4.7所示:停车信息管理的界面如图4.8所示:
打开临时车辆信息管理菜单栏如图4.9所示:车辆出场信息的界面如图4.10所示:
系统功能测试如表4.1所示:
表4.1 系统功能测试表
模块名称 | 测试内容 | 测试情况 | 实际结果 |
用户
模块 | 注册 | 输入不符合规定点击注册,无法注册成功;输入正确的字符,点击注册,注册成功。 | 功
能 实 现 |
登录 | 当用户名不存在或者密码错误时登录失败;输入正确的用户名密码登录成功。 | ||
系统
信息 管理 模块 | 添加角色信息 | 可正常添加角色。 | |
管理角色信息 | 可对角色进行查询编辑和删除。 | ||
添加
用户信息 | 可以正常添加用户。 | ||
管理用户信息 | 可对用户进行查询编辑和删除。 | ||
车位
信息 管理 模块 | 添加车位信息 | 可正常添加车位信息。 | |
管理车位信息 | 可以对车位进行查询、编辑和删除。 | ||
IC卡
信息 管理 模块 | 添加IC卡类型 | 可对IC卡类型进行添加。 | |
管理IC卡类型 | 点击右方的IC卡信息管理菜单栏,可对IC卡进行查询编辑和删除。 | ||
固定
车主 停车 管理 模块 | 出入场设置 | 点击右方的固定车主停车信息管理菜单栏并打开出入场设置,可添加入场信息并查询出场信息。 | |
停车信息管理 | 可对停车信息进行查询编辑并可将全部停车信息管理导出Excel表格。 | ||
临时
车主 停车 管理 模块 | 车主入场信息 | 可添加临时IC卡号、车牌号。 | |
车主出场信息 | 可对停车信息进行模糊查询编辑并可将全部停车信息管理导出Excel表格。 | ||
系统功能操作 | 修改密码 | 可对密码进行修改。 | |
退出系统 | 点击退出系统将退出登录。 |
4.3测试结论
结果显示项目可以正常运行并无异常现象。软件操作界面可以正常的显示,所有功能都能够正常操作。
结 论
本毕业设计实现了停车场管理系统的预期功能并达到了预期目的。主要实现的功能有管理用户和角色信息的系统信息管理功能,管理车位信息的车位信息管理功能,管理固定停放车辆的固定车主停车管理功能,管理临时停放车辆的临时车辆停车管理功能等。本设计使用JAVA语言进行编写保证了代码的安全性和可靠性,使用MVC开发模式降低代码的耦合度、提高代码的重用性。
虽然系统的功能实现了,但是也有很多的不足之处。例如在系统的功能交互方面,要多为用户考虑不能只以实现功能为目的,尽可能提升用户体验,还有就是收费需要管理员根据车辆停放的时间然后在系统根据车牌号码查找,最后系统计算费用车主进行缴费,那是否可以用扫描仪器扫描到车辆的车牌号码时系统会自动的就会显示出车辆的基本信息呢?由于自己对这方面的专业知识还不够透彻所以没能完成,之后希望能通过自己知识的积累将这个功能完善。总之,本次毕业设计做的很有意义,因为只有亲身体会了才能知道自己的不足之处并加以改正。学习是不断积累的过程,在这次在做设计的过程中,我也学到了一些别人的代码思路以及规范方法,也复习和积累了很多专业知识并为以后的学习和工作积累了经验。
致 谢
经过几个月的不懈努力本系统终于完成了,从论文的选题、收集资料到论文的撰写完成,使我感受很多也收获很多。成功的道路从来都不是一帆风顺的,进行系统设计的时候我遇到了许多的问题,刚开始的时候遇见问题就会很慌不知道要如何去处理,只有去问老师和同学,通过老师和同学们的引导我的问题都得到了很好的解决。如果没有老师和同学们的耐心帮助我也很难完成这次毕业设计。所以非常感谢我的毕业设计导师刘老师以及我的同学们对我的耐心指导和帮助。这次完成设计的过程不仅锻炼了自己的逻辑思考能力还锻炼了自己对代码的敏感度。经过本次毕业设计,使我明白了设计不是盲目的去直接进行代码实现,而是要有计划和方法。
通过两年的本科学习,使我对计算机编程语言有了更深层次的了解,也使我懂得编程不能只靠懂理论知识,还需要自己去进行实际的操作才能彻底明白具体流程,这次经验的积累为我以后工作打下了坚实基础。感谢学校这两年对我的细心栽培,使我能够成为一名合格的毕业生。我会牢牢记住这段时间老师的付出和同学们的关怀,步入社会后我希望自己也能保持在学校时的认真和努力,争取做一名合格的计算机工作者并为计算机行业贡献自己的一份力量。
参考文献
[1]张海藩. 软件工程导论[M]. 北京:清华大学出版社. 2016.
[2] 赵利庆.Java Web架构中数据库优化模式的研究与实现[D].北京:北京邮电大学.2015.
[3] 柯采.基于J2EE和MVC模式的Web应用研究[J].重庆:重庆邮电大学.2020.
[4]池建,侍非.小区停车场管理信息系统设计[J].哈尔滨:智能计算机与应用.2015.
[5] 赵晓丹.网页开发中的JSP技术分析[J].江西:南方农机.2019.
[6] 洪长平.一种停车场管理系统的设计与研究[J].漳州:漳州职业技术学院学报.2020.
[7] 黄守涛.孙燕.智能停车场管理系统研究[J].四川:技术与市场.2019.2020.
[8] 王铮然. Java程序异常处理代码测试相关技术研究[D].南京:南京大学.2016.
[9] 迟殿委.前后端分离的Web架构解决方案[J].山东:智慧工厂.2019.
[10] 王思为.企业用户停车服务管理信息系统设计与分析[D].南京:南京邮电大学.2015.
[11] Varga, M.,Lapin, I.,Kacur, J.. Performance evaluation of GMM and KD-KNN algorithms implemented in speaker identification web-application based on Java EE[P]. ELMAR (ELMAR), 2014 56th International Symposium.2014.
[12] MichaelMorrison. HeadFirstJavaScript. [M]. O’ReillyMedia,Inc. 2017.
[13] 秦楷.JAVA语言特点及其在计算机软件开发中的运用[J].中国新通信.2019.
[14] 张剑.基于JSP技术的中文乱码原因分析及对策研究[J].山西:山西电子技术.2016.
[15] 马建红.JSP应用与开发技术[J].北京:第三版.清华大学出版社.2018.
[16] 苏航.接口的意义及在java web三层架构中的作用分析[J].四川:西部皮革.2016.
[17] 葛萌,张琳娜,陈伟.Java多态性机制应用研究[J].攀枝花:攀枝花学院学报.2016.
[18] 王明鑫,于立婷,孙仲霖.简述Java编程语言的发展及优势[J].北京:通讯世界.2016.
[19] 郑智方,魏恺乐,李彬,谢易壮.MySQL得到广泛使用的原因以及它的嵌入应用[J].石家庄:科技风.2020.
[20]杨雨成,任利峰.MySQL数据库性能优化技术研究[J].济南:科技经济导刊.2020.
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:1158,如若转载,请注明出处:https://www.447766.cn/chachong/135526.html,