楊廷發 丁川蕓 蘭全祥
摘要:為了提高餐廳食客的點餐效率和餐廳的工作效率,為用戶提供更好的就餐體驗,設計并實現了基于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.
【通聯編輯:謝媛媛】