基于java的豪华车车租赁系统的设计与实现_第1页
基于java的豪华车车租赁系统的设计与实现_第2页
基于java的豪华车车租赁系统的设计与实现_第3页
基于java的豪华车车租赁系统的设计与实现_第4页
基于java的豪华车车租赁系统的设计与实现_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

绪论1.1研究背景随着经济的发展,生活水平也在提高。人均汽车拥有量的年增长率、假日旅行的增加提高了对汽车租赁的需求,也刺激了汽车租赁的发展。并且,现在年轻人的成长与教育环境,使得豪华车的市场大大加强,再加上婚车的需求,对于豪华车的需求量大大增加。还有些中小型企业接待重要客户会需要豪华车,但是由于资金有限,保养难度大因此,可能会选择租赁一辆豪华车。还有一些广告电影拍摄,可能会用到豪华车,这样租赁一辆豪华车就显得尤为重要。这些原因导致豪华车租赁市场的庞大,需求量也在持续升高。本课题的研究不仅是为了更好地认识到豪华车租赁管理系统的意义,而且是为了不断提升豪华车租赁的管理和用户体验。1.2研究目的和意义经济的持续发展和公民生活水平的提高使汽车租赁、运输基础设施、金融网络等部门的发展具有相当大的重要性。是汽车租赁行业最大的技术支持和保护。大量的中小车辆租赁企业借着上述宏观优势正处于在企业的发展期,但是我们应该看到,由于我国车辆租赁业起步较晚还处于初级发展阶段,车辆租赁企业大多规模普遍偏小、在处理业务数据时,普遍管理采用手工处理,导致效率低下、混乱,因此造成的损失。同时业界的竞争日益激烈。总的说来车辆租赁业作为朝阳产业,前景广阔但路途艰辛。如何通过信息化建设提升企业竞争力,让汽车租赁公司走上规模和网络发展的道路是企业迫切需要解决的问题,尤其是对作为车辆租赁行业的主体——广大的中小车辆租赁企业。因此通过对中小车辆租赁企业的业务研究和论证,找出企业自身业务的功能特点进行有针对性的信息化建设,毫无疑问,提高企业的管理水平和提高其竞争力将是积极的因素。1.3国内外研究现状近年来,全国范围内的汽车租赁行业发展迅速,许多研究人员对该行业进行了研究。已经提到的关于汽车租赁发展的若干研究表明,国家研究人员普遍认为汽车租赁行业是“黄金产业”。而豪华车租赁也算是汽车租赁的衍生产业,发展空间也是相当之大,2022年牛小欧,翟亚男在《豪华车市场格局生变》中通过研究豪华车市场格局生变发现在中国市场,豪华车市场销量一定会快速攀升,“逆市增长”也成了形容豪华车市场表现力的高频词汇REF_Ref7494\r\h[3]。2020年刘尧在《基于JAVA的网上汽车租赁系统设计与实现》书中介绍在技术上,该管理系统使用了B/S结构模型,同时也在系统开发之前使用了MVC设计模式,搭建了Java的工作环境和Tomcat。本系统界面简单,操控简易,运转整体平稳,并通过了大量的试验证实本系统基本实现了设计目的,达到了新产品开发的基本要求,市场使用感受良好REF_Ref7732\r\h[14]。二零一九年艾瑞咨询系列研究报告在《中国豪华车市场发展白皮书》中剖析了中国近年来的豪华车市场的发展趋势,未来豪华车车租赁行业的“蛋糕”将越来越大,多元化发展成为时代的潮流REF_Ref7810\r\h[17]。国外对豪华车租赁系统的研究开始得很早,经过不断的发展,他们现在已经达到了智能化的水平。国外高端汽车的租赁系统通常使用高度自动化和更高水平的人工智能来建造,因为它们的功能和稳定性和用户经验已经相当先进。2021年,RaniRuzanitaMat,KamarudinNorbaizura,AzmiNurAtasya,IbrahimNursafirahanis,MansurNurArdaniAminah等人在《JournalofPhysics:ConferenceSeries》中以ABC汽车租赁公司为例,说明了好多公司已经采用了仿真技术优化租车数量以满足需求,更加完美的提升豪华车租赁的管理和用户体验REF_Ref8000\r\h[20]。2021年,在《M2Presswire》中说明了迈阿密北二湾1001外向型汽车租赁迈阿密,FL开辟60个新地点REF_Ref8277\r\h[22]。也证明了汽车租赁行业的需求量之大。2022年,在《M2Presswire》中提到Ap超级跑车租赁提供迪拜最好的汽车租赁服务,迭代承诺提供无与伦比的服务交付REF_Ref8166\r\h[19]。说明了豪华车需求量的增长,豪华车租赁的管理和用户体验是一切发展的首要因素。1.4论文组织架构本文将分为七个章节介绍系统的开发设计过程,全面的向读者介绍从建立课题到理论分析再到完成实现的开发工具,创建的搭建环境,制作的编程代码等,使读者能够通过本论文对所开发的系统有所了解。第一章,绪论。分为介绍背景、目的和意义以及国内外研究现状和论文组织结构。第二章,相关理论和技术。分为Java介绍、MySQL特点、B/S模式。第三章,系统分析,分为系统可行性分析和系统需求分析。从技术可行性、经济可行性、操作可行性以及功能需求分析和非功能需求分析五方面进行分析。第四章,系统设计。分为功能设计,数据库设计以及数据表设计。第五章,系统实现。对核心功能进行的基本讲解。第六章,系统测试。分为测试步骤和测试用例。第七章,结论。总结了开发的一些感悟。第2章相关理论和技术2.1Java简介Java也是一门编程语言,他主要应用于目前网络的分布式平台,同时也是一门“面向对象”的编程语言,Java主要借鉴于C++,虽然与其语言十分相似,但是相比于C++语言更加简洁,让程序员的上手学习也更加容易。它与C++更是有几个优点,它们包括:1.面向对象。Java是一门面向对象语言,这是Java最重要的语言特性。它将数据和对象进行了封装,并且提供了类、接口和继承等关系。2.可移植性。在装有jdk的计算机上,就可以运行Java应用程序。3.简单易上手。Java语言相对而言比较简单,学习起来相对容易。2.2MySQL特点 MySQL目前属于甲骨文公司。是关系型数据库。它包含多个数据库引擎,可以在不同的应用程序中使用。同时高速也是MySQL的重要特征。MySQL也支持面向对象,但是针对Java语言来说,MySQL并不能决定数据库中最大的容量,而一般要根据系统环境对文件大小的影响,这就能够看出MySQL容量之大。MySQL数据库是一个C/S(客户端和服务发现者模型)模型,客户端通过帐号、密码连接服务器,只有在操作成功后才能连接(CRUD:添加、删除、更改、请求)。2.3B/S模式B/S模式,就是浏览器/服务器模式,是目前应用程序的统一发展方向。具有着三层结构。三层管理平台的第一层是网络用户界面的一部分。我们每天使用的应用程序将集成到浏览器中,在那里HTML文件将单调程序转换成我们每天看到的彩色页面。第二层页面,服务器用户以前的行为的基础水平,最初产生一系列网页代码是基于用户要求,已经包含了预期的结果,并向用户浏览器生成的代码,以便后者能够实现这一目标所需的信息互动。第三层是数据库服务器,其管理过程类似于基于上述并行任务协调的C/S模型。但是他也有着明显的缺点,比如他无法实现具有个性化的功能要求。由于交互模式是请求/响应模式,它们通常涉及到对新页面的动态读取,显著降低响应速率,并且不允许页面显示,这对数据库造成了相当大的压力。第3章系统分析3.1可行性分析3.1.1技术可行性本系统采用的是Java语言开发,使用到的技术栈分别有:前端开发用到了JSP、CSS、JS、AJAX技术。后端开发用到了Spring+SpringMVC+Mybatis框架。软件开发工具平台为:后端集成开发环境为idea2020和eclipse,jdk1.8进行开发,前端采用HBuilder开发。后台数据库用到的是MySQL5.X。测试软件用的是Postman。设计模式为MVC,B/S结构。操作系统为Windows10。浏览器为火狐浏览器。应用服务器为Tomcat8.0.28。3.1.2经济可行性经济可行性是指我们的发展过程符合我们以前的发展预算,整个发展过程的开支都有明确的文件记载,符合发展过程的要求。该系统建成后,开发的豪华车租赁系统前景广阔,市场范围也比较广,经济价值高,在系统开发前也在我们的考虑范围内。总之,我们认为设计开发这种基于Java的豪华车租赁系统在经济上是可行的REF_Ref10615\r\h[8]。3.1.3操作可行性当系统交付给用户时,它很容易使用,所有功能都是通过网页的图形化界面实现的,数据输入灵活完整,没有歧义,管理员和用户进行操作也十分丝滑。整个系统必须简单、高效,经过测试,所有功能十分流畅,数据显示完整,没有缺失。基于这些考虑,我们可以确定这个开发是可操作的。3.2需求分析目前,信息化建设已经普遍深入企业之心,信息化对企业管理水平的提高对企业利润的贡献无疑是巨大的,在租赁行业这一服务业的里,信息化的作用更是巨大,而国内车辆租赁业的起步较晚,发展却十分迅速,大量中小租赁企业的出现急需各自适合本企业特色的中小版软件,进一步推动企业的发展。大多数现有的租赁业务管理系统都是面向业务管理的。3.2.1功能需求分析根据对系统的功能进行分析,用户注册登录进入主页,可以查看主页信息,也可以进入车辆推荐,选车中心,联系我们页面,在前两个页面中可以选择车辆进入车辆详情界面并可以将其加入购物车生成订单,之后可以支付或者取消订单,支付后可以取车,用完车可以进行换车。业务流程图:图3.1主要业务流程图

