李裕程-校园共享小程序的设计与实现_第1页
李裕程-校园共享小程序的设计与实现_第2页
李裕程-校园共享小程序的设计与实现_第3页
李裕程-校园共享小程序的设计与实现_第4页
李裕程-校园共享小程序的设计与实现_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

校园共享小程序的设计与实现DesignandImplementationofAWeChatMiniProgramforSharing摘要微信小程序的校园共享主要是为了给一些学生可以花很少的钱去使用平常只用一两次的东西和有一些闲置的物品分享出来进行租借的共享平台。使用该小程序可以帮助学生将闲置的物品分享出来,既能赚钱,还能结识新的朋友,同时需要的图书、乐器、球类、电器等都能在这里共享到。本文主要是设计实现出一个校园共享的微信小程序。该小程序以NightlyBuild、IDEA作为主要的开发工具,MySQL数据库作为主要数据库,后台系统主要基于SpringBoot和Mybatis的架构完成,整个实现功能包括:能够查看到附件共享的,能够在仓库看到这个仓库的全部的共享物品,可以搜索仓库里的物品,可以查看租借过这个物品的人,能对物品进行租借,能归还物品,能对物品进行评价,能把物品进行共享。关键词:SpringBootMySQL校园共享AbstractThepurposeofcampussharingofWeChatMiniProgramistogivesomestudentsasharingplatformwheretheycanspendalittlemoneytousethethingstheyusuallyuseonlyonceortwiceandsharesomeidleitemsforrenting.Usingthisprogramcanhelpstudentstosharetheidleitems,notonlymakemoney,butalsomakenewfriends.Atthesametime,thebooks,musicalinstruments,balls,electricalappliances,etc.canbesharedhere.ThispapermainlydesignsandimplementsaWechatMiniprogramsharedbycampus.Theappletusesnightlybuild、IDEAAsthemaindevelopmenttool,MySQLdatabaseisthemaindatabase,andthebackgroundsystemismainlybasedontheSpringBootandMyBatisarchitecture.Thewholeimplementationfunctionsinclude:canviewtheattachmentsharing,canseealltheshareditemsinthewarehouse,cansearchtheitemsinthewarehouse,canviewthepeoplewhohaverentedtheitems,andcanrenttheitemsCanreturnitems,evaluateitems,shareitems,etc.Keywords:SpringBootMySQLCampusSharing目录第一章绪论 绪论1.1研究背景与现状以前了解一点世界发生在事情需要去买一份报纸。如今能够在微信小程序上看新闻直播,以前在外面吃饭时可能需要排一条长长的队伍,现在直接在微信扫一扫桌面上的小程序直接进行点餐,以前出行去旅游时,到了一个地方需要马上去酒店预订一下房间,如今只需要翻开微信小程序就能看到一切的房间,你可以选择喜欢的房间,如果这家没有房间就换一家。开发一个应用程序的成本比开发微信小程序要高,并且开发周期长,投入成本高。微信小程序触手可及,满足当下人们在线下的服务需求,在外面吃饭,不必顶着洋洋夏日在门口排队,只需要掏出手机对准商家贴在桌子上的商家码进行扫码就能进行点餐。微信小程序是衔接用户和服务的新工具。它集成了微信生态系统,并与微信公众号,微信支付,微信卡优惠券等相关联,能够轻松地在微信中获取和流传,并且它对于用户的体验极好[1]。在科技飞速发展的今天,共享经济作为新的概念进入了人们的视野。通俗来讲,共享经济就是以获取一定利益或报酬为目的,在陌生人之间使闲置资源使用权进行暂时性转移的一种新型经济模式[2]。在以前需要一本教材书,每个学生需要每个人都去买,当上课需要这个课程的教程时需要把它买下来,当几个人在校园需要打火锅时,需要去买整一套装备,当上学的路上突然遇到下雨时,需要重新买一把雨伞,当出一趟远路的时候,有时候会想如果有一辆车就好了。可是这些东西有时候买了可能用了一次就很少再用了,有些买了可能自己本来就有现在再卖又重复了,而到目前为止,大学生线上线下疯狂购物的现象十分普遍,但由于物品更新速度快,等新鲜感过去以后常常会懊恼自己当初怎么会买了这么多东西,用又用不完,丢了又浪费。根据其他人的研究,80.19%的人有闲置的东西。对于大学生来说,除了学习,就是生活和健身方面的东西。同时有57.27%的人不知道如何处理这些闲置物品,有68.18%的人说他们想租用这些物品,但没有相应的平台[3]。所以这时就需要一个可以解决这种困难的校园共享平台。在这个平台上人们可以把自己闲置的东西出租给别人,比如你可以把自己的一些学习资料共享给别人,别人也可以把他的一些资料共享给你,这样对于双方来说都是互惠互利。微信小程序覆盖面广,操作相对简单,但是依然有许多问题需要我们进一步研究[4],如缺乏完善的管理制度,影响正常的社会秩序,这是当前共享汽车发展面临的关键问题。因此企业有关负责人有必要加强与地方政府部门的沟通,增强行业自律意识,并不断运用现代技术手段,促使用户在社会中文明共享和按指定地点停车,从而实现资源的有效利用。此外有关地方政府部门还应及时结合当地共享经济发展的实际情况,尽快制定并发布有关共享车辆管理的规定,为统一共享标准提供统一、规范的依据[5]。共享经济将会使个体所有人拥有的各种闲置公共资源进行综合利用[6]。共享经济的出现引领了各国资本家争先追逐。共享经济的到来,也带来许多的财富以及相应的岗位[7]。这对于大部分的人来说是是令人兴奋的消息。随着人流量的不断增长,岗位也相应的达到了爆满的转态。而共享经济的到来可以暂时的解决这个办法。现在,世界正在掀起理性、时尚的二手消费趋向。在美国以被称为“世界上最好的技术学校”的MIT为例。每年的4月和10月、每个月的第三个星期日是麻省理工学院的“跳蚤市场日”。在日本和韩国,全日制学生是日本和韩国学校二手市场中的主要力量[8]。根据发表论文的时间分布,近年来,通过“共享经济”为主题词检索出共享经济研究文献数量不断增长,被引用文献的频率也同步增长。特别是在过去的十年中,被引用文献的数量和频率分别占韩国以外地区的75%和85%[9]。如下图[9]所示1-1:图1-1论文发表数量1.2研究意义在2017年1月,是微信小程序发布的日子。在这一天没有人会想到它会带给人们不一样的使用习惯。它是一种不需要人们主动去下载或者安装一个应用程序。而是直接拿出手机在微信上搜索想要使用的应用即可使用。而且用完直接像关闭网页一样关闭即可。不用在手动去卸载它。用户就不用担心自己的手机安装许多的应用而导致内存爆满的问题[10]。我们在使用手机的时候经常会出现手机内存不足的现象,这时候再下载想要的应用是下载不了的,必须对手机的其他软件进行清除才可以下载,所以在使用上给客户造成了许多不方便[11]。但是,小程序的开发成本相对而言较低,使用方法很快,并且暂时不会有太多的内存,这将加快小程序的开发。现在小程序开发已添加了超过150万个开发。近来也有越来越多的公司加入小程序的开发。比如酒店、餐饮、教育等等。不断发展的微信小程序电子商务活动渐渐渗透到了我们生活的方方面面[12]。随着世界的不断发展和进步,科学技术越来越发达,因此我们的科学技术越来越贴近生活。为了方便人们而诞生了许多技术。在互联网的推动下,诞生了一种新的经济模式-共享经济。诸如自行车,篮球,雨伞和汽车之类的日用品可以通过他人代为租赁和购买来共享。同时“共享经济”这个词在人们中也很流行。它已成为晚餐后交谈的资源。对于学校,协会,学生协会和其他组织来说,举办各种活动,对于服装和音响,投影仪和其他设备的需求也很大。对于个人而言,教学辅助材料,名著,CET-4和CET-6等经典书籍,计算机考试书和研究生入学考试材料在使用后可能会闲置或出售或丢弃,从而造成资源浪费[13]。通过共享这个相关的概念,可以在各个方面促进了各方的快速流通以及高效的发展[14]。共享经济的的意义是把那些因自己铺张浪费而闲置的物品整合起来,让物品的拥有者可以以较低的价格提供产品进行租借,需求方没有拥有该物品的所有权,而是以租借的方式进行使用物品。在校园里,学生不仅是共享的人,而且还可以通过共享物品来赚钱并结识新朋友。学生也是物品的使用者。可以在应用程序中共享所需的书籍,电器,篮球,时间和生活技能。我们坚信分享的行为使您我更加友好。我们将坚信分享的习惯使生活更加环保。我们坚信共享的意义使未来更美好。这种真正的陌生人校园共享形式将在校园中逐步实现。1.3章节安排本论文的主要结构介绍如下:第1章:绪论,主要讲述了当下小程序与校园共享的背景与现状,同时也描述了小程序与校园共享所带来的意义。第2章:需求分析,主要是对微信小程序的市场与校园共享的市场进行分析,同时也对本系统功能进行分析。第3章:系统设计,详细介绍系统运行所需要的环境以及系统的开发结构、功能模块的设计和数据库的设计。第4章:系统实现,主要整个系统的功能设计,所需要用到的技术以及数据库结构的设计。第5章,测试,主要是讲了关于测试整个系统功能的运转是否没有出错,同时也说明一些业务逻辑的测试。第6章,总结,主要描述实现该系统的总结。第二章需求分析2.1校园共享市场需求分析大学校园相对于初中或者高中来说,社交的圈子相对比较广泛,大学生虽涉世未深,但是随着经济不断的发展,他们的经济水平也有了一定的提高,同时物流的便利使得大部分的学生在网上买买买,导致大部分学生有很多的闲置资源,当问及他们如何处理这些闲置物品时,大部分人没有一个清晰的概念,有些可能会放置一旁,有些可能转送他人。共享经济的一个特性就是可以把两个熟人之间的关系扩大到同个班的群体上或者同个系的群体[15]。校园对于共享经济来说无疑是一个不容错过的市场。大学生是共享经济的主要消费力量之一,省钱是大学生当下所追求的原因之一。低交易成本可以吸引更多的潜在消费者,并在体验后成为校园共享经济模式的成员。以更少的支出获得多样化的服务和产品,是校园共享经济发展的必然趋势。在校园共享的市场上,需求方以较低的价钱去换取自己所想要的产品,共享方则从自己闲置的物品中收取小额的收益,这样提高闲置产品的利用率,并从中可以让自己的社交圈子得到进一步扩大,这种互惠惠利的发展应该会使更多的校园共享市场得到逐年大幅度的提升。随着共享经济的理念逐步普及,相关的新型经济活动迅速崛起,各种各样提供商品或服务共享与租用的公司遍地开花[16]。2.2微信小程序市场需求分析近些年来随着科技的不断发展与进步,应用程序的过度追求高质量化导致其对手机硬件设备的内存空间的占比逐步扩大,人们为了手机内存的考虑往往会选择删除应用程序,当一种免安装,免注册,免打扰,没有入口,没有应用商店的东西出现时,填补了用户需求的空缺。小程序的市场虽然很多但是各有各的不同,但是没有了解用户的需求和技术的限制下还是不适合打上小程序的热潮。现在庞大的用户市场中现有的微信小程序还远远达不到饱和的状态。随着微信小程序的持续推广,各个行业都能清晰的了解到它相对于其他应用程序有那些方面的优势。在接下来的时间里会有各式各样的小程序持续开发和上线。在2020年小程序的发展趋势会有极大的提升[17]。2.3系统功能需求分析校园共享系统是为了给有闲置物品而不知如何安置与想要用低价去换取一些物品的使用权的用户提供一个平台,在这上面用户可以灵活的交换生活用品、学习资源、运动器材等等之类的东西。甚至还能在交到不同圈子的朋友。校园共享系统主要着重于“物品的共享”。那么他最重要的功能包括物品的租借、物品的归还、物品的发布。其次才是物品评价、搜索仓库的物品、金钱充值等等之类的功能。2.4系统可行性分析校园共享微信小程序在IDEA编辑器进行开发,使用SpringBoot作为主要的框架,SpringBoot的特点就是配置简单、同时可移植性强,java语言的特点就是比较容易上手,所以学Java的群体有很多,网上也有大量的资源可以查到。所以使用SpringBoot作为系统的框架,遇到难题可以上论坛进行求解。微信小程序最近又是非常的受大众欢迎,所以网上也有许多微信小程序的资源可以解答开发过程中所遇到的难题。本校园共享系统小程序完成由自己动手开发而成,不存在抄袭。同时开发的功能相对简单,用户使用方便,没有一些繁琐的流程,用户一进入页面,可根据页面所标识的东西进行操作。租借方面会收取物品原价的百分之十的金钱作为佣金,这样能够保证用户发布的物品被租借的人损坏。后台使用的SpringBoot框架,这样对于后期的维修更加的简便。2.5本章小结这一章主要描述了微信小程序的出现对于当前的市场带来影响分析。也讲述了共享经济对于当前的市场影响的分析。简要的讲述了当前系统的它主要是用来干什么的以及它的一些特定的功能,最后描述了这个系统在技术方面的可行性。

