【《电动车租赁管理系统的设计与实现》5300字(论文)】_第1页
【《电动车租赁管理系统的设计与实现》5300字(论文)】_第2页
【《电动车租赁管理系统的设计与实现》5300字(论文)】_第3页
【《电动车租赁管理系统的设计与实现》5300字(论文)】_第4页
【《电动车租赁管理系统的设计与实现》5300字(论文)】_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

II[摘要]近年来各种共享车辆平台层出不穷,平台厂商投放到路边的自行车、电动车人们可以随时取用,使人们的出行更为便利,但是由于各平台的竞争、人们不爱护平台方投放的车辆、已存在的闲置资源得不到利用,同时也造成了资源极大的浪费,不符合节约环保的理念。论文设计与实现的电动车租赁管理系统重点是为了解决人们拥有的闲置车辆的使用问题,提高资源利用率。系统基于Java程序设计语言进行开发,选用的技术框架是SpringBoot、Mybatis-Plus、Retrofit,使用MySQL数据库进行数据存储。文中设计的电动车租赁管理系统主要功能包括:用户注册、用户登录、快速骑行、扫描二维码、借车页面、发布车辆出租信息页、查看车辆详细出租信息页、个人中心页、租用车辆订单页等功能。电动车租赁管理系统实现将两种车辆租赁模式结合,可以让用户能够随时随地快速使用车辆,同时用户可以出租或借用闲置电动车,提高资源的利用率,节约能源保护我们生活的环境。 [关键词]Android;SpringBoot;租车;闲置利用;电动车;1引言1.1选题的背景近年来因共享经济的兴起而产生的共享平台为我们的出行带来了极大的便利,厂商将自行车、电动车等车辆投放在路边,我们通过平台可随时取用车辆前往想要去的地方。共享平台对资源的使用与国家坚持可持续发展原则,提倡节能减排、绿色发展的理念较为相符,当然不仅是投放的车辆,共享平台可以开发更多的功能让人们所拥有的闲置资源通过共享使用起来[1],提高资源的使用率。目前我们平时经常会使用到的共享电动车平台有哈喽、美团等,在路旁我们基本很容易能看到它们投放的电动车并且能够快速使用这些电动车前往我们想要去的地方,哈喽、美团等这些平台都是分时租赁的模式,这种模式的形式是按小时或天计费随取随用。这是用户向平台借车进行短期的使用,而如果用户有较长时间的用车需要和用户与用户间租车的需要,目前平台暂时未能满足。1.2选题的意义共享平台的取用模式其实是厂商先人为地制造了一些闲置,然后通过按小时或天进行租赁使用,方便用户们快速出行,但是这并没有真正地使拥有电动车的人在电动车闲置的时候能够将电动车进行租赁,让电动车在租用者的手上使用起来,本次设计试想是否可以将两种电动车的租赁方式在系统中结合起来,让闲置的电动车能够达到更大的一个利用效果。1.3课题任务本系统是电动车租赁管理系统的设计与实现。最终想要实现的是将共享单车的租车模式与较为传统的租车模式两种相结合,从而让用户在生活中既可在路旁指定停车点上找到车辆快速出行,又可将自己闲置的车辆进行较长时间的出租或者租用其他用户的车辆,通过这样的结合期望实现提高资源利用率。系统实现注册、登录、快速骑行、发布出租信息、查看待租车辆列表、查看待租车辆详细信息、个人中心等功能[3]。快速骑行可以让用户扫码共享单车快速出行,在发布出租信息页面中可以出租自己的电动车,查看车辆列表可以浏览车辆的大致信息,个人中心包括用户的信息和其他一些功能的操作栏。2系统开发工具与开发平台2.1开发平台本系统基于目前主流的Java程序设计语言进行开发,其中服务端主要采用了SpringBoot、Mybatis-Plus和MySQL关系型数据库等技术,选用Android页面作为与用户交互的前端,采用了Zxing框架扫描二维码、Retrofit框架与后端进行通信。开发工具使用AndroidStudio、IDEA。2.1.1MVC框架的简介 在MVC(ModelViewController)设计模式中,Model是指业务模型,View是指用户界面,Controller则是控制器[4]。使用MVC设计是为了将Model和View的实现代码分离,从而使同一个程序可以使用不同的表现形式。在MVC软件设计模式中业务逻辑被聚集到一个部件里,当改进界面和定制独特界面及用户交互的同时,业务逻辑不需要重新编写,通过这样一种业务逻辑、数据和显示界面分离的方法组织代码。在映射传统的图形化用户界面的结构,输入、处理和输出功能在一个逻辑的图形化用户界面的结构中MVC因其特性被广泛使用而发展起来。它具有使代码耦合性低,代码重用性高,更利于开发人员扩展、维护的优点。2.1.2MySQL数据库的介绍MySQL数据库是安全性强、支持跨平台、高效的,可以称得上是目前运行稳定、速度最快的SQL语言数据库之一,并与Java、PHP等主流编程语言紧密结合的数据库系统。2.1.3AndroidStudio的介绍AndroidStudio是谷歌公司推出的Android应用集成开发工具,它提供集成开发工具用于Android应用的开发和调试,并且能够直观地进行应用界面设计、预览效果,有快速和功能丰富的模拟器。2.1.4百度地图API由百度公司免费开放的一系列地图服务接口是百度地图API,其中百度地图API提供服务支持的版本包括Android、iOS、Javascript、静态地图、Web等多种,提供多种服务有定位服务、鹰眼轨迹服务、数据服务、分析服务等[5-6]。开发者在获得权限后,可在自己的系统中调用百度地图服务的接口,使用核心类控制和实例化地图,覆盖物类则是负责叠加或覆盖到地图内容的实例化[7]。2.2前端框架介绍2.2.1Retrofit的简介Retrofit是与Okhttp框架同公司Square公司为Android开发者提供的一个网络请求框架的封装。Retrofit基于Okhttp由OkHttp完成基本的网络请求工作,而Retrofit则在此基础上负责网络请求接口的封装。Retrofit具有在编码上简洁易用、解耦、扩展性强的优势,不仅可搭配多种Json解析框架(例如Gson),另外还支持RxJava.使用Retrofit可以更快速地访问服务端并且保证与服务端通信的安全性。2.3后端框架介绍2.3.1SpringBoot的介绍 SpringBoot称为快速搭建Spring项目的脚手架更为合适,并且尽可能的减少一切xml配置,为Spring的开发者提供一个快速的、广泛接受的入门体验,它能够使用内嵌的tomcat服务器,提供定制化的starterpoms来简化maven配置[8]。