用例图:图3.2用例图3.2.2非功能需求分析本文设计了一个基于Java的豪华车租赁系统,该系统为用户存储大量车辆信息和基本操作系统信息,以确保系统数据的安全,用户登录模块开发期间进行了专门配置,设置了验证码认证,以判断访问系统的用户不是机器操作。在基于Java的web系统中,设置了管理员于用户两个权限,分别进入两个系统,管理员进行管理员操作,用户无法进行管理员操作。在用户操作时,还设置有拦截器,如果用户未登录进行查看、加入购物车功能或者查看订单功能会自动跳入登录界面。第4章系统设计4.1功能设计在对基于Java的豪华车租赁系统进行详细的需求分析与数据库设计后,将要完成的功能模块为:后台:登录、租赁车辆管理、用户管理、租赁订单管理;前台:注册登录、查询车辆、车辆推荐、查看车辆详情、加入购物车、生成订单、支付、取车、还车。本系统的功能模块如下:图4.1功能模块图4.2数据库概念设计1.实体图用户用户名用户用户名密码账号状态图4.2用户实体图管理员实体包括用户名和密码。管理员实体图如图4.3所示:管理员管理员用户名密码图4.3管理员实体图车辆实体包括车辆名称、车辆信息、租赁价格、车辆图片、库存数量、车辆类型。车辆实体图如图4.4所示:车辆车辆车辆信息租赁价格车辆图片库存数量车辆名称车辆类型图4.4车辆实体图订单实体包括用户主键、地址主键、总价、备注、状态、时间。订单实体图如图4.5所示:订单订单备注状态时间总价地址主键用户主键图4.5订单实体图订单明细实体包括订单主键、车辆主键、数量、价格,。订单明细实体图如图4.6所示:订单明细订单明细车辆主键数量价格订单主键图4.6订单明细实体图地址实体包括地址主键、联系人、手机号、地址。地址实体图如图4.7所示:地址地址联系人手机号地址地址主键图4.7地址实体图

