Bootstrap

【计算机毕设文章】基于微信小程序的点餐小程序

摘要
近年来,伴随者互联网产业的快速发展,各种信息化软件应运而生。当下,人们出门在外一部手机就可以解决线下所有的交易支付,人们对于信息化软件的使用也已不陌生。经济的发展,人均收入的提高,人们去餐饮店用餐已经成为了一种常态。由于各大餐饮店之间竞争激烈,如何优化顾客的用餐环节,如何提高用户的用餐体验,成为现在各大餐饮店急需解决的主要问题。而采用传统的人工点餐下单的方式,不仅工作效率低,而且结算操作失误率高,对于消费者而言等候时间过长,对企业来说冗余性、时间花费过大、不便于进行周期性账单计算,不能及时得到消费者就餐的体验反馈。
系统在设计上采用了当前较为流行的开发技术,后端主要运用了IDEA开发平台中的Java语言和Springboot框架,其中Springboot框架作为服务器端核心框架增强了系统的可维护性和可扩展性,提升了系统的开发效率。在前端技术选型上选用数据驱动视图的vue.js框架来开发用户交互界面,选用微信开发者工具和微信小程序Uni-app框架对其进行开发。基于微信小程序的点餐小程序,其中小程序端主要的功能包括注册登录、首页、订单信息等管理模块;系统后台主要功能包括用户管理、美食分类管理、美食信息管理、美食资讯管理等功能。
本文为了满足管理员和顾客对于点餐小程序的实际需求,从提升用户使用小程序的体验感、提升系统性能等方面,研究开发小程序端的相关的理论,设计并实现了本课题,通过点餐小程序让点餐环节更加的便捷,用户的用餐体验更加的满意。
关键词:点餐小程序;用餐体验;Springboot

Development and Design of Ordering Applet Based on WeChat Applet
Abstract
In recent years, with the rapid development of the Internet industry, various information software came into being. At present, people can solve all offline transaction payments with a mobile phone when they go out, and people are no strangers to the use of information software. With the development of economy and the increase of per capita income, it has become a normal situation for people to eat in restaurants. Due to the fierce competition among major restaurants, how to optimize customers’ dining links and how to improve users’ dining experience have become the main problems that need to be solved by major restaurants. However, the traditional manual order method is not only inefficient, but also has a high error rate in settlement operations. For consumers, the waiting time is too long. For enterprises, it is redundant, time consuming is too large, and it is not convenient to calculate periodic bills. It can not get timely feedback from consumers on their dining experience.
The system adopts the current popular development technology in the design, and the backend mainly uses the Java language and the Springboot framework in the IDEA development platform. The Springboot framework as the server-side core framework enhances the maintainability and scalability of the system, and improves the development efficiency of the system. In terms of front-end technology selection, the vue.js framework of data-driven view is selected to develop the user interaction interface, and WeChat developer tool and WeChat applet Uni-app framework are selected to develop it. A meal ordering applet based on WeChat applet. The main functions of the applet include registration and login, home page, order information and other management modules; The main functions of the system background include user management, food classification management, food information management, food information management and other functions.
In order to meet the actual needs of administrators and customers for the ordering applet, this paper studies and develops the relevant theories of the applet end from the aspects of improving the user’s experience of using the applet and improving the system performance, and designs and implements this topic. Through the ordering applet, the ordering process is more convenient, and the user’s dining experience is more satisfactory.
Key words: Ordering applet;Dining experience; Springboot

目录
第一章 绪论 1
1.1 项目研究背景及意义 1
1.2 国内外研究现状 2
1.3 论文主要研究内容 2
1.4 论文结构 2
1.5 本章小结 3
第二章 相关理论和技术 4
2.1 IDEA开发平台概述 4
2.2 Springboot框架相关概述 4
2.3 uni-app框架相关知识概述 5
2.4 MySQL数据库概述 6
2.5 本章小结 6
第三章 系统需求分析 7
3.1 系统需求分析 7
3.2 可行性分析 9
3.3 系统功能需求 10
3.4 非功能性需求 11
3.5 本章小结 12
第四章 系统总体设计 13
4.1 系统设计目标与原则 13
4.2 系统功能原理概述 13
4.3 系统功能模块设计 14
4.4 业务平台架构设计 14
4.5 部署架构设计 15
4.6 系统数据库设计 16
4.7 本章小结 21
第五章 系统详细设计与实现 22
5.1 系统开发环境 22
5.2 注册与登录模块设计与实现 22
5.3 点餐管理模块设计与实现 27
5.4 美食信息管理模块设计与实现 30
5.5 订单管理模块设计与实现 34
5.6 本章小结 40
第六章 系统测试 41
6.1 系统测试目的 41
6.2 系统功能测试 41
6.3 系统性能测试 44
6.4 系统维护 46
6.5 本章小结 46
第七章 总结与展望 47
7.1 总结 47
7.2 展望 47
参考文献 48
致谢 49

