?

基于Android的無線打印點餐系統

2016-12-07 08:04李明明馮陳偉
廈門理工學院學報 2016年5期
關鍵詞:服務器端調用菜品

張 璘,李明明,馮陳偉

(廈門理工學院光電與通信工程學院,福建 廈門 361024)

?

基于Android的無線打印點餐系統

張 璘,李明明,馮陳偉

(廈門理工學院光電與通信工程學院,福建 廈門 361024)

為實現客戶點餐與后廚無縫連接的點餐服務模式,設計了基于Android的無線打印點餐系統,系統共包括客戶端、服務器端和自主打印3個模塊.客戶端采用Eclipse開發軟件,服務器端用JavaWeb+Tomcat+MySQL開發技術,打印模塊采用Android自帶的無線打印函數,調用客戶訂單傳輸給打印機設備實現打印,3個模塊之間通過無線路由器連接.具體流程是Android客戶端通過HTTP協議向Web服務器發出請求,Web服務器將請求信息提交給相應的Servlet進行業務處理,Servlet通過JDBC訪問遠程MySQL數據庫,將結果以JSON格式的數據返回給Android客戶端,最后調用無線打印模塊將數據庫中的訂單直接輸出.

無線點餐系統;安卓系統;無線打印機;Wi-Fi

近年來隨著人力成本的逐年增加,作為低利潤的餐飲業經營模式也隨之改變,手機Android系統的廣泛應用與不斷滲透,正在改變傳統餐飲服務模式.目前市場上已有的點餐系統主要是基于ZigBee傳感網絡開發的點餐系統,服務員需要配備手持PDA設備,完成電子下單后發送到各路由器,進而匯總轉發給控制中心[1-2],這種做法不僅需要硬件投入,還需要無線傳感網絡的組建,特別是依然需要服務員的協助;另外,還有一種常見的外賣點餐模式,即客戶下載Android手機端APP完成自助下單,服務員登錄服務器集中處理后將訂單交由后廚[3-4],這樣能減少傳菜員數量,但仍存在下單時延性.為此,本文提出基于Android的無線打印全自助無縫點餐系統,該系統僅需在手機或pad上安裝應用軟件,就可完成包括客戶端的用戶登陸、點餐、菜單更新、結賬等功能,服務器端可實現用戶管理、菜品管理、餐桌管理、訂單管理等功能;此外,采用Android自帶的無線打印函數,可以將客戶訂單通過調用指令傳輸給打印機設備直接打印出來交給后廚,可節省傳菜人員,降低餐廳人力成本.

1 系統架構

基于Android的無線點菜系統包括:Android操作系統的智能終端、服務器、無線路由器以及打印機等.其中,帶有Android操作系統的智能終端可以由服務員幫忙操作使用,也可以由顧客自己進行操作使用;服務器是整個系統的核心,用戶終端需要通過無線路由器與服務器連接起來才能夠進行正常的點菜操作;無線路由作為服務器與點菜終端的橋梁是不可或缺的;打印機可以置于后廚,實時將顧客訂單打印出來.本文擬采用Android平板電腦作為顧客終端,以安裝有Tomcat和Mysql數據庫的PC電腦作為服務器端,用無線路由器作為各個設備之間數據通信的橋梁[3].系統原理如圖1所示.

2 總體設計

綜合考慮的C/S和B/S模式的優缺點,最終決定在安卓客戶端采用C/S模式,Web服務器端采用B/S模式.整個系統分為Android客戶端和服務器端,服務器端根據系統的需求以及復雜程度最終決定采用JavaWeb+Tomcat+MySQL這樣的一個組合來完成服務器端的設計.其需要對Android客戶端和MySQL數據庫之間的交互技術進行選擇.主要有以下兩個方案.

方案一、Android客戶端直接與數據庫連接進行相應的數據庫操作.

方案二、Android客戶端與Web服務器端進行連接,Web服務器與數據庫連接從而完成數據庫的相關操作.

第一種方式從實現上來講是比較簡單的,因為它是直接將Android客戶端與數據庫進行連接,而不需要再去開發一個服務器端作為中間件連接數據庫,直接在Android工程中引入java數據庫連接(javadatabaseconnectivity,簡稱JDBC)驅動,Android客戶端通過加載驅動與數據庫進行連接,從而完成對數據庫的相關操作.但是在實際操作中,該方式主要有以下兩方面的弊端:

1)因為在本系統的具體應用中Android客戶端通常是通過WIFI進行通信的,在這種情況下,使用JDBC與MySQL進行數據交互實現起來性能較差,查詢等操作耗時較長,特別是在有大量客戶端時更是不可取的.

