基于SSH的点餐服务管理系统的设计与实现

目 录

摘 要 I
Abstract II
引 言 1
1 开发工具相关技术 3
1.1 SSH框架 3
1.1.1 Spring 3
1.1.2 Spring MVC 3
1.1.3 Hibernate 4
1.2 前端技术 4
1.2.1 jQuery 5
1.2.2 Bootstrap 5
1.3 数据库技术 5
1.4 本章小结 6
2 系统分析 7
2.1 需求分析 7
2.2 系统工作流程 8
2.3 用例分析 9
2.4 本章小结 10
3 系统设计 11
3.1 系统总体设计 11
3.1.1 系统体系结构 11
3.1.2 系统功能模块设计 11
3.2 系统详细设计 12
3.2.1 数据库设计 12
3.2.2 功能设计 15
3.3 本章小结 18
4 系统实现 19
4.1 开发环境 19
4.2 开发规范 19
4.2.1 命名规范 19
4.2.2 有关库的规范 19
4.2.3 其他规范 19
4.3 核心功能实现 19
4.3.1 添加菜品功能实现 20
4.3.2 删除会员信息功能实现 21
4.3.3 修改会员信息功能实现 23
4.4 本章小结 24
5 系统测试 25
5.1 登录测试 25
5.2 菜品添加测试 25
5.3 新会员录入测试 26
5.4 会员信息删除测试 27
5.5 本章小结 28
结 论 29
致 谢 30
参考文献 31

摘 要

随着信息化发展进步,所带来的便利深刻地影响着社会的各行各业,几乎所有行业都会涉及信息化,而提高效率则变得越来越关键,人们也适应了线上进行各种操作的方式。其中餐饮行业更是最重要的一环,吃饭是所有人都会有的一种需求,线上点餐变得越来越重要,但相比较而言顾客去饭店内就餐的线上点餐服务就会少很多。基于此项社会需求,为了提高餐厅内就餐顾客的点餐效率和餐饮企业的工作效率,为在外就餐顾客提高更好地体验,设计并实现了基于SSH的点餐服务管理系统。
本文使用了主流的JavaWeb技术,通过对市场地调研完成了需求分析和数据库设计,选用SSH作为开发系统的框架,MySQL为存储管理数据的数据库,Tom-cat作为web应用服务器,通过菜品信息管理、店铺信息管理、订单信息管理等模块完成本系统的设计,使用户只通过二维码就能完成点餐到支付等一系列功能,该系统大大增加了点餐流程的快捷性,同时具备着高效、准确的优点,减少了就餐高峰期的压力,提高了商家服务效率。
点餐管理系统在经过测试后,完全实现了预期设计功能,能够满足商家和顾客的需求,并且线上点餐将点餐流程慢,结算过程冗余等问题一一解决;系统性能高效,可操作性强,便于管理,易于维护,能适用于现在的餐饮行业需求。
关键词:SSH框架结构; 管理平台; 线上点餐

Abstract
With the development and progress of information technology, the convenience has a profound impact on all walks of life, almost all industries will contact with it, improving efficiency becomes more and more critical, and people are also adapted to the online operation. Among them, the catering industry is also the most important part. Everyone can’t do without one thing every day. Online ordering becomes more and more important, but compared with the online ordering service, the number of customers who go to restaurants for dinner will be much less. Based on this social demand, in order to improve the ordering efficiency of the customers in the restaurant and the working efficiency of the catering enterprises, and improve the better experience of the customers in the restaurant, the SSH based ordering service management system is designed and implemented.
This paper uses the mainstream Java Web technology, through the market research to complete the demand analysis and database design, Using SSH as the framework of the development system, MySQL as the database to store management data, Tom cat as the web application server, through the food information management, store information management, order information management and other modules to complete the design of the system, so that users can only use QR code It can complete a series of functions from order to payment. The system greatly increases the rapidity of order process, and has the advantages of high efficiency and accuracy. It reduces the pressure of dining peak and improves the service efficiency of merchants.
After the test, the ordering management system has fully realized the expected design function, which can meet the needs of businesses and customers, and online ordering solves the problems of slow ordering process and redundant settlement process one by one; the system has high performance, strong operability, easy management, easy maintenance, and can be applied to the needs of the catering industry at present.
Keywords: SSH framework structure; Management platform; Order online

引 言

现阶段各行各业关于线上操作的利用愈发广泛,餐饮行业对于线上点餐的功能使用更是用足心思,各种各样的点餐app应运而生,广大群众对其的喜爱也是因为这种使用起来快捷方便的特点。不过对于习惯于堂食的顾客好像没那么“照顾”,还是传统的服务员推荐、记单、下单的操作过程,而扫码点餐这个过程最大的特点就是操作便捷,办事步骤少,相比而言所需要的资源也是最少的。据不完全统计,一套线上点餐系统能够降低餐厅五分之二的人工成本,同时也可节省餐厅营销成本,如广告牌制造、菜单制作费用等[1]。
所以基于这一观点,为线上点餐系统的开发需求提供了强大的背景基础[2]。开发线上点餐管理系统的意义分为两大方面,一方面是提高餐饮企业的点餐效率,另一方面是为消费者提供更好的就餐体验。传统的点餐过程中,顾客到店,首先需要看菜单,然后还需找收银员或者服务员点菜,最后通过收银后台发送到后厨,对于餐饮企业来说效率很低,对于顾客来说过程很复杂,而且可能还会存在高峰期排队等问题。而用线上点餐系统的话,顾客到店,先挑选座位,而后扫描桌上的二维码,直接在线点餐,下单结算。这其中就节约了很多人力物力,也更加高效[3]。
目前,几点问题还在影响线上点餐系统的发展。1、实际功能与餐饮企业所期望的有所出入,对餐饮企业来说,最大的问题是信息的不对等,企业无法和厂商研发的餐饮软件更好的融合。即使让厂商按照要求专门研发产品,企业却在迅速发展,还是会导致无法完美符合实际要求的情况。2、线上点餐系统缺乏深度,市场每天都在变化顾客的需求也会日益增加,厂商自然会为餐饮软件增加多种功能来应对压力。但这种进步却只停留在表面,往往只是在原本的基础上机械化的加载模块,不能解决根本性的问题。3、由于操作复杂,软件依赖性强,总体成本昂贵,部署非常复杂,对产品开发产生了严重影响[4]。4、隔行如隔山,软商和餐饮企业更是如此,想要从根本上角度去互相理解是很困难的,大大小小的餐饮企业之间的需求也是有很大不同的,想要做到从餐饮企业的根本需求出发,用信息化推动其发展,增加办事效率,降低各种成本,是一个很难研究的问题[5]。
未来餐饮软件可能存在着两方面变化,内容和功能的体系化以及服务的专门化。通过互联网手段,以餐饮软件作为餐饮管理系统的核心,从食材采购、点菜预定、结账收银、客户维护、网络营销都在一个平台内完成,构建完整生态链的网络化餐饮管理系统,而原材料成本、人力成本、管理成本、营销成本也都会随之进一步降低;专门化趋势则是餐饮软件在为餐厅提供服务上,更具有针对性,能够根据餐厅的不同业态和规模进行调整,从而实现效率的进一步提高。
本文共分为5章,安排如下:
第1章,为系统的开发所用技术的描述,其中包括了框架技术Spring、SpringMVC、Hibernate以及MySQL数据库等,并且对这些技术特点优点进行了详细地描述,最后在本章小结进行了统一的阐述。
第2章,对本系统进行了分析,包括了需求分析、非需求分析、系统工作流程、用例分析,并通过结合流程图用例图的方式进行生动描述。
第3章,则为系统的详细设计部分,其中先后描述了系统结构设计、系统功能模块设计、数据库设计部分,并结合了结构图、E-R图以及核心数据表对本系统进行了一个详细的描述。
第4章,写了系统的实现,主要介绍系统的开发环境、开发规范部分。
第5章,描述了对系统核心功能的测试,通过分析测试计划、规划测试方法、测试用例表等方式对系统的核心功能进行了充分的测试证明。
结论,阐述系统总体的完成情况,对系统进行合理评价,并对点餐系统系统未来前景进行展望。