第一章 绪论
本章中主要包括对该论文的研究背景和研究意义进行分析介绍,同时着重针对点餐服务小程序技术的当前国内外研究发展应用现状进行对比研究,结合现实应用的场景和技术需求等进行比较分析,找到未来需要着力解决研究的一些问题方向,同时重点对本论文结构的相关主要的内容体系和结构框架安排进行介绍。
1.1 项目研究背景及意义
1.1.1项目研究背景
在全球信息化发展的背景下,经济水平不断地提高,目前社会的方方面面都在利用信息化的优势。现如今,一步手机就可以出门完成支付和各种线下的交易活动,互联网的优势和普及越来越明显。近几年来,随着餐饮行业的竞争激烈,各大餐饮店都在逐步优化用餐环节,以此来提升顾客进店的体验感,借助互联网进行点餐,支付消费。
以往传统的点餐模式,就是服务员给一份餐单给顾客,然后顾客通过菜单选择自己想要吃的菜。其次就是当餐饮店里面顾客居多的时候,这种传统的模式,弊端将直接很明显的暴露出来。比如上错菜的情况,再或者就是厨师无法根据点餐的时间先后进行判断谁的菜品先做,谁的后做。再有就是,传统的纸质菜单点餐,无法让顾客看到真实的菜品情况,哪一种菜品比较好吃。这样需要服务员在顾客点餐的时候,做大量的介绍以及推荐,就需要对服务员进行大量的业务培训。
1.1.2项目研究意义
基于微信小程序的点餐小程序,是运用了互联网的思想,来实现顾客通过微信就可以实现点餐。这种新的点餐形式,第一可以提升餐饮店的品牌竞争力,因为这样可以让顾客花费很少的时间,就可以吃到自己想吃的菜品。第二就是微信小程序的实现,可以让餐饮店缩小运营成本,不需要很多服务员,也可以更好的提升工作效率。后台商家哪怕是厨师,根据系统的后台可以清楚的看到顾客点的什么,还有就是顾客通过小程序可以知道菜品的更多细节上面的东西。
随着2020年武汉疫情的爆发,今年的疫情全国整体来说也是反反复复的趋势,整体的经济环境并不怎么好。在这样的情况下,各大餐饮店只能不断地提升自己的服务才能占领市场。截至2017年底,微信用户数量突破了10亿,就目前来说各大应用使用微信平台已是势在必行。因此,基于微信小程序的点餐小程序的开发与设计将是意义重大。
1.2 国内外研究现状
在国外,将现代计算机技术运用到餐饮行业服务中的技术都已经相当的成熟,例如IBM的POS。年轻人特别愿意尝试使用这个系统来购买健康食品。通过POS点餐系统,消费者就将获得有一个足够短的等候时间进行查看该餐厅的所有菜肴信息,通过信息可以进行比价,比价之后就可以选择性价高一些的菜肴[1]。目前大多数餐馆通过线上订餐同比销售额已经超过了在线下餐厅里吃饭的销售量。目前国外的订餐系统有:Mealclick、ChowNow、Placebag、iMenu360等系统。但是这些系统,多半是安卓软件为主,因为欧美的习惯是以预定为主,使用安卓会比较为方便。
在国内,餐饮行业的信息化建设发展相对于国外来说起步还是比较晚的。上个世纪90年代国内才开始有部分餐饮公司,发展自己的订餐系统,经过一段时间的的发展之后,目前已经有多种成熟的餐饮管理软件。比如糯米网、关团网等。这些成熟的餐饮点餐软件的出现满足了消费者不同的个性化需求,对于提高用餐的质量和整体的服务起到了关键的作用。点餐小程序出现在公众视野,是在2020年以后。由于疫情推进了小程序的使用,小程序依靠着轻便灵巧的特性,迅速成为了疫情期间被使用最广泛的应用之一,像是各个城市的健康码都是一个小程序。在激烈的竞争下,餐饮业也意识到了小程序带来的好处,纷纷将小程序应用到日常的经营中。
1.3 论文主要研究内容
本文主要针对点餐小程序的开发进行研究,本文的具体工作是开发设计一个基于微信小程序的点餐小程序。主要是对目前餐饮行业顾客进店具体的点餐环节进行了分析,并对小程序涉及的技术进行了研究和探讨。再对课题点餐具体的用户需求分析上,本文将对点餐小程序具体实现的功能进行设计,通过对点餐小程序进行具体的功能分析,主要实现登录注册、点餐管理、美食信息管理、订单管理等方面的具体需求。
根据需求,本系统嵌套应用主要是采用的技术是一种基于C/S架构(客户端、服务器)的架构,基于微信小程序的客户端能随时对服务器上发出去的各种操作信息提出访问请求,与此同时,基于微信小程序的客户端也就能够实现从服务器端接收到数据信息[2]。
1.4 论文结构
本篇论文总共为七章内容,每章的具体结构安排如下:
第一章绪论。介绍研究课题具体的背景及意义以及目前国内外的研究现状等内容进行分析说明。
第二章相关技术介绍。在本章节主要简要描述系统实现涉及的一些技术。
第三章需求分析。本章中主要描述系统需求分析、可行性分析等内容。
第四章系统总体设计。本章节主要从系统整体设计目标与基本原则、系统功能模块涉及等内容进行描述。
第五章系统详细设计与实现。详细描述了系统的实现环境以及主要功能模块的具体实现。
第六章 系统测试。该章节简要描述了系统测试目的以及主要功能模块的测试等内容。
第七章 总结与展望。主要是对本篇论文的撰写以及总结等内容。
1.5 本章小结
本章中主要根据课题的项目背景及意义、目前国内外的研究现状等内容进行了详细的概述。下面的章节将根据系统相关的理论和技术进行介绍。

第二章 相关理论和技术
在技术实现方面,针对企业的微信小程序使用了uni-app前端框架并结合微信开发者工具对其进行了编写。而网络端的餐饮服务产品则使用vue.js前端框架进行了开发的交互接口[3]。服务器端,主要采用了Java语言和Springboot的框架,以及对数据库技术开发后台支持等。本章下面将对点餐小程序中所涉及到的框架设计、以及数据库的有关基础知识,加以简单阐述。
2.1 IDEA开发平台概述
此次课题设计旨在更好、更方便的去开发设计项目,选择采用 IDEA 开发工具进行项目后台逻辑代码的编程。
IDEA编译工具全称的话是叫IntelliJ IDEA,是可以进行系统编码实现的工具之一。IDEA编译工具目前在Java程序编程中是最理想的编译工具之一, 它本身既拥有智能的且便捷实用的代码助手、丰富而灵活强大的模板库支持、 超强且高效简洁的的快捷键体系,并且它能自动提示代码、代码分析、全栈开发等方面的功能都极为优秀。提倡智能编码,能够最大限度的减少系统设计上的工作量。
其在编辑工具方面所具有和突出的主要特色功能之一就包括有:智能扩充的选取范围在很多实际情况时如果我们总是要选区某一个方法,为开发人员提供了基于语法的扩充选择,为我们重构项目提供了方便。
2.2 Springboot框架相关概述
Springboot框架是目前较为主流的一个Javaweb应用的开发架构之一,它与SpringMVC架构差不多,相比其他的JavaWeb架构的来说,官方给的概念来说是为了缩短研发环节,提供一种约定大于配置的好处, 可以能够很快速而便捷的来进行开展任何一个企业级的web应用的开发,几行简单的代码就好比是能够自己来开发设计出了一个完全基于Http协议的接口。所有的技术框架的历史发展演变轨迹中似乎最终也就都是在遵循着这样的一条技术主线规律:从一个实际的应用中去衍生发展出来的一种新的框架,人们也便可以只需能够去实现其中各种的配置功能而几乎完全都不需要让人们来自己去完成实现它。而能够在这时候就具有了更多复杂而强大的实际配置的功能,这就无疑又将成为它最大的一个技术优点。
Springboot框架早在2018年3月就已经正式推出了,并以Java8、Java9为基础,支持 Netty2.0。Springboot框架所提供的快速便捷的项目配置功能将允许开发的人员都能高效快速的完成构建的项目。Springboot框架可以直接将一些以前的在项目的开发流程中都比较没有常用的到的第三方依赖框架进行整合,其进行整合的主要原理其实也是通过一个类似于maven子父工程的实现方式。它简化了和XML框架的配合,基本上就可以实现全部通过注解的形式,内置的两个http服务器里面包括了四个Jetty和两个Tomcat。最终将以一个小型Java应用程序框架的形式来独立进行项目运行,Springboot整合了整个SpringMVC框架,简化了项目相关的参数与配置,更加全面的方便了项目人员高效快速的项目开发。
SpringBoot框架的优点:
(1)可以较为直接的创建一个单独的Spring的应用。
(2)直接简化了Maven的繁琐配置。
(3)进行了自动配置Spring。
2.3 uni-app框架相关概述
uni-app是一种利用Vue.js技术开发系统中前端应用的架构,由开发人员通过uni-app架构所创建的小程序,可以展示在iOS、Android以及各类微信等小程序的多个系统上。完成了一个程序,可以执行在多个系统的一个程序上,同时也可以执行在iOS的模拟器上。uni-app功能框架如图2-1所示。
uni-app框架的优点:
(1)使用到的组件标签的规范要和小程序开发使用到的标签规范要能够一致。
(2)针对不同的项目开发平台通过使用统一的API接口或者是使用条件编译器进行处理。

