【文章內容簡介】
的內容進行設置,查詢spinner里面的桌號,該桌號是放在本地數(shù)據(jù)庫中,通過contentProvider的uri進行操作,updateSQLite()用于更新同步到手機數(shù)據(jù)庫,桌子開桌后狀態(tài)要設置為有人。開桌按鈕的監(jiān)聽:在該監(jiān)聽中把所以的信息進行獲取,包括服務員的id,從登陸成功后保存在手機端的xml(SharedPreference)中讀取出來,(request)把封裝好的信息發(fā)送到服務器端后,根據(jù)傳過來的結果即為訂單號。 客戶端點菜下單模塊的設計與實現(xiàn)開桌之后,點擊點菜按鈕,會出現(xiàn)一個listview,里面動態(tài)的加載菜單的圖片已經(jīng)信息,并且里面有一個增加按鈕,點擊這個按鈕之后會彈出一個對話框,當沒有開桌的時候點擊點菜按鈕的時候會提示你沒有開桌。 點菜模塊 DianCaiActivity類,該類中通過listview把本地數(shù)據(jù)庫中的菜譜信息顯示在listview控件中,獲取本地數(shù)據(jù)庫中的菜譜信息是通過ContentProvider來實現(xiàn),它可以讓自己的數(shù)據(jù)達到共享,方便別的程序對他調用。AsyncImageLoader類用于listview菜單圖片的異步加載。下單的過程是將顧客點餐信息保存到后臺數(shù)據(jù)庫中,也是通過servlet進行請求。 查臺模塊設計與實現(xiàn)查臺的目的是根據(jù)當前餐桌的狀態(tài)(有人或空位),來安排顧客就餐。程序的實現(xiàn)過程是:查詢數(shù)據(jù)庫餐桌表信息,根據(jù)查詢結果將餐桌狀態(tài)以圖形化的方式顯示出來。 查臺模塊 客戶端查臺模塊實現(xiàn)首先建立一個查臺的類ChaTai,該類主要用于實現(xiàn)查臺的一系列功能。getTableList()用于獲得當前餐桌信息列表,信息包括桌號和狀態(tài),TableAdapter繼承自BaseAdapter類,作用是為GridView綁定數(shù)據(jù),該類的getView()方法返回的View類是自定義的一個LinearLayout類。本模塊的難點在于給GridView添加數(shù)據(jù),也就是要繼承BaseApapter類,實現(xiàn)里面的getView()方法,然后再用LayoutInflater,也就是布局泵顯示GridView上面的內容,也就是ImageView和TextView,ImageView也就是當flag==0的時候顯示空桌那張圖片,flag==1的時候切換到另一張圖片即顯示有人的那張圖片。 并臺模塊的設計與實現(xiàn)并臺模塊實現(xiàn)的是:當兩桌顧客下單之后,在就餐過程中提出一起就餐,這一過程需要將保存在數(shù)據(jù)庫中的數(shù)據(jù)做統(tǒng)一更新。內容有:刪除被合并桌位的訂單、將被合并桌位客人數(shù)加到合并桌位、更新訂單詳細列表信息、更新桌位狀態(tài)等,: 并臺模塊 客戶端并臺模塊的設計與實現(xiàn) 并臺是通過彈出對話框的方式來提示服務員的,所以需要在對話框中添加自定義視圖,提示用戶選擇要更換的桌位。 unionTable()定義了一個對話框提示用戶選擇合并桌號,在對話框中添加了自定義的視圖,使用LayoutInflater(布局泵)進行自定義視圖,訪問服務器獲得桌位信息并綁定到spinner,然后在確定方法中提交合并請求。 轉臺模塊的設計與實現(xiàn)轉臺模塊要做的是顧客開桌或下單后要求更換桌位的過程。 轉臺模塊 客戶端轉臺模塊的設計與實現(xiàn) 轉臺模塊主要根據(jù)訂單編號進行換桌,更換的桌號必須是空位才能更換,然后更新保存在數(shù)據(jù)庫中的數(shù)據(jù),主要是OrderTbl表中該訂單對應的桌號以及更換桌位的轉臺,該界面也是用彈出對話框的方式進行顯示,采用自定義布局。Spinner里面的桌號也是實時更新的,只有當桌號是空的時候才顯示在spinner里面。 更新模塊的設計與實現(xiàn)更新模塊主要包括兩個內容一個是更新菜譜表和更新餐桌表,點擊更新之后進入更新模塊,該視圖包含一個listview。 更新模塊 客戶端更新模塊的設計與實現(xiàn) 更新模塊主要是為了提高程序的運行效率,然后將一些頻繁使用的數(shù)據(jù)庫表保存到客戶端SQLite數(shù)據(jù)庫中,當服務器數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,將數(shù)據(jù)即使同步到客戶端。實現(xiàn)的功能是:將數(shù)據(jù)庫服務器表中的數(shù)據(jù)封裝成xml格式的數(shù)據(jù)發(fā)送到客戶端,客戶端通過DOM的方式解析XML文件,將其內容保存到客戶端SQLite數(shù)據(jù)庫中。UpdateActivity類主要操作更新模塊,updateTable()更新桌子,請求服務器,然后對返回的數(shù)據(jù)采用dom解析得到數(shù)據(jù),然后刪除本地數(shù)據(jù)庫,再把數(shù)據(jù)插入到對應的表里。updateMenu()更新菜單,功能和updateTable()類似。該模塊主要難點是DOM的解析:首先解析器讀入整個文檔,構建一個駐留內存的樹結構,然后使用DOM API來訪問樹形結構,并獲取結構。基本步驟是:1創(chuàng)建xml文件加載器工程;2獲得文件加載器;3文件加載器加載文件,并形成樹形結構,返回值是形成樹狀文件;4有文檔對象獲得根節(jié)點;5獲得當前根節(jié)點,獲得其相應的子節(jié)點;6遍歷每一個子節(jié)點;7獲得當前的子節(jié)點;8獲得當前子節(jié)點的字節(jié)點;9獲得當前的子子節(jié)點。還有就是該模塊的視圖,采用自定義的視圖方式CornerListView繼承自ListView,該方式可以實現(xiàn)更好的顯示效果,可以根據(jù)自己想要的結果進行顯示,比如實現(xiàn)ListView的圓角顯示,設置點擊之后的效果,設置手勢效果onInterceptTouchEvent() 該函數(shù)根據(jù)相應的事件顯示不同的效果。另外由于本系統(tǒng)需要實現(xiàn)客戶端與服務端的數(shù)據(jù)同步功能,所以需要在客戶端建立一個數(shù)據(jù)庫,并且創(chuàng)建兩個表格分別是菜譜表和餐桌表,創(chuàng)建數(shù)據(jù)庫的時候需要繼承SQLiteOpenHelper類,這個類可以輔助建立、更新、打開數(shù)據(jù)庫,為了更好的操作數(shù)據(jù)庫,本系統(tǒng)使用到了ContentProvider類,該類是在應用程序間共享數(shù)據(jù)的一種接口機制,提供了更為高級的數(shù)據(jù)共享方法,應用程序可以制定需要共享的數(shù)據(jù),而其他程序可以在不知道數(shù)據(jù)來源、路徑的情況下對共享數(shù)據(jù)進行查詢、添加、刪除和更新等操作,調用的時候需要用到ContentResolver對象,通過URI間接調用ContentProvider,URI是通用資源標識符,用來定位任何遠程或本地的可用資源。 結臺模塊的設計與實現(xiàn)結臺模塊主要根據(jù)訂單編號查詢訂單的詳細信息,將詳細信息通過一個WebView來顯示,這個是一個查詢的過程,服務器返回html格式的信息,通過WebView來顯示。當客戶確認點菜信息,操作員可以點擊結算按鈕,查看消費情況,然后客戶結賬后點擊結賬按鈕即可。 查臺模塊 客戶端結臺模塊的設計與實現(xiàn) 服務員點擊結賬按鈕之后,將數(shù)據(jù)庫服務器中OrderTbl表中的isPay列數(shù)據(jù)更新為“1”,表示已經(jīng)結算(默認值為0表示未結算)。 PayActivity類是結臺模塊的主要實現(xiàn)類,里面主要是通過EditText寫入的編號查詢,然后以html的形式通過WebView進行顯示,結賬時通過編號查看ordertbl表,并且把表中isPay的值改為1即可,成功時用Toast進行提示。 注銷模塊的設計與實現(xiàn)注銷模塊主要實現(xiàn)該系統(tǒng)的順利退出,當用戶點擊注銷按鈕時會彈出一個確認對話框,當點擊確定時會退出該系統(tǒng)。 注銷模塊 第6章 總結和展望 總結近來移動互聯(lián)網(wǎng)的發(fā)展十分迅速,而且被大家一致看好。而Android和IPhone是手機操作系統(tǒng)的兩大巨頭,IPhone因其手機產(chǎn)品而獲得眾多消費者的青睞。而Android由于其開源和免費,獲得了各個手機廠商的青睞,發(fā)展尤為迅速。Android還運用于平板電腦,電視等,具有廣闊的發(fā)展方向。 本系統(tǒng)客戶端設計采用了MVC設計模式便于我們對代碼進行維護和修改,服務端采用了MVC+DAO的設計模式,對數(shù)據(jù)庫連接對象進行了很好的封裝。另外,雖然本系統(tǒng)較小,但是卻具有很好的適用價值,能滿足用戶的基本要求。具有很好的適用價值。 展望該電子點菜系統(tǒng)在設計的過程中充分考慮了系統(tǒng)的可擴展性,為以后的添加新功能做了很好的鋪墊,比如比如在服務員模塊中設置一個每日推薦模塊,在這個模塊可以對菜進行分類,如涼菜和熱菜,進而滿足不同用戶的需求,另外菜的圖片的上傳,可以采用手機拍照的方式進行上傳,也可以直接從手機讀取,當然這個最好用jsp做成一個后臺管理頁面,進而方便管理員對菜的價格進行修改,或者添加新的菜,因為時間的緊迫這個功能咱暫時還沒有完成,只是在手機端做了一個管理員的界面進行了代替,簡單的實現(xiàn)了服務員帳號的增刪改功能以及菜的增刪改。該系統(tǒng)采用CS架構完成,客戶端采用MVC設計模式,服務端采用MVC+DAO,便于系統(tǒng)的維護。本系統(tǒng)的難點在于對一些控件比如GridView和ListView,在使用時用adapter進行界面的顯示以及顯示時的系統(tǒng)的優(yōu)化問題,以及遠程操作數(shù)據(jù)庫,從服務器端封裝數(shù)據(jù)(xml和json)時遇到的一些問題,最后就是使用wifi和藍牙進行通訊,由于時間緊迫我們在本機上建立服務器,然后采用協(xié)議進行通訊,這些功能在以后都可以進行擴展。致 謝本系統(tǒng)是我和同組成員在幾個月的共同努力下一起完成的,除了我們的共同努力外還與老師們的密切支持和幫助分不開的,特別是張老師,給了我們很多建議和幫助,我們在張老師的指導下從零開始到最后完成花費了很多的精力,當我們遇到難題的時候老師總是鼓勵我們讓我們不要放棄,并給與了我們很多建設性的意見,然后催促著我們開始做畢業(yè)設計,并且指導我們寫論文,對我們嚴格要求。 最后還要感謝我們班的同學,同學們給我提了不少建議關于系統(tǒng)的設計方面,還要感謝張玉華老師和其他老師的幫助,特別是張玉華老師,由于原來沒有寫過這么大的論文因此張老師一點一點的幫我們看自己的論文,然后打上批注,便于我們修改自己的不準確的地方,發(fā)現(xiàn)了好多錯誤,對于我們的畢業(yè)設計起到了關鍵的作用。 參考文獻[1]陳潔.:機械工業(yè)出版社,2010.[2]張海藩.軟件工程(第二版)[M].北京:人民郵電出版社,2006.[3]吳越勝,李新磊.:清華大學出版社,2010.[4].電子工業(yè)出版社,2010.[5] Android SDK開發(fā)范例大全(第3版).人民有點出版社,2011.[6]楊豐盛.Android應用開發(fā)揭秘.機械工業(yè)出版社,2010.[7]吳亞峰,蘇亞光.Android應用案例開發(fā)大全.人民郵電出版社,2011.[8]王家林.大話企業(yè)級Android應用開發(fā)實戰(zhàn).電子工業(yè)出版社,2011.[9],2010.[10]潘凱華.MySql快速入門.清華大學出版社,2012.[11]李興華, ,2010.[12]李興華.Java開發(fā)實戰(zhàn)經(jīng)典.清華大學出版社,2009.[13]孫衛(wèi)琴.Tomcat與Java Web開發(fā)技術詳解(第2版).電子工業(yè)出版社,2009.[14]MLDN.編程寶典:Java從入門到精通.人民郵電出版社,2010.[15]李代平. 軟件工程. 清華大學出版社,2010.附錄1: 外文原文What Is Android?It can be said that, for a while, traditional desktop application developers have been spoiled. This is not to say that traditional desktop application development is easier than other forms of development. However, as traditional desktop application developers, we have had the ability to create almost any kind of application we can imagine. I am including myself in this grouping because I got my start in desktop programming.One aspect that has made desktop programming more accessible is that we have had the ability to interact with the desktop operating system, and thus interact with any underlying hardware, pretty freely (or at least with minimal exceptions). This kind of freedom to program independently, however, has never really been available to the small group of programmers who dared to venture into the murky waters of cell phone development.For a long time, cell phone developers prised a small sect of a slightly larger group of developers known as embedded device developers. Seen as a less “glamorous” sibling to desktop—a