1 开发工具相关技术

本点餐服务管理系统采用Java+Tomcat+Mysql的组合方式进行研发[7]。Java作为开发软件的主要语言,Web服务器使用了Tomcat,存储、管理数据的数据库使用了MySQL。而为了实现各种请求的处理以及对象化管理,使用了SSH框架来搭建系统结构的基础。
1.1 SSH框架
由Spring,SpringMVC和Hibernate组成的SSH框架具有很多特点。Spring作为非侵入式的一款侧重于减小开发复杂度的框架,为了利于系统的重新构造和后期的维护,Spring系统应用中尽量降低了代码依赖,并且不仅是将开发的程序运行在服务器上[8]。
1.1.1 Spring
在企业级Java应用程序开发框架中Spring无疑是最受推行的,是一个处于设计层面的轻量级开发框架,也包含着面向接口的的程序技术思想[9]。最初由Rod Johnson编写的Spring框架,可以用于开发所有的Java应用程序,这是最重要的一个特性。不仅如此,Spring框架的目标是通过启用基于POJO的编程模型,让J2EE的开发变得更简单且更易使用[10]。
Spring框架中不可缺少的组件是面向切面的编程(AOP)框架[11]。面向切面的编程需要把计算机程序正确性的逻辑规则,分解成各种不尽相同的部分,也就是关注点。横切关注点,也就是跨应用程序的多个点的功能,在概念上不依赖于应用程序所实现的具体功能。有许多常见例子可以体现,如日志记载。
Spring框架主要包括了控制反转和面向切面的容器框架,Spring能够自动的去查找依赖对象,并完成应用对象所应去处理的业务逻辑,该框架分为了Spring Core、Spring Context、Spring ORM、Spring AOP、Spring Web MVC、Spring Web、Spring Dao7大模块,基于此将能从多个方面解决了企业开发所需的一切内容。
1.1.2 Spring MVC
Spring MVC是一种基于Java,完成了Web MVC设计形式的请求驱动类型的WEB框架,也是一种侧重于减小开发复杂度的框架。其运用了MVC架构模式的思想,利用反射机制来解决代码难以维护和高耦合的问题,实现了Spring的IoC思想[12]。
这种MVC模式,M指的是model模型层做业务逻辑运算,针对数据的持久化方面操作等;V则是view视图层,将数据展现给客户和接受请求,调用模型层,响应处理结果。
而Spring MVC就是属于C层,其工作原理,是先发送Request请求,而后将此请求经过一系列处理器、解析器、控制器等数据处理后,经过视图渲染传给用户,显示出必要的数据。
一般来说,SpringMVC工程创建简单,重点在于配置文件的编写[13],常用注解开发,有效地处理了网页中乱码等情况,并且注解开发的好处之一就是简化了代码,提高了效率,相对于系统更加安全,便于管理[14]。
1.1.3 Hibernate
Hibernate是一个优秀的持久层框架,负责向数据库的传输,数据对象永久接受对象关系的映射,从对象的角度访问数据库,而在主流的描述对象和数据库之间,映射到开发人员的元数据工具,可以在对对象的思想操作中,使用关系模型来组织数据的数据库,并且Hibernate使JDBC变为轻量级的目标包,使编码过程更加方便快捷[15]。
Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Session的缓存是内置的,不能被卸载,也被称为Hibernate的第一级缓存。SessionFactory的内置缓存和Session的缓存在实现方式上比较相似,前者是SessionFactory对象的一些集合属性包含的数据,后者是指Session的一些集合属性包含的数据。外置缓存的数据是数据库数据的拷贝,外置缓存的介质可以是内存或者硬盘。SessionFactory的外置缓存也被称为Hibernate的第二级缓存。
Hibernate的优势也十分明显[16]。Hibernate不用编写任何代码就能处理映射Java类别到数据库表格中,仅仅是通过使用XML文件;可以提供应用程序接口来直接在数据库中存储和检索Java对象。可以修改XML文件属性以在数据库或其他表中更改它;提供了一个熟悉的Java对象;抽象不熟悉的SQL类型;操作无须使用应用程序服务器[17];对于所有的主要RDBMS都能支持。
1.2 前端技术
jQuery是一个优秀的轻量级JavaScript框架,它能简化HTML、文档元素的遍历等来实现Web的快速开发。Bootstrap是一个用于快速开发Web 应用程序和网站的前端框架。它基于HTML、CSS、JavaScrip,提供了HTML和CSS的规范。jQuery能够兼容所有的主流浏览器,这使得对DOM的快速访问变得非常简单。
1.2.1 jQuery
jQuery是一个快速、简洁的JavaScript框架,其理念就是提倡去写更少的代码,完成更多的事情,简化了许多JavaScript编程任务,简单而易于理解的应用程序编程接口也使jQuery的表现效果非常出色。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。随着越来越多的开发者加入,jQuery也集成了众多于一体的强大功能,得到了许多开发者的青睐。
1.2.2 Bootstrap
Bootstrap常用于开发响应式布局、移动设备优先的WEB项目,是一个CSS /HTML 框架。它的特点是简单灵活,可用于架构流行的用户界面和交互接口的html、css、javascript工具集。并且作为响应式设计的框架,其兼容性也十分卓越。它的优势是能给用户提供更好的视觉使用体验,由于它是响应式布局的设计,也能使一个网站去兼容不同分辨率的设备。因为其可视化布局的特点,可以不写代码,也不辛辛苦苦的调整格式,就能直接从左侧选择想要的框架,拖拽即可迅速的完成前端的基础框架,对于开发本项目来说是最好的选择。
1.3 数据库技术
MySQL是一个处理互相关联之间的逻辑,并存取这些数据的一套程序。如今的这样的数据库有很多种,包括Oracle、SQLServer,虽然MySQL不是最优秀的一个,但最受到中小型企业喜爱的数据库管理系统却是MySQL,其中一个原因就是MySQL是一款开源软件,并且功能还很强大;另外MySQL是由最基础的C语言和C++语言编写的,进行多种测试后投入使用[18]。
MySQL的特点有很多,不过最重要的一点还是开源、免费、使⽤范围广,跨平台支持性好,提供了多种语言的调用应用程序编程接口。MySQL是目前为止最流行的关系数据库管理系统之一。MySQL数据库系统是完全通过网络来实现跨平台关系的,是具备C/S体系结构的DDBMS[20]。MySQL之所以受到了广大自由软件编程爱好者的偏爱,是因为其运行速度快、善于变化、经济实惠、实用性强、管理方便、使用便捷、安全可靠、巧妙的系统结构以及丰富的API等方面[21],为建立基于数据库动态网站起到了极大的作用。
MySQL包含了4种类的索引,其中包括普通索引,唯一索引,主键索引和全文索引,能大大的提高数据库的检索速度,相比较这些索引占用数据库的物理和数据空间,还是非常值得的。
MySQL对于事务处理功能也十分优秀,不仅能防止意外操作失误导致的数据损失,而且也能大大加强数据的安全性。此项功能无论对开发人员还是对于使用MySQL为基础的平台的用户来说,都是一个很好的安全保障。
1.4 本章小结
本章主要描述了本文所提及到的核心技术,包含Spring、SpringMVC、Hibernate、jQuery、Bootstrap、MySQL等等,从前台技术到后端引用均有详细介绍。对于该系统的数据库及底层框架结构,均做了明确统一的描述介绍。通过深入了解学习这些技术,为后续系统的实现完成打下了稳固的基础。