图2-1 uni-app功能框架图
从功能框架图中我们可以更直观的看到,uni-app能够更轻松得将应用直接编译好后直接发布应用到各类第三方App平台、小程序平台以及H5游戏开发等平台,即也真正做到实现了跨应用平台上的直接发布。图中是基于uni-app的内置应用组件层和内置应用API这一层,将企业所有最常用到的内置应用的组件层和内置应用的API,全部集成进行开发实现达到了一种完全的跨企业应用开发平台的封装,可以同时全面地覆盖了企业大部分领域内的实际业务需求。图中App应用开发平台中所使用到的HTML5开发引擎Plus表示其采用到的是另一个可同时跨过到iOS系统平台和Android系统平台之上的JavaScript增强版引擎[5]。
2.4 MySQL数据库概述
本系统所开发的点餐小程序所使用到的底层数据库都是来自MySQL数据库,主要是由于MySQL在项目中运行速度快,对于咸鱼开发使用到的平台是没用任何的限制,能够被广泛的应用在企业级开发中。MySQL数据库是指一个基于开源的和多线程的用户关系和管理的数据库系统,MySQL是基于开放的源代码管理的数据库,具有跨平台性,虽然其功能并未必特别强大,但是现在很多人基本上都比较了解这个数据库的一些基本功能应用[6]。
MySQL数据库管理并不是让所有的数据表都统一放在一个空间足够大的数据存储容器的里面,而是要把同一个数据库里面存储的全部数据信息都可以分别的存放在各个不同格式的存储表当中,MySQL作为一种关联性数据库的管理系统,能够有效快速地去提升数据处理存储的速度安全性与效率[7]。并且这样也可以让数据库的灵活程度得到很大幅度的提高。
2.5 本章小结
本章节中描述了点餐小程序开发与设计中所需要用到的相关技术,主要介绍了IDEA 开发技术,微信开发者工具概述、SpringBoot框架相关知识概述、uni-app相关知识概述以及Mysql数据库相关知识概述,为开发系统做好技术层次的准备工作。

第三章 系统需求分析
在信息化软件项目的开发实施过程中,需求分析阶段是核心阶段,需求是指导系统设计的方案。本章以点餐小程序的切实需求、研究背景及意义出发,对本系统的总体需求进行信息分析、总结系统的最终需求。本章主要围绕需求分析概述、可行性分析、系统功能需求、非功能性需求以及系统用例需求与业务流程分析展开论述、总结。
3.1 系统需求分析
3.1.1用例需求分析
本系统的设计主要进行优化传统的传人工管理的点餐环节。对于用户来说,主要可以实现对菜品信息的浏览以及支付等内容。对于后台管理员来说,可以对美食信息、用户信息等进行维护管理。本系统主要实现两个用户角色,分别是用户跟管理员,由此可得微信小程序用户点餐用例图如图3-1所示。

图3-1用户点餐用例图
根据以上的用户点餐用例图可以得到用户点餐的用例文档如下。
用例编号 001
用例名称 用户点餐用例
用例描述 用户必须登录微信点餐小程序才可以进行点餐
前置条件 用户已登录点餐小程序
后置条件 用户已成功发送订单信息
基本流程 1、用户登录微信点餐小程序
2、用户浏览美食信息
3、用户下单
4、生成订单
5、支付
6、发送订单至后台管理员
异常流程 通过异常信息捕捉,获取客户端到后端页面抛出来的所有异常信息,前端页面将进行展示和异常提示。
备注 用户对微信点餐小程序中的所有用户操作行为都将自动记录保存在后台系统中的用户操作记录日志模块中,用于跟踪后台用户的操作。
3.1.2业务流程分析
本次开发并设计的点餐小程序从用户端点餐流程开始,通过用户端的移动设备打开该小程序的点餐界面之后进行用户的登录确认,若是用户没有进行登录,则会引导用户前往登录或注册界面,登录完成状态确认后将会进入小程序主界面首页。在此界面用户可以通过选择需求的菜品进行下单,对点餐下单有三种方式,即立即订购、加入购物车、积分兑换,通过这三种的其中一种下单并支付。此时系统自动生成订单信息,用户点餐操作完成。管理员通过登录系统,在订单管理中可接收到用户端提交过来的订单,并依据订单给用户提供相关的服务。该系统用户点餐的业务流程如下图3-2所示:

图3-2用户点餐业务流程图

3.2 可行性分析
根据本课题实际的用户需求,从课题的技术可行性、经济可行性和操作可行性来对系统的可行性分析进行分析。
3.2.1技术可行性分析
技术可行性分析是对实现系统的功能以及实现的条件上进行分析,从专业的技术角度上去分析系统实现的可行性。通过前文介绍可知,本文课题点餐小程序所采用的 SpringBoot框架、 Uni-app框架、MySQL 数据库等技术以及 IDEA 平台和微信小程序开发者工具,都已经是当前较为成熟的技术,不论是前期代码的编写亦或是后期的系统扩充和维护,都较为便利,因此本课题具有足够的技术可行性。
3.2.2经济可行性分析
考虑到点餐小程序的的实际应用,在前期硬件的需求仅为手机和计算机,软件需求中所需要的软件也均为免费。在后期系统的应用中也仅需要将系统配置在服务器中,开发成本较低,因此本课题具有比较高的经济可行性。
3.2.3操作可行性分析
在小程序设计的初衷主要是是易于使用,需要在人机交互方面,对用户的使用能够非常友好,也可以符合用户使用的一些基本习惯。当用户第一次接触后,可以快速的进行操作,不需要花费太多的时间进行学习。
3.3 系统功能需求
点餐小程序主要包括小程序(用户)界面和管理员后台界面,各部分主要功能如下所示:
(1)小程序(用户)界面:主要是用户通过小程序使用账号登录之后,可以进行在线点餐。用户可以使用到的功能有:登录注册功能、首页功能等功能。系统用户功能模块详细结构图如下图3-3所示。

图 3-3 系统用户功能模块详细结构图
(2)管理员后台界面:管理员是最为最高的用户权限,可以看到所有的信息,主要是起到管理的作用。管理员可以有的功能有:登录、账号管理、用户管理等功能。系统管理员功能模块详细结构图如图3-4所示。

图 3-4 系统管理员功能模块详细结构图
3.4 非功能性需求
(1)系统编码要求
正确地命名主系统应用对象:主要应用程序的名字一般都要由项目主管来决定,一个完整的英文字符串命名方法,能够准确的描述应用系统的具体定义,就能直接获取应用系统的对象名等信息,这些都必须是对对象名的统一使用。
(2)系统界面要求
随着系统的使用越来越广泛,系统的界面也变得越来越重要,它的好坏直接影响系统的使用寿命。具有简单方便、快捷、清晰明了的用户界面系统,既方便了用户,也降低了操作难度。因此,我们必须重视用户界面的设计,开发更具竞争力的系统。
3.5 本章小结
本章首先对需求分析的概念以及常用的方法做了简要说明,其次从技术可行性、经济可行性、系统功能要求、系统非功能要求、系统需求分析共五个方面分析平台需求。