3系统分析与设计3.1系统总体功能需求分析通过对系统功能的分析以及对其他同类的系统进行参考,分析得到系统中需要包括的功能有地图上快速找车、扫描二维码、查看正在出租车辆的列表、发布出租信息等,功能模块的划分主要为:用户的注册和登录、快速骑行、待借列表、查看车辆详情、发布出租信息、个人中心等。3.2模块功能分析3.2.1用户注册模块用户填写注册资料如用户名、密码、电话号码等信息,系统将用户信息写入保存到数据库中。3.2.2用户登录模块用户输入正确的用户名和密码,获得使用系统其他功能的权限。3.2.3快速骑行模块加载百度地图,用户可以在地图中看到自己附近停放的车辆位置,选择查看地图的种类以及地图定位时的模式,扫码按钮点击弹出扫描二维码的相机页面。3.2.4待借列表模块在此页面用户可以滑动浏览正在等待借用的电动车辆,了解车辆的大致信息。3.2.5查看车辆详情模块用户在此页面可了解车辆较为详细的信息,如该电动车可以租用的时长、租用的金额、取车的地点、取车联系的用户等。3.2.6发布出租信息模块用户在此页面填写出租车辆的信息,包括主题、内容、地点、出租时长、出租金额等,可以上传电动车的图片。3.2.7个人中心模块个人中心页面显示用户的部分信息,以及其他各项如设置等的操作栏。3.3系统结构图图3-1APP功能模块结构图3.4系统E-R图 实体关系E-R图的具体设计如图3-2所示:图3-2E-R实体关系图用户表实体图如图3-3所示:图3-3用户表电动车表实体图如图3-4所示:图3-4电动车表电动车租用信息表实体图如图3-5所示:图3-5电动车租用信息表违规记录表实体如图3-6所示:图3-6违规记录表违规类型表实体图如图3-7所示:图3-7违规类型表评论表实体图如图3-8所示:图3-8评论表3.5数据库结构设计 本系统数据库主要包含6个表,包括用户表,电动车表,电动车租用信息表,违规记录表,违规类型表,评论表。根据E-R图对数据库进行设计列出主要的数据表:用户表(user),表结构如表3.1表所示:表3表3.1用户表名称类型长度说明idbigint11用户编号(主键)user_namevarchar16用户名passwordvarchar16密码id_cardvarchar18身份证号real_namevarchar10真实姓名phone_numvarchar11电话号码birthdaydate4出生日期hire_timeint4用户出租车辆的次数borrow_timeint4用户借用车辆的次数credit_valueint3用户信誉分值is_restricttinyint1是否被限制租车和发布is_admintinyint1判断用户是否管理员gmt_createdatetime6表的创建时间gmt_modifieddatetime6表的修改时间描述:记录每一个用户的属性