实体关系图由上述可知实体关系图,如图4.8所示:用户用户用户名密码账号状态查看订单备注状态时间总价地址联系人手机号地址包含包含订单明细数量价格车辆车辆信息租赁价格车辆图片库存数量车辆名称车辆类型包含查看管理员用户名密码查看管理管理图4.8实体关系图4.3数据库物理设计数据库设计有四个阶段:第一阶段是选择数据在数据库中存储结构,第二阶段是确定数据的存取方法,第三个阶段是选择数据在数据库中的存放位置,第四阶段是决定在数据库中数据的位置。系统的具体表设计如下:(1)管理员表admin“管理员表admin”用来记录管理员的信息。admin的结构如表4.1所示。表4.1管理员表字段名称类型长度字段说明主键默认值a_idint11主键主键a_namevarchar20用户名a_passvarchar20密码(2)汽车明细表car_info“汽车明细表car_info”是用来记录汽车的信息。car_info的结构如表4.2所示。表4.2汽车明细表字段名称类型长度字段说明主键默认值c_idbigint11主键主键c_namevarchar20汽车名称c_contentvarchar200汽车详情c_pricedouble租赁价格c_imgvarchar200汽车图片c_numberint11数量type_idint11汽车类型(3)汽车类型表car_type“汽车类型表car_type”是用来记录汽车类型。car_type的结构如表4.3所示。表4.3汽车类型表字段名称类型长度字段说明主键默认值type_idint11主键主键type_namevarchar20l类型名称(4)购物车表carshop“购物车表carshop”是用来记录用户购物车信息。carshop的结构如表4.4所示。表4.4购物车表字段名称类型长度字段说明主键默认值csidint11主键主键uidint11用户idcidint11车辆明细idnumbersint11数量(5)订单表orders“订单表orders”是用来记录用户订单的信息。orders的结构如表4.5所示。表4.5订单表字段名称类型长度字段说明主键默认值oidint主键主键uidint用户idaddressIdint200取车地址totalpricedouuble200总价remarksvarchar200备注odatetimestamp200时间(6)订单明细表orderdetail“订单明细表orderdetail”是用来记录订单明细。orderdetail的结构如表4.6所示。表4.6订单明细表字段名称类型长度字段说明主键默认值odidint11主键主键oidchar32订单idpidint11车辆idpnumberint11购买数量ptotaldouble10,2价格(7)取车地址表address“取车地址表address”是用来记录取车地址的信息。address的结构如表4.7所示。表4.7取车地址表字段名称类型长度字段说明主键默认值addressIdint11主键主键uidint11用户idcneevarchar50用户昵称phonevarchar11手机号addressvarchar100地址用户表users“用户表users”是用来记录用户个人信息。users的结构如表4.8所示。表4.8用户表字段名称类型长度字段说明主键默认值u_idint11主键主键u_namevarchar20用户名u_passvarchar20密码ustatusInt11账号状态1第5章系统实现5.1登录注册1.管理员管理员与用户登录相同。管理员登录界面如图5.4所示:图5.4管理员登录界面