第四章 系统总体设计
系统主体设计主要讨论的内容包括系统设计目标与原则、系统功能原理概述、系统的功能模块设计、网络业务平台架构设计、部署架构设计以及系统数据库设计等方面。
4.1 系统设计目标与原则
通过对点餐小程序进行的需求分析和研究,并了解了目前各大餐饮店的实际应用需求后,为了更好的满足管理员和用户的要求,确定本课题设计开发的点餐小程序的主要目标与原则如下:
(1) 简洁且友好的用户界面。本课题设计的点餐小程序面向的用户是餐饮店的管理员和所有的用户。但他们并不是系统的设计者,不能直接明了的通过系统进行操作。因此,用户界面应尽可能的简洁、简单、直观且界面应美观并符合。当前审美,能够让使用者快速上手,免去一些不必要的麻烦,让使用者熟练后能够具有更高的效率。
(2) 系统维护的便捷性和功能的可扩充性。一个绝对完美的系统是不存在的, 在用户使用的过程中必定会出现各种各样的错误或缺陷,用户也会在系统的操作过程中会不断出现新的需求。因此,在设计系统时,要充分考虑到系统维护和扩充的重要性,在设计系统尤其是数据库的设计时,要确保各功能之间的低耦合,这样便能进行指定功能的维护和扩充而不影响其他的功能。
(3) 系统操作的正确性。程序设计的基本要求就是能够准确的完成预期的操作 效果,不能出现1+1=3的情况,正确的执行是完成各项工作的保证。
(4) 低配置要求。本系统的操作用户面向的是餐饮店商家和所有的用户群体, 因此, 应采用不下载客户端而选择当前流行的Web端+小程序端的方式对系统进行访问和操作,降低软件要求,方便用户。
(5) 稳定且安全。让系统真正的受用于餐饮店商家和用户。
4.2 系统功能原理概述
点餐小程序是基于Web服务模式设计的,只需要具备Internet环境下就可以了。只要用户能连上网络的前提下,便可以在不受任何的时间上、地点上的限制来使用点餐小程序。点餐小程序工作的原理图,如图4-1所示:

图4-1 系统的工作原理图
4.3 系统功能模块设计
根据第三章系统功能需求分析之后,我们了解到了用户与管理员所具有的功能模块有哪些,为了能够更直观的了解系统功能,以下主要以系统总体功能展现系统所拥有的哪些功能模块。系统总体功能模块主要有:注册登录模块、账号管理模块等必需的功能模块。系统总体功能结构图如图4-2所示。

图4-2系统功能结构图
4.4 业务平台架构设计
本系统从总体架构角度主要分为微信小程序用户前端和Web服务器后端两大部分,用户前端使用微信小程序开发实现,核心功能是提供给用户进行菜品的选购。Web 服务器后端通过Springboot框架搭建,使用Java语言和 MySQL数据库开发点餐小程序,方便经营者完成商品销售等相关管理操作,同时开发API和接口文件,能够使微信小程序前端和服务器后端进行数据交互和通信[8]。业务平台架构设计如图4-3所示。

图4-3业务平台架构设计图
4.5 部署架构设计
传统结构的单节点服务器,根本就无法同时满足日益高速增加的服务访问和请求管理压力,因为整个网络中没有一个完全冗余的业务节点,如果在一个单业务节点内的业务网络中发生了突然宕机,将可能造成整个系统服务的完全停止。为切实保障体系满足高并发应用和高性能稳定的性能需求,并密切结合点餐系统在某个特殊时段区域内具备高度并发性的业务特性,在安装了该系统之后,对整个系统以及相应的业务和系统功能均通过分布式集群的模式进行实施整体部署,从而克服了传统单点系统布置方式的缺点。
部署架构设计如图4-4所示。

图4-4部署架构图
4.6 系统数据库设计
信息资源管理系统的效率和实现的效果完全取决于数据库结构设计的好坏。为了进一步保证存储数据文件的系统完整性,提高数据库存储的效率,那么统一合理地设计数据库结构是必要的[10]。数据库设计一般包括如下几个步骤:
(1)根据用户需求,确定数据库信息进行保存。
对用户的需求分析是数据库设计的第一阶段,用户的需求调研,熟悉餐厅运作流程以及系统要求,这些都是以概念模型为基础的。
(2)设计数据的概念模型
概念模型与数据建模的观点基本是一致的,用于信息的数据是建模信息的工具。通过绘制E-R图可以更加地清楚和直观的描述系统模型内涉及到的实体之间的相互关系。
管理员信息E-R图如图4-5所示:

图4-5管理员信息E-R图
用户信息E-R图如图4-6所示:

图4-6用户信息E-R图
订单信息E-R图如图4-7所示:

图4-7订单信息E-R图
美食信息E-R图如图4-8所示:

图4-8美食信息E-R图
通过以上的分析,我们得到点餐系统的实体主要有管理员、用户、订单和美食信息,实体内部的一个管理员可以拥有多个用户、多种菜品美食的管理关系。所以管理员与用户之间和美食之间都是一对多的联系;一个管理员可以管理多个用户,因此管理员与用户的关系是一对多的联系;一个订单只属于一个用户,但可以拥有多个美食,因此订单与美食的关系是一对多的联系[11]。据此分析,所得到的系统E-R图如图4-9所示。

图4-9点餐小程序E-R图
(3)数据库逻辑结构分析
数据库概念结构设计后,可以让数据库概念转化为实际管理需要用到的逻辑数据模型,这里面实际也是为了设计出一种能够支持数据库系统运行的数据库逻辑结构,就是企业需要先将数据库这种概念结构与一个真正可以支持数据库开发和数据库管理等系统需求应用的数据库逻辑模型结构相符合 [12]。具体的表设计如下所示:
表4-1美食信息表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
bianhao varchar 200 编号
mingcheng varchar 200 名称
meishifenlei varchar 200 美食分类
zhuliao varchar 200 主料
fengmian varchar 200 封面
fuliao varchar 200 辅料
hunsu varchar 200 荤素
fenliang varchar 200 分量
xiangqing longtext 200 详情
clicktime datetime 最近点击时间
clicknum int 点击次数 0
jf int 积分 -1
price float 价格
onelimittimes int 单限 -1
alllimittimes int 库存 -1
表4-2用户表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
yonghuming varchar 200 用户名
xingming varchar 200 姓名
mima varchar 200 密码
xingbie varchar 200 性别
nianling int 年龄
shoujihao varchar 200 手机号
touxiang varchar 200 头像
jf float 积分 0
money float 余额 0
表4-3管理员表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
username varchar 100 用户名
password varchar 100 密码
role varchar 100 角色 管理员
addtime timestamp 新增时间 CURRENT_TIMESTAMP
表4-4订单表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
orderid varchar 200 订单编号
tablename varchar 200 商品表名 meishixinxi
userid bigint 用户id
goodid bigint 商品id
goodname varchar 200 商品名称
picture varchar 200 商品图片
buynumber int 购买数量
price float 价格 0
total float 总价格 0
type int 支付类型 1
status varchar 200 状态