2)使用JDBC與MySQL直接操作的過程中無法保證數據的安全性,因此在一些商業項目中都不會選擇這種方式.目前大部分Android項目都是采用第二種方案來實現Android客戶端和MySQL數據庫之間的交互,即通過中間件Web服務器與數據庫連接.

本系統的具體流程是Android客戶端和后臺管理系統,通過HTTP協議向Web服務器發出請求,Web服務器將請求信息提交給相應的Servlet進行業務處理,Servlet再通過JDBC訪問遠程MySQL數據庫[4],再將結果以JSON格式的數據返回給Android客戶端,Android客戶端端再對返回的JSON格式的數據進行解析得到結果.整體框架圖如圖2所示.

3 模塊的劃分與功能設計

3.1 客戶端主程序設計

采用Eclipse4.2.0作為開發工具,用JDK1.8.0_20作為編譯工具.圖3給出了客戶端主程序流程圖,包括客戶登陸、點餐、服務、結賬幾個模塊,主選單都是一個Activity,各個Activity的跳轉可以通過Intent實現,而Intent完成各個組件的通信,起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的解耦.

用戶打開程序時,是登陸界面,客戶可不必輸入賬號密碼直接進入主菜單界面進行點餐,會員使用自己的會員名登陸點餐,餐廳工作人員每人都有自己單獨的一個帳戶用于登錄,可以實現責任到人.

登陸成功以后,進入主選單(MainActivity),包括二大功能模塊,即點餐(OrderActivity)和結賬(CheckoutActivity).點餐模塊包括更新菜品和下單點菜:選擇更新菜品,則客戶端通過http網絡從服務器端獲取菜品信息,并將信息存儲至本地的MySQL數據庫;選擇點菜,則給出菜品列表,列表分不同樣式,如冷菜、熱菜、酒等,讓用戶點菜;用戶選擇完后,即可提交訂單(包括明細費用),并自動返回主選單,提交訂單后通過WIFI直接傳到服務器端數據庫MySQL,以方便后面結賬時查詢;選擇結賬,則WaiterCashierActivity接收要結賬的桌號調用OrderService將桌號傳給服務器的OrderServlet到數據庫中將這些信息整理好,生成本次用餐的明細和費用,同時將該結果反饋給服務器,服務員接到通知,將去對應的桌號完成買單服務.

3.2PC服務器端設計與實現

利用JavaWeb+MySQL結構,采用HTTP協議實現手機客戶端和服務器的交互;采用Tomcat6.0作為服務器,MySQL5.6.22作為數據庫,MyEclipse2014作為開發工具,采用JDK1.8.0_20作為編譯工具.服務器端主要根據客戶端發送過來的請求,調用相應的Servlet進行相應的業務處理[5],以此完成開桌、點菜、打印、結賬等一系列功能.所謂Servlet是由Sun公司制定的服務器端組件規范.一般情況下我們自己創建完Servlet后要繼承HttpServlet類(HttpServlet是專門用于響應HTTP請求的Servlet)并重寫里面的doGet()和doPost()方法實現我們自己需要的功能.Servlet程序將按以下步驟進行:(1)客戶端通過HTTP提交請求信息.(2)Web服務器接收客戶端傳過來的請求并轉給Servlet.(3)Servlet接收請求后進行相應的業務處理.(4)Servlet再將結果返回給服務器.(5)Web服務器再將結果返回給客戶端.

3.3MySQL數據庫

本系統主要采用MySQL作為數據庫,這個系統需要10張動態表:用戶表,任務表,預定表,菜品表,菜品類型表,菜系表,餐桌表,餐桌類別表,訂單表,訂單明細表.數據庫的訪問是通過JDBC實現的[6-8].當直接使用JDBC時會發現很多代碼是重復的,因此將重復代碼提取出來,保存到自定義的工具類DBUtil里,該類包含的方法有數據庫連接的開啟和關閉,再用到數據庫開啟關閉時就不用寫重復的代碼了,直接調用DBUtil里代碼就行.為了方便今后數據庫移植,又將相關的配置信息寫在配置文件DBConfig.properties中,這樣要更換數據庫只需修改配置文件里的信息就行了.

//數據庫驅動

driver=com.mysql.jdbc.Drievr

//數據庫連接url

url=jdbc:mysql://localhost/dinner?useUnicode=true&characterEncoding=utf-8

//用戶名程

username=root

//密碼

password=root

JDBC是由sun公司來定義的一套接口,各大數據庫廠商編寫各自驅動來實現sun公司的這套接口,應用程序也通過JDBC接口訪問數據庫,這樣的好處是同一套程序只需簡單的修改就能實現數據庫的更換.