管理员在后台登录界面输入账号和密码,点击“登录”进入管理员首页。管理员登录成功界面如图5.5所示。图5.5管理员登录成功界面实现该功能的关键代码如下://验证码登录@RequestMapping("/login.action")publicStringlogin(Stringuname,Stringupass,Stringyzm,HttpSessionsession){StringsessionYzm=(String)session.getAttribute("random");if(!yzm.equals(sessionYzm)){session.setAttribute("msg","验证码输入错误");return"redirect:/jsps/login.jsp";}Map<String,Object>map=userService.login(uname,upass);if("ok".equals(map.get("s"))){session.setAttribute("user",map.get("user"));return"redirect:/prod/show5.action";}else{session.setAttribute("msg",map.get("s"));return"redirect:/jsps/login.jsp";}}//注册@RequestMapping("/register.action")publicStringregister(Stringuname,Stringupass,Stringyzm,HttpSessionsession){StringsessionYzm=(String)session.getAttribute("random");if(!yzm.equals(sessionYzm)){return"yanzhengmacuowu";}Map<String,Object>map=userService.register(uname,upass);Objects=map.get("resu");if("ok".equals(s)){return"true";}else{Stringresu=(String)map.get("resu");returnresu;}}2.用户如果用户第一次进入系统,点击个人中心将切换到用户注册。注册时,用户必须输入自己的账号和密码,并输入正确的验证码。用户注册界面如图5.1所示;图5.1用户注册界面登录时,用户必须输入自己的账号和密码,并输入正确的验证码。然后按下“登录”按钮。如果您不输入用户名或密码,则将提示输入用户名和密码。用户登录界面如图5.2所示:图5.2用户登录界面在登录界面输入用户名和密码后,点击“登录”,自动访问用户的主页。否则,登录失败。用户登录成功界面如图5.3所示。图5.3用户首页5.2租赁车辆管理1.管理员管理员登录到后台系统中点击“租赁车辆管理”,进入租赁车辆管理界面。租赁车辆管理界面如图5.6所示:图5.6租赁车辆管理界面实现该功能的关键代码如下:@RequestMapping("/split.action")publicStringsplit(Integerpage,HttpSessionsession,Modelmodel){List<CarType>productTypeList=carTypeService.getAll();model.addAttribute("ptlist",productTypeList);session.setAttribute("ptlist",productTypeList);Integerp=1;if(page!=null){p=page;}if(page==null){page=p;}PageInfopageInfo=carInfoService.split(page,PAGE_SIZE);model.addAttribute("pb",pageInfo);return"product";}//处理分页publicPageInfosplit(Integerpage,intpageSize){CarInfoExampleexample=newCarInfoExample();PageHelper.startPage(page,pageSize);List<CarInfo>carInfoList=carInfoMapper.selectByExample(example);PageInfo<CarInfo>pageInfo=newPageInfo<>(carInfoList);returnpageInfo;}其中可以进行查询、新增、删除、编辑操作。点击“删除”按钮,会提示确认删除吗?提示框如图5.7所示:图5.7删除弹出提示框实现该功能的关键代码如下://调用函数弹出提示框<buttontype="button"class="btnbtn-warning"id="mydel"onclick="del(${p.cId},${pb.pageNum})">删除</button>functiondel(pid,ispage){if(confirm("确定删除吗")){location.href="prod/delete.action?pid="+pid+"&ispage="+ispage;}}点击“新增商品”按钮,显示新增商品界面。输入商品名称、商品介绍、定价、总数量,选择类别并上传车辆图片。新增商品界面如图5.8所示:图5.8新增车辆界面点击“编辑”按钮会出现更新商品界面,该界面会将商品名称、商品介绍、定价、总数量、车辆分类、车辆图片等信息显示。在该界面进行车辆信息的修改,更新商品界面如图5.9所示:图5.9更新车辆界面实现该功能的关键代码如下://修改回显@RequestMapping("/one.action")publicModelAndViewpreupdate(Integerpid,Integerispage){ModelAndViewmav=newModelAndView();CarInfocarInfo=carInfoService.preUpdate(pid);mav.addObject("prod",carInfo);mav.addObject("page",ispage);mav.setViewName("update");returnmav;}2.用户用户首页点击菜单栏“选车中心”会显示全部车型,可以根据上面的搜索栏查询喜欢的车型,如图5.10所示:图5.10选车中心实现该功能的关键代码如下:@RequestMapping("/select.action")publicStringselect(Integerpage,HttpSessionsession){List<CarType>list=carTypeService.getAll();session.setAttribute("list",list);Integerp=1;if(page!=null){p=page;}if(page==null){page=p;}PageInfopa=carInfoService.split(page,8);session.setAttribute("pa",pa);return"redirect:/jsps/select.jsp";}用户在任何界面中点击车辆,进入该界面,显示车辆详细信息和价格。如图5.11所示:图5.11车辆详情实现该功能的关键代码如下:@RequestMapping("/detailOne")publicStringdetailOne(Integerpid,Modelmodel){CarInfocarInfo=carInfoService.getCarInfoById(pid);model.addAttribute("carInfo",carInfo);return"forward:/jsps/carInfo.jsp";}publicCarInfogetCarInfoById(Integerpid){CarInfocarInfo=carInfoMapper.selectByPrimaryKey(pid);returncarInfo;}5.3用户信息管理管理员点击“用户信息管理”,进入用户信息管理界面。该界面可以查询并改变用户状态。用户信息管理界面如图5.12所示:图5.12用户信息管理实现该功能的关键代码如下:@RequestMapping("/one.action")publicStringone(Integerpage,Usersusers,Modelmodel){if(users.getuStatus()==1){users.setuStatus(0);}else{users.setuStatus(1);}userService.update(users);System.out.println(users.getuStatus());Integerp=1;if(page!=null){p=page;}if(page==null){page=p;}PageInfopageInfo=userService.split(page,PAGE_SIZE);model.addAttribute("pb",pageInfo);return"user";}管理员点击“未锁定”按钮,会提示确定禁用账户吗,点击“锁定按钮”,会提示确定解禁账户吗。提示框如图5.13和图5.14所示:图5.13禁用弹出提示框图5.14解禁弹出提示框5.4订单管理1.管理员管理员点击“用户订单管理”,进入用户订单管理界面。用户订单管理界面如图5.15所示:图5.15用户订单管理2.用户用户在购物车的页面上,用户点击“支付”,会切换到“确认订单”页面。页面可以选择取车地址和添加备注。如图5.16所示:图5.16结算订单实现该功能的关键代码如下:@RequestMapping("/zhifu.action")publicStringzhifu(HttpServletRequestrequest){HttpSessionsession=request.getSession();Usersusers=(Users)session.getAttribute("user");Integeruid=users.getuId();List<Carshop>carlist=(List<Carshop>)session.getAttribute("carlist");Addressaddress=newAddress();Integeraid=-1;String[]pids=request.getParameterValues("pid");Stringshowadd=request.getParameter("showadd");if(showadd!=null){Stringcnee=request.getParameter("cnee");Stringphone=request.getParameter("phone");Stringnewaddress=request.getParameter("newaddress");address.setAddress(newaddress);address.setPhone(phone);address.setCnee(cnee);address.setUid(uid);aid=addressService.save(address);}else{aid=Integer.parseInt(request.getParameter("rdo"));}Ordersorders=newOrders();orders.setStatus("未支付");orders.setAddressid(aid);orders.setRemarks(request.getParameter("beizhu"));Stringoid=UUID.randomUUID().toString().replace("-","").substring(1,17);orders.setOid(oid);doubletotal=Double.parseDouble(request.getParameter("total"));orders.setTotalprice(total);orders.setUid(uid);intnum=0;try{num=ordersService.save(orders,pids,carlist);}catch(Exceptione){e.printStackTrace();}if(num>0){return"redirect:/fore/showOrder.action";}else{return"redirect:/fore/showAddress.action";}}用户在“订单结算”页面点击“去支付”进入“我的订单”页面。该页面允许查看用户自己的订单,可以根据顶部导航栏按条件查看。未支付的订单可以支付与取消,支付成功的订单可以取车,取车成功的订单可以还车。如图5.17所示:图5.17我的订单实现该功能的关键代码如下://支付publicvoidupdateStatus(Stringoid){Stringstatus="已支付";ordersMapper.updateStatus(oid,status);}//取车publicvoidpickUpCar(Stringoid){Stringstatus="已取车";ordersMapper.updateStatus(oid,status);}//还车publicvoidreturnCar(Stringoid){Stringstatus="已还车";List<Orderdetail>orderdetailList=orderdetailMapper.findByOid(oid);for(Orderdetailorderdetail:orderdetailList){Integerpid=orderdetail.getPid();Integerpnumber=orderdetail.getPnumber();CarInfocarInfo=carInfoMapper.selectByPrimaryKey(pid);IntegercNumber=carInfo.getcNumber();Integernumber=cNumber+pnumber;carInfoMapper.returnCar(pid,number);}ordersMapper.updateStatus(oid,status);}//取消订单publicvoidgiveUp(Stringoid){Stringstatus="已取消";List<Orderdetail>orderdetailList=orderdetailMapper.findByOid(oid);for(Orderdetailorderdetail:orderdetailList){Integerpid=orderdetail.getPid();Integerpnumber=orderdetail.getPnumber();CarInfocarInfo=carInfoMapper.selectByPrimaryKey(pid);IntegercNumber=carInfo.getcNumber();Integernumber=cNumber+pnumber;carInfoMapper.returnCar(pid,number);}ordersMapper.updateStatus(oid,status);}点击“查看详情”按钮会在订单下面出现订单详情,如图5.17所示;该界面允许查看用户所有的订单,可以通过导航状态栏进行搜索,如图5.18所示:图5.18根据状态查看订单实现该功能的关键代码如下://管理员查看订单状态@RequestMapping("/condition.action")publicStringcondition(Stringcondition,HttpSessionsession){if("all".equals(condition)){return"redirect:/fore/adminOrder.action";}else{Map<String,Object>map=ordersService.conditionOrder(condition);session.setAttribute("orderList",map.get("list"));session.setAttribute("detailList",map.get("odlist"));return"orders";}}5.5车辆推荐管理用户首页点击菜单栏“推荐车源”会显示8款热门车型供用户查看。如图5.19所示:图5.19推荐车源实现该功能的关键代码如下:@RequestMapping("/recommend.action")