4.7 本章小结
本章主要从系统设计目标与原则、系统功能原理概述等内容进行具体的设计描述。其中系统功能设计部分,主要分系统的功能模块设计。对系统业务平台架构设计部分,前端微信小程序与后端Web服务器如何数据交互和通信进行解释、说明。从微信小程序用户端逻辑联系各功能模块及服务器端,完成系统部署架构设计。对照上一章节的需求分析内容,分别对主要模块的具体设计思路和技术实现方法进行详细论述。数据库设计部分,主要包括数据概念模型设计和数据库逻辑结构分析设计,同时建立各数据表关系图及数据表并进行具体展示。

第五章 系统详细设计与实现
在通过对系统的需求分析和总体的架构设计之后,本章将针对具体的系统功能进行详细设计与实现,在下文中将对系统开发环境进行描述,以核心模块实现为主线阐述其详细设计,输出具体的人机界面设计、流程图、时序图、类图,最终通过程序编码实现前端界面和后端逻辑,将需求转换为可实际操作的软件产品。
5.1 系统开发环境
本课题所设计的点餐小程序的实现环境,采用的是联想(Lenovo) AMD A6-9225 RADEON R4,5 COMPUTE CORES 2C 笔记本电脑,具体的配置参数如下:
CPU 类型: AMD A6;
内存:4.00GB;
硬盘:512GB;
操作系统:64 位 Windows10 操作系统。
5.2 注册与登录模块设计与实现
5.2.1注册与登录流程设计
本系统登录流程分为前端用户登录和后端管理员登录,前端用户登录首先要有自己的账号,如果没有账号则需注册新用户,注册完成后使用正确的账号和密码才能进行登录。后端管理员因为拥有自己专属的账号和密码,因此在登录过程中只需输入正确的账号、密码和验证码即可登录成功。用户登录流程图如图5-1所示。管理员登录流程图如图5-2所示。

图5-1用户登录流程图 图5-2管理员登录流程
5.2.2注册与登录时序设计
用户注册和登录模块设计主要包括注册和登录两个功能,用户属于客户端。当用户第一次进入系统需要注册操作时,点击注册按钮并填写相关信息完成注册,此时注册的数据会保存到数据库中,注册成功后使用账号密码进行登录。用户在登录过程中,系统会从数据库检验登录信息是否正确,若正确则登录成功,若失败则会提示账号或密码错误。管理员属于服务端,由于拥有自己专属的账号和密码,因此管理员不用再注册账号,只要在登录过程中填写正确的账号和密码即可登录。用户注册登录时序图如图5-3所示,管理员登录时序图如图5-4所示。

图5-3用户注册登录时序图

图5-4管理员登录时序图
5.2.3登录核心代码设计
//管理员登录代码
public class UserController{

@Autowired
private UserService userService;

@Autowired
private TokenService tokenService;

/**
 * 登录
 */
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
	if(user==null || !user.getPassword().equals(password)) {
		return R.error("账号或密码不正确");
	}
	String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
	return R.ok().put("token", token);
}

//以下代码省略
//用户登录代码
public class YonghuController {
@Autowired
private YonghuService yonghuService;

@Autowired
private TokenService tokenService;

/**
 * 登录
 */
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
	if(user==null || !user.getMima().equals(password)) {
		return R.error("账号或密码不正确");
	}
	
	String token = tokenService.generateToken(user.getId(), username,"yonghu",  "用户" );
	return R.ok().put("token", token);
}

//以下代码省略

5.2.4登录实现结果
通过系统功能模块详细结构图可以得知,用户角色分为用户和管理员。管理员通过后台登录访问系统,使用后台对应的功能。用户通过小程序登录才能使用小程序的功能。其中,管理员后台为了校验账户的安全性,增加了验证码进行校验,便于保证系统的安全。管理员登录页面效果如图5-5所示。用户登录页面效果如图5-6所示。

图5-5管理员登录页面效果图

图5-6用户登录页面效果图
5.3 点餐管理模块设计与实现
5.3.1点餐流程设计
点餐管理是点餐小程序最重要的功能,顾客前来就餐时,首先需要进入微信点餐小程序才能进行点餐操作。点餐管理业务需求如下:
1.点餐管理:顾客点餐时系统会依次显示各菜品信息,菜品信息包括菜品名称、菜品图片以及菜品价格等,顾客通过浏览菜品看到心仪的菜品即可点餐;
2.点餐提交管理:当顾客点好菜品后,则可将点的菜品提交给系统,管理员通过后台系统即可查看顾客的点餐信息,并对点餐信息进行菜品加工操作[13]。
点餐管理业务流程如图5-7所示:

图5-7点餐管理业务流程图
5.3.2点餐时序设计
用户登录小程序后,进入小程序首页,浏览菜品信息,系统提供菜品图片、价格等信息,顾客通过系统对菜品介绍选择心动的菜品下单,同时也可以查看订单信息。图5-8、5-9是该模块的具体时序图。

图5-8用户下单时序图

图5-9用户查看订单时序图
5.3.3点餐相关核心代码设计
//以上代码省略
/**
* 提醒接口
*/
@RequestMapping(“/remind/{columnName}/{type}”)
public R remindCount(@PathVariable(“columnName”) String columnName, HttpServletRequest request,
@PathVariable(“type”) String type,@RequestParam Map<String, Object> map) {
map.put(“column”, columnName);
map.put(“type”, type);

	if(type.equals("2")) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c = Calendar.getInstance();
		Date remindStartDate = null;
		Date remindEndDate = null;
		if(map.get("remindstart")!=null) {
			Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
			c.setTime(new Date()); 
			c.add(Calendar.DAY_OF_MONTH,remindStart);
			remindStartDate = c.getTime();
			map.put("remindstart", sdf.format(remindStartDate));
		}
		if(map.get("remindend")!=null) {
			Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
			c.setTime(new Date());
			c.add(Calendar.DAY_OF_MONTH,remindEnd);
			remindEndDate = c.getTime();
			map.put("remindend", sdf.format(remindEndDate));
		}
	}
	
	Wrapper<CartEntity> wrapper = new EntityWrapper<CartEntity>();
	if(map.get("remindstart")!=null) {
		wrapper.ge(columnName, map.get("remindstart"));
	}
	if(map.get("remindend")!=null) {
		wrapper.le(columnName, map.get("remindend"));
	}
	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
	}
	int count = cartService.selectCount(wrapper);
	return R.ok().put("count", count);
}//以下代码省略

