基于SSH的二维码点餐系统的设计与实现
2018-01-04杨廷发丁川芸兰全祥
杨廷发 丁川芸 兰全祥
摘要:为了提高餐厅食客的点餐效率和餐厅的工作效率,为用户提供更好的就餐体验,设计并实现了基于SSH的线上点餐系统。对系统进行了需求分析和数据库设计,并选用Spring, SpringMVC, Hibernate作为开发框架,Mysql作为数据库,Tomcat作为服务器,实现了商家店铺信息维护、商家菜品信息管理、订单管理等模块,并为用户提供了二维码点餐及在线结算等功能,解决了菜品信息的实时性、点餐的快捷性、结算的便捷性等问题。
关键词:SSH;线上点餐;网站设计;二维码
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)30-0084-03
1 背景
随着现代科技的进步,互联网的应用和普及日益丰富着人们的生活。虽然网上订餐因其便捷性受到众多用户青睐,但更多人在工作之余、亲友聚餐时更愿意选择到餐厅直接消费。然而,传统点餐、结账等环节极大地降低了用户体验。因此,开发一款通过二维码进行在线点餐、在线结算的线上点餐系统将能极好的提高餐厅的管理效率以及用户体验。
2 技术选型
基于SSH的二维码点餐系统采用Apache Tomcat+ Java+ Mysql的黄金组合方式进行开发[1], Apache Tomcat作为Web服务器,Java作为主要开发语言,Mysql作为数据库存储数据。系统使用SSH(Spring+ SpringMVC+ Hibernate)框架搭建系统结构,完成系统的请求处理、对象管理以及持久化操作。用户通过二维码访问点餐系统,完成菜品查看并创建订单,最终实现点餐和结算。
SSH框架由Spring,SpringMVC和Hibernate组成。Spring相对于JavaEE中的EJB而言,是一款轻量级的框架,也是是非侵入式的,基于Spring系统应用中代码没有过多的依赖,并且不局限于服务器端的开发[2]。
SpringMVC是一种基于Java,实现了Web MVC设计模式的请求驱动类型的轻量级WEB框架,即使用了MVC架构模式的思想,将WEB層职责解耦,也将控制器、模拟器对象、分派器以及处理对象的角色进行分离,实现了Spring的IoC思想[3]。
Hibernate是一个优秀的持久层框架,同时也是一个主流的ORM工具,可以让开发人员以对象思维操作关系型数据库,并且Hibernate对JDBC进行了轻量级的对象封装,其让编码过程变得更加简洁、高效[4]。
3 系统分析
3.1 需求分析
基于SSH的二维码点餐系统主要是为商家提供商品信息管理、消费额统计等,并为用户提供二维码点餐、在线结算、消费查询等功能,其面向的主要用户群体为店铺商家和普通消费者。经过调查研究发现,线上点餐系统需求分析按功能性需求和非功能性需求可归纳为以下几点。
功能性需求主要包括以下功能:
1) 商家登录。商家可以在系统后台管理界面进行登录,商家没有登录将无法进行后台管理操作。
2) 信息维护。商家可以通过后台管理程序维护商家店铺信息以及菜品信息等,保证信息的时效性与正确性。
3) 订单管理与统计。商家可以在后台管理程序中对订单进行管理、营业额统计以及餐桌和订单二维码信息管理。
4) 下单与结算。用户可以通过二维码进入点餐界面,然后查看菜品、加入购物车并下单,最后可直接通过二维码进行结账付款。
非功能性需求主要包括以下几点:
1) 便捷性。用户可直接通过扫描二维码进入餐厅点餐并下单;后台管理能够及时查看用户订单,对订单进行处理并生成相应的订单信息。
2) 友好性。系统页面美观且友好,用户操作需简单便捷,用户使用门槛低。
3) 安全性。商家后台登录模块要求保障用户数据安全,防止用户信息被窃取,同时对用户访问权限进行控制,确保系统安全。
4) 完整性。用户订单数据要确保其完整性,以便商家进行销售分类统计。
3.2 系统功能模块设计
点餐系统从层次上可划分为用户前台应用和商家后台管理程序。前台应用主要包括菜品查询、购物车和订单查看三个功能模块组成;后台功能主要包括餐厅订单管理、菜品信息管理以及商家信息管理三个功能模块,系统功能结构如图1所示。
3.2.1用户前台应用
前台主要用于向用户展示餐厅菜品,用户可通过扫描二维码直接进入点餐界面,实现查看菜品、加入购物车、下单以及在线结账等功能。用户所请求的资源如果已经存储在服务器中,则由服务器直接将资源推送至客户端;如果所请求的资源为动态资源(需与持久化层交互数据),则交由后台处理程序进行处理。
3.2.2 后台管理模块
商家可通过后台管理程序对餐厅基本信息进行维护,保障菜品信息的正确性和时效性。商家可以添加、更新和删除菜品,创建和删除菜品类别,且可以对餐厅桌位进行管理。除此,商家还可以进行餐厅订单管理以及销售统计。
3.3 数据库设计
数据库设计是信息系统需求分析到系统实现中的一个关键环节。经过需求调研,设计系统的概念结构并得出数据库逻辑结构,然后对设计后的E-R图进行转换,使其逻辑结构符合DBMS商品支持的数据模型。系统采用Mysql作为系统数据持久化的工具,通过对系统的功能分析主要包括商家、菜系、餐桌、菜品、系统管理员、订单、分类等系统E-R图如图2所示。
4 系统实现
基于SSH线上点餐系统主要是为商家和用户提供便利的在消费服务点餐服务。该文主要介绍商家登录、菜品信息维护、用户二维码点餐以及结算等功能。
4.1 商家登录
线上订餐系统需要商家登录才能进行后台数据管理,普通用户只需扫描二维码便可访问系统。登录模块在前端采用JavaScript对用户输入数据进行初步验证,后端采用Struts2验证框架二次验证,当输入错误时将给出友好提示。另外,登录界面还采用随机函数生成验证码并采用MD5对用户密码进行加密,提高系统安全性。另外,还使用了过滤器或者拦截器对用户访问进行控制和拦截[5]。以下为登录验证模块代码和商家登录代码。
数据验证XML编码如下:
商家登录部分代码如下:
business.setPassword(Conver2MD5.getMD5(business.getPassword()));
if (new BusinessDaoImp().selectUsername(business)) {return SUCCESS;}else{
return ERROR;}
4.2 菜品信息维护
商家可以通过后台管理程序对当前的餐厅菜品信息进行维护。商家可以删除过时的菜品或者添加新的菜品,也可以为菜品上传最新图片。
添加菜品代码如下:
public ModelAndView insert(@RequestParam("src") MultipartFile pictureFile, Dishes dishes) {
ModelAndView mod;
mod = serviceImp.insert(pictureFile,dishes);
mod.setViewName("saveFood");
return mod;
}
商家在进行其他数据操作时,若填写信息不正确,会提示输入不合法,无法完成对数据库的持久化操作。
4.3 二维码点餐和结算
用户可以通过二维码直接进入餐厅进行点餐,在就餐结束之后可扫描系统生成的二维码进行结账。该系统采用QRCode生成二维码,生产二维碼代码如下:
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');
qrcode.setQrcodeVersion(7);
byte[] bytes = data.getBytes(StandardCharsets.UTF_8);
BufferedImage image= new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
Graphics2D g = image.createGraphics();
g.setBackground(Color.white);
g.clearRect(0, 0, 139, 139);
g.setColor(Color.blue);
if (bytes.length > 0 && bytes.length < 128) {
boolean[][] b = qrcode.calQrcode(bytes);
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b.length; j++) {
if (b[i][j]) {
g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);
}}}}
系统后台二维码收款效果图如图4所示。
4.4 购物车管理
购物车管理可以实现菜品的添加和移除,并实时计算商品金额,关键代码如下。
Map
Dishes onedishes = (Dishes) request.getSession().getAttribute("onedishes");
Map
double price = userDishesService.countPrice(dishesMap);
double mprice = userDishesService.countMPrice(dishesMap);
5 结束语
基于SSH的线上点餐系统为商家管理餐厅菜品信息以及用户点餐、结账提供了极大的便利。系统采用SSH框架,实现了商家登录、菜品信息维护、用户二维码点餐以及结算等功能,有效地解决了菜品信息的实时性、点餐的快捷性、结算的便捷性等问题。
参考文献:
[1] 赵晓华. 基于PHP技术的中小企业网站开发[J]. 自动化与仪器仪表, 2017(10): 158-160.
[2] 黄俊勇. 基于Spring框架的研究与设计[J]. 电脑知识与技术, 2018, 14(3): 116-117, 120.
[3] 黄秀娟. 基于SpringMVC+Hibernate+Extjs框架的Web系统应用研究[J]. 电脑知识与技术, 2015, 11(16): 63-65.
[4] 温立辉. Hibernate框架持久化应用及原理探析[J]. 科技创新与应用, 2017(3): 97.
[5] 姚添译, 杨廷发, 兰全祥. Java EE中Filter技术的研究与应用[J]. 电脑知识与技术, 2018, 14(18): 47-50.
【通联编辑:谢媛媛】