2 系统分析

2.1 需求分析
本系统主要是为餐饮企业提供菜品信息管理、门店信息管理、销售额管理等服务,并为用户提供在线点餐和支付等功能[22]。通过对多家典型餐饮企业地调研发现,线上点餐系统需求分析主要分为以下几点[23]。
1.商家登录。商家需在系统后台管理界面内进行登录操作,若无账号可通过注册账号账号,再完成登录操作,若未登录就进入主页面则无法对整个系统进行管理操作。
2.维护实时信息。餐饮企业可以通过后台实时维护店内信息以及菜单信息等,保证各种信息的实效性与准确性。
3.订单整合。餐饮企业可以在后台对订单进行销售额统计、餐位和订单信息管理等一系列操作。
4.订单与支付。顾户到店选好位置后,只需通过扫描桌上二维码即可进入点餐主界面,然后进行点餐的一系列操作,最后可直接进行支付结算。
5.便利性。用户一切点餐操作只需通过二维码进行;餐饮企业能通过后台及时收到用户订单,迅速对订单进行反馈处理。
6.实用性。系统主页面美观且直观,用户操作需简单便捷,各项功能使用起来一目了然。
7.完整性。顾客整个点餐过程的数据要完整,以便商家进行销售分类统计。
非功能性需求是为了本系统能够提高用户地体验而对系统需求做出的补充,设计了许多提示信息来提示用户,以便用户更好的去使用本系统[24]。在开发系统时,选用了含义明确的图标,颜色鲜明的提示,整个页面简洁美观,操作栏处于明显位置,各功能页面风格统一,能良好的显示出图片文字信息[25]。并且因为餐饮企业需求日新月异,可拓展性是一个极其重要的因素,预留出了可以进行升级的模块,来应对未来变化而对系统进行更新升级维护。
可拓展性是指本系统是一个处于长期活跃使用的系统,所以对于可拓展性方面是一个需要去重点考虑的因素,预留出可以进行升级的模块。可以对未来的餐饮企业需求变化问题,对系统进行更新升级维护。
可维护性是指为了用户的使用体验,系统将定期进行维护,将不必要出现的内容进行更新,对经过实际测试证明出后的系统错误进行更改和预防性维护。
2.2 系统工作流程
首先普通用户只需要扫描二维码就可进入到点餐界面,在此页面可以进行点餐支付功能,如查看菜品,加入购物车并下单等,最后可以直接通过二维码进行支付结算,如图2.1所示。
在这里插入图片描述

图2.1 普通用户部分功能流程图
其次管理员角色,管理员登录后才可以进行对各大模块的管理工作。可以对菜品进行添加、删除、修改、查找操作,对分类进行增加、删除、修改、操作,对餐位进行添加、删除、操作,会员信息管理,查看目前订单,完成销售统计,商家信息维护等操作,从而帮助餐厅更高效地管理餐厅。如图2.2所示。
在这里插入图片描述