5.3.4点餐实现结果
用户登录账号之后首先是看到首页界面,首页界面放置美食信息推荐和美食资讯等信息,为了吸引用户的注意力,提升用户对于点餐的欲望。用户在点餐过程中可以通过点击首页菜品图片查看美食详情页面进行点餐,也可以通过美食信息功能中的分类查看美食的详细信息。用户通过点击到自己喜欢的美食信息之后,可以收藏美食,同时也可以进行加入购物车或者是立即订购和积分兑换等功能。
点餐效果图如图5-10所示:

图5-10点餐效果图
5.4 美食信息管理模块设计与实现
5.4.1美食信息管理流程设计
管理员进入后台系统后,点击美食信息,进入美食信息页面,可以删除不受欢迎的菜品,根据订单的显示数据做出调整,上传新菜品,包括菜品图片,相关描述、价格等信息,同时可以对菜品信息进行修改,比如更换图片、修改描述信息等。美食管理模块活动图如图5-11所示。

图5-11美食管理模块活动图
5.4.2添加美食信息管理模块设计
对于美食信息模块设计,管理员可以就其进行添加美食、修改美食、删除美食,现在就添加美食进行分析,添加美食时序图如图5-12所示。

图5-12添加美食时序图
对于添加美食来说,需要添加美食名称、价格、描述、图片和美食所属分类等信息,当添加完成后,点击保存美食,此时浏览器会将信息发送到后台服务器中。而此时服务器会先将图片保存到本地文件指定的目录下,并生成一个图片的唯一ID,然后服务器根据ID和目录生成图片的URL地址,这样可以根据图片的URL访问到图片,然后将美食信息图片URL保存到数据库中,并返回本地保存结果[14]。
5.4.2美食信息核心代码
//以上代码省略

/**

  • 美食信息

  • 后端接口

  • @author

  • @email

  • @date 2022-11-15 10:23:32
    */
    @RestController
    @RequestMapping(“/meishixinxi”)
    public class MeishixinxiController {
    @Autowired
    private MeishixinxiService meishixinxiService;

    @Autowired
    private StoreupService storeupService;
    /**

    • 后端列表
      */
      @RequestMapping(“/page”)
      public R page(@RequestParam Map<String, Object> params,MeishixinxiEntity meishixinxi,
      HttpServletRequest request){
      EntityWrapper ew = new EntityWrapper();
      PageUtils page = meishixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, meishixinxi), params), params));

      return R.ok().put(“data”, page);
      }

    /**

    • 前端列表
      */
      @IgnoreAuth
      @RequestMapping(“/list”)
      public R list(@RequestParam Map<String, Object> params,MeishixinxiEntity meishixinxi,
      HttpServletRequest request){
      EntityWrapper ew = new EntityWrapper();
      PageUtils page = meishixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, meishixinxi), params), params));
      return R.ok().put(“data”, page);
      }
      //以下代码省略

5.4.3美食信息实现结果
管理员可以管理小程序里面的美食信息,可以进行美食信息的新增,也可以对美食信息进行删除、修改等操作,管理员还可以查看美食信息用户的评论信息。用户进入小程序之后,可以查看详细的美食信息,也可以选择是否加入购物车还是点击积分兑换和立即订购。管理员管理美食信息页面效果如图5-13所示。用户美食信息页面效果如图5-14所示。

图5-13管理员管理美食信息效果图

图5-14用户美食信息效果图
5.5 订单管理模块设计与实现
5.5.1订单流程设计
订单管理是顾客通过点餐小程序下单形成的订单,管理员针对订单的管理主要包括有查看订单管理和核销订单管理,而顾客可以对此进行取消订单管理。管理员向顾客提供菜品,顾客查看菜品后选择自己喜欢的菜品,若顾客确定点餐未完成,则继续选择菜品;若顾客确定点菜完成,管理员可以通过查看订单制作菜品,此时查看订单完成。若顾客不想要该订单,则需要取消该订单,管理员需要根据情况判断是否同意退单,若同意退单,则表示取消订单成功;若不同意退单,表示取消订单失败,顾客对此要支付该订单,此时取消订单完成。顾客对订单支付后可以进行就餐,管理员对已就餐的订单进行核销,对已完成的订单顾客可以对此进行评价,此时订单管理结束。订单管理流程图如图5-15所示。

图5-15订单管理流程图
5.5.2订单相关类图设计
本系统的订单管理主要涉及到有四个类,分别是顾客、管理员、菜品信息、订单信息。顾客在订单管理的属性主要有姓名、密码、电话、邮箱、付款金额、下单时间、下单号等,方法主要有注册、登录、提交订单、支付订单、评价等。管理员在订单管理的属性主要有姓名、密码,方法有注册、登录、设置菜品数量、增加菜品、修改菜品、查看评价、查看订单记录等。菜品信息在订单管理的属性主要有编号、名称、数量、销售额、价格、图片,方法有添加菜品、删除菜品、修改菜品。订单信息在订单管理的属性主要有订单编号、商品名称、商品图片、购买数量等,方法有删除订单。
在订单管理实现上,管理员提供菜品供顾客选择,顾客通过选择菜品进行点餐操作而生成的订单信息。在订单管理过程中顾客可以查看以生成的订单也可以取消订单,管理员通过查看顾客点餐而生成的订单制作菜品。订单管理类图如图5-16所示。

图5-16订单管理类图
5.5.3订单模块核心代码
//以上代码省略
/**

  • 订单

  • 后端接口

  • @author

  • @email

  • @date 2022-11-15 10:23:32
    */
    @RestController
    @RequestMapping(“/orders”)
    public class OrdersController {
    @Autowired
    private OrdersService ordersService;

    /**

    • 后端列表
      */
      @RequestMapping(“/page”)
      public R page(@RequestParam Map<String, Object> params,OrdersEntity orders,
      HttpServletRequest request){
      if(!request.getSession().getAttribute(“role”).toString().equals(“管理员”)) {
      orders.setUserid((Long)request.getSession().getAttribute(“userId”));
      }
      EntityWrapper ew = new EntityWrapper();
      PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));

      return R.ok().put(“data”, page);
      }

    /**

    • 前端列表
      */
      @IgnoreAuth
      @RequestMapping(“/list”)
      public R list(@RequestParam Map<String, Object> params,OrdersEntity orders,
      HttpServletRequest request){
      EntityWrapper ew = new EntityWrapper();
      PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
      return R.ok().put(“data”, page);
      }//以下代码省略

5.5.4订单实现结果
管理员可以对用户的不同订单状态下的订单信息进行管理,其中已支付订单、已完成的订单信息可以进行可视化管理,也可以将订单数据进行导出。用户在美食信息模块点击立即订购之后,可以查看自己的订单状态,还能取消订单和选择退款等操作。管理员订单管理的已完成订单效果图如图5-17所示、已支付订单效果图如图5-18所示、日销量效果图如图5-19所示、月销量效果图如图5-20所示、日销额效果图如图5-21所示、月销额效果图如图5-22所示、用户订单信息效果图如图5-23所示。

图5-17 已完成订单效果图

图5-18 已支付订单效果图

图5-19 日销量效果图

图5-20月销量效果图

图5-21日销额效果图

图5-22月销额效果图

