基于小程序的智慧购菜系统设计与实现_第1页
基于小程序的智慧购菜系统设计与实现_第2页
基于小程序的智慧购菜系统设计与实现_第3页
基于小程序的智慧购菜系统设计与实现_第4页
基于小程序的智慧购菜系统设计与实现_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

Ⅰ基于小程序的智慧购菜系统设计与实现摘要二十一世纪以来我国经济水平得到很大提升,人们生活水平也得到空前发展。以往的消费模式已经不能满足人们正常生活需求。对于上班族来说,在下班之后已经没有更多精力和时间去选购生活所需。对此,针对大部分人们的生活需求设计了一款微信小程序智慧购菜系统,为广大人民群众带来便利,提升日常买卖菜的效率,也能加强对菜品的高效管理等。本次智慧购菜系统设计主要采用Windows系统,后端技术使用Java开发语言以及SpringBoot框架进行开发,将MySQL作为数据库进行数据存储。系统中用户在注册登陆以后,可以看到各种菜品信息和公告信息,可以对菜品进行浏览、查询、下单,在用户订单中,用户可以看到自己所有提交过的订单并进行在线支付或者取消订单,在订单信息中用户可以查看已经支付过的订单信息。管理员可以将用户的订单分配给配送员,配送员在接收到订单后即可进行配送。最后通过测试,系统的全部功能完成实现,具有一定的应用价值。关键词:MySQL数据库;Java语言;Springboot框架[2]。上世纪六十年代国外就开始对于蔬菜管理销售模式的信息化管理,一些国家通过相关平台推出适合本国发展趋势的蔬菜管理系统,从根本上实现了蔬菜的销售。由JohnMAntlel等于2017年度发表的《Towardsanewgenerationofagriculturalsystemdata,modelsandknowledgeproducts:Designandimprovement》的研究成果,提出了一个基于模块化集成组件的农产品供应与营销平台模型,集成了开发与试验平台,并通过数据管理与可视化接口,将农产品数据、农作物模型与知识性商品等多个信息集成在一起,实现了农产品供应与营销的一体化。采用此系统能够为用户提供蔬菜具体信息、配送以及线上支付等功能的使用。在2019年的《E-commercebasedontheMarketplaceineffortstosellagriculturalproductsusingXtremeprogrammingapproach》中,Rahayu等利用Xtreme程序设计的方式,在向消费者发送信息、询问价格和运送信息的过程中,利用Xtreme程序设计的方式,来完成一个向消费者发送信息、询问价格和运送信息的过程。此种模式为农民提供了最为直接的交易平台,在互联网上进行买家与卖家之间的交易。农民能够获取较大利润,同时可不也能够用最低价格买到最优产品,该系统为农民以及消费者之间架起了交易桥梁。从国内和国外的研究可以看出在互联网上对蔬菜进行销售不仅很方便而且会节省很大一部分人力,具有很大发展前景。1.3论文组织架构 文章结构总体布局分为以下几个方面:第一章:绪论。针对智慧购菜系统的目的、意义以及国内外的研究状况进行详细分析。第二章:针对程序开发环境以及相关技术平台进行分析。第三章:系统分析。针对互联网可行性进行具体分析。第四章:系统设计。针对网站中模块进行详细设计。第五章:系统实现。强化网站各个模块之间的实现。第六章:系统测试。针对网站各个模块之间功能进行测试,并且得到测试结果。