图2.2 管理员部分功能流程图
2.3 用例分析
系统执行的一个动作序列或者与用户的交互,这些动作必须对某个特定的使用者产生可观测的、有价值的结果。是各种系统受益人之间的一种行为契约,建立契约的目的是为了达成某种目标,因此每一个用例及其名称实际上都应代表一个用户目标,这个目标是否得到真正满足正是判断抽取的某个用例是否有价值的关键。用例分析是从用例模型到分析模型的过程,是需求与设计之间的桥梁。用例分析把系统的行为分配给分析类,让分析类交互完成系统的行为。
基于此分析出,本项目涉及管理员和普通顾客用户两类系统,管理员和普通顾客用户属于系统外部,用例属于系统内部;两类系统均可以驱动用户功能用例包含常规的系统基本功能,普通顾客用户可以驱动查看菜品、添加购物车、删除购物车、下单结算等功能。管理员则可以驱动菜品信息、会员信息、订单信息、销售信息、商家信息等管理。如图2.3所示。
在这里插入图片描述

图2.3 系统用例图
管理员为唯一角色,登录与其他所有用例都有include关系。管理员可以登录、注销、修改个人信息、菜单信息管理、会员信息管理、订单信息管理、销售信息管理、门店信息管理等。管理员的用例图如图2.4所示。
在这里插入图片描述

图2.4 管理员的用例图
2.4 本章小结
本章从点餐系统的需求分析以及系统具体的工作流程两个角度来进行描述,系统中普通用户只需要扫描二维码就可进行点餐操作,管理员则需要登录才能访问本系统,对本系统进行操作。不同角色按照身份进入不同的首页面,进行不同的操作等工作流程的介绍。

3 系统设计

3.1 系统总体设计
3.1.1 系统体系结构
线上点餐服务系统系统体系结构分为5层,分别为表现层、控制层、逻辑层、数据访问层和数据库5层。第1层表现层为用户所能观测到的方面,显示的界面、显示的图表、数据等情况,包括用户方面所使用的各种设备、硬软件等;第2层为控制层,也就是将请求从页面转到后台代码,将多种关系分开控制、提高功能的强度,增强独立性;第3层是逻辑层,负责处理数据,并对数据库执行复杂的逻辑决策和数据验证,为各种功能提供所运用的逻辑思维;第4层是数据访问层,本层负责将数据存入数据库中,主要对MySQL数据库的访问和应用,使数据持久化;第5层数据库,是本系统所有经过处理的数据最终所储存的位置,实现了数据的集中控制与管理。
本系统结合MVC设计模型,Controller层主要来处理用户的请求,然后传到Model层来进行数据处理,比如获取数据库连接,访问数据库等,再传给服务器端操作,最后通过View层显示数据,系统体系结构图如图3.1所示。
在这里插入图片描述

图3.1 系统体系结构图
3.1.2 系统功能模块设计
线上点餐系统将从前台、后台两个角度进行模块划分;前台由菜品搜索、购物车、订单管理三个模块组成;后台管理程序功能主要包括订单统计管理、菜单信息维护、商业信息管理三个功能模块,系统总体结构图如图3.2所示。
在这里插入图片描述

图3.2 总体功能结构图
3.2 系统详细设计
3.2.1 数据库设计
数据库的设计是信息系统将系统需求的分析,达到具体系统的实现的第一步,也是最关键的问题,建立一个数据库及其应用系统来满足信息要求和处理要求。经过对多家典型餐饮企业的调研,设计出对应的系统概念结构。系统E-R图如图3.3所示。
在这里插入图片描述

图3.3 系统E-R图
逻辑结构设计如表3.1至表3.11所示,表中有3个字段,1个整型字段,2个字符串类型,所有字段不允许为空,并与实际内容相符合,其中主要字段Dishid可以自行增加并且不允许为空,如表3.1所示。
表3.1 做菜表
字段名 类型 约束 描述
Dishid INT(255) PK、AI 菜品编号
Amount VARCHAR(255) Not null 份数
Dishvariety VARCHAR(255) Not null 口味

表中有2个字段,均为整型字段,所有字段不允许空,主要字段Deskid可以自行增加并且不允许为空,如表3.2所示。
表3.2 座位使用情况表
字段名 类型 约束 描述
Deskid INT(255) PK、AI 桌号
Use VARCHAR(255) Not null 是否使用

表中有9个字段,6个整型字段,3个字符串类型,所有字段不允许空,主要字段Deskid可以自行增加并且不允许为空,如表3.3所示。
表3.3 点菜表
字段名 类型 约束 描述
Deskid INT(255) PK、AI 桌号
Dishedtime VARCHAR(255) Not null 点菜时间
Dishid INT(255) Not null 菜品编号
Amount INT(255) Not null 份数
Dishvariety INT(255) Not null 口味
Customers INT(255) Not null 顾客人数
Memberid VARCHAR(255) Not null 会员id
Dishplay VARCHAR(255) Not null 付款
Cooked INT(255) Not null 完成结果

表中有9个字段,4个整型字段,5个字符串类型,所有字段不允许空,主要字段Dishid可以自行增加并且不允许为空,如表3.4所示。
表3.4 菜品表
字段名 类型 约束 描述
Dishid INT(255) PK、AI 菜品编号
Dishname VARCHAR(255) Not null 菜品名称
Dishprice VARCHAR(255) Not null 菜品单价
Dishdiscount VARCHAR(255) Not null 菜品折扣
Freq INT(255) Not null 评分次数
Scores INT(255) Not null 评价总分
Average INT(255) Not null 平均分
Dishvariety VARCHAR(255) Not null 菜品口味

表中有6个字段,1个整型字段,5个字符串类型,所有字段不允许空,主要字段Dishedtoken可以自行增加并且不允许为空,用于记录每次的消费情况。如表3.5所示。
表3.5 销售表
字段名 类型 约束 描述
Dishedtoken INT(255) PK、AI 一桌子的菜单表示
Dishedtime VARCHAR(255) Not null 点餐时间
Deskid VARCHAR(255) Not null 桌号
Dishid VARCHAR(255) Not null 菜品编号
Amount VARCHAR(255) Not null 菜品份数
Dishplay VARCHAR(255) Not null 付款

表中有4个字段,2个整型字段,2个字符串类型,所有字段不允许空,主要字段LoginLogId可以自行增加并且不允许为空,用于记录每次登录的登录信息。如表3.6所示。
表3.6 登录日志表
字段名 类型 约束 描述
LoginLogId INT(255) PK、AI 登录编号
LoginDateTime VARCHAR(255) Not null 登录时间
LoginIp VARCHAR(255) Not null 登录IP
LoginId INT(255) Not null 登录ID