图5-23用户订单信息效果图
5.6 本章小结
本章首先介绍的是点餐小程序开发环境的搭建,接着分别描述了系统四个主要核心模块——登录模块、点餐模块、美食信息模块、订单管理模块的详细设计与具体实现,通过模块的流程图、时序图、类图、代码核心片段以及前端界面图来展示模块的实现细节与运行结果。

第六章 系统测试
本章基于微信小程序的点餐小程序设计与实现给出相应的测试介绍,主要包括系统测试目的、系统功能测试、系统维护。其中系统功能测试主要包括登录模块测试、用户管理模块测试、其他功能测试,通过系统维护从而保障系统功能上的可用性、安全性、稳定性等,方便系统上线、使用和后期功能的扩展。
6.1 系统测试目的
在整改软件开发的过程中,能否保证系统在实际运用中正确无误的使用,系统测试至关重要。系统测试是将已经完成的软件与硬件、网络等元素结合在一起 之后, 进行各种验证测试检验系统功能的完整性、可用性检验需求是否达标;检验系统中是否有未知的BUG 等等,最终目的是为了提高用户的体验,填补缺陷, 预防潜在的风险问题。
6.2 系统功能测试
6.2.1登录模块测试用例
该模块用于测试小程序绑定登录和 Web 端登录功能,检查用户通过小程序能否进行登录使用到功能以及后台端的话,管理员能否登录进去,使用里面的各个功能。用户登录测试用例过程如表6-1所示,管理员登录测试用例过程如表6-2所示。
表6-1用户登录测试用例表
功能模块:用户登录模块
测试环境:客户端为iPhone5;网络环境为“无线网络”
测试目的:验证用户能够完成登录进入小程序
操作步骤:
1.输入自己的用户名、密码
2.点击登录
步骤 操作 期望 实际
1 进入小程序登录页 成功进入小程序登录页 成功进入小程序登录页
2 输入用户名、密码 用户名和密码正确 用户名和密码正确
3 点击登录按钮 成功进入小程序首页界面 成功进入小程序首页界面
表6-2管理员登录测试用例表
功能模块:管理员登录模块
测试环境:客户端为iPhone5;网络环境为“无线网络”
测试目的:验证管理员可以通过登录进入后台
操作步骤:
1.输入错误的用户名和密码
2.点击登录
3.输入正确的用户名和密码
4.点击登录
步骤 操作 期望 实际
1 进入系统登录界面 成功访问系统登录界面 成功访问系统登录界面
2 输入错误的用户名和密码 用户名和密码错误 用户名和密码错误
3 点击登录按钮 进入系统页面失败 进入系统页面失败
4 输入正确的用户名和密码 用户名和密码正确 用户名和密码正确
5 点击登录按钮 成功进入系统页面 成功进入系统页面
6.2.2用户点餐管理模块测试用例
该模块用于测试用户在小程序端是否能正常的进行点餐下单操作。用户点餐管理测试用例过程如表 6-3 所示。
表6-3用户点餐管理测试用例表
功能模块:用户点餐管理模块
测试环境:客户端为iPhone5;网络环境为“无线网络”
测试目的:验证用户可以正常点餐
操作步骤:
1.用户浏览菜品信息
2.点击菜品信息进入菜品详情页
3.点击加入购物车、立即订购和积分兑换的一种下单方式
4.点击订单信息选项卡,显示订单信息界面
5.点击确认支付按钮
6.弹出提示“是否确认支付”
7.点击确认
步骤 操作 期望 实际
1 进入小程序界面 小程序界面显示菜品信息 小程序界面显示菜品信息
2 用户浏览菜品信息 用户可以查看菜品信息 用户可以查看菜品信息
3 点击进入菜品详情页 成功进入菜品详情页 成功进入菜品详情页
4 选择一种下单方式 跳转购买清单页 跳转购买清单页
5 点击确认支付按钮 支付成功 支付成功
6 点击订单信息查看订单状态 菜品为已支付状态 菜品为已支付状态
6.2.3添加美食信息管理模块测试用例
该模块用于测试管理员对美食信息的增加操作是否可行。添加美食信息管理测试用例过程如表 6-4 所示。
表6-4添加美食信息管理测试用例表
功能模块:添加美食信息管理模块
测试环境:客户端为iPhone5;网络环境为“无线网络”
测试目的:验证管理员可以正常添加美食信息
操作步骤:
1.点击导航栏美食信息管理
2.点击美食信息进入美食信息详情界面
3.点击新增按钮
4.选择美食分类的类型
5.输入美食名称、主料等信息
6.点击提交,弹出操作成功框
7.页面自动跳转回美食信息界面
步骤 操作 期望 实际
1 进入美食信息界面 成功进入美食信息界面 成功进入美食信息界面
2 点击新增按钮 系统跳转美食信息详情界面 系统跳转美食信息详情界面
3 选择美食分类的类型 成功选择类型 成功选择类型
4 输入美食名称等信息 输入美食信息成功 成功输入美食信息
5 点击提交按钮 弹出操作成功框 弹出操作成功框
6.2.4核销订单管理模块测试用例
该模块用于测试管理员对已支付的订单核销操作是否可行。核销订单管理测试用例过程如表 6-5 所示。
表6-5核销订单管理测试用例表
功能模块:核销订单管理模块
测试环境:客户端为iPhone5;网络环境为“无线网络”
测试目的:验证管理员可以正常核销订单
操作步骤:
1.点击导航栏订单管理
2.点击已支付订单进入已支付订单界面
3.点击“核销”按钮
4.弹出提示框“确定核销?”,点击确定按钮
5.弹出操作成功框
6.点击已完成订单进入已完成订单界面
7.核销的订单显示已完成状态
步骤 操作 期望 实际
1 进入已支付订单界面 成功进入已支付订单界面 成功进入已支付订单界面
2 点击核销按钮 弹出操作成功框 弹出操作成功框
3 点击进入已完成订单界面 成功进入已完成订单界面 成功进入已完成订单界面
4 查看核销订单是否完成 核销订单显示已完成状态 核销订单显示已完成状态
6.2.5其他功能测试
通过测试其他功能模块下的的数据信息的添加,修改和删除等菜单权限操作之后,各个模块按照各自的具体的需求,使用不同的测试用例方法对各个功能模块进行完整的功能测试,确保其稳定性。测试的结果如表6-6所示。
表6-6 系统功能情况测试表
测试的功能模块名称 测试结果 备注
账号管理 通过 达到预期目标
用户管理 通过 达到预期目标
美食分类管理 通过 达到预期目标
美食资讯信息管理 通过 达到预期目标
系统管理 通过 达到预期目标
6.3 系统性能测试
系统性能测试是为了评估系统的能力,验证系统在一定的并发量下是否能稳定运行,同时发现系统的性能瓶颈,方便日后的系统调优。测试系统在高并发情况下的性能需要大量用户参与,但想要找到这么多用户并不现实,本系统使用的LoadRunner作为性能测试工具。LoadRunner使用虚拟用户来模拟实际用户对业务系统施加压力,可以很轻松的模拟成千上万的用户,并实时监控系统的运行。
本次性能测试场景以管理员登录为例,对测试报告的结果进行分析。通过LoadRunner12.02进行管理员登录测试,所得结果如下所示。