电动车表(e_bike),表结构如表3.2表所示:表3表3.2电动车表名称类型长度说明idbigint11电动车编号titlevarchar255主题rent_pricedecimal5租金component_infovarchar255其他构件信息rent_positionvarchar255取车地点e_bike_image电动车的图片is_borrowedtinyint1判断是否已经租出去了gmt_createdatetime6表的创建时间gmt_modifieddatetime8活动集合时间名字电动车表信息别名:描述:记录用户发布出租的电动车的信息

电动车租用信息表(rent_info),表结构如表3.3表所示:表3表3.3电动车租用信息表名称类型长度说明idbigint11信息编号hire_user_idbigint11出租用户的idborrow_user_idbigint11借用用户的ide_bike_idbigint11电动车idrent_start_timedatetime6租车开始时间rental_durationint3电动车的出租时长date_of_returningdatetime6应还车时间actual_return_datedatetime6实际还车时间is_finishtinyint1是否借车完成gmt_createdatetime6数据创建时间gmt_modifieddatetime6数据修改时间名字动态表信息别名:描述:记录每一次借车活动的基本内容

违规记录表(against_the_regulation),表结构如表3.4表所示:表3表3.4违规记录表名称类型长度idbigint11违规记录编号user_idbigint11违规用户编号e_bike_idbigint11电动车编号type_of_violation_idbigint11违规类型编号amount_of_finedecimal3违规扣款金额deduction_pointint2违规扣分数fine_datedatetime6违规处罚日期gmt_createdatetime6数据创建时间gmt_modifieddatetime6数据修改时间名字违规记录表信息别名:描述:记录用户在借用电动车过程中的违规信息

违规类型表(type_of_violation),表结构如表3.5表所示:表3表3.5违规类型表名称类型长度说明idbigint11违规类型编号type_of_violation_explainvarchar255违规类型的解释deduction_pointint2违规类型扣除的分值gmt_createdatetime6数据创建时间gmt_modifieddatetime6数据修改时间名字违规类型表信息别名:描述:记录定义每种违规类型的信息

评论表(comment),表结构如表3.6表所示:表3表3.6评论表名称类型长度说明idinteger4编号(主键)comment_user_idbigint11发表该评论的用户idcommented_user_idbigint11被评论的用户idcomment_contentvarchar255评论的内容comment_timedatetime6发表该评论的时间gmt_createdatetime6数据创建时间gmt_modifieddatetime6数据修改时间名字评论表信息别名:描述:记录每条用户评论的信息