表中有6个字段,2个整型字段,4个字符串类型,所有字段不允许空,主要字段LoginId可以自行增加并且不允许为空,如表3.7所示。
表3.7 登录信息表
字段名 类型 约束 描述
LoginId INT(255) PK、AI 序号
LoginName VARCHAR(255) Not null 登录名
Password VARCHAR(255) Not null 密码
Nickname VARCHAR(255) Not null 昵称
LoginTime INT(255) Not null 登录次数
Remark VARCHAR(255) Not null 备注

表中有5个字段,1个整型字段,4个字符串类型,所有字段不允许空,主要字段Memberid可以自行增加并且不允许为空,用于储存会员的基本信息。如表3.8所示。
表3.8 会员表
字段名 类型 约束 描述
Memberid INT(255) PK、AI 会员ID
Passwd VARCHAR(255) Not null 密码
Membername VARCHAR(255) Not null 会员姓名
Customcounts VARCHAR(255) Not null 消费次数
Custompay VARCHAR(255) Not null 总消费金额

表中有2个字段,1个整型字段,1个字符串类型,所有字段不允许空,主要字段Date可以自行增加并且不允许为空,如表3.9所示。
表3.9 销售统计表
字段名 类型 约束 描述
Date INT(255) PK、AI 日期
Sales VARCHAR(255) Not null 销售额

表中有4个字段,1个整型字段,3个字符串类型,所有字段不允许空,主要字段WebInformationId可以自行增加并且不允许为空,如表3.10所示。
表3.10 Web信息表
字段名 类型 约束 描述
WebInformationId INT(255) PK、AI Web信息Id
WebInformationName VARCHAR(255) Not null Web信息名称
Content VARCHAR(255) Not null 内容
Dercription VARCHAR(255) Not null 描述
表中有5个字段,2个整型字段,2个字符串类型,1个时间戳类型字段所有字段不允许空,主要字段FeedbackId可以自行增加并且不允许为空,如表3.11所示。
表3.11 反馈信息表
字段名 类型 约束 描述
FeedbackId INT(255) PK、AI 反馈编号
Content VARCHAR(255) Not null 内容
FeedbackDateTime TIMESTAMP Not null 反馈时间
LoginId INT(255) Not null 登录ID
Dercription VARCHAR(255) Not null 描述
3.2.2 功能设计
添加菜品信息功能,管理员通过登录进入主界面后,选择菜品管理模块,点击菜品添加,即进入到添加菜品界面,按照需求进行输入,点击添加,即可将所输入的菜品信息保存到数据库中。添加菜品信息功能的时序图如图3.4所示。
在这里插入图片描述

图3.4 菜品信息添加功能时序图
菜品信息添加功能设计,首先管理员进入添加界面,即adddish.jsp页面,按照要求输入菜品信息,其中包括菜品名称、价格等,通过点击添加按钮完成信息添加操作。录入的菜品信息将传送至后端服务器并通过AdddishController接收并传递给DishService进行结果处理,进而再传递给DishDao,DishDao会调用insert()方法对数据库进行操作。设计思路如表3.12所示。
表3.12 菜品信息添加功能描述
编号 类名 功能描述
1 adddish.jsp 按需求输入菜品信息点击添加按钮。随后将输入信息以POST方式提交给AdddishController。
2 AdddishController 接收来自JSP页面表单传递的数据,进行处理后传递给DishService。
3 DishService 调用insert()方法,接收并处理AdddishController传递的数据,随后传递给DishDao。
4 DishDao 调用insert()方法操作数据库,完成菜品信息添加功能,并返回操作结果。
删除菜品信息功能,管理员通过登录进入主界面后,选择菜品管理模块,即进入到菜品显示界面,选择需要删除的菜品信息并点击右侧删除按钮,会提示是否删除信息,点击确定,即可将此条数据在数据库中删除。并也将不再显示删除过的菜品信息。删除菜品信息的时序图如图3.5所示。
在这里插入图片描述

图3.5 菜品信息删除功能时序图
菜品信息删除功能设计,首先管理员进入菜品信息界面,即adddish.jsp页面,选择需要删除的一条菜品信息并且点击右侧删除按钮,系统会提示是否删除此条信息,点击确定删除,即可完成对此条菜品信息的删除操作。用户删除菜品信息序号将传送至后端服务器,并通过AdddishController接收并传递给DishService进行结果处理,进而再传递给DishDao,DishDao会调用delete()方法对数据库进行操作。设计思路如表3.13所示。
表3.13 菜品信息删除功能描述
编号 类名 功能描述
1 adddish.jsp 按需求对某条菜品信息点击右侧删除按钮。随后将请求信息以POST方式提交给AdddishController。
2 AdddishController 接收来自JSP页面传递的菜品序号信息,进行处理后传递给DishService。
3 DishService 调用delete()方法,接收并处理AdddishController传递的数据,随后传递给DishDao。
4 DishDao 调用delete()方法操作数据库,完成菜品信息删除功能,并返回操作结果。
修改菜品信息功能,管理员通过登录进入主界面后,选择菜品管理模块,即进入到菜品显示界面,选择需要修改的菜品信息并点击右侧修改按钮,即可对此条信息进行重新编辑,点击修改,即可将此条数据在数据库中更新。修改菜品信息功能的时序图如图3.6所示。
在这里插入图片描述

图3.6 菜品信息修改功能时序图
菜品信息修改功能设计,首先管理员进入菜品信息界面,选择需要修改的一条菜品信息并且点击右侧修改按钮,在修改本文框中对菜品信息重新输入,点击修改,即完成对此条菜品信息的修改操作。用户修改菜品信息序号将传送至后端服务器,并通过AdddishController接收并传递给DishService进行结果处理,进而再传递给DishDao,DishDao会调用update()方法对数据库进行操作,结果将被返回给管理员。设计思路如表3.14所示。
表3.14 菜品信息修改功能描述
编号 类名 功能描述
1 adddish.jsp 按需求对某条菜品信息点击右侧修改按钮。随后将请求信息以POST方式提交给AdddishController。
2 AdddishController 接收来自JSP页面传递的菜品序号信息,进行处理后传递给DishService。
3 DishService 调用update()方法,接收并处理AdddishController传递的数据,随后传递给DishDao。
4 DishDao 调用update()方法操作数据库,完成菜品信息修改功能,并返回操作结果。

3.3 本章小结
本章介绍了系统的设计思路、数据库表的设计、功能设计,为完成后续具体设计打下基础,将系统进行划分,通过图表等方式进行具描述。

4 系统实现