第2章相关理论和技术2.1Java简介作为一种面向对象的程序设计语言,Java不但吸取了C++的各项优势,而且还抛弃了C++中很难理解的多继承、指针等概念,所以Java语言拥有两个特点,一是功能完善,二是操作结构较为简单。Java是一种典型的静态面向对象编程语言设计语言,它将这种方式运用到了极致,使程序设计人员能够用一种完整的思路来设计出一些复杂的程序。职于斯坦福大学(StanfordUniversityNetwork)的詹姆斯.高斯林(JamesGaussling)和麦克.舍林丹(MikeSheiling)等人。在1990年,Java的初始版本被发展出来,起初叫做Oak,其目的是要成为像家电这样的小系统,如电视,电话,闹钟,多士炉及其他家电产品之间的通讯与控制。因为对这种智能家用电器的需求量不如人们预计的那么大,所以Sun公司就放弃了这个项目。1990年互联网出现后,Sun看到了Oak在互联网的巨大潜力,并对其进行了再造,并在1995年五月以Java这个名字官方发行。随着Internet的迅速发展,Java已逐步发展为一种主要的Internet程序设计语言。2.2MySQL数据库介绍MySQL现在是由被称为关系型数据库的Oracle公司所有,也就是微软的SQLServer。MySQL数据库可以在Solaris,Mac,FreeBSD,Windows,Linux等所有的操作系统上都可以使用。处理数据能够作为该系统的核心,为数据储存提供更多的空间。通常情况下,数据库并不是以数据储存为导向的,而是将储存留给像表格/索引这样的对象。MySQL数据库属于一种C/S模式包括客户端和服务端模型,客户端通过账号、密码来连接服务器,连接成功后进行数据库操作,包含增加、删除、修改、查询等。在服务端,通过IO重用和可扩展的链接池来解决传统的高并发性问题。2.3Spring框架一种基于Java平台的开放源码程序架构,它为一个拥有可对反向属性进行控制的容器。虽然Spring框架本身并不局限于程序模型,但是由于其在Java程序中的广泛应用,使得Spring成为了一个很好的辅助,或者说是一个替代品。Spring架构为软件的发展提出了许多方法,例如,充分发挥了“控制反向”这一核心属性,并且采用了“依赖”的方式来进行反向操作;来对容器进行管理,使用面向切面的程序设计来对其进行声名式的事务管理,将各种持久性技术集成到一起,对数据存取进行管理,并提供了许多优良Web框架;便于开发等。Spring架构,其特点是拥有控制倒置(IOC)功能,IOC是为了方便工程维护与测试,利用Java自身反射性来实现对Java对象的全局配置与管理。在Spring架构中,使用了容器方式,在一个物件生存期内,可以藉由浏览一个XML档案或是某个类别上的特别的Java注释,来设定物件;开发人员可以使用依赖查询或插入等方法获得参数。Spring架构以AOP架构为基础,并且在执行阶段可以进行配置。AOP架构强调了模块间的相互关系。Spring中的AOP架构,仅为AOP架构中的基础功能,虽然不能和Aspec架构媲美,但是由于与Aspec的整合,已经能够达到基础要求。在SpringAOP技术的支持下,事务管理和远程访问等都可以在SpringAOP中完成。Spring的交易管理架构将一种抽象方式引入到Java平台上,使得本地交易、全球交易、嵌套交易都可以通过保存点工作,而且它还可以在Java平台上的所有环境下工作。Spring集成主要是通过多种模板所组成,系统能够借助事务模板、XML或Java注解进行完成事件配置,同时使得事务逐渐能够进行消息传递以及缓存。Spring的数据访问结构能够解决数据库在操作过程中所需要的问题,该方法不仅适用于Java,JDBC,IBATS/MyBATIs,Hibernate,JavaDataObject(JDO),ApacheOJB以及ApacheCayne等主流的数据存取框架,而且还能结合Spring的交易管理,实现了对数据存取灵活的抽象。SpringFramework起初并无建立自己的Web框架的意图,但由于其开发者觉得已有的StrutsWeb框架在呈现层与请求处理层、请求处理层与模型的分割上还不够充分,所以才创立了SpringMVC。

第3章系统分析3.1可行性分析3.1.1技术可行性通常技术方面的可行性所指代的是本次开发的系统采用什么样的技术、以什么样的平台作为研究依据,整个系统发展采用什么框架结构,采取什么样的设计模式,本文在基础介绍部分进行详细的说明,在本次开发中所用到的语言程序为Java,在开发过程中主要是采用的框架为SpringBoot,整个开发借助的MVC的设计方式,采取弹性管理代码,当前开发环境下使用最多的已汇总就是Idea,与之相关的大多数开发工具都是免费的。3.1.2经济可行性经济可行性大多数表示在发展过程中基本上需要满足以往发展预算,详细记录整个过程中所需各项费用,同时满足发展条件。系统在后期建成之后,小程序的智慧购菜系统在未来发展中有着较高前景,经济价值得以提升,整个过程都在我们预先掌握之中。本次设计在经济方面具有较大可行性。3.1.3操作可行性软件设计成之后,为了让用户更方便操作,软件功能大多数采取图形的方式来实现,确保输入信息的完整性。整个系统设计必须方便、快捷,系统高效,针对不同用户进行授权管理,对这些因素的考虑,确保软件的操作可行性。3.1.4法律可行性通过法律角度进行进一步分析,整个开发系统主要能够将其分为以下几个方面:1、开发过程中所设计的技术材料都是相对合法的;2、整个开发设计并不存在相关的知识产权问题;3、开发过程中并没有对相关网站软件进行抄袭,不存在版权的侵犯问题;4、整个开发过程都是通过自己的研究所得,并不需要在后期承担相应的法律责任。3.2需求分析对系统功能要求的分析可以提供有关在实施软件功能要求时需要什么和不需要什么的更多信息。采取最佳分析方式能够防止问题的出现,从而提升系统的使用效率,在开发中节约相关费用,提升软件整体服务质量。