publicStringrecommend(HttpSessionsession){

PageInfopageInfo=carInfoService.split(2,8);

session.setAttribute("car",pageInfo);

return"redirect:/jsps/recommend.jsp";

}

CarInfoExampleexample=newCarInfoExample();

PageHelper.startPage(page,pageSize);

List<CarInfo>carInfoList=carInfoMapper.selectByExample(example);

PageInfo<CarInfo>pageInfo=newPageInfo<>(carInfoList);

returnpageInfo;5.6联系我们用户首页点击菜单栏“联系我们”会显示公司的一些信息,如图5.20所示:图5.20联系我们实现该功能的关键代码如下:functioninitMap(){createMap();setMapEvent();addMapControl();addMarker();}functioncreateMap(){varmap=newBMap.Map("dituContent");varpoint=newBMap.Point(116.37154695934125,40.11109281988195);map.centerAndZoom(point,17);window.map=map;}functionsetMapEvent(){map.enableDragging();map.enableScrollWheelZoom();map.enableDoubleClickZoom();map.enableKeyboard();}functionaddMapControl(){varctrl_nav=newBMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE}map.addControl(ctrl_nav);varctrl_ove=newBMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1});map.addControl(ctrl_ove);varctrl_sca=newBMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});map.addControl(ctrl_sca);}5.7购物车用户点击任何界面右上角的“购物车”(登录时)或车辆详细信息页面上的“添加购物车”进入购物车界面(未登录时先登录)。该界面显示用户的购物车,还可以添加、改变和删除购物车内容。如图5.21所示:图5.21购物车实现该功能的关键代码如下://添加购物车publicintsave(Carshopcarshop){intnum=0;Carshopcar=carshopMapper.selectUidCid(carshop);if(car==null){carshop.setNumbers(1);num=carshopMapper.insert(carshop);}else{car.setNumbers(car.getNumbers()+1);num=carshopMapper.updateByPrimaryKey(car);}returnnum;}//展示购物车publicList<Carshop>getCarshopInfo(Integeruid){List<Carshop>carshopList=carshopMapper.selectProductInfoCarshop(uid);returncarshopList;}//修改购物车车辆数量@RequestMapping("/changeNumber.action")publicStringchangeNumber(Integercid,Integernum){carshopService.changeNumber(cid,num);return"redirect:/fore/showCarShop.action";}5.8支付管理用户在我的“订单界面”点击支付进入支付界面,支付页面可以进行微信扫码支付。如图5.22所示:图5.22支付管理实现该功能的关键代码如下:privatestaticfinalLoggerlogger=LoggerFactory.getLogger(HttpUtil.class);privatefinalstaticintCONNECT_TIMEOUT=5000;//inmillisecondsprivatefinalstaticStringDEFAULT_ENCODING="UTF-8";publicstaticStringpostData(StringurlStr,Stringdata){returnpostData(urlStr,data,null);}publicstaticStringpostData(StringurlStr,Stringdata,StringcontentType){BufferedReaderreader=null;try{URLurl=newURL(urlStr);URLConnectionconn=url.openConnection();conn.setDoOutput(true);conn.setConnectTimeout(CONNECT_TIMEOUT);conn.setReadTimeout(CONNECT_TIMEOUT);if(contentType!=null)conn.setRequestProperty("content-type",contentType);OutputStreamWriterwriter=newOutputStreamWriter(conn.getOutputStream(),DEFAULT_ENCODING);if(data==null)data="";writer.write(data);writer.flush();writer.close();reader=newBufferedReader(newInputStreamReader(conn.getInputStream(),DEFAULT_ENCODING));StringBuildersb=newStringBuilder();Stringline=null;while((line=reader.readLine())!=null){sb.append(line);sb.append("\r\n");}returnsb.toString();}catch(IOExceptione){logger.error("Errorconnectingto"+urlStr+":"+e.getMessage());}finally{try{if(reader!=null)reader.close();}catch(IOExceptione){e.printStackTrace();}}returnnull;}系统测试在正式使用系统之前,需要进行一系列功能和性能测试,以确保系统的可靠性和稳定性,以及在正式使用系统之前对系统进行修复和微调。系统测试是每个方案生命中的一项重要和复杂的任务。这对于确保软件的可靠性至关重要。其目的是使用户体验感更强。该系统使用了Postman进行接口测试,并根据界面进行集成测试。6.1测试步骤与开发相似,测试也需要一定的时间去执行,也有着自己的规划步骤,为了将程序运行完整,使用流畅,我做了以下测试步骤:1.测试计划:首先确定测试计划,确定使用那些方式进行测试,使用那些软件。本系统主要使用Postman,然后根据界面做一个集成测试。2.测试设计:测试的核心是为测试模型的准备制定测试策略。主要测试登录模块,租赁车辆管理模块以及订单模块。3.测试实现:主要分析测试的可行性以及分工。主要使用Postman进行接口测试,确保接口都可以访问成功,成功获取返回值。然后根据前端界面做一个集成测试。测试界面展示是否有误,界面有无报错以及用户使用体验等。4.测试执行:根据测试设计以及测试实现进行全面测试。6.2测试用例6.2.1登录测试用例用户端测试用例依据用户要求进行设计,这里主要测试登录模块。如表6.1所示。表6.1登录测试用例表测试编号测试目的操作步骤预期结果实际结果1登录测试输入正确的用户名和密码登录成功登录成功2登录测试输入错误的用户名登录失败登录失败3登录测试输入错误的密码登录失败登录失败4登录测试输入错误的验证码登录失败登录失败6.2.2租赁车辆管理测试用例管理端在运行时要满足浏览器的运行需求,这里主要测试租赁车辆管理模块。如表6.2所示。表6.2租赁车辆管理测试用例表测试编号测试目的操作步骤预期结果实际结果1添加汽车租赁信息测试在添加页面输入汽车租赁信息,点击确认按钮添加成功添加成功2修改汽车租赁信息测试在修改页面修改汽车租赁信息,点击确认按钮修改成功修改成功3删除汽车租赁信息测试在管理汽车租赁信息页面,点击某一车辆的删除按钮删除成功删除成功4查询汽车租赁信息测试在查询输入框输入各种条件,点击查询按钮查询成功查询成功6.2.3用户订单管理测试用例管理员可以查看所有用户的订单,可以根据订单进行的状态进行查看,这里需要测试用户订单管理模块。如表6.3所示。表6.3用户订单管理测试用例表测试编号测试目的操作步骤预期结果实际结果1查看所有用户订单在管理员界面,点击用户订单管理可以查看到所有用户的订单显示所有用户订单2根据订单状态查询订单在用户订单管理界面分别点击订单状态显示该状态的所有订单显示该状态的所有订单6.2.4用户信息管理测试用例用户可能做出违规操作,或者出现账号被盗以及机器人账号等情况,管理员可以锁定账号,这里需要测试用户信息管理模块。如表6.4所示。表6.4用户信息管理测试用例表测试编号测试目的操作步骤预期结果实际结果1锁定账号在用户信息管理界面选择一个账号点击未锁定按钮,锁定账号。该用户账号在登录时提示账号已被锁定该用户账号在登录时提示账号已被锁定续表6.4用户信息管理测试用例表2解锁账号在用户信息管理界面选择一个账号点击锁定按钮,解锁账号。该用户账号可以正常登录该用户账号可以正常登录6.2.5选车中心测试用例用户在选车中心可以查看所有车辆也可以按照自己的需求搜索车辆,这里需要测试选车中心模块。如表6.5所示。表6.5选车中心测试用例表测试编号测试目的操作步骤预期结果实际结果1查看车辆信息在用户首页点击选车中心分页显示所有车辆分页显示所有车辆2商品名称模糊查询车辆输入不完整商品名称显示含有该商品名称的车辆显示含有该商品名称的车辆3按类型查询车辆选择一种车辆类型显示该车型车辆显示该车型车辆4按价格区间查询车辆输入选车价格区间显示该价格区间车辆显示该价格区间车辆6.2.6订单测试用例用户在生成订单时需要扣减库存以及取消订单时需要库存返还,这里需要测试订单模块。如表6.4所示。表6.6订单测试用例表测试编号测试目的操作步骤预期结果实际结果1生成订单扣减库存测试在订单结算页面,点击立即支付生成订单,查看库存是否扣减库存扣减成功库存扣减成功2填写车辆名称在我的订单界面,点击取消按钮,查看库存是否返还库存返还成功库存返还成功3用户还车库存返还测试在我的订单界面,点击还车按钮,查看库存是否返还库存返还成功库存返还成功6.3测试结论经过系统测试得出以下结论:系统在各种功能上运行良好,能够满足用户的基本需求。测试结果表明,该系统性能稳定,响应速度快,能在大量并发请求下保持正常运行。同时,对系统的安全性能进行了全面验证,没有发现明显的缺陷或安全风险。在可用性方面,系统界面设计简单明了,易于使用,用户体验好。在兼容性方面,该系统可以在不同的操作系统和浏览器上运行,没有重大的兼容性问题。总的来说,系统已经经过测试,达到了预期的要求和标准,可以实际应用。结论设计一个程序需要进行严谨和系统的开发流程,包括需求分析、设计、编码、测试等步骤。下面是一些总结:需求分析阶段:在这个阶段,需要去了解业务方面的知识,了解其需求并确定具体的功能和规格。设计阶段:在对需求进行充分理解之后,需要根据需求设计出合适的架构、模型和数据库,并对系统进行模块化划分。此外,还需要保证系统的安全性和可扩展性。编码阶段:在这个阶段,需要编写符合设计要求的代码,并进行代码测试和版本管理,并且合理添加注释,保证代码质量和可读性。测试阶段:需要进行单元测试测试、集成测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论