4.1 开发环境
服务器硬件方面CPU要求i5以上;内存要求不小于512MB;硬盘要求不小于50G;服务器软件方面操作系统为Windows 10;数据库服务器要求使用MySQL Workbench 6.3;Web服务器要求使用Google Chrome55.0或者以上;客户端软件方面操作要求Windows7、Windows8或者Windows10;浏览器要求使用Google Chrome55.0或者以上;开发工具使用Myeclipse。
4.2 开发规范
4.2.1 命名规范
包名:包名一般是由全部小写的字母构成的唯一包名,中间由点区分开特定的目录名,例如:java.avt.event;类名:首字母缩写为大写,大写由多个首字母缩写合成,类名尽可能简洁明了,例如class Hello;接口名:与类名相同的命名规则;方法名:在多个单词的组合中,第一个单词是一个普通动词、一个首字母缩略词和每个单词的中间字母;变量名:全部小写,且在命名时最好便于区分记忆,例如:age;常量名:基本数据类型的常量名为全大写与变量名规则相似。
4.2.2 有关库的规范
数据库要以符合实际的情况去命名,一切表名与字段名称不能出现汉字或者特殊符号;并且数据库任何一张表都必须有主键字段;数据库中任何一张表的主键字段必须自增长且唯一。
4.2.3 其他规范
在任何软件的生命周期中,超过五分之四的花费会对其的维护上,编码规范能大大加强软件的可读性,使其更好的被理解,因此编码规范尤为重要,代码的缩进要使用Tab键而不是用空格来将其分开,if条件语句中的{也需与其在同一行;最好将jsp文件、HTML与JS和CSS分开;前端部分要有一定的注释,便于表明所要的含义,对于内容的表达一定要表述清楚,其格式不限。后台部分也需进行注释说明,包括单行注释、多行注释、文本注释等。
4.3 核心功能实现
管理员通过用户名密码进行登录后,即可进入管理系统主界面,在界面左侧显示了本系统的几大功能,分别为菜品管理、会员信息管理、订单管理、销售统计、和信息维护,点击一级导航栏信息,会显示二级导航栏内信息。如图4.1所示。
在这里插入图片描述

图4.1 线上点餐管理系统管理员主界面
4.3.1 添加菜品功能实现
用户进行登录后,选择左侧导航栏中的菜品管理,进入到添加菜品界面,在本页面的添加框中按照提示输入菜品名称、菜品单价、菜品折扣等等信息。点击添加按钮,即可将新录入的菜品信息添加进数据库中,并且对新添加的菜品信息进行显示。功能界面如图4.2所示。
在这里插入图片描述

图4.2 添加菜品信息功能界面
添加菜品信息核心代码如下所示。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
response.setContentType(“text/html”);
String operateType = request.getParameter(“hidOperateType”);
try{
if(operateType != null && operateType.compareToIgnoreCase(“add”) == 0 ){
DishesBean dishes = new DishesBean();
// dishes.setDishesId();
dishes.setDishname(request.getParameter(“Dishname”));
dishes.setDishprice(request.getParameter(“Dishprice”));
dishes.setDishdiscount(request.getParameter(“Dishdiscount”));
dishes.setFreq(request.getParameter(“Freq”));
dishes.setScores(request.getParameter(“Scores”));
dishes.setAverage(request.getParameter(“Average”));
dishes.setDishphotoimage(request.getParameter(“Dishphotoimage”));
dishes.setDishvariety(request.getParameter(“Dishvariety”));
DishesDao dao = new DishesDao();
if (dao.insert(dishes) > 0)
request.setAttribute(“AlertMessage”, “alert(‘添加成功!’);”);
else
request.setAttribute(“AlertMessage”, “alert(‘添加失败!’);”);
}
}
catch (RuntimeException e){
request.setAttribute(“AlertMessage”, “alert('” + e.getMessage() + “');”);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
doGet(request,response);
}
4.3.2 删除会员信息功能实现
管理员登录进入系统后,选择左侧导航栏中的会员管理,进入到显示会员信息界面,在本页面能够显示所有的会员信息,对要删除的一条数据信息点击右侧的删除按钮,系统会提示是否删除信息,点击确定按钮,即可将所选择信息从数据库中删除,并且页面将刷新,不再显示已删除的会员信息,对会员信息进行更新。功能界面如图4.3所示。
在这里插入图片描述

图4.3 删除会员信息功能界面
删除会员信息核心代码如下所示。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
response.setContentType(“text/html”);
MemberBean member = new MemberBean();
String operateType = request.getParameter(“hidOperateType”);
try{
if(operateType != null && operateType.compareToIgnoreCase(“remove”) == 0 ){
int memberid = 0;
try{
memberid = Integer.parseInt(request.getParameter(“hidMemberid”));
}catch(Exception ex){}
MemberDao dao = new MemberDao();
if (dao.delete(memberid) > 0)
request.setAttribute(“AlertMessage”, “alert(‘删除成功!’);”);
else
request.setAttribute(“AlertMessage”, “alert(‘删除失败!’);”);
}
}
catch (RuntimeException e){
request.setAttribute(“AlertMessage”, “alert('” + e.getMessage() + “');”);
} catch (SQLException e) {
e.printStackTrace();
}
doGet(request,response);
}
4.3.3 修改会员信息功能实现
管理员登录进入系统后,选择左侧导航栏中的会员管理,进入到显示会员信息界面,在本页面能够显示所有的会员信息。在此区域设有修改按钮,对要修改的一条数据信息点击右侧的修改按钮,系统会将此条信息变更为可输入状态,根据系统的提示,对密码、会员姓名、消费次数、总消费金额等信息进行重新定义,修改完成,点击确定按钮,即可将所选择信息从数据库中更新,并且页面将刷新,显示修改后的会员信息,对会员信息进行更新。功能界面如图4.4所示。
在这里插入图片描述