3.2.1功能需求分析基于小程序的智慧购菜系统的主要目的是实现便捷购菜,代替传统的人工卖菜方式,能够对居民日常买菜卖菜、结算方面进行严格把控,操作人员需要具备一定的计算机能力,以提高菜场买菜卖菜的管理效率。1.管理员用例图包含用户管理、配送员管理、蔬菜分类管理、蔬菜信息管理、用户下单管理、订单分配管理、订单信息管理、系统管理,管理员用例图如图3.1所示。图3.1管理员用例图2.用户用例图包含,查看蔬菜、用户下单、在线支付、查看订单、查看公告、在线咨询、我的收藏,用户用例图如图3.2所示。图3.2用户用例图3.配送员用例图包含接收订单、配送订单、查看订单,配送员用例图如图3.3所示。图3.3配送员用例图3.2.2非功能需求分析本文所开发的智慧购菜系统是以小程序为基础,由于它储存着许多与使用者有关的基础资料,因此,在该系统的设计和研发时,特别设置了一个使用者管理模块,以确保该系统资料的安全性;在以小程序为基础的智慧购菜系统中,对全部用户进行了统一管理,该系统将按照用户身份来进行相应授权,并保证他们能够在授权范围之内进行活动,并且能够获得授权范围之内的数据。在此基础上,提出了一种新的应用程序设计方案,以实现对应用程序和应用程序的全面保护。