4系统具体实现4.1前台模块设计4.1.1用户登录模块图4-1用户登录图 如图4-1所示,是租车系统的登录界面,点击注册按钮跳转到填写注册信息,填入账号密码点击登录按钮进行登录。用户登录后可以使用系统的其他功能。主要逻辑代码如下: login.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){//获取输入在相应控件中的字符串getEditString();//判断输入框内容if(TextUtils.isEmpty(userName)){Toast.makeText(SecondActivity.this,"请输入用户名",Toast.LENGTH_SHORT).show();return;}elseif(TextUtils.isEmpty(password)){Toast.makeText(SecondActivity.this,"请输入密码",Toast.LENGTH_SHORT).show();return;}}});4.1.2快速骑行页面模块图4-2快速骑行页面图如图4-2所示,是APP的快速骑行界面,可以看到系统由3大模块组成,分别是快速骑行、租车、我的。用户可以在快速骑行页面中看到自己的定位和周边停放的车辆,可以点击右上方菜单按钮切换地图的模式,点击扫码用车按钮跳转到扫描二维码的相机页面。主要的逻辑代码如下:描绘“我的位置”:mLatitude=bdLocation.getLatitude();mLongitude=bdLocation.getLongitude();MyLocationDatadata=newMyLocationData.Builder().direction(mCurrentX).accuracy(bdLocation.getRadius()).latitude(mLatitude).longitude(mLongitude).build();mBaiduMap.setMyLocationData(data);描绘车辆位置(其中一个):LatLngpoint=newLatLng(mLatitude+0.00056,mLongitude);BitmapDescriptorbitmap=BitmapDescriptorFactory.fromResource(R.drawable.car_small);OverlayOptionsoption=newMarkerOptions().position(point).icon(bitmap);mBaiduMap.addOverlay(option);4.1.3租车列表模块4-3租车列表图图4-3是租车列表的页面,用户可以在该页面中看到正在等待租用的电动车的大致信息,点击列表项进入到详细信息页面,点击右下角的我要发布圆形按钮进入到发布信息填写的页面发布想要出租的车辆信息。主要逻辑代码如下:mList.add(orderResultsEntity1);RentListAdapterorderResultsAdapter=newRentListAdapter(mList,getActivity().getApplicationContext());mlistView.setAdapter(orderResultsAdapter);4.1.4我要发布页面模块图4-4我要发布图图4-4是APP的我要发布页面,用户在此页面填写要发布的电动车的信息,如标题、内容、出租时长、地点、租金等,点击加号的图片进入到选择照片的图库进行照片的选择也可以选择拍摄新照片,点击确定发布发布成功则结束页面。主要的逻辑代码如下:privateclassGridAdapterextendsBaseAdapter{privateArrayList<String>listUrls;privateLayoutInflaterinflater;@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder=null;if(convertView==null){holder=newViewHolder();convertView=inflater.inflate(R.layout.item_image,parent,false);holder.image=(ImageView)convertView.findViewById(R.id.imageView);convertView.setTag(holder);}else{holder=(ViewHolder)convertView.getTag();}finalStringpath=listUrls.get(position);if(path.equals("000000")){holder.image.setImageResource(R.mipmap.ic_launcher);}else{Glide.with(getActivity().getApplicationContext()).load(path).placeholder(R.mipmap.default_error).error(R.mipmap.default_error).centerCrop().crossFade().into(holder.image);}returnconvertView;}}4.1.5个人中心页面模块图4-5个人中心页面图图4-5是个人中心页面,如图所示该页面展示用户的部分信息,还有其他一些功能的操作栏,如果还未登录点击头像框和用户的名称部分可以进入到登录页面。主要的逻辑代码如下:@OnClick({R.id.tv_information,R.id.tv_pay,R.id.tv_pictures,R.id.tv_setting,R.id.tv_more_activities,R.id.tv_setting})publicvoidOnClick(Viewview){switch(view.getId()){caseR.id.tv_information:startActivity(MyInformationActivity.class);break;caseR.id.tv_pay:break;caseR.id.tv_pictures:break;caseR.id.tv_more_activities:break;caseR.id.tv_setting:break;default:}}4.2后端功能设计4.2.1前后端通信部分图4-6通信部分代码图首先将服务端的域名传入构造一个Retrofit,这是Retrofit所涉及的设计模式中的一种--构建者模式使用几个简单的对象构成一个复杂的对象,它可以让复杂的对象构建与其表示分离让配置变得清晰,这部分在apiManager调用的uploadImage接口中。然后在调用的接口中传入各个值比如发布信息的主题、主要内容、发布的地点、租车时长、价格、图片这些,然后返回一个call,这个call调用的enqueue方法去异步请求http,完成一个基本的Retrofit的网络请求,这个网络请求走到后端服务器等待响应。4.2.2发布信息接收功能图4-7发布信息接收功能代码图将通过网络请求传输到服务端的发布出租各项信息主题、内容、图片等的进行接收,并对接收到的图片再进行处理,重命名图片文件、取到文件的输入输出流以字节的方式写入文件,将操作是否成功信息返回给客户端。5APP的测试与分析5.1测试的目的与意义 在APP正式发布之前,需要对其各项功能进行测试,原因在于可以及时发现运行时的错误,用户在不同的环境下使用的效果是否存在差异,测试的最终结果是不是符合最初设计的功能需求。测试的过程用发现的问题,需要找出原因与出错的代码位置,进行适当的调试与修改,让用户在使用APP

温馨提示

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

评论

0/150

提交评论