第三章系统设计3.1系统功能设计3.1.1开发结构设计本系统开发应用的开发结构是MVC模式,在MVC模式之前,一般图形化程序设计都是围绕着事件驱动的用户界面去组织,这样处理的方法最后会导致的后果就是数据的处理、程序功能与代码显示等部分会纠结在一起[18]。而MVC模式把数据的处理、程序输入输出控制以及数据渲染分开来。这样使得程序员在开发时,前端的只专注于前端部分,后台的只要专注于后台就可以,极大的减少了开发过程的冲突,也提升了开发的效率。MVC模式可以分成三部分:视图部分:界面人员设计的前端页面。可以把数据库的数据渲染到页面上。模型部分:主要是对于一些实体类数据的存储。只不过它储存的数据相对比较复杂。控制器部分:它主要是处理前端的所有请求。并把相对应的模型或者视图返回。3.1.2功能模块设计本系统的功能设计丰富,功能主要分为9个,分别有地图功能、个人中心、租借功能、归还功能、订单功能、评价功能、发布物品功能、充值功能、仓库的详情,每个功能都各自负责的东西,同时有相互联系。具体功能设计见表3-3:表3-3“校园共享小程序”功能功能项操作操作内容地图功能授权显示附件的仓库个人中心点击红色头像进入到个人中心的页面租借功能输入物品编码通过输入物品上编码进入到物品的详情页归还功能选择归还的地址与输入物品编码通过选择归还的地址与输入该物品的编码进行归还物品订单功能点击查看订单查看用户租借过的所有订单评价功能点击评价输入想要评价的内容和添加评价的图片进行评价。发布物品功能输入物品的信息通过输入物品的名字,类别以及存放的仓库等信息进行物品发布充值功能输入数据、得出结果通过输入想要充值的金额进行充值3.2数据库表设计3.2.1数据库表分析为了满足校园共享小程序的开发,本系统需要用户模块、租借模块、评论模块、仓库地址模板、充值模块、归还模块等的表来支撑这个系统的研发。以下是这些模块所需要的数据库表:用户表:用于存放用户的基本资料,包括用户id、用户名、用户头像、创建时间、用户余额、用户登录小程序的oppenid、用户信誉等信息。物品表:用户存放物品的基本资料,包括物品id、物品名字、物品创建时间、物品原价、物品租借价格、物品主人等信息。物品评价表:用于用户对于这次租借物品的评价。包括评价id、评价的内容、评价的时间、评价的人等信息。仓库表:用于存放仓库的信息的表,仓库id、仓库的名字、仓库的别名、仓库位置的经度、仓库位置的纬度等信息。物品的图片表:用于存放物品图片的表,物品的图片id、物品图片的名字、物品id等信息。物品的交易明细的表:用于存放物品交易明细的表,包括交易id、交易的内容、交易时间、交易金额、用户id等信息。物品交易订单的表:用户存放物品租借的交易明细的表,包括订单id、订单名字、生成订单的时间、订单状态等信息。用户评价的图片的表:用户存放用户评价时上传的图片的表,包括评价图片id、评价图片的名字、评价的id等信息。3.2.2概念模型设计按照上面的需求分析,我们可以清晰得到该概念模型的设计思路,按此思路能够设计出满足本系统功能需要的各个实体,同时也能把本系统的数据库表可以使用实体关系(E-R)表现出来。各个数据库表的实体E-R图如下图3-2至3-9所示:(1)用户信息实体:包含了用户id、用户的名字、用户的头像、创建的时间、信用积分、oppenid。其中oppenid的用户登录微信小程序的唯一的标识,通过这个标识能对用户的唯一性有一个相对的保障。信用积分是代表用户租借的情况,如果用户有违约的情况会对它进行相应的积分扣除。积分低到一定的程序会被系统永久静止登录。所以一般用户的积分值必须保持在一个相对稳定的值,这样你的租借的信誉才可能会高。图3-2用户实体E-R图(2)物品信息实体:包含了物品的id、物品的名字、物品的信息、物品的创建时间、物品的租借时间、用户的id、物品状态、物品的原价、物品的租借的次数、物品租借地址、物品的归还地址、物品租借的价钱、物品评价的次数、按钮的样式。图3-3物品信息E-R图(3)仓库信息实体:包含仓库的id、仓库的名字、仓库的别名、仓库的开放时间、仓库的关门时间、仓库的纬度、仓库的经度。图3-4仓库信息E-R图(4)评价信息实体:物品的id、评价的内容、评价的时间、评价的次数、评价的人、订单的id、评价的id。图3-5评价实体E-R图(5)充值信息实体:充值的id、充值的内容、充值的时间、充值的金额、用户的id。图3-6金钱实体E-R图(6)订单信息实体:订单的id、订单的名字、物品租借的时间、物品归还的时间、消费的金额、租借的人、物品的租借状态。图3-7订单信息实体E-R图(7)物品详情图片实体:图片的id、图片上传的地址、物品id。图3-8物品详情图片实体E-R图(8)图片上传的实体:评价用户的id、图片上传的地址、图片id。图3-9图片上传实体E-R图