第4章系统设计4.1功能模块设计根据对系统的功能进行分析基于小程序的智慧购菜系统主要有以下几个模块:用户管理、配送员管理、蔬菜分类管理、蔬菜信息管理、订单管理、订单分配管理、订单信息管理、公告信息管理等模块。系统功能模块图如下所示:图4.1系统功能模块图4.2数据库设计4.2.1数据库概念设计1.公告实体图图4.2公告实体图2.配送员实体图图4.3配送员实体图3.用户实体图图4.4用户实体图4.蔬菜信息实体图图4.5蔬菜信息实体图4.2.2数据库逻辑设计(1)公告信息表针对公告信息的设置主要是进行对相关信息的储存,主要是能够包括id,addtime等字段,主键为id,如表4.1所示。表4.1公告信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPtitlevarchar200标题introductionlongtext4294967295简介picturelongtext4294967295图片contentlongtext4294967295内容(2)蔬菜信息评论表针对蔬菜信息评论表的设计主要是能够储存相关用户对于蔬菜的评论,其中主要包含评价内容以及相关用户信息等,如表4.2所示。表4.2蔬菜信息评论表字段名称类型长度字段说明主键默认值idbigint主键主键啊续表4.2蔬菜信息评论表字段名称类型长度字段说明主键默认值addtimetimestamp创建时间CURRENT_TIMESTAMPrefidbigint关联表iduseridbigint用户idavatarurllongtext4294967295头像nicknamevarchar200用户名contentlongtext4294967295评论内容(3)订单信息表订单信息表主要是能够展示订单信息,其中主要包含下单事件、编号、蔬菜的相关价格以及名称等,如表4.3所示。表4.3订单信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPtupianlongtext4294967295图片jiagevarchar200价格shuliangvarchar200数量zongjiavarchar200总价dingdanzhuangtaivarchar200订单状态qianshoushijiandatetime签收时间beizhuvarchar200备注zhanghaovarchar200账号续表4.3订单信息表字段名称类型长度字段说明主键默认值xingmingvarchar200姓名shoujivarchar200手机dizhivarchar200地址peisongzhanghaovarchar200配送账号peisongxingmingvarchar200配送姓名crossuseridbigint跨表用户idcrossrefidbigint跨表主键idsfshvarchar200是否审核待审核shhflongtext4294967295审核回复useridbigint用户id(4)用户表用户表主要是对用户信息的储存,其中包含用户手机号、姓名、性别以及其他信息等,如表4.4所示。表4.4用户表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPzhanghaovarchar200账号mimavarchar200密码xingmingvarchar200姓名nianlingint年龄xingbievarchar200性别续表4.4用户表字段名称类型长度字段说明主键默认值shoujivarchar200手机touxianglongtext4294967295头像(5)订单分配表订单分配表,用来储存订单分配的信息,包含配送员账号,姓名,联系电话的信息,如表4.5所示。表4.5订单分配表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPdingdanbianhaovarchar200订单编号shucaimingchengvarchar200蔬菜名称tupianlongtext4294967295图片jiagefloat价格zongjiafloat总价dizhivarchar200地址fenpeishijiandatetime分配时间beizhuvarchar200备注zhanghaovarchar200账号xingmingvarchar200姓名shuliangint数量peisongzhanghaovarchar200配送账号peisongxingmingvarchar200配送姓名续表4.5订单分配表字段名称类型长度字段说明主键默认值lianxidianhuavarchar200联系电话crossuseridbigint跨表用户idcrossrefidbigint跨表主键id(6)蔬菜信息表蔬菜信息表主要是蔬菜名称、蔬菜的原产地以及蔬菜价格等相关信息,如表4.6所示。表4.6蔬菜信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPshucaimingchengvarchar200蔬菜名称shucaifenleivarchar200蔬菜分类chandivarchar200产地jiagefloat价格shuliangint数量tupianlongtext4294967295图片caizhairiqidate采摘日期shucaijieshaolongtext4294967295蔬菜介绍clicktimedatetime最近点击时间clicknumint点击次数0(7)蔬菜分类表一种用于存储蔬菜类别信息的蔬菜类别表格,包括蔬菜类别的建立日期、蔬菜类别等;如表4.7所示。表4.7蔬菜分类表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPshucaifenleivarchar200蔬菜分类(8)配送员表该表主要包含配送人员名称,人员手机号、姓名以及相关联系方式等,如表4.8所示。表4.8配送员表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPpeisongzhanghaovarchar200配送账号mimavarchar200密码peisongxingmingvarchar200配送姓名nianlingint年龄xingbievarchar200性别lianxidianhuavarchar200联系电话touxianglongtext4294967295头像第5章系统实现5.1实现环境使用Java开发框架:springbootJDK版本:JDK1.8服务器:TOMCAT7资料库:mysql5.7(在本次设计中必须使用5.7的版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMavenPackage:Maven3.3.9谷歌浏览器:google5.2登录注册用户第一次使用需要注册账号。当使用者注册时,必须先填写好相关信息,再点“注册”键如图5.1所示。当使用者登陆小程序时,使用者只需填入使用者账号和密码,即可进入应用程序首页。登录如图5.2所示。图5.1用户注册图5.2用户登录实现该功能的关键代码如下:@IgnoreAuth@PostMapping(value="/login")publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){UsersEntityuser=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",username));if(user==null||!user.getPassword().equals(password)){returnR.error("账号或密码不正确");}Stringtoken=tokenService.generateToken(user.getId(),username,"users",user.getRole());returnR.ok().put("token",token);}@IgnoreAuth@PostMapping(value="/register")publicRregister(@RequestBodyUsersEntityuser){if(userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",user.getUsername()))!=null){returnR.error("用户已存在");}userService.insert(user);returnR.ok();}5.3蔬菜推荐用户登录成功以后来到小程序的首页,系统会根据用户对菜品的点击次数进行智能排序推荐给用户各种蔬菜包括蔬菜的名称、类别、图片、产地。如图5.3。选择一个菜品后点击即可看到菜品的详细信息,如图5.4所示。图5.3蔬菜推荐图5.4蔬菜详情实现该功能的关键代码如下:@IgnoreAuth

@RequestMapping("/autoSort")publicRautoSort(@RequestParamMap<String,Object>params,ShucaixinxiEntityshucaixinxi,HttpServletRequestrequest,Stringpre){

EntityWrapper<ShucaixinxiEntity>ew=newEntityWrapper<ShucaixinxiEntity>();

Map<String,Object>newMap=newHashMap<String,Object>();

Map<String,Object>param=newHashMap<String,Object>();

Iterator<Map.Entry<String,Object>>it=param.entrySet().iterator();

while(it.hasNext()){

Map.Entry<String,Object>entry=it.next();

Stringkey=entry.getKey();

StringnewKey=entry.getKey();

if(pre.endsWith(".")){

newMap.put(pre+newKey,entry.getValue());

}elseif(StringUtils.isEmpty(pre)){

newMap.put(newKey,entry.getValue());

}else{

newMap.put(pre+"."+newKey,entry.getValue());

}

}

params.put("sort","clicknum");

params.put("order","desc");

PageUtilspage=shucaixinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,shucaixinxi),params),params));