图6-1 登录统计图

图6-2 事物摘要图

图6-3 平均事务响应时间图

图6-4 每秒点击数与每秒吞吐量复合图

图6-5 事务状态统计图
6.4 系统维护
对于一个完整的系统来说,完成好系统设计和系统实现只是一部分,最重要的工作还是在于系统上线之后的维护。针对系统的维护的好坏直接决定了系统的生命力。在最初设计点餐小程序的时候,就已经考虑了后期系统的维护上面的问题,所以在整个设计的过程中,就采用了非常严谨的编码习惯,考虑了实际生活中的应用问题,同时在操作数据库的时候也能够保证数据的一致性等问题。
6.5 本章小结
本章主要对基于微信小程序的点餐小程序系统测试进行介绍。系统采用从系统测试目的、系统功能测试(包括:登录模块测试、用户管理模块测试、其他功能测试)以及系统维护等三个方面进行介绍。通过测试结果得出此系统的各功能模块基本实现,满足了小程序用户的使用并且系统能够运行稳定。但是在测试过程中也有些不足之处,还有待改进。

第七章 总结与展望
7.1 总结
本文首先简单介绍了该课题的重要研究理论背景和意义,以及相关国内外研究现状,对本文系统结构设计理论上所应用到的理论观点和先进技术等进行详细了研究。在正式设计开发和最终实现该系统之前对该系统需求进行了较详细的分析与设计。从消费者和商户两个方面的需求以及用例进行了展开描述,明确了系统的整体架构,根据系统需求以及活动关系对数据库表进行了详细设计。最后,对系统主要功能模块进行了实现描述并测试。
系统的开发环境和配置都是自行安装的,系统使用Springboot开发工具,使用比较成熟的Mysql数据库进行对服务端及客户端的数据交互。Mysql数据库可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发和设计工作。
7.2 展望
因为时间有限,尽管以微信为基础的点菜小程序可以很好的解决消费者的用餐需求,但系统仍然有很多不足之处,例如:在功能和会员制方面,还有待完善。从消费者的视角看,该体系还应具有拼单推荐、在线排队、优惠券赠送等多种服务;在商户管理者的视角下,系统还应提供桌号以及牌号的服务,让系统更加的实用性、易用性和个性化。在以后的工作中,还要注重对整个体系的稳定进行管理,对后续的系统进行完善,并对系统进行进一步的改进。以下提出后续系统的几点工作。
(1)基于微信小程序的点餐小程序相对于目前主流版本的手机点餐类小程序产品来说,其功能还不够完善,后期产品应当着重对此予以改进调整和优化。参考国外现阶段最为流行使用的即时语音通讯系统,对目前本产品系统架构中出现的一些带有细节性要求的小功能进一步加以补充完善,以争取达到一个更好的用户体验。
(2)本系统并没有对同时多用户并发使用进行测试。接下来应该对此问题进行深入的分析和研究,找到提升系统性能的办法。
(3)本系统的UI页面还需要进一步优化,使其更加美观。

参考文献
[1]黄鲤薇. 基于移动Web的点餐系统设计与实现[D].吉林大学,2016.
[2]王媛.基于微信小程序的线上交易平台[J].中国科技信息,2019(01):78-81+14.
[3]李昊. 基于微信小程序的智能推荐点餐系统的设计与实现[D].南京邮电大学,2020.
[4]邢榕珊,匡芳君.微信小程序设计[J].计算机时代,2018(08):9-12.
[5]张晓明. 基于uni-app和Android的学生手机管控系统的设计与实现[D].兰州大学,2020.
[6]葛萌,王颖.基于SpringBoot+SSM框架的进销存管理系统设计与实现[J].科学技术创新,2020(24):74-77.
[7]江国文.大数据环境下基于MySQL的数据库架构设计与实现[J].电子世界,2018(11):200-201.
[8]马静.基于微信小程序的购物商城系统的设计与实现[J].微型电脑应用,2021,37(03):31-34.
[9]陈严纯,孟莉秋,徐博.基于微信小程序的高校大学生信息服务平台设计[J].电脑编程技巧与维护,2022(01):61-64.
[10]马立夫. 商品销售管理系统设计与实现[D].吉林大学,2017.
[11]袁时金,施博,穆斌,林冰轩,王彩霞,杨丹.“数据库课程设计”课程的实践教学方法探索[J].工业和信息化教育,2020(03):43-48.
[12]韦婉辰,卢华.基于微信小程序的校园订餐管理系统的设计与实现[J].信息记录材料,2022,23(05):119-122.
[13]朱咏平. 手机自助点餐系统的设计与实现[D].大连理工大学,2018.
[14]成焕宇,周紫薇.基于AndroidPN的可靠自定义推送系统实现[J].软件导刊,2018,17(05):83-85+89.
[15]Abbas Mr Ansar,Eliyana Prof Anis,Ekowati Dr Dian,Saud Mr Muhammad,Raza Mr Ali,Wardani Ms Ratna. Data set on coping strategies in the digital age: The role of psychological well-being and social capital among university students in Java Timor, Surabaya, Indonesia.[J]. Data in brief,2020,30.
[16]Pengxiang Zhou,Shaohong Xia. Effects of the heterogeneous subducting plate on seismicity: Constraints from b-values in the Andaman–Sumatra–Java subduction zone[J]. Physics of the Earth and Planetary Interiors,2020.

致谢
在完成毕业论文的这一段时间里,我收获了很多,从理论到实践,从需求分析到系统实现,学到了之前没有学到的一些技术和知识,例如在微信小程序上的开发,将uni-app框架应用到系统等等。
时间匆匆,岁月如梭,两年时光转眼间就过去了,专升本的学习和生活即将告一段落,在毕业论文完成之际,窗外的校园依旧是一片生机盎然、朝气蓬勃的景象,校园的五月却又总是多了一层学子即将离别校园的个人感怀,回想起入学的第一天仿佛昨天一般,回想两年学习生活经历,不由思绪万千,这两年有太多的感谢,借此一抒胸怀。
首先,感谢我的导师汪梅老师,从开题报告到论文完成倾注了老师的精力和教诲,在此祝愿汪梅老师工作顺利,万事如意。感谢梧州学院给予我继续学习的机会,感谢大数据与软件工程学院对我的培养,感谢梧州学院各位教过我、指点过我的老师,你们在每一堂课上每一次知识的传递带给我了每一次的进步。祝愿各位老师工作顺利,万事如意,祝愿梧州学院越来越好。
感谢我的同学,感谢你们在学习上陪和我互相商讨进步,生活上给予我帮助和理解,感谢我的舍友,感谢你们两年的陪伴。祝愿你们前程似锦,心想事成。感谢我的家人,谢谢你们对我提供经济和精神上的帮助,在我遇到瓶颈的时候,会不厌其烦地开导我、鼓励我,帮助我走出困境,坚持在这条道上前行。

;