第四章系统实现4.1系统运行环境及配置操作系统:Windows10 数据库:NavicatforMySQL开发工具:IntelliJIDEA、微信开发者工具在进行项目开发前需要先配置下Java环境,首先下载JDK需要进入官网,进入官网看到JDKDownload进入具体的下载页把AccepetLicenseAgreement勾上,选择开发本系统需要的位数进行下载,这里选择的是jdk1.8.0_231,下载完成后就需要进行Java环境的配置了,在我的电脑右键选择属性进入到高级系统配置最后到环境配置。添加一个变量名为JAVA_HOME值为你jdk下载的位置的系统变量,然后添加一个属性JAVA_HOME在path变量里,最后一步是classpath变量添加;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar这样环境就配置完成了。在控制台上输入javac出现下图结果就表示配置成功。如下图4-1所示:图4-1java配置成功开发一个系统一个必不可少的要素就是数据库,本系统选择的数据库是MySQL数据库,MySQL数据库系统安装程序相对容易,兼容不同的操作系统,占空间很小,卸载方便,因是开源软件也不存在盗版问题,相应的开发工具如Navicat使用方便,有效提高开发效率[19]。版本号为5.6.27,对于其他版本这个版本相对稳定,可以直接在Mysql官网进行下载,安装的时候有一步是需要你填写账号和密码,你需要把账号和密码记住。因为连接数据库需要用到这个账号和密码。Mysql安装完成后就需要下载NavicatforMySQL。NavicatforMySQL连接Mysql就需要输入连接名、用户名、密码。如下图4-2所示:图4-2Mysql属性配置本系统开发的工具是IntelliJIDEA,与eclipse相比,它具有强大的集成功能:如支持使用git,maven,spring,同时提示功能快速便捷,提示功能范围广,快捷键和代码模板易于使用,精确搜索。它的安装步骤首先需要到IDEA官网进行下载安装包,官网上有社区版和旗舰版,因为旗舰版需要钱同时目前我们的开发相对来说比较简单只需要社区版就可以实现了。4.2开发技术的综述4.2.1Java简述Java是一种相对易学的程序语言。它与C语言或C++有点大同小异。这让大多数学习Java更加容易上手。特别是Java不使用指针,但它增加了自动的废料,使得我们使用Java时不用担心内存管理。Java在平台独立性方面较为优异,只要系统支持Java,就可以对程序进行编译,从而可以看出,Java具备很强的适用性,应用范围比较广[20]。4.2.2SpringBoot简述SpringBoot是一个功能齐全同时开发简便的框架,同时它相对于其他框架来说配置较为简单。它不用像其他的框架需要配置许多的xml文件,它让开发者可以清晰的去编写代码而不用去管理一大堆的配置文件。SpringBoot技术对第三方包的利用较低利用starter可以简化依赖包配置。对Boot的功能进行分解成一块一块,这样对于制作依赖图更加简单,利用Boot中的starter模块,把更多的依赖配置到系统上[21]。总的来说SpringBoot有以下几个特点:1)约定优于配置。相当于别人给一个模板,照着模板的进行相应的配置就能开始使用。2)自行配置。SpringBoot在启动时会自动探测类路径下的各种类型,实现类型的自动装配,无需开发者再通过XML或是注解进行显式的类型装配了,这一点要拜@EnableAutoConfiguration注解或是更为全面的@SpringBootApplication注解所赐。3)里面包含了各种Servlet容器。SpringBoot内嵌了Tomcat、Jetty与Undertow等Servlet容器。4.2.3MySQL简述MySQL是一种关系数据库管理系统[22]。在目前,运行速度最快的数据库应该非MySQL莫属。同时MySQL还是一种完全免费的产品。它是一个多用户、多线程的sql数据库服务器,它还能快捷、有效、安全的处理大量的数据,MySQL的复杂性很低,但是仍然提供广泛的数据库功能和选项[23]。同oracle等数据库数据库相比较起来,它使用起来更加简单和方便。MySQL数据库的特性是支持多种操作系统,同时为各种编程语言提供了相对应的接口,使得各种语言与它的连接更加的便利,同时它对查询语句进行优化,使得开发者使用它查询数据时在时间有很大的改善。4.2.4MyBatis简述MyBatis是一款优秀的持久层框架,在过去,开发者用jdbc做数据库连接时,有数据需要查询就调用,不需要马上释放,这样频繁的对数据库进行的创建和释放会造成资源的无故浪费,而MyBatis是直接把数据库连接统一起来管理。减少了这种情况造成的资源浪费。同时MyBatis作为持久层框架,完成了应用程序和JDBC接口之间的映射关系,消除了JDBC代码和参数的手工设置[24]。如果将SQL语句修改需要重新编译Java代码,这不利于系统维护。,MyBatis可以执行更详细的SQL优化,进而减少查询字段[25]。但是MyBatis允许程序员专注于SQL。通过MyBatis提供的映射方法,他们可以灵活地编写满足其需求的SQL语句。简而言之,MyBatis可以将程序员通过Preparedstatement输入的参数进行自动进行映射输入,并灵活地将查询结果集映射到Java对象。4.2.5Maven简述Maven的主要功能是合理叙说项目间的依赖关系,也就是通过pom.xml文件来配置获取jar包,而不用手动去添加jar包,解决了导入java类依赖的jar编译java项目报错的问题,同时多人协同开发的场景,只需要拿着这个pom.xml配置文件就可以完成各种jar包的自动导入,避免了由于人工导入容易导致的开发过程中合作成员引用的jar版本可能不同,还有可能重复引用相同jar的不同版本的问题。Maven简单来说就是一个基于项目实例模型合理分配和管理项目间各种依赖关系的项目管理工具[26]。4.3数据表结构的设计每个表的表结构设计如图4-3至4-10所示:(1)用户表用于保存用户信息,表的属性如下表4-3所示:字段含义代码数据类型长度强制主要的外来键用户Idus_IDLongint50TRUETRUEFALSE用户名字us_Namevarchar50FALSEFALSEFALSE用户头像us_imagevarchar50FALSEFALSEFALSE创建时间Us_Datedatetime50FALSEFALSEFALSE信用积分Us_integralvarchar50FALSEFALSEFALSEOpenIdusOpenIdvarchar50FALSEFALSEFALSE表4-3用户信息表conner_user表结构物品信息表用于存储物品的信息,表的属性如下表4-4所示:表4-4物品信息表conner_goods表结构名称代码数据类型长度强制主要的外来键物品Idgo_IDLongint50TRUETRUEFALSE物品名称go_Namevarchar50FALSEFALSEFALSE物品信息go_Messagevarchar150FALSEFALSEFALSE物品创建时间go_CreateDatevarchar50FALSEFALSEFALSE物品租借时间Go_RentDatevarchar50FALSEFALSEFALSE物品归还时间go_BackDatevarchar50FALSEFALSEFALSE物品租借次数go_numbervarchar50FALSEFALSEFALSE物品租借地址go_RentAddressvarchar50FALSEFALSEFALSE归还地址Go_BackAddressvarchar50FALSEFALSEFALSE租借价钱Go_pricevarchar50FALSEFALSEFALSE物品的原价goAllPriceInt50FALSEFALSEFALSE按钮样式goButtonColorvarchar50FALSEFALSEFALSE评价次数goGoodTalkNumbervarchar50FALSEFALSEFALSE用户idusidvarchar50FALSEFALSETRUE评价idadidvarchar50FALSEFALSETRUE物品状态goGoodStatusvarchar50FALSEFALSEFALSE仓库信息表用于存储仓库的信息,表的属性如下表4-5所示:表4-5仓库的信息表conner_address表结构名称代码数据类型长度强制主要的外来键主键adIdvarchar50TRUETRUEFALSE仓库的名字adNamevarchar150FALSEFALSEFALSE仓库的别名anAnotherNamedatetime50FALSEFALSEFALSE仓库开放时间adStratDatevarchar50FALSEFALSEFALSE仓库位置的经度adLongvarchar50FALSEFALSEFALSE仓库位置的纬度adLatVarchar50FALSEFALSEFALSE评价信息表用于存储物品的信息,表的属性如下表4-6所示:表4-6用户对物品评价表conner_access表结构名称代码数据类型长度强制主要的外来键主键asIDvarchar50TRUETRUEFALSE用户对物品的评价内容as_Messagevarchar150FALSEFALSEFALSE用户对物品评价的时间as_Datedatetime50FALSEFALSEFALSE用户对物品评价的次数asNumbervarchar50FALSEFALSEFALSE对物品评价的人asPeoplevarchar50FALSEFALSEFALSE物品idgoidvarchar50FALSEFALSETRUE对物品评价的用户idUsidvarchar50FALSEFALSETRUE对那一次租借物品进行评价的idOridvarchar50FALSEFALSETRUE充值信息表用于存储用户充值的信息,表的属性如下表4-7所示:表4-7用户消费记录表conner_money表结构名称代码数据类型长度强制主要的外来键主键moIDvarchar50TRUETRUEFALSE消费的内容moContentvarchar150FALSEFALSEFALSE消费的时间moDatedatetime50FALSEFALSEFALSE消费的金额moPricevarchar50FALSEFALSEFALSE消费的类型moTypeVarchar50FALSEFALSEFALSE用户idusidVarchar50FALSEFALSETRUE评单信息表用于存储订单的信息,表的属性如下表4-8所示:表4-8订单表conner_order表结构名称代码数据类型长度强制主要的外来键主键OrIdvarchar50TRUETRUEFALSE订单的名字orNamevarchar150FALSEFALSEFALSE物品租借时间orRentDateVarchar50FALSEFALSEFALSE物品归还时间OrBackDatedatetime50FALSEFALSEFALSE消费的金额moPricevarchar50FALSEFALSEFALSE租借的人OrMasterVarchar50FALSEFALSEFALSE物品图片的地址OrImageVarchar50FALSEFALSEFALSE物品租借的状态OrStuatsVarchar50FALSEFALSEFALSE用户的租借金额OrPriceVarchar50FALSEFALSEFALSE用户评价的状态talkStuatsVarchar50FALSEFALSEFALSE物品图片表用于存储物品图片的信息,表的属性如下表4-9所示:表4-9物品图片表conner_photo表结构名称代码数据类型长度强制主要的外来键主键poIDvarchar50TRUETRUEFALSE图片地址poNamevarchar150FALSEFALSEFALSE物品idgoidvarchar50FALSEFALSETRUE用户评价上传的图片信息表用于存储上传图片的信息,表的属性如下表5-0所示:表4-10用户评价上传的图片表conner_talkphoto表结构名称代码数据类型长度强制主要的外来键主键taIDvarchar50TRUETRUEFALSE图片上传地址tasrcvarchar150FALSEFALSEFALSE评价的idAsidvarchar50FALSEFALSETRUE4.4系统功能的实现4.4.1“登录”功能的实现登录流程图,如图4-11所示,用户若执行登录操作,则服务器会弹出弹窗询问用户是否允许授权,若用户选择取消,用户有些功能就用不了,比如用户不能对物品进行租借或者归还,还有用户需要看自己的订单也是不行的,只能进到仓库里看到仓库有些什么物品。若用户选择确定,则服务器会拿你的微信小程序oppenid去数据库进行匹配,如果数据库存在你的oppenid,则直接就登录成功,并把用户的信息从后台传回前台。这样用户可以相应的执行一些操作。若数据库没有这个appid,则服务器会把你的appid还有你的个人信息进行注册写入数据库中然后在登录成功。图4-11登录流程图当用户进入到个人中心去看自己订单页面时或者用户在首页进行物品租借或者在归还物品时用户没有进行登录授权,则这些功能模块暂时就不能够使用。如图4-12所示:图4-12登录授权图当后台收到前台传来用户的APPID与appSecret时,系统调取微信小程序的接口去获取用户的唯一标识oppenid。代码如下表4-13所示:表4-13登录授权代码片段@RequestMapping("login")@ResponseBodypublicResultData<Object>UserLogi(HttpServletRequesthttpRequest)throwsIOException{Stringurl="/sns/jscode2session";//请求的地址StringappId=APPID;//开发者对应的AppIDStringappSecret=SECET;//开发者对应的AppSecretStringgrant_type="authorization_code";Stringcode=httpRequest.getParameter("code");StringencryptedData=httpRequest.getParameter("encryptedData");Stringiv=httpRequest.getParameter("iv");Map<String,String>map=newHashMap<String,String>();map.put("appid",appId);map.put("secret",appSecret);map.put("js_code",code);map.put("grant_type",grant_type);StringwxReturnValue=LoginUntil.sendPost(url,map);当系统拿到用户的oppenid时会把oppenid去数据库进行匹对,看看该用户是否存在,如果存在就直接把用户的信息传到小程序,不存在就进行用户的oppenid以及用户信息添加到数据库进行注册,在返回用户信息。代码如下表4-14所示:表4-14匹配oppenid代码片段List<ConnerUser>list=connerUserService.findUserIfExit(openid);

if(list!=null&&list.size()>0){

returnResultData.success(list);

}else{

user.setUsDate(dateFormat.format(date));

user.setUsImage(avatarUrl);

user.setUsIntegral(100);

user.setUsOpenId(openid);

user.setUsName(nickName);

user.setUsMoney(0);

connerUserService.insertUser(user);

returnResultData.success(user);

}4.4.2“首页”功能的实现用户进入首页,小程序会弹出弹窗是否可以获取你的位置信息,当你点击确定时,你可以在你周围看到一些仓库,红色的标点是你当前的位置,蓝色的标点为仓库所在位置,红色的头像为个人中心、扫描开锁是输入编码租借物品。界面如下图4-15所示:图4-15首页当用户点击仓库的标识时,会弹出仓库的名字、开放的时间以及导航和详情,用户点击详情可以进入到仓库看到里面有哪一些物品,可以在搜索栏里搜索你所知道物品。点击物品可以看到物品的详细信息。如下图4-16所示:图4-16仓库里物品的详情页当用户进入系统时,系统会提示是否能获取你的位置信息,用户点击确定时,系统会调用微信小程序的接口获取用户的相关位置,同时会去后台数据库获取附件的仓库。在把这些数据遍历到marker数组里。代码如下表4-17所示:表4-17获取地理位置代码片段that.mapCtx=wx.createMapContext('map');wx.getLocation({type:"gcj02",success:function(res){varlog=res.longitude;varlat=res.latitude;wx.request({url:'http://localhost:8888/test/selectAdress',success:function(res){varbikeArr=res.data.pageInfoconsole.log(bikeArr)varmark=[]for(vari=0;i<bikeArr.length;i++){varbikeLat=Number(bikeArr[i].adLat)varbikeLong=Number(bikeArr[i].adLong)}}4.4.3“租借”功能的实现用户进入仓库时可以看到物品的编码,然后通过上面的编码可以输入编码就可以看到物品的详细情况,当别人在上面乱输入时,不存在的物品它会提示没有此物品。在这里你可以看到物品所有信息,点击立即租借,你可以看到你租借这件物品的名字,选择你的租借时间、归还日期,当你选择完后系统会显示你租借的天数,押金要多少钱,租金要多少钱。如图4-18所示:图4-18物品租借详情用户进行租借时系统会进行判断,当用户还未登录,则系统会提示用户请先执行登录操作,登录完成后,系统又会进行一次判断用户的余额是否足够抵租借该物品的押金,如果金额不够,则会提示用户请先前往充值。逻辑流程如图4-19所示:图4-19物品租借流程图用户进行租借时,系统会判断用户是否已经登录,wx.getStorageSync("openId")!=null这个时判断数据库是否存在该用户的oppenid。如果用户没有登录则系统会提示请先登录,然后跳转到登录页面进行登录。如果这件物品已租借,系统会提示物品已经租借。代码如下表4-20所示:表4-20租借代码片断ifLogin(){varthat=thisif(wx.getStorageSync("openId")!=null&&wx.getStorageSync("openId")!=""){if("已租借"==that.data.swiperlist.goGoodStatus){wx.showToast({title:'物品已租借',icon:'none',duration:2000})}else{that.showBuyModal();}}else{wx.navigateTo({url:'/pages/login/index?id=3',})},4.4.4“归还”功能的实现用户进入个人中心时可以看到归还物品,点击归还物品,选择你当前归还的地点,物品的编码,当你进行归还时,如果物品不存在,系统会提示你不存在该商品,如果物品没有租借,系统会提醒你该物品不曾租借,当物品租借了但是还没有到达归还时间,系统会提示你物品还没达到归还时间是否归还,点击是时会跳出物品的编码、商品的名字、商品租借的时间、商品的归还时间、商品的归还地点,点击确定就可以归还了。归还信息如图4-21所示:图4-21物品归还详情当用户进行物品归还会先判断用户是否登录成功,如果用户还没有登录,系统会跳转到登录页面要求用户进行登录。登录完成后接着就会判断是否物品是否存在,有的物品可能在其他的仓库,如果用户输入的是其他仓库的物品则会提示该商品不存在此仓库里。最后在判断用户的余额是否能抵物品的租金。如果不能抵押物品的租金将会跳转到充值页面进行充值。用户充值完成后系统会默认跳转回用户的归还的界面进行归还。具体流程见下图4-22所示:图4-22归还物品流程当用户输入物品编码时,如果输入的结果小于6位或者不输,则会提示用户输入请输入6位物品编码。代码如下表4-23所示:表4-23租借物品逻辑验证代码片段console.log(e.detail.value.password.length);if(e.detail.value.password.length<6){wx.showToast({title:'请输入6位物品编码',icon:'none',duration:2000})}当数据库存在这件物品,后台会返回一个200的状态码,如果这件物品的信息中goGoodStatus显示已租借,则系统获取一个当前的时间与物品的租借时间进行比对,如果day大于0的话会提示用户您租借还没到期是否归还。点击确定就会归还了。如下表4-24所示:表4-24判断租借日期片段wx.request({url:'http://localhost:8888/test/findGoodifrent',data:{goId:e.detail.value.password},success:function(res){if(res.data.code==200){if(res.data.pageInfo.goGoodStatus=="已租借"){vardate1=util.formatDate(newDate())varend=res.data.pageInfo.goBackDatevarstart=res.data.pageInfo.goRentDatevarendate=newDate(end.replace(/-/g,"/"))varrentDate=newDate(start.replace(/-/g,"/"))varstartdate=newDate(date1.replace(/-/g,"/"))vardays=endate-startdatevarday=parseInt(days/(1000*60*60*24))if(day>0){wx.showModal({title:'提示',content:'您租借还没到期是否归还?',success:function(sm){if(sm.confirm){varrendays=startdate-rentDatevarrenday=parseInt(days/(1000*60*60*24))varrentprice=0if(renday>0){rentprice=renday*res.data.pageInfo.goRentPrice}else{rentprice=res.data.pageInfo.goRentPrice}}4.4.5“评价”功能的实现当用户归还完物品,在我的订单里可以看到订单有三种状态,只有当物品的那里显示可评价用户才能点击物品进行评价,评价你可以发表你想说的话还有可以贴上你想贴的图片。点击提交评价就可以了。评价如图4-25所示:图4-25用户发布评价当用户进入物品详情页时,可以看到是那一个用户对这件物品进行了评价,同时还能看到评价的时间。在这里还能选择是有图的点评还是无图的。如图4-26所示:图4-26用户的评价4.4.6“发布”功能的实现当用户点击发布物品,你需要填写物品的名字、选择物品的类别、物品的原价、物品租借的价格、物品放在放在那个仓库、添加物品的图片、物品的信息,填完以后点击添加物品即可。发布物品如图4-27所示:图4-27发布物品用户发布物品时需要上传图片,每次上传完,去页面显示经常会空白,在系统添加一个虚拟地址的类就不会了,在这里增加适配器配置类,在该配置类中定义虚拟路径和真实的物理路径的映射关系。如下表4-28所示:表4-28发布物品代码片段@ConfigurationpublicclassMyMvcConfigimplementsWebMvcConfigurer{@Value("${uploadFiles.location}")privateStringpath;@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler("/img/**").addResourceLocations("file:"+path+"/");}}

测试5.1测试用例执行情况下表将为系统的测试功能用例表,如下所示:表5-1测试功能用例表需求功能名称测试用例名称执行说明执行情况是否通过用户注册登录注册与登录的测试测试用户是否能够正常的进行注册与登录;良好是仓库显示仓库显示测试测试用户进入该小程序地图显示是否正常,地图上的仓库的显示是否正常,是否会有偏差。良好是搜索物品物品搜索测试测试用户输入物品的名字是否能够搜索出物品的详情。良好是租借物品测试物品租借测试用户对物品进行租借时输入物品的编码,是否不存在的物品也回显示,没有登录时是否能够租借,用户金额不足时是否能够租借良好是物品归还测试物品归还测试用户进行物品归还时输入仓库不存在的物品能进行归还,物品没有租借是否能够进行归还,用户金额不足与抵物品的佣金时是否能够租借良好是物品发布物品发布测试测试用户是否能够正常发布物品,物品发布完成后小程序界面显示是否正常。良好是物品评价物品评价测试测试用户是否能够评价物品,评价完成后是否还能进行评价。良好是订单管理订单管理测试测试租借过的物品订单是否都有显示,物品的租借状态的显示是否有误。良好是5.2业务逻辑测试效果业务逻辑的测试是对一个系统的流程是否符合逻辑的测试,一个系统可以运行需要满足一个条件就是你的业务是否满足逻辑。如果一个系统的流程中出现一块逻辑出错,那将会导致整个系统的崩溃。所以这里举一些本系统的业务逻辑,如当用户输入错误的编码时,系统会直接告诉用户,该仓库没有这件物品。如图5-2所示:图5-2物品不存在图当用户归还物品时,物品需要收取你这段时间所需的

温馨提示

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

最新文档

评论

0/150

提交评论