returnR.ok().put("data",page);

}5.4蔬菜查询用户通过小程序的蔬菜信息页面可以看到各种蔬菜,可以通过搜索框对蔬菜的名称或者产地及类别找到自己想要的蔬菜。根据蔬菜名称查询如图5.5,根据蔬菜产地查询如图5.6,根据蔬菜类别查询如图5.7所示。图5.5蔬菜名称查询图5.6蔬菜产地查询图5.7蔬菜类别查询实现该功能的关键代码如下:@RequestMapping("/lists")

publicRlist(ShucaixinxiEntityshucaixinxi){

EntityWrapper<ShucaixinxiEntity>ew=newEntityWrapper<ShucaixinxiEntity>();

ew.allEq(MPUtil.allEQMapPre(shucaixinxi,"shucaixinxi"));

returnR.ok().put("data",shucaixinxiService.selectListView(ew));

}@RequestMapping("/query")

publicRquery(ShucaixinxiEntityshucaixinxi){

EntityWrapper<ShucaixinxiEntity>ew=newEntityWrapper<ShucaixinxiEntity>();

ew.allEq(MPUtil.allEQMapPre(shucaixinxi,"shucaixinxi"));

ShucaixinxiViewshucaixinxiView=shucaixinxiService.selectView(ew);

returnR.ok("查询蔬菜信息成功").put("data",shucaixinxiView);5.5在线下单用户选择好蔬菜后来到菜品的详情页面可以看到菜品的图片,同时可以看到其他用户的对该商品的评价,在填写好菜品数量和收货地址以及联系方式后点击下方的在线下单并提交即可下单成功。如图5.8。用户下单成功后,进到订单可以查看到自己的订单详情,如图5.9所示。图5.8在线下单图5.9订单详情用户成功提交订单后通过用户订单页面可以查看订单,确认信息无误后可以通过在线支付按钮对订单进行支付,如图5.10,点击支付按钮后选择支付工具即可完成支付,如图5.11所示。图5.10在线支付图5.11支付选项实现该功能的关键代码如下:@IgnoreAuth

@RequestMapping("/detail/{id}")

publicRdetail(@PathVariable("id")Longid){

YonghuxiadanEntityyonghuxiadan=yonghuxiadanService.selectById(id);

returnR.ok().put("data",yonghuxiadan);

}@IgnoreAuth

@RequestMapping("/add")

publicRadd(@RequestBodyYonghuxiadanEntityyonghuxiadan,HttpServletRequestrequest){

yonghuxiadan.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());

yonghuxiadanService.insert(yonghuxiadan);

returnR.ok();

}@IgnoreAuth

@RequestMapping("/list")

publicRlist(@RequestParamMap<String,Object>params,YonghuxiadanEntityyonghuxiadan,

HttpServletRequestrequest){

EntityWrapper<YonghuxiadanEntity>ew=newEntityWrapper<YonghuxiadanEntity>();

PageUtilspage=yonghuxiadanService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,yonghuxiadan),params),params));

returnR.ok().put("data",page);}@RequestMapping("/update")

@Transactional

publicRupdate(@RequestBodyYonghuxiadanEntityyonghuxiadan,HttpServletRequestrequest){

yonghuxiadanService.updateById(yonghuxiadan);

returnR.ok();

}5.6蔬菜分类管理系统输入相关密码之后需要通过管理员的身份进行登陆,同时针对蔬菜的分类进行选择,最终进入蔬菜的分类管理界面,能够对蔬菜相关信息进行修改,删除以及搜索等。如图5.12。图5.12蔬菜分类管理管理员在蔬菜管理页面通过点击新增按钮即可添加新的蔬菜种类,如图5.13所示。图5.13蔬菜分类新增实现该功能的关键代码如下所示:@RequestMapping("/lists")publicRlist(ShucaifenleiEntityshucaifenlei){EntityWrapper<ShucaifenleiEntity>ew=newEntityWrapper<ShucaifenleiEntity>();ew.allEq(MPUtil.allEQMapPre(shucaifenlei,"shucaifenlei"));returnR.ok().put("data",shucaifenleiService.selectListView(ew));}@RequestMapping("/add")

publicRadd(@RequestBodyShucaifenleiEntityshucaifenlei,HttpServletRequestrequest){

shucaifenlei.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());

shucaifenleiService.insert(shucaifenlei);