應用程序是由我們自己來編寫的,代碼要想操作數據庫就需要通過JDBC,JDBC是JDK標準庫的一部分,核心部分都是接口,接口是一系列方法的聲明,是一些方法特征的集合,因此一個接口只有方法的特征沒有方法的實現是什么都做不了的,如果想要真正操作數據庫就需要一些實現的類,這些實現類就叫做驅動(Driver),每一個數據庫都有自己的Driver,這些Driver都是實現JDBC的接口.應用程序、JDBCAPI、數據庫驅動及數據庫之間的關系如圖4所示.

3.4 無線打印模塊

當客戶端點擊打印時,OrderDetailActivity里設置了打印按鈕的監聽事件,當打印按鈕被點擊就會調用OrderDetailService里的print方法向服務器的OrderDetailServlet發送打印請求,OrderDetailServlet通過接收客戶端傳來的桌號獲取該桌的訂單明細,然后再調用PrintLine里的print方法打印該桌訂單.打印流程圖見圖5.

PrintLine打印方法的實現,首先是根據打印機的IP地址和端口號與其建立起連接,接著編寫愛普生指令傳給打印機,完成字體設置,自動走紙等功能.再通過OutputStreamWriter里的write()方法向打印機發送要打印的內容進行打印.

4 結語

本文結合了Android開發技術、無線局域網技術以及JavaWeb開發技術,采用后臺數據庫通過JDBC接口訪問服務器端MySQL數據庫存儲點單菜品,調用無線打印模塊將數據庫中的訂單直接輸出打印給后廚.但是該系統還存在后續可以改進完善的地方,例如可以通過在客戶端添加本地數據庫提高多個客戶并發訪問服務器的運行效率;可以將服務器端重復功能調用的代碼提取出來寫在一個公共類里.

[1]馬斌,趙遼英.ZigBee無線傳感器網絡在點餐系統中的應[J].計算機系統應用,2010,19(1):119-122.

[2]李泉溪,吳碩.ZigBee無線點餐系統研究[J].河南科技大學學報,2011,32(5):28-32.

[3]陳曉峰,林正浩.基于Android的無線點餐系統設計[J].上海師范大學學報(自然科學版),2012,41(4):369-373.

[4]陳浩,李本富.基于Android云計算的移動點餐系統[J].計算機系統應用,2012,21(8):148-151.

[5]范成臣.淺析在JAVAWEB應用程序中使用Servlet技術[J].數字技術與應用,2013,9:121.

[6]郭廣軍,陳代武,胡玉平,等.基于JDBC的數據庫訪問技術的研究[J].南華大學學報(自然科學版),2005,19(2):50-57.

[7]PATELKJ,PATELU,OBERSNELA.PDA-basedwirelessfoodorderingsystemforhospitalityindustry:Acasestudyofboxhillinstitute[C]//WirelessTelecommunicationsSymposium.Pomona:California,2007:1-8.

[8]郭志宏.Android應用開發詳解[M].北京:電子工業出版社,2011:268-286.

(責任編輯 宋 靜)

Design of an Android-Based Wireless Ordering System

ZHANG Lin,LI Mingming,FENG Chenwei

(SchoolofOptoelectronic&CommunicationEngineering,XiamenUniversityofTechnology,Xiamen361024,China)

Inordertorealizetheseamlessconnectionbetweencustomerandkitchen,awirelessordering-printingsystembasedonAndroidwasdesigned,whichincludesmodulesofclient,serverandseparatedprintingconnectedbywirelessrouting.TheclientusesEclipsedevelopmentsoftware,theserverusestheJavaWeb+Tomcat+MySQLtechnology,andtheprintinguseswirelessprintingfunctionbasedonAndroidworkingwhenE-ordersreceived.TheprocessofthissystemisthattheclientsendsaHTTPrequesttotheWebserver,theserversubmitstheinformationtothecorrespondingServlet,theServletthenaccessestheremoteMySQLdatabaseusingJDBCandreturnstheresultantdatainJSONformattotheAndroidclient,andawirelessprintersendsoutthedatabaseorder.

wirelessorderingsystem;wirelessprinter;Android;Wi-Fi

2016-05-09

2016-10-09

福建省中青年教師教育科研項目(JA14233)

張璘(1981-),女,講師,碩士,研究方向為計算機網絡.E-mail:zhanglin603@aliyun.com

TP

A

1673-4432(2016)05-0074-05

猜你喜歡
服務器端調用菜品
團膳菜品質量管理存在的問題及完善策略
Linux環境下基于Socket的數據傳輸軟件設計
迷惑菜品又來了
核電項目物項調用管理的應用研究
假蒟葉系列菜品的開發利用現狀
基于Qt的安全即時通訊軟件服務器端設計
基于Qt的網絡聊天軟件服務器端設計
基于系統調用的惡意軟件檢測技術研究
基于C/S架構的嵌入式監控組態外設擴展機制研究與應用
利用RFC技術實現SAP系統接口通信
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合