图4.4 修改会员信息功能界面
修改会员信息核心代码如下所示。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
response.setContentType(“text/html”);
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
response.setContentType(“text/html”);
MemberBean member = new MemberBean();
String operateType = request.getParameter(“hidOperateType”);
try{
if(operateType != null && operateType.compareToIgnoreCase(“modify”) == 0 ){
int memberid = 0;
try{
Memberid = Integer.parseInt(request.getParameter(“hidMemberid”));
}catch(Exception ex)
{
}
MemberBean Member = service.search(Memberid);
if (Member != null)
request.setAttribute(“ModifyMember”, Member); // 将要修改的信息带回界面层
else
request.setAttribute(“AlertMessage”, “alert(‘查无该会员信息,不能修改!’);”);
//否则将输出错误信息
}
catch (RuntimeException e){
request.setAttribute(“AlertMessage”, “alert('” + e.getMessage() + “');”);
//异常处理
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
doGet(request,response);
}
4.4 本章小结
本章主要描述了开发、应用系统的环境、开发项目时所要求的开发规范问题及对项目功能实现情况。对项目具体数据以及主要功能的操作方式、实现方法,进行了简单的介绍,并通过功能实现的截图与核心代码的展示等方面对系统的核心功能进行了详细的描述。

5 系统测试

本系统的测试预分为两个阶段进行测试,为保证准确性,抽取每阶段最具代表性也最重要的模块,进行随机抽样测试,最终选取了登录模块和菜品添加功能模块以及新会员录入功能模块进行测试。
5.1 登录测试
本测试计划包括两种阶段,一是测试人员输入正确的名称和正确的密码进行后,进行登陆的行为操作,测试是否可以通过正确的名称或密码登录进入首页;二是测试人员输入错误的名称或者错误的密码后,进行登录的行为操作,测试是否可以通过不正确的名称或者密码登录进入首页。主要对用户的误操作进行测试,观测是否会因此导致系统进行错误的识别操作。登录的测试用例如表5.1所示。
表5.1 登录测试
用例编号 操作 输入数据 预期结果 实际结果
5.1.1 输入准确无误 用户名:xiafan 登录成功 成功进入首页
的用户名和密 密码:123456
码后,进行登
录行为操作
5.1.2 输入准确无误 用户名:xiafan 登录失败 系统提示:密码错误
的用户名和随 密码:654321
意输入的密码
后,进行登陆
的行为操作
5.1.3 输入随意的用 用户名:xiafan666 登录失败 系统提示:用户名不
户名和正确的 密码:123456 存在
密码后,进行
登录的行为操

5.1.4 输入随意的用 用户名:xiafan666 登录失败 系统提示:用户名不
户名和密码后 密码:654321 存在
,进行登录的
行为操作
测试结果为登录功能成立,如果用户输入的信息无误,便能在数据库中匹配到对应信息记录,并且成功登录。若有且只有一条信息不匹配,则登录失败。
5.2 菜品添加测试
本测试计划包括两种阶段,一是测试人员输入未存在于数据库的菜名和存在与数据库的口味后,进行添加的行为操作,测试是否可以正常添加数据进入数据库;二是测试人员输入已经存在的菜名和未存在的口味后,进行添加的行为操作,测试是否可以通过非法的添加增加数据进入数据库。添加的测试用例如表5.2所示。
表5.2 菜品添加测试
用例编号 操作 输入数据 预期结果 实际结果
5.2.1 输入未存在数 菜名:鸡翅 添加成功 系统提示:添加成功
据库的菜名和 口味:咸
已存在的口味
后,进行添加
的行为操作
5.2.2 输入已存在数 菜名:鸡腿 添加失败 系统提示:添加失败
据库的菜名和 口味:咸
已存在的口味
后,进行添加
的行为操作
5.2.3 输入未存在数 菜名:鸡翅 添加失败 系统提示:添加失败
据库的菜名和 口味:苦
未存在的口味
后,进行添加
的行为操作
5.2.4 输入已存在数 菜名:鸡腿 添加失败 系统提示:添加失败
据库的菜名和 口味:苦
未存在的口味
后,进行添加
的行为操作
测试结果为添加功能成立,如果用户输入的信息无误符合要求,便能在数据库中添加对应信息记录,并且成功添加。若有一条信息不合法,则添加失败。
5.3 新会员录入测试
本测试计划包括两种阶段,一是测试人员输入未存在的名称和正确的密码格式进行后,进行添加的行为操作,测试是否可以通过未存在的名称以及正确的密码格式添加新的会员信息;二是测试人员输入已存在的名称或者不正确的密码格式后,进行添加的行为操作,测试是否可以通过已存在的名称或者不正确的密码格式添加会员信息。主要对用户的误操作进行测试,观测是否会因此导致系统进行错误的识别操作。添加的测试用例如表5.3所示。
表5.3 新会员录入测试
用例编号 操作 输入数据 预期结果 实际结果
5.3.1 输入未存在的 用户名:cuisit 添加成功 系统提示:新会员已
用户名和正确 密码:sdf15864 录入
格式的密码后
,进行添加的
行为操作
5.3.2 输入未存在的 用户名:cuisit 添加失败 系统提示:密码格式
用户名和不正 密码:15864 不正确
确格式的密码
后,进行添加
的行为操作
5.3.3 输入已存在的 用户名:geleifu 添加失败 系统提示:用户名已
用户名和正确 密码:sdf15864 存在
格式的密码后
,进行添加的
行为操作
5.3.4 输入已存在的 用户名:geleifu 添加失败 系统提示:用户名已
用户名和不正 密码:15864 存在
确的密码格式
后,进行添加
的行为操作
经过测试,新会员录入功能能够实现,如果输入的信息无误且符合验证要求,便能在数据库中添加对应信息记录,完成新会员录入功能。若输入的用户名信息在数据库中已经存在,或者输入的密码格式不正确,则添加失败。
5.4 会员信息删除测试
本测试计划包括两种阶段,一是测试人员选择一条数据后,进行删除行为操作,测试是否可以不选择任何一条会员信息,来进行删除的行为操作;二是测试人员选择某一条信息后,进行删除的行为操作,测试是否可以通过选择某一条会员信息,进行删除会员信息。通过编写实验方法、预期结果,然后进行实际测试,查看实际结果是否与预期结果相符合。主要对用户的误操作进行测试,观测是否会因此导致系统进行错误的识别操作。删除的测试用例如表5.4所示。
表5.4 会员信息删除测试
用例编号 操作 预期结果 实际结果
5.4.1 不选择任意一 删除失败 删除失败,未选择任何
条会员信息后 一条信息
,进行删除的
行为操作
5.4.2 选择某一条会 删除成功 选中的一条会员信息被
员信息后,进 删除
行删除的行为
操作
经过测试,会员删除功能能够实现,如果选中其中某一条信息点击删除按钮,便能在数据库中删除对应信息记录,完成会员信息删除功能。若未选择任何一条会员信息,就点击删除按钮,则删除失败。
5.5 本章小结
本章主要讲述了功能实现后对功能进行的测试操作。测试是整个管理系统开发过程中的不可或缺的步骤,确保项目的可用性,测试可以了解用户在使用时可能出现的问题,再出现问题时,能够及时修改,以免影响用户的体验。本次通过测试用例的方式来进行展示,其中测试功能为随机抽取的四个功能,分别为登录测试、菜品添加测试、会员信息添加测试、会员信息删除测试。经过测试,系统能够达到预期的设计要求。

结 论

在当前时代信息技术将推动餐饮企业管理水平的提升,怎么样做到高效管理、降低成本,是餐饮企业要考虑的重中之重的问题。通过对当下餐饮企业的现状,和人们日常所需进行分析调查,最终决定并完成了线上点餐管理系统的实际与实现。本文通过对国内外现状和发展趋势进行调研,发现本系统是具有实际的开发意义,无论是对餐饮企业还是对于日常消费着来说,线上点餐系统都存在着极大的需求。因此本文深入的对此问题进行了研究,将本系统的设计理念和实现方法详细的体现出来,很大程度上可以满足一类餐饮企业的基本需求。
考虑到科技发展迅速,在对线上点餐管理系统进行设计实现时,考虑了系统的可延展性和易于维护性,能时刻跟随企业的发展,做出升级变化。经实践证明本系统的研发是可以适应社会需求的。
本系统的设计与实现充分考虑到了各种典型餐饮企业的实际情况,有效地提高了当前餐饮企业的工作效率,控制了餐饮企业的运营成本,通过餐饮软件来带动整个管理过程,满足各种餐饮企业的需求,实现软件的实时升级。不过因为经验不足问题,本文系统还存在一些问题,需要继续完善弥补,是将来需要进一步去完善的工作。

致 谢

时光匆匆如流水,转眼间一到了大学毕业时节,毕业论文的完成也随之进入了尾声,在这期间,一直都离不开老师、同学、朋友们给我的热情帮助,人生能有多少这样的年华,所以这段时间对我是最重要也是最难忘的。
本论文在朱元华老师和刘建生老师悉心的指导下完成。导师渊博的专业知识、严谨的治学态度,精益求精地工作作风,诲人不倦的高尚师德,严于律己、宽以待人的崇高风范,朴实无法、平易近人的人格魅力对本人影响深远。不仅使本人树立了远大的学习目标、掌握了基本的研究方法,还使本人明白了许多为人处事的道理。本次论文从选题到完成,每一步都是在导师的悉心指导下完成的,倾注了导师大量的心血。
通过本次毕业设计,我对本行业了解了更多,也又学习到了更多,虽然开发项目的过程是很艰难的,有时一点小问题都会导致很大的问题,但正是在这个实践过程中,才能培养思维方式、表达能力和广阔视野。很庆幸这三年来我遇到了如此多的良师益友,无论在学习上、生活上,还是工作上,都给予了我无私地帮助和热心的照顾,让我在一个充满温馨的环境中度过三年的大学生活。感恩之情难以用言语量度,谨以最朴实的话语致以最崇高的敬意。

参考文献

[1]王文璞.无线点餐的运行模式研究[J].计算机光盘软件与应用,2013,16(9):133-134
[2]蔡琼,毛善友,张灿,等.无线点菜系统的设计[J].武汉工程大学学报ISTIC,2014,36(6)
[3]Hoo Meng Wong,Sagaya Sabestinal Amalathas.An Approach Towards Developing an Algorithm for Software Application Error Analysis[J].管理研究(英文版),2019,46
[4]Meier R.Professional Android 4 application development[M]. John Wiley & Sons, 2012:111
[5]杨廷发,丁川芸,兰全祥.基于SSH的二维码点餐系统的设计与实现[J].电脑知识与技术,2018,27
[6]Rogers R,Lombardo J,Mednieks Z,etal.Android application development: Programming with the Google SDK[M]. O"Reilly Media, Inc.,2009:53
[7]黄俊勇.基于Spring框架的研究与设计[J].电脑知识与技术,2018,14(3): 116-117,120
[8]赵晓华.基于PHP技术的中小企业网站开发[J].自动化与仪器仪表,2017(10): 158-160
[9]姚添译,杨廷发,兰全祥.Java EE中Filter技术的研究与应用[J].电脑知识与技术,2018,14(18):47-50
[10]Miryakar,Development of mobile applications using J2ME preventive notification system. Sushee1,2009.4
[11]马裕清.基于设计模式和的应用框架的研究,硕士论文.哈尔滨工程大学,2016
[12]黄秀娟.基于SpringMVC+Hibernate+Extjs框架的Web系统应用研究[J].电脑知识与技术,2015,11(16):63-65
[13]葛萌,黄素萍,欧阳宏基.基于Spring MVC框架的Java Web应用[J].计算机与现代化,2018,179
[14]胡杰,周鹏飞,郭乔进.基于MVC设计模式的SSH框架的研究[J].信息化研究,2016,46
[15]温立辉.Hibernate框架持久化应用及原理探析[J].科技创新与应用,2017(3): 97
[16]刘德山,杨彬彬.基于Hibernate框架的数据持久层架构设计及应用[J].微型机与应用,2011,30(15):12-14
[17]Crockford D.The application/json media type for javascript object notation (json)[J].2006:57-60
[18]潘凯华,李慧,刘欣等.MySQL快速入门[M],清华大学出版社,2012): 121-125
[19]Davis,M.E,Philips,J.A.学习PHP&MySQL;英文[M],东南大学出版社,2018:220
[20]袁峥,钟新林,许鼎.论MySQL简述[J].新一代(理论版),2019,23
[21]范开勇,陈宇收.MySQL数据库性能优化研究[J].中国新通信,2019,21
[22]沈鑫,陈华山.关于软件需求分析的理解[J].现代信息科技,2018,15
[23]徐鉴.计算机应用软件的需求分析与开发[J].数字技术与应用,2019,45
[24]王朔韬编著.软件是这样“炼”成的从软件需求分析到软件架构设计.北京:清华大学出版社, 2014.05.47-50
[25]刘伟著.互联网+餐饮一本书读懂餐饮新趋势.北京:中国铁道出版社, 2017.08.87-90

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值