returnR.ok();

}5.7蔬菜信息管理在键入了自己的密码之后,以管理员的身份登陆到了后台系统中,在蔬菜信息管理下,在蔬菜信息管理下,你就可以在蔬菜信息中添加蔬菜信息、修改蔬菜信息、删除蔬菜信息。查看详细的蔬菜信息,同时针对蔬菜信息的评价进行详细了解等。如图5.14。图5.14蔬菜信息管理在蔬菜信息管理页面通过点击修改按钮即可对蔬菜信息进行修改,如图5.15所示。图5.15蔬菜信息修改实现该功能的关键代码如下所示:@RequestMapping("/lists")publicRlist(ShucaixinxiEntityshucaixinxi){EntityWrapper<ShucaixinxiEntity>ew=newEntityWrapper<ShucaixinxiEntity>();ew.allEq(MPUtil.allEQMapPre(shucaixinxi,"shucaixinxi"));returnR.ok().put("data",shucaixinxiService.selectListView(ew));}@RequestMapping("/query")publicRquery(ShucaixinxiEntityshucaixinxi){EntityWrapper<ShucaixinxiEntity>ew=newEntityWrapper<ShucaixinxiEntity>();ew.allEq(MPUtil.allEQMapPre(shucaixinxi,"shucaixinxi"));ShucaixinxiViewshucaixinxiView=shucaixinxiService.selectView(ew);returnR.ok().put("data",shucaixinxiView);}

}@RequestMapping("/update")

@Transactional

publicRupdate(@RequestBodyShucaixinxiEntityshucaixinxi,HttpServletRequestrequest){

shucaixinxiService.updateById(shucaixinxi);returnR.ok();5.8订单管理订单管理,以管理员的身份进入订单管理后,可以对各个用户的订单进行查询、删除等相关操作,在搜索框进行搜索蔬菜名称能够快速定位,如图5.16。图5.16订单管理实现该功能的关键代码如下所示:@RequestMapping("/lists")publicRlist(YonghuxiadanEntityyonghuxiadan){ EntityWrapper<YonghuxiadanEntity>ew=newEntityWrapper<YonghuxiadanEntity>(); ew.allEq(MPUtil.allEQMapPre(yonghuxiadan,"yonghuxiadan"));returnR.ok().put("data",yonghuxiadanService.selectListView(ew));}@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,YonghuxiadanEntityyonghuxiadan,HttpServletRequestrequest){StringtableName=request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")){yonghuxiadan.setZhanghao((String)request.getSession().getAttribute("username"));}EntityWrapper<YonghuxiadanEntity>ew=newEntityWrapper<YonghuxiadanEntity>();PageUtilspage=yonghuxiadanService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,yonghuxiadan),params),params));returnR.ok().put("data",page);}5.9订单分配管理管理员不仅可以查看和删除订单也可以将订单分配给指定配送员,图5.17所示。图5.17所有订单管理员通过订单分配按钮即可将用户的订单分配给指定的配送员如图5.18所示。图5.18订单分配配送员通过点击我的里面的订单分配选项即可查看到需要分配的订单如图5.19。配送员在选择订单后来到配送页面通过点击配送按钮即可对订单进行配送如图5.20所示。图5.19待配送订单图5.20订单配送实现该功能的关键代码如下所示:@RequestMapping("/page")

publicRpage(@RequestParamMap<String,Object>params,DingdanfenpeiEntitydingdanfenpei,

HttpServletRequestrequest){

StringtableName=request.getSession().getAttribute("tableName").toString();

if(tableName.equals("yonghu")){

dingdanfenpei.setZhanghao((String)request.getSession().getAttribute("username"));

}

if(tableName.equals("peisongyuan")){

dingdanfenpei.setPeisongzhanghao((String)request.getSession().getAttribute("username"));

}EntityWrapper<DingdanfenpeiEntity>ew=newEntityWrapper<DingdanfenpeiEntity>();

PageUtilspage=dingdanfenpeiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,dingdanfenpei),params),params));

returnR.ok().put("data",page);

}@RequestMapping("/lists")publicRlist(DingdanfenpeiEntitydingdanfenpei){EntityWrapper<DingdanfenpeiEntity>ew=newEntityWrapper<DingdanfenpeiEntity>();ew.allEq(MPUtil.allEQMapPre(dingdanfenpei,"dingdanfenpei"));returnR.ok().put("data",dingdanfenpeiService.selectListView(ew));}@RequestMapping("/delete")

