【在线订餐系统设计与实现10000字(论文)】_第1页
【在线订餐系统设计与实现10000字(论文)】_第2页
【在线订餐系统设计与实现10000字(论文)】_第3页
【在线订餐系统设计与实现10000字(论文)】_第4页
【在线订餐系统设计与实现10000字(论文)】_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

基于微信的在线点餐系统是根据腾讯的微信中小程序功能来实现功能的,自2011年微信诞生以越来越多,尤其最近几年微信小程序因不占内存,用完即走的特点招来更多的用户,根据微信来越多。本课题利用了逐渐成熟的小程序来满足顾客们的需求,优化了传统点餐的流程,使得用户可以通过小程序来下本系统主要使用了微信制作前端,后台利用MySQL数据库来保存人们在线点餐所需的相关数据,实现了餐厅点餐的基本功能。本系统主要包括两个模块,用户可以翻看菜品,进行在线点餐的作人员则对店内菜品进行管理和制作以及对用户的订单进行相关处理;并且可以在终端进行系统版本更科技在发展,时代在进步,人们的生活变得越来生活带来了便利。根据最新统计,微信已成为国内用户活跃微信的开发、传播和获取用户的成本更低更多的产品利于用户体验,2016年9月开始了微信小程序内测。2017年1月份第一批微信小程开始上线运营测试。2018年初的“跳一跳”游戏再次为小程序打开了市场。通过在国内激活用户量超10亿¹的社交软件-微信为基础拉手势即可进入小程序入□界面,通过搜索点餐小程序完毕之后只需点击右上角的关闭按钮即可直接关闭小程序并且不会以多余的形式产生内存垃圾,在现代化的快速发展中,小程序的便捷性可系统。基于安卓的点餐系统十分普遍,例如12018年2月微信全球月活数突破10亿大关家的App²,方便了用户,提高了效率13。但由于安卓³本身的特色加上餐厅的数量之多,基于安卓的点餐系统太过于占用手机内存,影响客户手机的使用效率,并没有从根本上解决点餐效率的问题。(一)系统简介随着智能时代的发展,人们对生活的质量追求越来越高,以前的点餐系统效率比较落后浪费物力人力。微信小程序实现了应用随时可以使用,而且不需要安装和卸载软件,在微信小程序上设计的点餐系统从某种角度上方便用户点餐。针对商户来说,满足简单的基础应用功能,十分适合服务类的线下商店,降低了餐厅的经营成本,减少人工费,吸引越来越多的客户。对于在线点餐系统的用户来讲,小程序的点餐系统做到了“用完就关”的功能,减轻手机运行内存的压力,操作更加方便和简洁,此系统将点餐与网络结合,避免了人工上复杂的点餐和付款排队,让用户可以直观方的进行点餐和直接使用网络支付进行付款,相比传统的餐厅更加变的人性化,也更加注重用户体验。针对微信程序开发者来说,软件的开发门槛相对于其他较低、难度也比App低4]。本系统的设计,不仅提高了开发者的开发效率和能力,也对于云开发的使用,使得开发程序的审核,开发系统的更新变得轻松,代码可以实时备份⁴,同时也给后者提供重要的参考意见5。(二)开发工具IntelliJIDEA是一款Java编程语言开发的集成环境,在业界有着相当一部分的使用者,评价也颇为出色,甚至被认为是业界最好的Java开发工具之一,尤其是在其拥有的一些不同于最初学习时使用的Eclipse编辑工具相比141,在智能时代大环境下,其有的智能代码助手、代码自动提示、重构、J2EE支持和各类版本工具等方面设计的方便程序员使用的功能可以说是相当出色的[15]。该编辑工具所倡导的是智能编码,其主要的想法就是减少程序员的工作,因此在这个方面,开发者的程序员²主要指安装在智能手机上的应用软件³Android是一种基于Linux的自由及开放源代码的操作系统们下了不少功夫在开发智能编码的方面,灵活的编码辅助在很大的程度上减轻了程序员的一部分负担,提高了代码的需求分析用户来说,需要系统可以进行菜单浏览、菜品索需要的菜品。对商家来说,则需要对用户行处理以及对用户查看的菜单轮播图进行处理。因此,(1)用户(2)管理员管理员登录后台系统后,可以根据需要修改餐由此可得餐厅点餐系统的用例图如图1所示:图1系统用例图(1)数据安全性存储有关隐私权的数据,需要确保数据的安全(2)易用性(3)柔软性(4)扩展性管理需求的不断更改,会导致系统业务的不断这次开发设计的在线订餐系统从客户端开始点微信小程序的点餐界面,进行用户的登录确认,如果前往登录或注册界面,登录完成后进入主界面;通过选码来进行点餐;进入菜单界面,在这个界面可以通过选择菜品菜品进入购物车中进行处理,下单完成后等待付款,付款完成后的订单将会传回商家;商家通过后,用户进入用餐环节;用户可以在用餐完成后对订单进行评价操作。商家的管理员登录成功后,接收确认客户端提交的订单,最后给客户送餐等服务。该系统的业务流程图如下图2所示:密码信息是否正确是否信息错误图2系统业务流程图(三)功能模块设计1.系统总体功能结构在线点餐系统主要包括用户功能和管理员功能两个部分,其中客户端主要功能有注册和登录、信息管理等。系统功能结构图如下图3所示:订单管理订单管理员理系统管理管菜品管理序程小餐点评价管理订单管理户用用户信息管理登录管理图3系统总体功能结构图系统中的用户功能中,具体的功能有订单管理功能里面包含了添加桌号、增加备注、添加或删除菜品、查询菜品、会员买单与普通用户买单等功能;用户信息管理功能中包括了查看订单等功能;评价管理功能包括了添加与删除评价和追评等功用户功能结构图如图4所示:添加追评添加追评删除评价添加评价登出账户登录账户注册账户修改个人信息查看个人信息查看历史订单普通用户买单会员优惠买单查询菜品删除菜品添加菜品添加备注修改桌号添加桌号用户信息管理评价管理登录管理订单管理(1)描述登录管理。登录管理流程图,如图5所示。是图5登录管理流程图(2)描述订单管理。订单管理流程图,如图6所示。界面订单是否完结图6订单管理流程图(3)描述用户信息管理。用户信息管理流程图,如图7所示。个人信息修改信息是信息修改否图7用户信息管理流程图(4)描述评价管理。评价管理流程图,如图8所示。开始开始评论界面添加评论是否评论是评论成功结束否3.管理员功能结构主要包括菜品管理和订单管理等模块。在菜品管理模块,管理员可以对菜品图片进行更换,增加新型菜品,删除过期菜品,以及修改菜品的价格、菜品描述等相关信息;在订单管理模块,管理员能查看用户提交的订单以及评价明细。管理员功能结构图如图9所示:查看评价查看评价订单管理查看订单信息修改密码系统管理用户审核修改菜品信息删除菜品菜品管理添加菜品轮播图管理图9管理员功能结构图(1)描述菜品管理模。菜品管理流程图,如图10所示。菜品管理界面是否修改是修改菜品图10菜品管理流程图(2)描述系统管理模。系统管理流程图,如图11所示。开始开始系统管理界面否是否修改是修改信息结束(3)描述订单管理模。订单管理流程图,如图12所示。开始开始订单管理否是否查看是审核通过结束图12订单管理流程图1.数据库E-R图设计从数据库的信息要求方面考虑,指的是用户需求从数据库中获得的信息的内容和性质,即在点餐一开始时候的扫描桌号,之后进入菜品展示界面,通过良好的交互界面,引导用户进行自助点餐,之后将用户的各项数据传递到卖家端,使得用户的需求能被完整地传递给卖家,以便卖家可以在便捷的同时方便用户进行点餐操从数据库的处理要求方面考虑,指的是用户要求完成的数据处理功能,即在选取菜品时,能够进行菜品的添加和删除,并在结算是进行相应的金额累加,各个界面跳转的流畅程序也必须保证稳定和快速,对于各个数据库的连接也是有一定要求的,使得处理完毕的数据能完整地展示给卖家管理系统上。数据库的设计按照的是按照实际使用场景的需求来设计,数据库关系的E-R图如下图13所示:图13系统E-R图处理轮播编号描述.菜品编号数量图片路径姓名表2所示:具体各实体的属性如下:用户:用户编号、姓名、联系方式、桌号、用餐人数。管理员:用户名、密码。订单:订单编号、下单时间、桌号、菜品编号、订单状态、数量、总价、备注、菜品:菜品编号、菜品名、菜品类目、单价、库存、菜品详情、会员价、图片轮播图:轮播编号、图片路径、描述、创建时间。本系统的设计主要是用于小型餐厅点餐,是基于微信小程序开发的。对于普通用户来说,需要系统可以进行菜单浏览、菜品详情查看、下单以及对菜品评价、搜索需要的菜品。对商家来说,则需要对用户进行审核、对菜品进行管理、对订单进行处理以及对用户查看的菜单轮播图进行处理。因此,系统主要是分为使用者和管理员两个操作人员,数据库选择的是MySQL数据库进行数据表的建立和管理,便于数据的存储和管理。本系统主要有五张数据表。用户表(user)、管理员表(admin订单表(order)、菜品表(product)、轮播图表(picture)。(1)用户表user,是用来描述菜品信息的表。用户表主要包括用户编号、姓名、联系方式、桌号和用餐人数等属性。其中用户编号为此用户实体表的主键。用户信息表如表1所示:序号字段名数据类型长度1用户编号Y2姓名N3N4桌号N5N(2)管理员表admin,是用来描述管理员信息的表。管理员表主要包括用户名和密码等属性。其中用户名为此管理员实体表的主键,管理员信息表的具体设计如序号字段名数据类型长度是否为主键1用户名Y2密码N(3)订单表order,是用来描述订单信息的表。订单表主要包括了订单编号、中订单编号为该订单实体表的主键,订单表的具体设计如表3所示:序号字段名数据类型长度1订单编号Y2下单时间N3桌号N4菜品编号N5订单状态N6N7总价N8备注N9N(4)菜品表product,是用来描述菜品详细信息的表。菜品表主要包括菜品编号、菜品名、菜品类目、单价、库存、菜品菜品编号为菜品表实体表的主键。菜品表的具体设计如表4所示:序号字段名数据类型长度1菜品编号Y2菜品名N3菜品类目N4N5N6N7N8图片路径N(5)轮播图表picture,是用来描述用管理员管理的轮播图消息,用于显示在用户页面的轮播图。轮播图表主要包括了轮播图编号、图片路径、描述和创建时间等属性。其中轮播编号为改实体表的主键,轮播图表的具体设计如表5所示:表5轮播图表(picture)序号字段名数据类型长度是否为主键1轮播图编号Y2图片路径N34创建时间N五、系统实施(一)数据库连接通过下载并安装MySQL数据库进行数据库环境的创建,首先确认数据库的环境是否安装,此处需要在数据库安装时配置端□为3306,同时在之后的数据库管理员信息处使用设置的账号和密码,默认配置账号为root,密码为123456。通过在控制台输入mysql-uroot-p123456即可成功进入数据库,并查看数据库的版本信息和认证信息。开发所需的各项数据库数据,并且采用utf-8编号方式。之后输入showdatabases;来查看数据库是否创建成功,若是已经显示存在sell数据库则表示创建数据库成功;之后进入编辑器使用SQL查询语句进行数据库各项数据的创建。下图6为创建成功的数据库界面。llicrosoftWindows[版本10.0.17134.556(c)2018MicrosoftCorporation。保留所有权利。Serverversion:5.7.25-1ogMySQLComrunityCopyright(c)2000,2018,Oracle,MariaDBCorporatType'help;'or'\h’forhelp.Type'\c'toclear图6数据库创建通过创建新的localhost数据库来进行新的数据库表的建立。连接sell数据库并测试连接连接可以正常运行界面如下图7所示:图7数据库连接图进入编辑器进行数据库表的建立,使用create的SQL语句进行数据库表的建立。然后在数据库console界面输入SQL查询语句来进行数据库表的建立,使用create语法来进行新数据库表的建立,并在建立每一列表明时使用对应的数据类型,若是一些特殊的值比如创建状态的特征值则需要设置初始值,并在返回不同的值时能有不同的事件状态;在末尾处进行comment备注的编写可以进行点击时的弹框提示,以便在英文字段中看清中文字段名,有助于对数据库表的理解;之后在打开数据库表中再进行主键和外键的设置,若是有特殊语法也在此处进行设置。(二)用户模块实现点餐系统中的用户模块主要功能有注册登录、订单管理、评价管理。用户通过微信授权登录后,打开系统首先就会看见菜单,选择菜品后可以查看详细介绍和用户评价,之后加入购物车,提交订单信息给管理员审核,管理员审核通过后进行下单,然后等待上菜,用餐结束后可对消费菜品进行评价,另外在个人信息中可查看历史定单与评价信息。登录管理员使用微信授权登录管理实现,若用户已经登录过就可以直接进行授权登录的操作,如果之前用户没有登录过则进行引导前往账号注册界面;登录界面显示登录按钮,若之前有过授权操作,在下次进入时会自动执行登录操作,无需进行操作。具体登录界面如下图8所示:点餐系统●获得你的公开信息(昵称、头像、地区及性别)图8登录界面图该登录界面相关代码如下:onGotUserInfo:function(e){//取得用户认证信息varuser=e.detail.userIisShowUserName:true,//默认显示userInfo:e.detail.userInfo,})//取得用户信息user.openid=app.globalData.openid;//取得用户加密openidapp._saveUserInfo(user);//保存用户信息app._showSettingToast('登陆需要允许授权');}//询问授权2.用户信息管理模块实现在前端控制台中,用户信息管理界面如下图5-5所示:该用户信息管理界面相关代码如下:privateCommentRepositoryrepository;//建立私有类privateOrderMasterRepositorymasterRepository;//建立私有类publicResultVO<Comment>detail(@RequestParam("openid")Stringopenid,@RequestParam("ordeif(StringUtils.isEmpty(openid)||StringUtils.isEmpty(orderId)){thrownewSellException}//判断openid不同事件Commentsave=repository.save(comment);//BeanUtils.copyProperties(orderDTO,ordeOrderMasterupdateResult=masterRepository.}publicResultVO<List<Comment>>commenpublicResultVO<List<Comment>>userCommentList(@RequestParam(returnResultVOUtil.success}3.订单管理模块实现订单管理使用了数据库进行互动来进行数据互通,使用时使用localhost来建立连接,因为使用的是本电脑创建环境运行的,所以在设备进行连接测试时必须是同一个网络才能实现对应数据的显示。在订单中,有几个小窗口,在点击窗□时触发对应的选择事件,;用户端的订单界面显示如图8所示:我的订单待上餐已取清待评价订单编号:1555659703811777770牛排:1个青椒肉丝:1个已完成单价:¥66单价:¥23催上餐订单界面的相关处理代码如下所示:@PostMapping("/create")/postpublicResultVO<Map<String,String>>creaBindingResultbindingResult){//创建订单thrownewSellException(ResultEnbindingResult.getFieldError().getDefaultMessa}//DTO处理订单OrderDTOorderDTO=OrderForm2OrderDTOConverter.convert(orthrownewSellExceptionpublicResultVO<List<OrderDTO>>listByStatus(@RequestParam("openid")String//openid,thrownewSellException(}//列表信息List<OrderDTO>orderList=buyerService.findOrderList(openid,}4.评价管理模块实现评价管理界面使用和后台互动的方法来进行,这里也必须处在同一个网络下才能进行数据库数据的互动。进入该界面默认初始位置在主界面,点击另一个小按钮就可以进入全部评论信息界面进行查看;个人界面使用openid来定位查并将结果显示在对应界面,评论界面如下图9所示:栋栋评论:栋栋评论:图9评论界面评论管理模块的相关代码如下:@GetMapping("/commentList")//get映射publicResultVO<List<Comment>>comList<Comment>all=repository.findAll();//遍历全部}@GetMapping("/userCommentList")//get映射publicResultVO<List<Comment>>userCommentList(@RequestParam("openid")Stringopenid){//绑定openid入URLreturnResultVOUtil.suc}publicResultVO<Comment>detail(@RequestParam("openid")Stringopenid,@RequestParam("orderld")StringorderId,/1绑定参数@RequestParam("name")Stringname,/1绑定if(StringUtils.isEmpty(openid)||StringUtils.isEmpty(orderId)){thrownewSellException(}//提交评论Commentcomment=newComcomment.setName(name);//提交name属性comment.setOpenid(openid);//提交openid属性OrderMasterorderMaster=newOrderMaBeanUtils.copyProperties(orderDTO,ordeOrderMasterupdateResult=masterRepository.}(三)管理员模块实现1.菜品管理模块实现菜品管理模块在对菜品进行新增操作时,使用插入语句来对菜品数据库插入新数据,并进行数据库的更新;对菜品修改则需要使用菜品编号来进行定位查询,从而定位到需要修改的数据段位置,并在进行修改后更新该字段在数据库中的信息状态。菜品管理界面如下图5-7所示:图片11132该菜品管理界面相关代码如下:publicModelAndViewlist(@RequestParam(value="page",defaultValue="1")I页码从1开始Map<String,Object>map){//迭代输出PageRequestrequest=newPageRequest(1,size);Page<ProductInfo>productInfoPage=productService.findAllmap.put("currentPage",page);//查询分页returnnewModelAndView("product/list",map);2.系统管理模块实现系统管理模块可以更改数据库的管理员用户名和密码等信息,使用数据库的查询和更新即可完成,对管理员表进行数据的更改,之后在将更改后的信息在数据库中更新即可完成账户和密码信息的修改。主要界面图如下图13所示:该系统管理界面相关代码如下:@GetMapping("/loginAdmin")/@RequestParam("password")Stringpassword,HttpServletReif((.equals(username)&&"123456".equal("登录成功的token={}",token);//显示tokenCookieUtil.set(response,CookieConstant.TOKEN,token,expire);//封装cookiethrownewSellException(ResultEnum.if(cookie!=null){CookieUtil.set(response,CookieConstantmap.put("msg",ResultEnum.LOGOUT_SUCCESS.getMemap.put("url","/sell/seller/order3.订单管理模块实现订单管理模块可以对订单数据进行查看,使用查询语句单信息展示在订单界面上.详细信息需使用订单编号来进行订单.点击详细信息之后进行单个订单信息的查询,并将结果返回至订单详细界面。订单界面图如下图14所示:已评价已评价该订单管理界面相关代码如下:publicModelAndViewlist(@RequestParam(value="page",defaultValue="1")Integerpage,@RequestParam(value="size",defaultValue="10")Integersize,Map<String,O{//页数信息publicModelAndViewcancel(@RequestParMap<String,Object>map){//查找rderService.cancel(ordermap.put("msg",ResultEnum.ORDER_CANCEL_SUCCESS.getMmap.put("url","/sell/seller/orderpublicModelAndViewdetail(@RequestParOrderDTOorderDTO=newOrderDTO();map.put("orderDTO",ordereturnnewModelAndVpublicModelAndViewfinished(@RequestParam("orderld")Stringorderld,OrderDTOorderDTO=orderService.findOne(orderId);orderService.finishmap.put("msg",ResultEnum.ORDER_FINISH_SUCCESS.getMesreturnnewModelAndView("common/success");//返回转向地址六、系统测试现在测试用户登录系统用户打开系统的登录界面,在登录界面的文本框里添加用户信息,文本框不能为空,不然跳出提示框,用户的信息不能出错,在数据库里根据用户账号和权限查找密码与数据库里的信息是否一致,如果不一致跳出错误信息,否则用户通过接□返回一个参数,接口里判断用户的状态,当用户状态为0,是家庭成员被关闭,如果状态为1,用户可以进入相关界面,如果状态为2,用户为总管理员的账号,跳转到总管理员界面,当状态为3,用户账号待审核,当状态为4,用户账号审核未通过,下面的列表为本次测试的详细信息:输入数据期望结果测试结果1账号文本框为空单击登录用户账号不能为空!用户账号不能为空!一致2密码文本框为空单击登录提示用户密提示用户密一致码不能为空!码不能为空!3权限:总管理员用户名:JIat密码:123456,单击登录账号密码错误!.账号密码错误!.一致4权限:家庭成员密码:123456单击登录用户状态为3用户账号待审核!用户账号待审核!一致5权限:家庭成员用户名:lisi密码:123456单击登录用户账号未通过审核!用户账号未通过审核!一致6权限:家庭成员密码:123456单击登录用户状态为0成员账号被关闭!关闭!一致7权限:总管理员用户名:jiat密码:123456单击登录用户状态为2登录总管理员界面跳转到总管理员界面一致七、系统使用说明(一)系统测试的目的与意义通过系统测试可以很好地知晓开发出的系统在各个运行条件下的运行状况,对于会出现的异常情况若是有很好的把控的话,可以避免系统受损或是在实际运行中出现严重错误而影响用户的使用,从而使得用户和软件开发方产生不必要的纠纷。对于系统测试,其存在的目的即是为了发现至今为止尚未发现的错误,系统测试是为了发现错误而进行的一项软件调试任务,测试是为了证明程序有错,而不是证明其没有任何错误,对于不同用户的操作系统,是否会产生不必要的错误。功能测试根据用户要求,通过软件测试能不能正常运行系统,满足用户的要求,系统功能是关系到系统质量的主要因素,软件系统功能测试是一定要进行的,必须完美的完成,将其始终放在第一位。(二)系统模块测试用例功能特性:获取用户基础信息。测试目的:用于获取用户的openid和头像信息,使其显示于用户个人信息界面,用于订单中信息值的获取和传递。测试结果:实现了获取用户基础信息的功能,并可以使其展示在用户个人信息界面,测试用例如下表7所示。输入应输出实际输出正常显示用户信息正常显示用户信息无法获取用户信息无法获取用户信息授权管理×系统权限√无法获取用户信息无法获取用户信息授权管理×系统权限×无法获取用户信息无法获取用户信息功能特性:获取桌号进行点餐。测试目的:能返回桌号给后端系统,若是错误的返回了其他的值则不会进行跳转,便于商家给用户提供准确的服务。测试结果:实现了扫描桌号进行点餐,扫描其他信息不正确的号码时不会进入接下来的点餐流程,确保桌号信息能正确地传递给后端管理系统,测试用例如下表8所示。输入应输出实际输出1号桌二维码进入点餐桌号1进入点餐桌号12号桌二维码进入点餐桌号2进入点餐桌号2扫描二维码名片返回主界面返回主界面扫描连接二维码返回主界面返回主界面功能特性:进行菜品的选取。测试目的:使用户选取的菜品可以加入购物车,之后可以在购物车中进行菜品的调整,并能清楚且正确的显示菜品的金额和数量。测试结果:实现了在购物车中进行菜品的加入、删除和数量调整,测试用例如下表9所示。输入应输出实际输出点击+加入购物车该菜品数量+1进入点餐桌号1点击1变0且菜品消失或数量-1数量为1的菜品消失数量大于1的菜品数量点击清空购物车购物车变空购物车变空点击遮罩层收起购物车界面收起购物车界面功能特性:有新订单接受的时候,播放音频文件进行提醒。测试目的:在有新订单产生的时候进行提醒,确保提醒功能能够正常运行,使店家能知晓新订单的情况。测试结果:实现了在用户下单并付款后能接受到新订单信息并提醒的功能,测试用例如下表10所示。应输出实际输出用

温馨提示

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

最新文档

评论

0/150

提交评论