1、(word完整版)基于JavaEE汽车租赁管理系统的设计与实现(含源文件)第一章绪论1。1课题背景计算机信息网络技术的发展,给这个时代的人们带来了很大的便捷。如今在网络上,随处可见种类繁多的信息管理系统,比如,企业办公信息化自动管理系统,电子商务管理系统,企业教务系统等等。随着网络信息技术的日益进步,已深入到社会的各个角落,各个大型企业,都意识到传统的手工管理模式已经开始逐渐不能适应这个时代的发展,为了更好的发展,纷纷研发适合自己的管理系统。无论是大企业还是各种类型的小型企业都是如此,租车公司老板也深深意识到这一点,以前管理模式大多是人工管理,工作效率低、容易出错、手续复杂,而且还耗费了大量的
2、财力、人力和物力。他们都希望能够找到一个适合自己的管理系统,可以实现车辆管理、客户管理、租车还车管理、租车查询等功能。通过这个系统,店老板可以对汽车租赁各项情况进行实时电脑化管理,这样能够提高工作效率,也能使得汽车租赁管理所需要的各项信息能快速录入、查询、删除和更新,对相应的数据也能够方便的统计结果。1。2目的和意义长久以来,汽车租赁的管理工作大多都是采用传统的手工的方式来进行记录相关信息,这种管理方式存在着很多缺点,比如,客户的管理,车辆信息的查询、录入、分析、更新完全依赖的是管理人员的手工记录和人工分析。对于小规模的租车公司来说勉强还可以接受,但对于规模大的租车公司来说,人工记录是相当麻烦
3、。为满足企业管理的需求,因此决定采用各种编程语言研发一个基于B/S架构的汽车租赁管理系统,汽车租赁管理系统是涉及信息科学技术、数据计算技术和计算机网络技术的复杂的人机交互系统。通过这个系统,可以对汽车租赁进行智能化管理,有效的记录和查询各类车辆的信息和租赁等情况,为汽车租赁管理提供了很多方便。1.3开发工具及技术1.3。1开发工具此次设计主要采用的是MyEclipse和Tomcat后台服务器,在设计过程中web页面主要是使用JSP技术来完成,下面是对MyEclipse、SqlServer数据库和Tomcat等。第二章需求分析2.1需求调研在项目的之初是进行需求调研,并且调研了一些小型的租车公司
4、,经过一套的调查和谈话中发现,现在的租车公司管理工作确是存在了很多不足之处,传统手工的记录方式保存困难,容易丢失,同时也不利于数据查询与统计分析。根据租车公司实体店实际情况和调查结果,我们发现实现租车公司管理的信息化和网络化是十分必要的,因此设计了本套汽车租赁管理系统。2。2可行性分析开发任何一个管理系统,都会有时间和资源上的限制。所以,在每一个项目研发之前,都要进行可行性分析,这样可以减少项目的开发风险和避免物力、人力和财力浪费.下面就技术、法律、经济和操作这四个方面来介绍。2。2。1技术的可行性本系统的开发工具是MyEclipse和SqlServer数据库,研发语言是Java,主要使用的是
5、J2EE的技术,java是一种面向对象的编程语言,简单易学并且灵活方便。大二时就学习java课程,大三期间也了解了J2EE的相关知识,汽车租赁管理系统总体上讲开发难度并不高,本系统设计的核心是:数据库的设计和操作.大学期间学习过java、J2EE、C语言、web设计、c等课程,每个学期都会完成对应科目的课程设计,也具备了一些对系统的分析、设计和测试的能力。对于完成本系统在技术上实现完全有可行性。2。2。2经济的可行性现在是信息化的时代,信息化的管理可以使租车公司的管理工作变得更加、系统化、快速化。这样可以给企业带来更多的经济效益和工作效益,并可以在提高工作效率的基础上,考虑减少租车公司管理人员
6、的数量,系统对计算机的配置要求不高,利用企业机房淘汰的低配置电脑就可以完全的满足需要,另一方面,企业在管理工作上带来的高效率和便捷性也远远超过开发系统的成本,对于经济上也具有完全的可行性。2。2.3操作可行性本系统操作简单,在输入信息页面大多数都是有下拉框选择的形式,并在某些页面,信息是可以自动生成的,无需手动输入,时间输入就是用的日历控件,使得操作更简便,因此对操作人员要求很低,只要对WINDOWS能操作熟练,再加上对本系统的操作简单培训就可工作,同时系统的可视性也非常好,所以在操作上不会有大难度。2。2.4法律的可行性本汽车租赁管理系统是自行开发的租赁管理系统,是很有现实意义的系统,开发环
7、境使用的软件和使用的数据库也都是开源代码,研发这个系统于开发普通系统软件不同,并不存在侵权等问题,因此,法律上是可行的。综上所述,开发一个汽车租赁管理系统与传统手工操作的方式相比具有操作更快、更准确、节省开支等优点,因此,建立一个汽车租赁管理系统是必要的、可行的。2。3系统用户用例图2。3.1管理员用例图管理员是负责管理整个系统并涉及到九大功能管理模块,并能够及时掌握租车公司的动态信息和各项情况。图2。1 管理员用例图2.4功能模块需求分析本系统的最大特点是操作简单、友好信息提示。系统将实现下列基本功能:(1)系统具有简洁的页面,操作简单,友好的错误操作提示(2)管理员用户拥有车辆类型管理、客
8、户管理、租车费用管理、系统管理、车辆管理、租赁查询管理、租车管理、还车管理功能(3)同时具有较强的安全性,可以避免用户恶意的操作系统的功能结构图2.2所示:图2.2用户功能模块图2。5设计的基本思想设计的基本思想遵循以下几点:1。 采用了B/S模式进行研发,优点就是前台与后台处理层次分明,并且符合了众多习惯网页方式操作的用户。2。 采用面向对象的研发和设计理念。面向对象技术的充分条件就是把整体系统的高度和准确抽象,通过它能够保证系统的良好框架,从而带来了产品更强的运行效率。3。 采用模块化管理设计.模块化的设计要求把整个系统划分为很多小的模块,这样做更有利于完成代码的重载和简化设计以及实现过程
9、。4. 简单又方便友好的系统界面。越是简单友好的系统界面,越是方便用户更快的适应系统的操作。5速度优先原则。由于这个工具最重要的评判标准应该是速度,所以在设计过程中,大多数具体过程都应该尽量做到的是资源占用少,速度快。6设计不但要突出重点,还要做的细致周到.在符合设计需求的基础上,把有可能需要改进的地方尽量进行扩充,使得整个系统更适应用户的需要。2。6性能需求2.6。1系统的安全性汽车租赁管理系统在管理权限上要严格进行控制,想登陆汽车租赁管理系统进行查看或者修改一些信息,就必须要有一定的操作权限,只有拥有操作权限的管理员才可以进行操作,没有权限的用户,是无法进入系统查看和修改系统的一切信息或者
10、表格数据,理由这种特性,保证整个系统的安全性!2.6。2数据的完整性1、所有被记录的数据,都要是完整的,关键信息都不可以为空。2、保证各个数据之间的联系,特别是设置为主键的数据。3、保证相同的数据在任意一个记录里面都要是一致的!2.7界面需求人们对界面的需求,使得界面设计成为一个软件是否成功的重要因素,一个能给人视觉带来舒适感的界面,可以增添用户在使用过程中的乐趣。并大大提高工作效率的效果,JSP技术是利用JAVA语言编译脚本语言,创建一些动态页面的话也非常方便.用户界面一般都是用户与系统交流的窗口,通常都包括了输入和输出和人机对话等等的界面风格!第三章系统分析与设计3.1概要设计本系统由用户
11、模块,车辆信息模块,管理员模块组成.用户模块:包括注册,登录,浏览车辆信息,预约等。车辆信息模块:包括查询、增加、编辑、删除等。管理员模块:包括登录,修改车辆信息,删除信息,添加的功能.用户注册:可以注册用户账号。删除用户:管理人员可以删除任何一个用户账号。修改信息:注册的用户可以修改信息.车辆管理:实现对车辆的管理,包括车辆的添加、修改和删除等等。车辆查询:用户可以查询车辆信息。车辆预约:用户根据需要预约车。3.2数据库的分析与设计数据库是计算机系统的核心,通过数据库管理系统,我们可以对数据进行整理、添加、储存、查询、修改、删除、统计、更新等一系列的操作,既能保证数据的安全性和联系性,还大大
12、减少了我们在操作过程中数据出错的可能性.数据库的地位,在整个信息系统里面是计算机系统的核心,也是必须要做好的基础部分,尤为重要.如果数据库的设计出现了一些问题,会直接的影响到整个管理系统的运行和安全,甚至造成更严重的后果.数据库的设计一般会经过以下几个步骤:需求分析、概要设计、物理设计、逻辑设计等。3.2.1数据库的概念结构设计概念设计就是在整个数据分析的基础上从最底层一直向上,把整个系统的数据库结构设计出来,从用户出发进行简单的视图设计,在接着就是视图集成,然后再对集成的数据进行结构化的分析,并得出最后的结论.数据库的概念设计一般采用的都是E-R模式设计方法,实体、属性、联系是E-R模式的三
13、大要素,一般要用E-R图表示,表达的是一个实体与另一个实体之间的联系,以及实体说具备的属性。概念设计的目标就是把企业的组织信息产生并反映出来形成一个数据库的概念结构,也称之为概念模式,它是独立存在的,并不依靠计算机系统,得到数据库DBMS的支持和独立的逻辑结构。根据上述的需求分析,并且结合概念设计的概念模型的特性和创建方法,可以得出以下E-R模型图来表示实体与实体间的关系和属性。实体间关系属性实体(1)车辆类型实体E-R图如图3.5所示:类型介绍类型名称车辆类型图3.1 车辆类型信息实体ER图(2)车辆信息实体ER图日租金类型ID车牌号车辆信息图3.2 车辆信息实体ER图(3)客户信息E-R图
14、电话年龄身份证性别驾照号码客户名称客户信息图3.3 客户信息实体ER图(4)租车信息信息E-R图还车日期租车费用租车时间车牌号租车天数租车信息图3.4 租车信息实体ER图(7)管理员信息E-R图登陆账号登陆密码用户ID管理员图3.7 管理员信息实体ER图3。2.2数据库的逻辑结构设计每一个数据库的概念模型都是独立的,都是根据特定的数据库管理系统,所以我们必须根据自己所使用的数据库管理系统的特点来对概念模型进行转换,转换为适用于本计算机处理逻辑的逻辑关系和ER模型实体关系,所以转换逻辑结构应该遵循以下几点:1、数据库中的每一个实体都要有一个关系2、每条数据或表中的主键都不能为空3、按照一对多、弱
15、对实、一对一、多对多的关系来定义每个二元联系根据ER模型,建立了以下逻辑数据结构汽车租赁管理系统,下面是各数据表的详细说明。(1)车辆类别表主要是记录了车辆类别基本信息.表结构如表3。1所示。表3。1车辆类型表(t_leixing)列名数据类型长度允许空是否主键说明id int 4 否是编号mingcheng varchar 50 否否类型名称jieshao varchar 50 否否类型介绍(2)车辆信息表主要是记录了车辆的基本信息,表结构如图3.2所示。表3。2车辆信息表(t_cheliang)列名数据类型长度允许空是否主键说明id Int 4 否是编号lxid Int 4 否否车型编号c
16、hepai varchar 50 否否车牌号feiyong numeric 8 否否日租金zhuangtai varchar 50 否否状态(3)客户信息表主要记录了客户的基本信息,表如图3。4所示。表3.4客户信息表(t_kehu)列名数据类型长度允许空是否主键说明id int 2 否是编号xingming varchar 50 否否客户姓名xingbie varchar 50 否否性别nianling varchar 50 否否年龄shenfenzheng varchar 50 否否身份证号jiazhao varchar 50 否否驾照号dianhua varchar 50 否否联系方式(
17、4)租车信息表主要是记录客户租车基本信息,表结构如图3。3所示。表3.4租车信息表(t_zuche)列名数据类型长度允许空是否主键说明id Int 4 否是编号khid Int 4 否否客户编号clid Int Date 否否车辆编号zcrq Date 4 否否租车日期hcrq Int 4 否否还车日期zfy numeric 8 否否租车费用bz varchar 500 否否备注信息fylx numeric 8 否否总费用(5)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表3.7所示。表3.5管理员信息表(t_admin)列名数据类型长度允许空是否主键说明userId i
18、nt 4 否是编号userName varchar 50 否否用户名userPw varchar 50 否否密码3.2.3数据库的连接原理数据库的连接一般采用的方式都是:JDBC连接方式,这种方式操作简单,只需要在系统中把jar包导入到对应的数据库中,就可以很快的与数据库进行连接,在系统中,用Class.forName()方法来加载驱动程序,再利用DriverManager的getConnection()的方法创建一个新的数据库连接。并利用DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),这是一种经典的操作模式,在java编程的过程中经常被大家所利用,作为一
19、个持久层框架的重要知识在J2EE架构中也经常被使用,它实现的数据库访问操作是基于对数据库分层式的软件架构.DAO模式的主要思想是通过在抽象的数据源中获取数据和操作数据。在编写过程中,我们不需要去关心数据库的物理位置或者已经是那个数据库,只需要把记录的数据对象封装起来的数据对象就是抽象数据的含义。其思想如图3。10所示:封装使用DataSourceDataAccessObjectBusinessObject创建/使用获取/修改DataTransferObject图3.10 DAO模式类图图中BussinessObject是业务对象,是使用DAO模式的客户端;DataTransferObject数
20、据传输对象,在应用程序不同层次之间传输对象,在一个分布式应用程序中,通常可以提高整理的性能;DataObjectAcces数据输入/输出对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据罗即将,是的编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用DBContent的对象来接一个数据库(建立一个类DBContent),代码如下:在对数据库进行连接和操作的时候,只要生成一个DBConnet的对象,放在需要连接数据库的地方就可以了。3。3中文乱码问题处理在系统编写的过程中加上一个过滤器SetCharacterEn
21、codingFilter,就可以避免我们在运行过程中出现中文乱码的问题,这样要比手动在jsp和servlet页面上进行操作和修改简单快捷得多!在web.xml中配置:第四章系统功能实现在完成了需求分析、概念设计、系统设计等步骤之后,管理信息系统就要进入下一个阶段,那就是实施阶段,在前几个分析和设计的阶段,主要是把数据和要求进行了逻辑、功能、技术上的设计,然而实施阶段就是要把之前所有阶段的工作成果,从设计和技术的层面上转化为物理实现,也可以这么说,实施阶段就是分析和设计的最高峰!4.1系统登陆页面实现1。描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中。2.程序运行效果图如图4.1所
22、示:图4.1 系统登陆页面设计3.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,并根据相应的用户角色进入对应的页面,loginservice关键代码:4.2系统首页设计1。描述:管理员主页面:左方页面展示了管理员可操作的九大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。2.程序运行效果图如图4。2所示:图4。2系统主页面在每个jsp页面将会对相关用户进行拦截操作,这样可以提高安全性,防止用户不经过登陆页面而进入任何子菜单页面:if(session.getAttribut
23、e(”user”)=null)out。print(”alert(请先登录!);window。open(。./index.jsp,_self)/script);4。3车辆管理模块4。3。1车辆信息录入1。 描述:输入车辆相关正确信息后点击录入按钮,如果是没有输入完整的信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit=”return checkForm()来检查,checkForm()函数中是各种的校验输入数据的方式。2。 程序效果图如下图4.3所示:图4.3 车辆信息录入3.流程图如下图4.4所示:登陆系统录入车辆信息系统验证车辆信息录入成功结束
24、通过未通过图4。4 车辆信息录入流程图4。3.2车辆信息管理1.描述:管理员点击左侧的菜单“车辆管理,页面跳转到车辆管理界面,调用后台的action类查询所有的汽车租赁信息。2。程序效果图如下图4.5所示图4.5 车辆信息管理车辆信息管理关键代码:4。3.3车辆信息删除1.描述:先是点击左侧菜单车辆信息管理,页面跳转到车辆信息管理界面,浏览所有的车辆信息信息,点击要删除的车辆信息,弹出的确定对话框,即可删除该车辆信息。2。程序效果图如下图4.6所示图4。6 车辆信息删除4。4客户租车管理4.4.1租车信息添加1。描述:在此页面主要是选择要租赁的车辆信息,然后点击保存按钮,系统调用后台的serv
25、let吧租车信息保存到数据库,租车时间默认是系统时间。2.程序效果图如图4.7所示:图4。7 租车信息添加4.4。2还车管理1。描述:管理员点击左侧的菜单“还车管理”,系统调用后台的java类查询出所有的为换车的租车信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出未还车的租车信息.然后点击还车按钮,既可完成还车操作2.程序效果图如下图4.8所示图4。8 还车管理页面3。在整个系统中所有涉及输入日期的地方都是采用的mydata97这个日历控件的方式来实现,要在工程中导入Calendar。js文件,在jsp页面开始引入/script该js文件
26、,在文本框的属性定义中定义方法onclick=”new Calendar().show(this);即可。租车还车管理关键代码:4。5客户管理模块4.5.1客户信息录入1。描述:输入客户信息后,点击提交按钮,可以在备注添加其他信息。如果不输入客户名称,系统会给出警示,提示必须输入客户名称。2。程序效果图如图4.10所示:图4。10 客户信息录入4.5.2客户信息查询1。描述:不输入任何信息点击查询按钮查询的是所有的客户信息,可以根据输入条件来进行筛选。2.程序效果图如图4。11所示:图4.11 客户信息查询客户管理核心代码:4.6修改密码1。描述:输入用户名和用户的原有密码,输入新密码以后点击
27、修改按钮即可修改密码成功。2.程序效果图如图4。18所示:图4。18 修改密码4。7安全退出系统1。描述:点此按钮回到系统的主页面。2。关键代码:主要是通过javascript语句来实现, item_word84=”退出系统;item_link84=javascript:window。open(.。/index。jsp,_self);第五章系统测试5。1系统测试目的与意义在所以设计和分析环节都结束以后,我们还有一个非常重要的阶段,那就是系统测试。这个过程看似简单,但是要把这个过程做好还是非常重要的,其的重要性主要是表现在他是验证整个系统的可靠性和质量的关键,也就相当于这个系统在到达用户手中的最
28、后一次审核。找错误成了我们在这个阶段最主要的任务,我们就是在系统测试中,把整个系统有可能出现的错误全部都找出来,以便我们在交到用户手里的时候少出点错误。这个阶段主要有三个步骤,分别是模块测试(主要就是检查每个模块的程序是否可以完美运行);组装测试(模块之间的接口的正确性);确认测试(查看是否能够符合用户的需求)。在测试过程一旦发现问题,就立即找到是哪个模块的问题,找到错误的原因和位置,然后进行修改以后再进行测试。测试包括黑盒测试和白盒测试,对于每一种测试方式,我们都要试试,尽可能广泛的进行测试,最大程度的进行彻底扫描整个程序,使得用户在使用过程中尽可能少出错.5.2测试过程在测试刚开始的时候,
29、我们要先对数据库里的信息进行添加,首先是添加一些没有实用性的数据,随便输入进行测试,测试完成以后,清空数据,再添加一些有效数据,进行测试,这样才显得测试反映出来的现象更加符合实际情况。5。2。1主页面的登录模块测试测试流程: 1.打开系统首页,输入错误的登录信息2.登录3.输入正确的登录信息4.登录5。测试结果模块名称测试用例预期结果实际结果是否通过登录模块用户名:null密码:null弹出错误提示,请输入用户名登陆失败,提示请输入用户名通过登录模块用户名:m1 密码:null弹出错误提示,请输入密码失败,提示输入密码通过登录模块用户名:m1 密码:1弹出错误提示,用户名或者密码错误登陆失败,
30、提示用户名或者密码错误通过注册测试,已登录点击注册时,当用户名为空抑或是密码为空时,都不能正确的注册信息;当用户注册输入的两次密码不一样时,也不能注册成功;用户提交的用户名、密码、电子邮件都是按照正确的格式填写以后,提示注册成功并返回登录页面。登录测试,首先当用户名为空时,会提示不能为空;当用户名不为空密码为空时候,页面会显示密码不能为空,;当用户名和密码都不为空,且密码正确但验证码错误时,弹出验证码不正确提示,并且页面自动跳回到登录页面;最后测试用户名和密码都正确时,是否能根据不同的用户权限自动跳转到不同的页面,查看权限看是否跳转有误。查询预约模块测试,预约符合条件的车辆时能正确预约.管理员使用模块,主要看数据库中的信息是否可以让用户正常操作运行,包括修改信息改、查询信息;测试各功能的准确性以及错误操作时是否能弹出提示并自动中断程序的运行.网站维护比较简单可操作性高,只需管理员在数据过期或者失效以后删除无用数据,并且及时更新系统数据来保证数据库的正常运行即可。5.3其他错误在程序设计实现的过程中不可避免的会产生各种难以预料的错误,如书写错误、传值类型不一致、参数传递问题等等。这些都需要通过细心的检测与不断的调试才能够排除.比如在servlet路径配置时因粗心错误导致运行导致所报