Android云計(jì)算之移動(dòng)點(diǎn)餐系統(tǒng)分析與設(shè)計(jì)
移動(dòng)互聯(lián)網(wǎng)時(shí)代來(lái)臨,一個(gè)嶄新的時(shí)代開始了!
所謂移動(dòng)互聯(lián)網(wǎng)就是將移動(dòng)通信和互聯(lián)網(wǎng)整合在一起,是移動(dòng)設(shè)備(包括手機(jī)和上網(wǎng)本)可以隨時(shí)隨地訪問(wèn)互聯(lián)網(wǎng)資源和應(yīng)用。
云是由許多水分子組成的,幾乎有幾億個(gè)。云沒有中央控制,基本上可以隨風(fēng)吹向各處。從這個(gè)角度來(lái)說(shuō),Internet 中無(wú)數(shù)個(gè)具有各種用途的客戶機(jī)和服務(wù)器以及驅(qū)動(dòng)其發(fā)展的控制實(shí)體就像是云。將這一概念與移動(dòng)設(shè)備帶給我們的無(wú)線數(shù)據(jù)革命結(jié)合后,我們似乎就處在一種無(wú)形的云計(jì)算力量中了。
智能手機(jī)是移動(dòng)互聯(lián)網(wǎng)時(shí)代一個(gè)標(biāo)志性的客戶端工具,具有強(qiáng)大的移動(dòng)云計(jì)算和儲(chǔ)存能力,可以通過(guò)移動(dòng)通信網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)接入,從而實(shí)現(xiàn)各種各樣的富有創(chuàng)造力和想象力云應(yīng)用。
云計(jì)算將可移植設(shè)備與強(qiáng)大的服務(wù)器互為補(bǔ)充,它需要一個(gè)能夠讓服務(wù)器架構(gòu)師和程序員最大程度利用小型客戶機(jī)機(jī)器的操作系統(tǒng)。Android 就是這樣一種操作系統(tǒng)。
傳統(tǒng)的餐飲行業(yè),點(diǎn)餐過(guò)程都是有餐廳服務(wù)員人工完成的。通常過(guò)程是這樣的,客人進(jìn)入餐廳后,選好座位開始點(diǎn)餐,服務(wù)員等待客人點(diǎn)餐完成,將客人的點(diǎn)餐內(nèi)容送到廚房,有廚師下廚做菜。這一過(guò)程對(duì)一個(gè)小的餐館來(lái)說(shuō)沒有問(wèn)題,但如果餐館比較大、客人比較多或者客人要求某位不在餐廳現(xiàn)場(chǎng)的服務(wù)員或老板服務(wù),客人的等待時(shí)間就會(huì)比較長(zhǎng)。為了解決這個(gè)問(wèn)題,出現(xiàn)了無(wú)線點(diǎn)餐系統(tǒng),該系統(tǒng)有無(wú)線終端(一般是一個(gè)PDA)、無(wú)線路由器和后臺(tái)服務(wù)器組成。
但它的弊端很明顯,要么PDA 價(jià)格高、只能做點(diǎn)餐用、增加系統(tǒng)成本、造成資源浪費(fèi)等,要么基于傳統(tǒng)開發(fā)手段開發(fā)的B/S 系統(tǒng)架構(gòu)的點(diǎn)餐系統(tǒng),但往往在實(shí)際應(yīng)用中速度不盡人意。
1 系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)物理架構(gòu)
該系統(tǒng)主要包括后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器、WEB 服務(wù)器、無(wú)線網(wǎng)絡(luò)、Android 前端等部分。客戶端Android 系統(tǒng)智能手機(jī)具有前端處理與計(jì)算能力,而且通過(guò)無(wú)線網(wǎng)絡(luò)訪問(wèn)WEB 服務(wù)器,如果需要數(shù)據(jù)訪問(wèn),則訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù)。
客戶端采用Android 操作系統(tǒng)(1.5 版本以上)。
服務(wù)器端采用Tomcat WEB 服務(wù)器(5.5 版本以上)(也可以是其他WEB 服務(wù)器)、MySQL 數(shù)據(jù)庫(kù)。如圖1.
圖1 Android 云計(jì)算之移動(dòng)點(diǎn)餐系統(tǒng)物理架構(gòu)
1.2 系統(tǒng)技術(shù)選型
Android 客戶端應(yīng)用使用Java 技術(shù),網(wǎng)絡(luò)通信使用Apache HTTP協(xié)議客戶端,中間WEB服務(wù)器采用TomcatWEB 服務(wù)器技術(shù),采用Servlet 技術(shù)響應(yīng)客戶請(qǐng)求。
后臺(tái)數(shù)據(jù)庫(kù)采用JDBC 訪問(wèn)遠(yuǎn)程MySQL 數(shù)據(jù)庫(kù),Android 客戶端的一部分?jǐn)?shù)據(jù)同時(shí)存儲(chǔ)在Android 本地的SQLite 數(shù)據(jù)庫(kù)和后臺(tái)MySQL 數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)Android 客戶端和后臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步技術(shù)。如圖2 所示。
圖2 Android 云計(jì)算之移動(dòng)點(diǎn)餐系統(tǒng)技術(shù)選型。
1.3 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
后臺(tái)Mysql 數(shù)據(jù)庫(kù)名稱:wireless_db,共計(jì)包含以下6 個(gè)數(shù)據(jù)表。
數(shù)據(jù)表:menutbl(菜品數(shù)據(jù)表);主鍵:id(菜品編號(hào));外鍵:typeID(菜品類型編號(hào))。
數(shù)據(jù)表:menutypetbl(菜品類型數(shù)據(jù)表),主鍵:
id(菜品類型編號(hào))。
數(shù)據(jù)表:ordertbl(訂單數(shù)據(jù)表),主鍵:id(訂單編號(hào))。
數(shù)據(jù)表:orderdetailtbl(訂單詳細(xì)信息表);主鍵:
id(訂單菜品編號(hào));外鍵:orderId(訂單編號(hào))。
數(shù)據(jù)表:tabletbl(餐桌數(shù)據(jù)表),主鍵:id(餐桌編號(hào))。
數(shù)據(jù)表:usertbl(系統(tǒng)用戶數(shù)據(jù)表),主鍵:id(系統(tǒng)用戶編號(hào))。
數(shù)據(jù)模型設(shè)計(jì)如圖3:
圖3 Android 云計(jì)算之移動(dòng)點(diǎn)餐系統(tǒng)數(shù)據(jù)模型。
2 系統(tǒng)實(shí)現(xiàn)
Android 云計(jì)算之移動(dòng)點(diǎn)餐系統(tǒng)功能模塊實(shí)現(xiàn)每個(gè)功能模塊實(shí)現(xiàn)說(shuō)明:
①系統(tǒng)的登錄功能:系統(tǒng)用戶輸入用戶名和密碼,實(shí)現(xiàn)登錄,進(jìn)入系統(tǒng)主菜單。登錄過(guò)程是通過(guò)無(wú)線網(wǎng)絡(luò),在后臺(tái)數(shù)據(jù)庫(kù)中通過(guò)用戶名和密碼進(jìn)行查詢。注冊(cè)用戶方可使用該系統(tǒng)。(圖4)。
圖4 系統(tǒng)功能實(shí)現(xiàn)框圖。
②系統(tǒng)主菜單:包括點(diǎn)菜、并臺(tái)、轉(zhuǎn)臺(tái)、查臺(tái)、更新、設(shè)置、注銷、結(jié)算等以圖形方式展現(xiàn)的系統(tǒng)功能菜單。
③點(diǎn)餐功能:操作員輸入客人的點(diǎn)餐信息,通過(guò)無(wú)線網(wǎng)絡(luò)及時(shí)的將點(diǎn)餐信息傳送到后臺(tái)服務(wù)器,進(jìn)而在廚房終端顯示,利于廚師盡快下廚做菜。該模塊包括了開桌、點(diǎn)菜、下單三個(gè)功能。(圖5)。
④結(jié)算功能:操作員根據(jù)訂單編號(hào)查詢點(diǎn)餐訂單信息和訂單信息詳細(xì)列表,顧客確認(rèn)后單擊結(jié)算按鈕進(jìn)行結(jié)算。
⑤查臺(tái)功能:當(dāng)有顧客進(jìn)入餐廳時(shí),需要服務(wù)員查詢餐桌狀態(tài)(有人或空位),來(lái)安排顧客就餐。該過(guò)程應(yīng)是查詢數(shù)據(jù)庫(kù)中的餐桌數(shù)據(jù)得到當(dāng)前餐桌狀態(tài)列表,通過(guò)可視化的界面進(jìn)行顯示。
⑥更新(數(shù)據(jù)同步)功能:為了提高程序的運(yùn)行效率,將服務(wù)器中菜譜表和餐桌表的數(shù)據(jù)保存到Android 客戶端SQLite 數(shù)據(jù)庫(kù)中。因此,當(dāng)服務(wù)器中的數(shù)據(jù)改變時(shí)需要及時(shí)將服務(wù)器中的數(shù)據(jù)動(dòng)態(tài)的更新到客戶端,更新功能就是為此而設(shè)計(jì)的[3].
⑦轉(zhuǎn)臺(tái)功能:顧客下單后,要求更換座位,這時(shí)需要更改已經(jīng)提交的數(shù)據(jù)。更改的過(guò)程是根據(jù)訂單號(hào)找到該訂單對(duì)應(yīng)的桌號(hào),將該桌號(hào)更改為更換后的桌號(hào)。
⑧并臺(tái)功能:將已經(jīng)下單的兩組顧客合并到一張桌子的過(guò)程,該過(guò)程需要更改已經(jīng)提交到數(shù)據(jù)庫(kù)中的數(shù)據(jù)。更新內(nèi)容包括人數(shù)的合并、訂單的更新、訂單詳細(xì)的更新和桌位狀態(tài)的更新。
⑨注銷功能:退出移動(dòng)云計(jì)算之Android 餐飲服務(wù)系統(tǒng).
下面列出更新(數(shù)據(jù)同步)功能實(shí)現(xiàn)的過(guò)程代碼,其他功能代碼從略:
創(chuàng)建一個(gè)名為UpdateActivity 的Activity,該類繼承ListActivity,通過(guò)ListView 展示界面。在該類中定義一個(gè)updateMenu()方法用于更新手機(jī)前臺(tái)界面信息,該方法調(diào)用服務(wù)器Servlet 獲得XML 格式的輸入流,通過(guò)JAVA DOM 解析該XML 獲得服務(wù)器數(shù)據(jù),將數(shù)據(jù)保存到本地SQLite 數(shù)據(jù)庫(kù)中。
服務(wù)端創(chuàng)建Servlet、拼成XML 格式數(shù)據(jù)輸出、響應(yīng)客戶端請(qǐng)求等代碼從略。
系統(tǒng)運(yùn)行部分界面如圖5、圖6.
圖5 系統(tǒng)登錄實(shí)現(xiàn) .
圖6 點(diǎn)餐功能實(shí)現(xiàn)。
3 結(jié)語(yǔ)
Android 云計(jì)算之移動(dòng)點(diǎn)餐系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)采用JDBC 訪問(wèn)遠(yuǎn)程MySQL 數(shù)據(jù)庫(kù),Android 客戶端的一部分?jǐn)?shù)據(jù)同時(shí)存儲(chǔ)在Android 本地的SQLite 數(shù)據(jù)庫(kù)和后臺(tái)MySQL 數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)Android 客戶端和后臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步技術(shù)是本系統(tǒng)在實(shí)現(xiàn)快速移動(dòng)云計(jì)算中的創(chuàng)新之處。
具體實(shí)現(xiàn)中,為了提高程序的運(yùn)行效率,將后臺(tái)MySQL 服務(wù)器中菜品數(shù)據(jù)表和餐桌數(shù)據(jù)表的數(shù)據(jù)保存到Android 客戶端SQLite 數(shù)據(jù)庫(kù)中。因此,當(dāng)后臺(tái)MySQL 服務(wù)器中的數(shù)據(jù)改變時(shí)需要及時(shí)將服務(wù)器中的數(shù)據(jù)動(dòng)態(tài)的更新到Android 客戶端,更新功能就是為此而設(shè)計(jì)的。
因此,Android 云計(jì)算之移動(dòng)點(diǎn)餐系統(tǒng)完全具有了傳統(tǒng)的C/S 和B/S 的優(yōu)異功能,同時(shí)又結(jié)合了最先進(jìn)的移動(dòng)云計(jì)算設(shè)計(jì)理念。
為了滿足具有一定規(guī)模、需要提高餐廳點(diǎn)餐效率、體現(xiàn)出現(xiàn)代化的氣氛、改進(jìn)客人就餐環(huán)境,并借此提高經(jīng)濟(jì)效益的餐廳和酒店的實(shí)際需求,移動(dòng)云計(jì)算之Android 餐飲服務(wù)系統(tǒng)實(shí)現(xiàn)一套Android 客戶端軟件和完善的后臺(tái)服務(wù)功能來(lái)完成餐飲服務(wù)功能。系統(tǒng)不會(huì)占用太大的預(yù)算,并能盡量沿用原有的成熟技術(shù),與原有系統(tǒng)進(jìn)行良好的整合,那么該系統(tǒng)將具有很好的開發(fā)與應(yīng)用價(jià)值。
c++相關(guān)文章:c++教程
評(píng)論