publicRdelete(@RequestBodyLong[]ids){

dingdanfenpeiService.deleteBatchIds(Arrays.asList(ids));

returnR.ok();

}5.10订单信息管理订单信息管理,将订单分配给配送员并且配送员进行配送之后,管理员在订单信息管理中按下订单的信息,就可以对订单进行删除、查找,以及审核状态是否通过以及审核是否有回复,订单状态,订单信息一目了然,点击删除按钮即可删除订单,如图5.21。图5.21订单信息管理实现该功能的关键代码如下所示:@RequestMapping("/query")publicRquery(DingdanxinxiEntitydingdanxinxi){EntityWrapper<DingdanxinxiEntity>ew=newEntityWrapper<DingdanxinxiEntity>();ew.allEq(MPUtil.allEQMapPre(dingdanxinxi,"dingdanxinxi"));DingdanxinxiViewdingdanxinxiView=dingdanxinxiService.selectView(ew);returnR.ok("查询订单信息成功").put("data",dingdanxinxiView);}@RequestMapping("/info/{id}")publicRinfo(@PathVariable("id")Longid){DingdanxinxiEntitydingdanxinxi=dingdanxinxiService.selectById(id);returnR.ok().put("data",dingdanxinxi);}@RequestMapping("/delete")

publicRdelete(@RequestBodyLong[]ids){

dingdanxinxiService.deleteBatchIds(Arrays.asList(ids));

returnR.ok();

}5.11公告信息管理管理员通过公告信息管理可以对系统的所有公告信息进行增加,删除,修改,查询等操作如图5.22。图5.22公告信息管理管理员在公告信息管理页面选择新增按钮即可新增公告信息如图5.23所示。图5.23公告信息新增用户可以通过公告信息功能看到所有的公告信息标题,如图5.24。点击一条公告即可查看公告的详情信息,如图5.25。图5.24公告展示图5.25公告详情实现该功能的关键代码如下所示:@RequestMapping("/query")

publicRquery(NewsEntitynews){

EntityWrapper<NewsEntity>ew=newEntityWrapper<NewsEntity>();

ew.allEq(MPUtil.allEQMapPre(news,"news"));

NewsViewnewsView=newsService.selectView(ew);

returnR.ok("查询公告信息成功").put("data",newsView);

}@RequestMapping("/add")

publicRadd(@RequestBodyNewsEntitynews,HttpServletRequestrequest){

news.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());

//ValidatorUtils.validateEntity(news);

newsService.insert(news);

returnR.ok();

}

@RequestMapping("/update")

@Transactional

publicRupdate(@RequestBodyNewsEntitynews,HttpServletRequestrequest){

newsService.updateById(news);

returnR.ok();

}5.12用户管理通过能够以管理员的身份填写账号,登陆后台系统,在系统页面选择用户,若需要查找则填写用户相关信息进行查找,在用户方面可以看到用户头像,以及修改、详情、删除等具体日常操作模块。如图5.26。图5.26用户管理管理员可以通过用户管理页面的修改按钮即可对用户信息进行修改,如图5.27所示。图5.27修改用户实现该功能的关键代码如下所示:@RequestMapping("/query")

publicRquery(YonghuEntityyonghu){

EntityWrapper<YonghuEntity>ew=newEntityWrapper<YonghuEntity>();

ew.allEq(MPUtil.allEQMapPre(yonghu,"yonghu"));

YonghuViewyonghuView=yonghuService.selectView(ew);

returnR.ok("查询用户成功").put("data",yonghuView);}

@RequestMapping("/add")

publicRadd(@RequestBodyYonghuEntityyonghu,HttpServletRequestrequest){

yonghu.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());

YonghuEntityu=yonghuService.selectOne(newEntityWrapper<YonghuEntity>().eq("zhanghao",yonghu.getZhanghao()));

if(u!=null){

returnR.error("用户已存在");

}

yonghu.setId(newDate().getTime());

yonghuService.insert(yonghu);

returnR.ok();

}@RequestMapping("/update")

@Transactional

publicRupdate(@RequestBodyYonghuEntityyonghu,HttpServletRequestrequest){

yonghuService.updateById(yonghu);returnR.ok();

}@RequestMapping("/delete")

publicRdelete(@RequestBodyLong[]ids){

yonghuService.deleteBatchIds(Arrays.asList(ids));

returnR.ok();

}5.14配送员管理在管理员登陆系统之后需要输入相关账号以及密码,在配送员管理操作页面选择配送人员的信息,即可看到所有配送员的信息,如图5.28。图5.28配送员信息管理员可以在配送员管理页面通过新增功能填入相应的信息即可添加配送人员。如图5.29。图5.29配送员新增实现该功能的关键代码如下所示:@RequestMapping("/add")

publicRadd(@RequestBodyPeisongyuanEntitypeisongyuan,HttpServletRequestrequest){

peisongyuan.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());

PeisongyuanEntityu=peisongyuanService.selectOne(newEntityWrapper<PeisongyuanEntity>().eq("peisongzhanghao",peisongyuan.getPeisongzhanghao()));

if(u!=null){

returnR.error("success");

}

peisongyuan.setId(newDate().getTime());

