小区车辆管理系统的设计与实现.docx
《小区车辆管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《小区车辆管理系统的设计与实现.docx(32页珍藏版)》请在冰豆网上搜索。
小区车辆管理系统的设计与实现
小区车辆管理系统的设计与实现
专业:
学生:
指导老师:
摘要
小区车辆管理系统是一个通过人机交互系统,将小区车辆、驾驶员和出车情况进行存储,并同时对小区车辆进行全面管理的系统。
它主要实现了车辆信息管理、驾驶员信息管理、出车信息管理等功能。
它的目的是加强对小区车辆的管理,使其智能化,意义是降低人力成本。
小区车辆管理系统基于B/S结构和J2EE平台,采用两层架构构建。
表示层:
负责完成用户体验,主要实现用户数据的采集和处理结果数据到客户端的渲染;选用基于MVC模式构建的表示层开源框架Struts2构建。
视图采用JSP实现,配合html、CSS和Javascript以建立良好的用户体验环境。
持久层负责与数据库的交互,主要实现实体数据的增、删、改、查等操作,采用开源的持久层框架Hibernate实现。
系统同时采用SQLServer数据库实现数据存储。
本文主要完成和车辆管理,驾驶员管理的设计实现,汽车信息管理功能,简要介绍了系统的背景,技术背景,需求分析,系统架构设计,及相关功能的实现方法,最后对数据库的设计进行了介绍。
关键词:
车辆管理B/SJ2EEStruts2
Thedesignandimplementationof
districtvehiclemanagementsystem
Major:
SoftwareEngineering
Student:
LiYuqingSupervisor:
ZhaoChun
Abstract
Districtvehiclemanagementsystemisaninteractivesystemthroughthecellvehicle,thedriverandthebuscaseforstorage,andalsofortheoverallmanagementofthedistrictvehiclesystems.Itisthemainachievementofthevehicleinformationmanagement,driverinformationmanagement,informationmanagement,andotherfunctionsofthebus.Itspurposeistostrengthenthemanagementofdistrictvehiclestointelligent,meaninglowerlaborcosts.
DistrictvehiclemanagementsystembasedonB/SstructureandtheJ2EEplatformtobuildatwo-tierarchitecture.PresentationLayer:
isresponsibleforcompletingtheuserexperience,themainresultsofthedatacollectionandprocessingofuserdatatorendertheclient;theuseofopen-sourceframeworkforbuildingthepresentationlayer-basedbuildStruts2MVCpattern.ViewusingJSPtoachieve,withhtml,CSSandJavascripttocreateagooduserexperienceenvironment.Persistencelayerisresponsibleforinteractingwiththedatabase,themainachievementofentitydataadd,delete,change,andotheroperations,theuseofopensourcepersistenceframeworkHibernateimplementation.SystemwhileusingSQLServerdatabasefordatastorage.
Thesiscompletedvehiclemanagement,designandimplementationofthebusdrivermanagementandinformationmanagementfunctions,brieflydescribesthesystembackground,technicalbackground,needsanalysis,theoverallsystemarchitecturedesign,andimplementation-relatedfunctions,andfinallytodatabasedesignwasintroduced.
Keywords:
vehiclemanagementB/SJ2EEStruts2
1导论
1.1系统背景
伴随着我国经济的快速增长,人们的生活水平逐年提高,当然人们对生活的品质是逐渐有了更高的要求。
经济的增长,道路的发展,汽车就成为了人们必不可少的交通工具。
不管是上班,还是去游玩,还是什么,人们都离不开交通工具,所以汽车是必不可少的。
但是汽车多了,也带来了危险的信号,很多的交通事故出现,还有重要一点就是对汽车的管理。
那要怎么管理汽车呢?
科技发展得很快,我们很有必要开发一套汽车智能管理系统,这样可以大大的节省人力成本,使公司,小区,商场等车辆实现智能化。
随着人们对生活有了更高的要求,出门有一部自己的车,太普遍了。
导致了车辆的数目增加很快,同时问题在这样的背景下也逐渐增加,比如车辆的车型问题,车辆的使用年限问题还有使用车辆产生的费用:
过路费,停车费,租位费等等,这些数据加在一起是非常非常多的,处理这些数据真实靠人力的话是很费时间,也就会增加企业的财力。
所以为了解决这个问题,我们得开发一套智能管控系统,来不单单处理这些数据,还可以对这些车辆管理。
因此,在这样的环境下,开发一套这样的系统是可行的,也是很有必要的。
1.2技术背景
1.Java语言
本系统采用Java语言编写,Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。
是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。
Java具有以下特点,如表1所示:
表1:
Java语言特点
特征
通用性、高效性、可移植性的特点,安全可靠
跨平台、分布式、解释性、健壮性
用途
个人电脑,游戏机的使用,科学超级计算机,互联网和电话等。
2.MVC模式
MVC模式是表示层开发最常用的设计模式,使用该设计模式是为了减少业务逻辑和视图之间的耦合,这样的设计模式可以提高系统的可扩展性和可维护性。
MVC模型组成的模型,视图和控制器。
在这个模型中。
控制器的作用是接受客户端发送的请求,那么请求到适当的模型的业务流程(控制器相当于一个中转站),然后将处理结果返回给客户端,在客户端通过MVC模式中的视图可以看到。
模型的主要作用是对控制器转发过来的请求进行一个逻辑处理,也就是客户端的请求,这是由JavaBean来实现的,当然这也是要保证它的可移植性,所以它不该依赖ServletAPI。
当模型处理好了后将结果由控制器发送给视图,最终再展示给客户端使用。
3.JSP
JSP技术是用Java编程编写类XML的tags和scriptlets,所以自然也就会想到在JSP中是可以含有用Java语言编写的一些代码,它也是可以处理动态网页的一个逻辑处理。
JSP的优点是:
它可以显示逻辑和网页的网页进行分离的设计,这样的一个好处是它可以使Web程序的开发变得非常简便。
在有一个来自JSP页面的请求服务器的时候,服务器先是执行网页中的程序段,最后将执行的结果和网页本省的代码一起返回给用户端。
对Java代码片段在JSP页面中使用是非常有用的,比如写一段可以操作数据库的Java代码或者重新转向其他页面等等这些功能都是可以通过在JSP页面中编写Java代码来实现,这样也就是建立了动态网页的效果。
所以,我们就可以看出JSP是由HTML代码和写在网页里面的Java代码构成。
JSP有以下几点特点,如表2所示:
表2:
JSP特点
特征
简单好用,它是面向对象的技术,可以在任何的平台上进行编写,安全性非常高
优点
只要编写一次,不管在那里都可以运行,但是除开系统本身以外,代码是可以不用做其他的变动
对于在很多的系统的平台上都是支持的,这和ASP和.net相比,JSP的优势就很明显了
很灵活,达到了一个小的Jar文件都可以使JSP运行
JSP功能非常强大,还有很多的开发工具对它支持,它也可以在许多的平台上跑
在面对系统比较复杂的时候,很多处理不需要经过持久层的时候,我们就可以选择在JSP页面上实现这些处理,只需要在JSP页面中写上相应的处理方法,但是书写的格式也是不同的
4.JavaScript
JavaScript是一种直接编译方式式的脚本语言。
同时也是常用作Web开发,给HTML网页增加动态功能,增加用户体验效果。
JavaScript是面向对象的,是在对对象的程序设计,并且用更加直观、可重复使用和模块化的方法来对程序进行开发。
JavaScript可以使网页和用户之间形成一种动态的、交互性的关系,也可以使网页包含更多的元素。
在这个系统中大量使用JavaScript技术,场所为例,验证,用户输入的数据是重复的,无论是为空等。
5.Struts2简介
该项目基于Struts2的项目的创始人,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。
在使用MVC模型时,Struts可以减少开发Web程序的时间
在MVC模式,适应时代发展的使用,而且还使用Struts2,在这种情况下,我们可以减少开发Web应用程序的时间。
它通过选用JavaServlet/JSP,从而来完成了基于JavaEEWeb应用的MVC设计模式的应用框架〔WebFramework〕。
所以也就看得出来Struts2在MVC设计模式中的重要性,它是非常有用的。
Struts2的优势在于:
基于MVC框架,明确的框架,开发人员可以把握好研发过程;开发人员能够使用OGNL来对参数进行传递;Struts2的拦截器也是非常厉害的;Struts2容易测试;还有一个优点就是很方便扩展插件;全局结果与声明式异常。
6.Hibernate简介
Hibernate它可以对JDBC进行一个十分轻量级的封装,同时它还是一个关于对象关系映射的基本框架。
面向对象的编程思想让Java程序员可以操纵数据库。
只要有JDBC出现的地方Hibernate都是可以使用的,所以这样我们就可以推测出:
它既可以在客户端用,也可以放在Web应用中用。
其主要功能是比较灵活的,这是一个非常有意思的是,它可以使用EJB的J2EE代替CMP,从而实现数据的持久化是一举两得。
其中Session接口、SessionFactory接口、Transaction接口、Query接口和Configuration接口这些都是Hibernate中很重要的。
这些接口使用的范围都是比较广的。
他们有两个作用:
一是可以对持久化的对象进行存取的操作,二是可以控制事务。
1.3研究内容
论文研究并实现了一个小区设计的车辆管理系统的整体结构,完成了管理员用户所拥有的车辆信息管理、驾驶员信息管理、出车信息管理等功能的设计与实现。
车辆信息管理:
该模块中展示的是对车辆信息的增加、删除、修改和查询的操作。
司机信息管理:
该模块是增加,删除,修改和查询操作的信息。
出车信息管理:
在该模块中定义了对出车情况的管理,其功能包括出车情况的添加、查询、修改、删除等操作。
2系统整体设计
2.1系统需求分析
1.系统目标
系统将实现下列目标:
(1)系统界面友好,容易上手操作,同时会给出提醒方便管理者操作。
(2)管理员用户具有系统管理、车辆信息管理、驾驶员信息管理、出车记录管理功能。
(3)安全性好,可以防止操作者恶意操作本系统。
2.功能需求
管理员是系统的核心用户,涉及到三大功能模块如图1所示:
图1:
管理员用例图
3.数据需求
对每一个输入的数据都要有是正确的,并且在页面上每一个输入框不能为空,对表中的每一个数据之间他们的联系都要保证是正确的。
4.界面需求
一个好的用户界面能够让用户更清楚的看到自己可以干什么,提高工作效率。
在页面中创建一个动态的网页是非常方便。
用户界面的相互作用和交换之间的信息系统和用户的媒体。
(1)输出设计
输出是输入原始信息通过计算机处理信息,有效地形成了一个高质量的,所以有一定的格式,以提供给管理人员查看。
主要的功能和目标输出的设计。
这是由于输出表直接与用户联系,该项目的出发点是希望输出的样式是方便给用户查看的,有效的返回相应的数据信息。
(2)输入设计
当管理人员在面对大量的数据时,虽然有一个友好的界面供管理人员使用,但是难免管理人员输入错误,只要输入错误了,系统处理后的结果显示给管理人员也是会错的。
所以有效的输入是很重要的。
输入设计的原则有如下几点:
输入应保持在最小的处理要求。
输入的输入可以用字段值,并通过下拉的方式输入。
输入量少,故障率少,减少了数据准备时间。
输入的准备和过程必须简单,这样可以减少错误。
尽可能早对输入数据进行校验(尽可能靠近原数据产生点),以便使错误即时获得改正。
2.2系统整体架构设计
1.系统设计思想
系统的设计思想遵循以下几点:
(1)采用B/S模式开发
系统采用B/S结构构建;这种方式已经被许多用户所习惯。
(2)采用面向对象的开发与设计理念
为了保证系统有一个很好的框架支持,同时研发的产品速度快和有较好的稳定性,将采用面向对象的设计理念。
(3)使用模块化的设计
模块化应该把整个体系分为几个小的模块,方便代码的重载。
(4)系统界面简单方便
本系统的界面设计比较简单,页面美观很好,界面的简单模块可以方便使用者操作本系统。
(5)速度优先原则
因为这个工具是速度最重要的评价标准,所以在设计过程中,具体的过程尽可能少占用资源,速度。
(6)设计要突出重点,体贴用户
满足设计要求,使系统更适应用户的需求。
2.系统架构
车辆管理系统拟基于B/S结构和J2EE平台,采用两层架构构建。
两层架构包括:
表示层和持久层。
B/S结构图如图2所示:
图2:
B/S结构示意图
B/S结构也就是说浏览器和服务器结构。
由上图可以看出,在B/S结构中浏览器就是用户的使用界面,但是当出现比较繁琐的处理的时候,可以让一部分逻辑处理在这里(前端)完成,不过主要的逻辑处理还是得在服务器端进行实现。
B/S的优点是:
无需安装客户端,客户端只需要浏览器;同时在更新的时候,系统不需要对客户端进行升级,只需要对服务器升级就可以了。
两层架构如图3所示:
图3:
系统架构示意图
表示层:
负责完成用户体验,主要实现用户数据的采集和处理结果数据到客户端的渲染;本层拟采用基于MVC模式构建的表示层开源框架Struts2构建。
持久层:
负责与数据库的交互,主要实现实体数据的增、删、改、查等操作,同时纳入DAO框架来隔离持久化细节的变化对其它部分的影响。
使用SQLServer数据库存储数据作为车辆管理系统的数据保存。
2.3系统功能设计
总的功能模块框图如图4所示:
图4:
功能框图
车辆信息管理:
该模块中展示的是对车辆信息的增加、删除、修改和查询的操作。
驾驶员信息管理:
该模块中展示的是对驾驶员信息的增加、删除、修改和查询的操作。
出车信息管理:
在该模块中定义了对出车情况的管理,其功能包括出车情况的添加、查询、修改、删除等操作。
3系统核心功能实现
3.1系统界面设计
页面设计的原则:
在整个系统中,所有的页面都遵循一个设计原则,那就是界面简单易操作。
使操作员看到该系统的时候就知道自己可以做什么和知道自己该怎么去操作。
这样可以方便操作员的同时也可以节省人力成本,财力成本。
使公司的利益最大化。
这也是这样设计的一个重要因素。
如图5所示,在页面的左侧是管理员的四个可以操作的功能,点击进入相关管理页面可以变成一个子菜单,并突出高亮的显示方式展现各管理模块对应的子菜单。
主页运行效果如图5所示:
图5:
管理员主页面
车辆信息管理页面效果如图6所示:
图6:
车辆信息页面
司机信息管理界面效果如图7所示:
图7:
司机页面
出车信息管理界面如图8所示:
图8:
出车信息页面
3.2中文乱码处理
在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。
因此,写了一个过滤器作为对中文乱码的处理。
在web.xml中配置:
SetCharacterEncodingFilter
myweb.util.filter.SetCharacterEncodingFilter
encoding
gb2312
SetCharacterEncodingFilter
//*表示工程下所有的页面都会有此过滤器的处理
/*
对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
Stringvalue=filterConfig.getInitParameter("ignore");
}
在工具包util包中同样定义了DataFormate类来处理字符转换:
publicstaticStringtoUni(StringgbStr){
StringuniStr="";/*把字符串转换成uincode编码*/
if(gbStr==null){
gbStr="";
}
try{
byte[]tempByte=gbStr.getBytes("UTF-8");
uniStr=newString(tempByte,"ISO8859_1");
}catch(Exceptionex){
}
returnuniStr;
}
/*把字符串转换成Utf8编码*/
publicstaticStringtoUtf8String(Strings){
StringBuffersb=newStringBuffer();
for(inti=0;icharc=s.charAt(i);
if(c>=0&&c<=255){
sb.append(c);
}else{
byte[]b;
try{
b=Character.toString(c).getBytes("utf-8");
}catch(Exceptionex){
System.out.println(ex);
b=newbyte[0];
}
for(intj=0;jintk=b[j];
if(k<0){
k+=256;
}
sb.append("%"+Integer.toHexString(k).
toUpperCase());
}}
returnsb.toString();
}
3.3驾驶员信息管理
驾驶员信息管理是对驾驶员信息的增加、删除、修改和查询等操作。
在系统中都有一一实现的。
由于驾驶员的增加、删除、修改、查询在实现上都相差不大,所以本小节着重介绍驾驶员信息修改的实现。
1.功能描述
先是点击司机信息模块,然后在界面右边可以看到司机的一些信息,当要修改司机信息的时候。
点击“修改”,然后就会进入“修改”司机信息页面。
2.核心代码
模型层:
publicclasssijiDAO{
publicTSijifindById(java.lang.Integerid)//这个方法用于找到siji_id
{
log.debug("gettingTSijiinstancewithid:
"+id);
try
{
TSijiinstance=(TSiji)getHibernateTemplate().get(
"com.model.TSiji",id);
returninstance;
}catch(RuntimeExceptionre)
{
log.error("getfailed",re);
throwre;
}
}
//通过ID找到这个驾驶员
publicvoidattachDirty(TSijiinstance)
{
log.debug("attachingdirtyTSijiinstance");
try
{
getHibernateTemplate().saveOrUpdate(instance);
log.debug("attachsuccessful");
}catch(RuntimeExceptionre)
{
log.error("attachfailed",re);
throwre;
}
}
……………………..//此处省略了对驾驶员信息操作的其他方法
}
//把DAO注入给Action
控制层:
sijiEdit.action中的代码:
publicStringsijiEdit()
{