peisongyuanService.insert(peisongyuan);

returnR.ok();

}@RequestMapping("/update")

@Transactional

publicRupdate(@RequestBodyPeisongyuanEntitypeisongyuan,HttpServletRequestrequest){

peisongyuanService.updateById(peisongyuan);

returnR.ok();

}@RequestMapping("/delete")

publicRdelete(@RequestBodyLong[]ids){

peisongyuanService.deleteBatchIds(Arrays.asList(ids));

returnR.ok();

}

第6章系统测试系统通常能够针对各项模块以及操作页面设计进行完成,从而确保系统后期的稳定。通常在正常使用之前能够增设相关功能以及性能方面的测试等,便于系统在使用之后的修复以及改进等。黑箱测试是一种对整个软件的功能进行测试的方法,在做黑箱测试时,首先要站在使用者的立场上,使用对应的测试案例;通过与期望结果的对比,可以更容易地找到存在的问题。在进行黑箱试验时,采用了偏差和边界值两种方法。一般情况下,在输入和输出值的边界上,系统的误差出现的几率要比内部大得多,所以,在决定了一个好的输入和输出范围之后,就可以选择一个边界值来对系统进行检测,进而对系统的稳定性和可靠性做出一个更深层次的判断。6.1测试步骤如同开发一样,在试点阶段应该逐步实行。从逻辑上来说,每个步骤都是前面一个步骤的继续。一个大规模的软件系统往往包含若干个子系统,而这些子系统又包含若干功能模块。这样,一个大型的软件程序的测试基本上由下列步骤组成:1.针对模块的测试主要是能够从编程的过程中进行找到编码并且进行详细设计;2.在测试过程中发现问题3.对相关错误进行验收6.2测试用例6.2.1登录测试用例在此基础上,基于客户需求,使用了黑箱测试方法,本文仅提供了一份典型的测试用例列表;如表6.1所示。表6.1登录测试用例表测试编号测试目的操作步骤预期结果实际结果001登录测试输入正确的用户名和密码登录成功登录成功002登录测试输入错误的用户名登录失败登录失败003登录测试输入错误的密码登录失败登录失败6.2.2用户信息管理测试用例管理端在运行时要满足浏览器的运行需求,比如添加用户信息测试、修改用户信息测试、删除用户信息测试等。本节根据管理端各模块进行测试,因考虑到本文篇幅有限,这里代表性的部分测试用例,如表6.2所示。表6.2用户信息测试用例表测试编号测试目的操作步骤预期结果实际结果001添加用户信息测试在添加页面输入用户信息,点击确认按钮添加成功添加成功002修改用户信息测试在修改页面修改用户信息,点击确认按钮修改成功修改成功003删除用户信息测试在管理用户页面,点击某一试卷的删除按钮删除成功删除成功004查询用户信息测试在用户信息管理页面查询输入框输入要查询的用户名字,点击查询按钮查询成功查询成功6.2.3蔬菜信息管理测试用例管理端在运行时要满足浏览器的运行需求,比如添加蔬菜信息测试、修改蔬菜信息测试、删除蔬菜信息测试等。本节根据管理端各模块进行测试,因考虑到本文篇幅有限,这里代表性的部分测试用例,如表6.3所示。表6.3蔬菜信息测试用例表测试编号测试目的操作步骤预期结果实际结果001添加蔬菜信息测试在添加页面输入蔬菜信息,点击添加成功添加成功002修改蔬菜信息测试确认按钮在修改页面修改蔬菜信息修改成功修改成功续表6.3蔬菜信息测试用例表测试编号测试目的操作步骤预期结果实际结果003删除蔬菜信息测试在管理蔬菜页面,点击某一蔬菜的删除按钮删除成功删除成功004查询蔬菜信息测试在蔬菜信息管理页面查询输入框输入要查询的蔬菜名字,点击查询按钮查询成功查询成功6.2.4订单管理信息管理测试用例管理端在运行时要满足浏览器的运行需求,比如添加订单管理信息测试、修改订单管理信息测试、删除订单管理信息测试等。本节根据管理端各模块进行测试,因考虑到本文篇幅有限,这里代表性的部分测试用例,如表6.4所示。表6.4订单管理信息测试用例表测试编号测试目的操作步骤预期结果实际结果001添加订单管理信息测试在添加页面输入订单管理信息,点击确认按钮添加成功添加成功002修改订单管理信息测试在修改页面修改订单管理信息,点击确认按钮修改成功修改成功003删除订单管理信息测试在管理订单管理页面,点击删除

温馨提示

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

评论

0/150

提交评论