




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于移動互聯網技術的無線點餐系統──用戶登錄,點菜管理功能模塊、并臺管理功能模塊、轉臺管理功能模塊、查臺管理功能模塊、結臺管理功能模塊、注銷功能模塊摘要今天我們生活在充滿數字的時代,WLAN的應用日漸普及,影響到人們生活的方方面面。對于餐飲行業而言,也在潛移默化中感受到無線網絡的無窮魅力。本課題主要采用的設計語言是Java語言,所設計的Android客戶端設計最終達成了包括用戶登錄,點菜管理功能模塊、并臺管理功能模塊、轉臺管理功能模塊、查臺管理功能模塊、結臺管理功能模塊、注銷功能模塊等。Web版本設計最終達到了客戶登錄、查看菜單、訂餐、下單等操作。系統能夠正常運行,各個界面交互性較好。關鍵詞JavaAndroidWeb無線點餐AbstractTodayweliveinfulldigitalage,wirelesstechnologyofWLANmoreandmorepopulardaybyday.Forthetraditionalindustry,alsoinimperceptiblefeelawirelessnetworkinfiniteglamour.ThistopicmainlyusesthedesignlanguageistheJava.ThedesignoftheAndroidclienteventuallyreachedincludeuserlogin,orderingmanagementfunctionmodule,uniontablemanagementfunctionmodule,changetablemanagementfunctionmodule,checktablemanagementfunctionmodule,checkoutfunctionmodule,cancellationfunctionmodule,etc.TheeditionofWebeventuallyreachedincludecustomerlogin,viewmenu,ordermenu,saveorder,etc.Andthesystemcanrunnormally,eachinterfaceinteractionisgood.KeywordsJavaAndroidWebWirelessOrdering目目錄1緒論 51.1研究的背景及意義 51.2本文主要內容 52相關技術和開發環境 62.1系統架構 62.2關鍵技術 62.2.1 JDBC 62.2.2 Jquery 72.2.3 Ajax 72.3開發環境及平臺 82.3.1 Eclipse 82.3.2 MyEclipse 92.3.3 Tomcat服務器 92.3.4 應用平臺Android 103訂餐系統分析與設計 123.1需求分析 123.1.1 系統目標和要求 123.1.2 可行性分析 123.2訂餐系統概要設計 133.2.1 模塊的劃分 133.2.2 功能模塊的設計 133.3數據庫設計 143.3.1 數據庫需求分析 143.3.2 數據庫E-R圖設計 143.3.3 數據表設計 153.3.4 連接數據庫實現 174訂餐系統實現 184.1安卓平臺系統實現 184.1.1 功能描述 184.1.2 界面展示 184.1.3 關鍵代碼 24} 274.1.4 服務器端的實現 274.2網頁系統實現 284.2.1 界面展示 284.2.2 關鍵代碼 31結論 35致謝 36參考文獻 371緒論1.1研究的背景及意義民以食為天。餐飲業是一種個性化、多樣化的服務產業,餐飲傳統的點菜方式是純人工操作,由服務員記錄顧客點的菜,在具體工作中容易出現以下問題:手寫單據字跡潦草從而導致上錯菜、傳菜分單出錯現象嚴重、加菜和查賬程序較繁瑣。處理特殊口味有遺漏和偏差、客人催菜遺忘現象較頻繁、計算賬單易出錯、不方便人員管理等等。電子商務則是最能凸顯個性化、多樣化服務的商務方式。隨著網絡技術的發展和普及,方便、快捷、個性化的網上訂餐正在進入人們的生活。正因如此,無線點餐模式應運而生。它不僅可以有效地提高餐飲業的工作效率,更可以規范服務體系,提高整體服務質量和管理水平,并為規模化經營提供了堅實的技術基礎。服務員使用手持終端為顧客點餐,當消費者點完餐后,服務員將存儲在手持終端內的點餐信息,點餐信息同時也能被前臺看到,方便快捷。1.2本文主要內容本文介紹了無線點餐系統的開發過程。論文詳盡論述了從需求分析、系統分析、概要設計、詳細設計以及測試與調試的整個開發過程。首先系統地研究了無線點餐系統的背景和意義,分析了當今點餐系統的特點和共性,從而得出設計本系統的思路和方法。接著介紹了實現系統開發的Android平臺環境,數據庫用MySQL實現。同時簡要介紹了以上工具的功能和方法。概要設計分成后臺數據庫管理操作設計和客戶端操作設計,同時介紹了數據庫的建立和維護。詳細設計主要闡述了點菜管理、并臺管理、查臺管理,轉臺管理,注銷等實現,并給出了系統的部分設計代碼。
2相關技術和開發環境2.1系統架構無線點餐系統主要用到采用模型-視圖-控制器MVC架構的設計模式。MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。視圖是用戶看到并與之交互的界面。MVC一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據并允許用戶操縱的方式。模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用像EJBs和ColdFusionComponents這樣的構件對象來處理數據庫。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。控制器接收用戶的輸入并調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后確定用哪個視圖來顯示模型處理返回的數據。總的來說MVC的處理過程,就是首先控制器接收用戶的請求,并決定應該調用哪個模型來進行處理,然后模型用業務邏輯來處理用戶的請求并返回數據,最后控制器用相應的視圖格式化模型返回的數據,并通過表示層呈現給用戶。2.2關鍵技術 2.2.1 JDBCJDBC(JavaDataBaseConnectivity,Java數據庫連接)是一種用于執行SQL語句的JavaAPI,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數據庫開發人員提供了一個標準的API,據此可以構建更高級的工具和接口,使數據庫開發人員能夠用純JavaAPI編寫數據庫應用程序,同時,JDBC也是個商標名。有了JDBC,向各種關系數據發送SQL語句就是一件很容易的事。程序員只需用JDBCAPI寫一個程序就夠了,它可向相應數據庫發送SQL調用。同時,將Java語言和JDBC結合起來使程序員不必為不同的平臺編寫不同的應用程序,只須寫一遍程序就可以讓它在任何平臺上運行,這也是Java語言“編寫一次,處處運行”的優勢。Java數據庫連接體系結構是用于Java應用程序連接數據庫的標準方法。JDBC對Java程序員而言是API,對實現與數據庫連接的服務提供商而言是接口模型。作為API,JDBC為程序開發提供標準的接口,并為數據庫廠商及第三方中間件廠商實現與數據庫的連接提供了標準方法。JDBC使用已有的SQL標準并支持與其它數據庫連接標準,如ODBC之間的橋接。JDBC實現了所有這些面向標準的目標并且具有簡單、嚴格類型定義且高性能實現的接口。2.2.2 JqueryJquery是繼prototype之后又一個優秀的Javascrīpt框架,由美國人JohnResig創建。它是輕量級的js庫(壓縮后只有21k),它兼容CSS3,還兼容各種瀏覽器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+)。Jquery使用戶能更方便地處理HTMLdocuments、events、實現動畫效果,并且方便地為網站提供Ajax交互。Jquery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。Jquery能夠使用戶的HTML頁保持代碼和HTML內容分離,也就是說,不用再在html里面插入一堆js來調用命令了,只需定義id即可。2.2.3 AjaxAjax指異步JavaScript及XML(AsynchronousJavaScriptAndXML),是一種用于創建更好更快以及交互性更強的Web應用程序的技術。Ajax的核心是JavaScript對象XmlHttpRequest。Ajax在瀏覽器與Web服務器之間使用異步數據傳輸(HTTP請求)。簡而言之,XmlHttpRequest使您可以使用JavaScript向服務器提出請求并處理響應,而不阻塞用戶。通過Ajax,您的JavaScript可使用JavaScript的XMLHttpRequest對象來直接與服務器進行通信。通過這個對象,您的JavaScript可在不重載頁面的情況與Web服務器交換數據,這樣就可使網頁從服務器請求少量的信息。Web應用程序較桌面應用程序有諸多優勢;它們能夠涉及廣大的用戶,它們更易安裝及維護,也更易開發。2.3開發環境及平臺2.3.1 EclipseEclipse是一個開放源代碼的、基于Java的可擴展開發平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發環境。幸運的是,Eclipse附帶了一個標準的插件集,包括Java開發工具(JavaDevelopmentTools,JDT)。Eclipse是著名的跨平臺的自由集成開發環境(IDE)。最初主要用來Java語言開發,但是目前亦有人通過插件使其作為其他計算機語言比如C++和Python的開發工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發商以Eclipse為框架開發自己的IDE。Eclipse的主要構成Eclipse是一個開放源代碼的軟件開發項目,專注于為高度集成的工具開發提供一個全功能的、具有商業品質的工業平臺。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術項目三個項目組成,具體包括四個部分組成——EclipsePlatform、JDT、CDT和PDE.JDT支持Java開發、CDT支持C開發、PDE用來支持插件開發,EclipsePlatform則是一個開放的可擴展IDE,提供了一個通用的開發平臺。它提供建造塊和構造并運行集成軟件開發工具的基礎。EclipsePlatform允許工具建造者獨立開發與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結束,而另一個工具功能在哪里開始。EclipseSDK(軟件開發者包)是EclipsePlatform、JDT和PDE所生產的組件合并,它們可以一次下載。這些部分在一起提供了一個具有豐富特性的開發環境,允許開發者有效地建造可以無縫集成到EclipsePlatform中的工具。EclipseSDK由Eclipse項目生產的工具和來自其它開放源代碼的第三方軟件組合而成。Eclipse項目生產的軟件以GPL發布,第三方組件有各自自身的許可協議。EclipseAndroid環境搭建JDK安裝我的電腦->屬性->高級->環境變量->系統變量中添加以下環境變量:JAVA_HOME值為:安裝JDK的目錄;CLASSPATH值為:D:\AndroidDeveloper\android-sdk-windows\tools;Path:在開始追加%JAVA_HOME%\bin;NOTE:前面四步設置環境變量對搭建Android開發環境不是必須的,可以跳過。安裝完成之后,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入Java–version查看JDK的版本信息。Eclipse安裝在/downloads/,下載EclipseIDEforJavaDevelopers(92M)的win32bit版,AndroidSDK安裝在AndroidDevelopers下載android-sdk_r05-windows.zip,下載完成后解壓到任意路徑。運行SDKSetup.exe,點擊AvailablePackages。如果沒有出現可安裝的包,請點擊Settings,選中Misc中的“Forcehttps://...”這項,再點擊AvailablePackages。選擇希望安裝的SDK及其文檔或者其它包,點擊InstallationSelected、AcceptAll、InstallAccepted,開始下載安裝所選包。在用戶變量中新建PATH值為:AndroidSDK中的tools絕對路徑(本機為D:\AndroidDevelop\android-sdk-windows\tools)。MyEclipseMyEclipse,是一個十分優秀的用于開發Java,J2EE的Eclipse插件集合,MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開源產品的支持十分不錯。MyEclipse企業級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們可以在數據庫和JavaEE的開發、發布以及應用程序服務器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發環境,包括了完備的編碼、調試、測試和發布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。在對于畢業課題的設計中,Android終端設備客戶端是采用Eclipse開發工具開發的;而Web版本是采用MyEclipse開發工具開發的。2.3.3 Tomcat服務器Tomcat很受廣大程序員的喜歡,因為它運行時占用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。Tomcat是一個小型的輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache服務器,可利用它響應對HTML頁面的訪問請求。實際上Tomcat部分是Apache服務器的擴展,但它是獨立運行的,所以當你運行Tomcat時,它實際上作為一個與Apache獨立的進程單獨運行的。當配置正確時,Apache為HTML頁面服務,而Tomcat實際上運行JSP頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。2.3.4 應用平臺AndroidAndroid是基于Linux內核的操作系統,早期由Google開發,后由開放手機聯盟開發。它采用了軟件堆的架構,主要分為三部分。底層以Linux內核工作為基礎,只提供基本功能;其他的應用軟件則由各公司自行開發,以Java作為編寫程序的一部分。另外,為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯盟。Android在未公開之前常被傳聞為GPhone。它采用了軟件堆層(softwarestack,又名軟件疊層)的架構,主要分為三部分:底層以Linux核心為基礎,由c語言開發,只提供基本功能。中間層包括函數庫Library和虛擬機VirtualMachine,由C++開發。最上層是各種應用軟件,包括通話程序,短信程序等,應用軟件則由各公司自行開發,以Java編寫。Android平臺五大優勢特色:開放性在優勢方面,Android平臺首先就是其開放性,開發的平臺允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者,隨著用戶和應用的日益豐富,一個嶄新的平臺也將很快走向成熟。開放性對于Android的發展而言,有利于積累人氣,這里的人氣包括消費者和廠商,而對于消費者來講,最大的受益正是豐富的軟件資源。開放的平臺也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手機。掙脫運營商的束縛在過去很長的一段時間,特別是在歐美地區,手機應用往往受到運營商制約,使用什么功能接入什么網絡,幾乎都受到運營商的控制。自從iPhone上市,用戶可以更加方便地連接網絡,運營商的制約減少。隨著EDGE、HSDPA這些2G至3G移動網絡的逐步過渡和提升,手機隨意接入網絡已不是運營商口中的笑談。豐富的硬件選擇這一點還是與Android平臺的開放性相關,由于Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。功能上的差異和特色,卻不會影響到數據同步、甚至軟件的兼容。好比你從諾基亞Symbian風格手機一下改用蘋果iPhone,同時還可將Symbian中優秀的軟件帶到iPhone上使用、聯系人等資料更是可以方便地轉移。不受任何限制的開發商Android平臺提供給第三方開發商一個十分寬泛、自由的環境。因此不會受到各種條條框框的阻撓,可想而知,會有多少新穎別致的軟件會誕生。但也有其兩面性,血腥、暴力、情色方面的程序和游戲如何控制正是留給Android難題之一。無縫結合的Google應用如今叱咤互聯網的Google已經走過10年歷史。從搜索巨人到全面的互聯網滲透,Google服務如地圖、郵件、搜索等已經成為連接用戶和互聯網的重要紐帶,而Android平臺手機將無縫結合這些優秀的Google服務。
3訂餐系統分析與設計3.1需求分析3.1.1 系統目標和要求首先,我們得確定使用這個系統的用戶應該有顧客、服務員、收銀員。顧客和服務員應該是系統數據的起點,由他們做出相應的操作,然后系統進行處理;收銀員則為系統數據的終點。該系統在性能功能上應達到如下要求:操作簡單、界面友好:完全控件式的頁面布局,使得菜品,資訊,座位等信息的錄入工作更簡便,許多選項包括餐廳信息,桌位,包房信息等只需要點擊鼠標就可以完成;另外,跟蹤出現的提示信息也讓用戶隨時清楚自己的操作情況。對常見的類似網站的管理的各個方面:基本信息錄入、瀏覽、刪除、修改、搜索等方面都大體實現,顧客對菜品的預定及支付方式;即時可見:對客戶預定餐飲信息的處理(包括錄入、刪除)將立即在另一應用端及服務器的對應欄目顯示出來,達到“即時點擊、即時見效”的功能;系統運行應該快速、穩定、高效和可靠;在結構上應具有很好的可擴展性,便于將來的功能擴展和維護。3.1.2 可行性分析隨著經濟的快速發展,B2C電子商務越來越受到人們的關注。無線訂餐系統,已經如雨后春筍般的出現在了許多城市的大酒店中。特別在大型餐飲集團使用已經成為了趨勢。同時,隨著全國人民的精神、物質和文化生活高度的提高,人們已經不在僅僅停留在吃飽的程度,不但要吃飽,還要吃好,而且對酒店服務也越來越挑刺,正因為如此無線訂餐系統的出現,正好滿足了大眾的需要,不僅讓賓客享受到精美可口的美食,更讓他們感受到服務管理的貼心與完善。無線訂餐業務在中國有著極大的發展空間以及良好的背景。隨著酒店管理的完善,使用這種智能的無線點餐系統必然成為追究卓越的餐飲公司的最愛,也更能夠體現信息技術發展之猛烈。此次畢業設計基于Android平臺開發無線訂餐系統。Android平臺給我們提供了巨大的自由空間,再運用Java面向對象語言,是系統功能更加強大。MySQL是一個杰出的數據庫平臺,具有功能強大,安全可靠等特點,可用于中小型聯機事務處理、數據倉庫及電子商務等。3.2訂餐系統概要設計系統的概要設計主要對系統的總體功能如何設計,如何劃分模塊,系統的數據庫如何設計進行研究。它為系統的詳細設計做鋪墊。在系統的設計過程中起著非常重要的作用。3.2.1 模塊的劃分本系統主要分兩部分:Web點餐系統與后臺Web系統主要是給客戶點菜;客戶只能點菜、拿號。終端設備與后臺終端設備指的是基于安卓平臺的一個設備。主要給服務員、收銀員等工作人員使用;能更新菜譜,結賬,點菜、查看等功能。3.2.2 功能模塊的設計Web點餐系統登錄——若沒有用戶賬號,提供注冊查看菜單查看菜單詳情加入購物車(點菜)下單(提交預定菜單)拿號無線點餐系統——無線點餐系統——Web系統登錄注冊沒有賬號看菜單查看菜詳情加入購物車下單訂單信息確認取號圖3-1功能描述圖終端設備終端系統主要有以下幾個模塊構成:結臺管理、更新管理等功能。點菜——包括開桌、點菜、下單三個功能并臺——兩桌拼接結臺——在顧客就餐完畢后,計費付帳而設定的功能,是客人能夠一目了然,不用擔心有什么算錯的問題。查臺——查看座位情況,哪些是有人,哪些是空位無線點餐系統無線點餐系統開桌轉臺登錄點菜下單并臺結臺查臺并臺結臺查臺圖3-2功能描述圖3.3數據庫設計3.3.1 數據庫需求分析無線點餐系統以酒店服務信息為主體,因此在這個系統中必須要有一個保存菜單信息的表。所以用編號做主鍵。負責登錄終端系統的服務人員應該有保存服務人員信息的表,這個表中也是包括一些基本信息。并且以服務人員的編號作為主鍵。在一個點餐系統中,不可避免的要有桌位的編號。這樣的話就必須有一個桌號表,該表保存桌位信息。顧客可以按照自己的喜好,在酒店布置的桌號中選擇自己喜歡的位置。另外既然是酒店就必須要有一個訂單表,該表中包括訂單號,點餐時間,用戶ID,桌號,人數,是否結賬等基本信息。這樣也就還需要一個訂單詳細表用于存儲顧客所點的菜品信息等等。3.3.2 數據庫E-R圖設計數據庫的概念設計,即利用數據模型進行概念數據庫的模式設計。根據無線點餐系統的需求,設計出以下的實體-關系模型(E-R)圖如圖。描述ID編號 描述ID編號桌號標識號桌號標識號桌位桌位nn服務服務11服務人員服務人員用戶密碼ID編號用戶密碼ID編號用戶名稱用戶名稱圖3-3實體聯系圖IDID編號描述菜品類型圖片菜品包含n價格訂單明細對應備注數量ID編號訂單備注ID編號是否結賬人數下單的客戶下單時間桌號1n1圖3-4實體聯系圖3.3.3 數據表設計數據庫的邏輯設計,即把概念設計得到的概念數據庫模式變為邏輯數據模式,它依賴于DBMS。根據無線點餐系統的需求分析及數據庫的概念設計,建立數據庫了wireless_db。建庫語句:createdatabasewireless_db;設計表結構,如下圖所示:表3.1用戶信息表(usertbl)列名數據類型是否允許為空說明idint(11)否序號(主鍵)namevarchar(50)是用戶名passwordvarchar(50)是密碼accountvarchar(50)是登錄名gendervarchar(20)是性別permissionint(11)是權限(客戶2,用戶1)remarkvarchar(2000)是備注表3.2菜單信息表(menutbl)列名數據類型是否允許為空說明idint(11)否序號(主鍵)priceint(11)是價格typeIdint(11)是類型namevarchar(50)是菜名picvarchar(1000)是圖片remarkvarchar(2000)是備注表3.3訂單信息表(ordertbl)列名數據類型是否允許為空說明idint(11)否序號(主鍵)orderTimevarchar(100)是下單時間userIdint(11)是下單人tableIdint(11)是桌號personNumint(11)是人數isPayint(11)是是否支付(1已支付)remarkvarchar(2000)是備注表3.4訂單信息詳情表(orderdetailtbl)列名數據類型是否允許為空說明idint(11)否序號(主鍵)orderIdint(11)是訂單IDmenuIdint(11)是菜IDnumint(11)是訂購數量remarkvarchar(2000)是備注表3.5餐桌信息表(tabletbl)列名數據類型是否允許為空說明idint(11)否序號(主鍵)numint(11)是訂購數量flagint(11)是標識(1有人0沒人)remarkvarchar(2000)是備注3.3.4 連接數據庫實現本系統采用Java語言編寫,使用jdbc連接MySQL數據庫,所以要用到Java中的connection對象和MySQL驅動連接到數據庫。數據庫配置文件如下所示。driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/wireless_db?useUnicode=true&characterEncoding=utf-8username=rootpassword=123只有成功連接到了數據庫才能進行其他操作,否則就無法開展以下的設計與實現工作了。可見,連接數據庫是一個很關鍵的步驟。4訂餐系統實現4.1安卓平臺系統實現4.1.1 功能描述主菜單界面包含點菜管理、并臺管理、轉臺管理、查臺管理、結臺管理、注銷等幾個功能模塊。每個功能模塊提供一種服務,包含一組功能操作,界面簡單明了方便服務人員操作。4.1.2 界面展示登錄界面主要是由服務人員來操作的,所以要簡單明了易操作。利用數據庫對用戶信息進行核對,核對正確后利用界面跳轉到主菜單界面。服務人員的賬號密碼是提前在服務器數據庫中設置的,每個服務人員都有自己單獨的唯一的一個賬號密碼用來登錄,這樣可以責任到人,不至于出現混亂,否則出現錯誤都不知道是哪個環節的問題。圖4-1登錄截圖輸入數據的驗證:圖4-2登錄數據驗證登錄失敗:圖4-3登錄失敗登陸成功之后進入主菜單:圖圖4-圖4-4主界面點擊點菜:開桌:若當前桌號是開過桌的,開桌按鈕將會不可用,并且人數自動為上次開過桌之后的人數,這一步是通過桌號來從數據庫中判斷桌子的標示(1表示開桌,0表示沒有開桌)實現的,可以修改。圖4-5開桌2號桌已經被開過桌,所以開桌按鈕變成不可用。圖4-6開桌驗證添菜:所有的菜單信息都是從數據庫中取出的,與web版本向客戶提供的信息保持一致。圖4-7點餐點擊下拉列表選擇菜名:如圖圖4-8選擇菜單圖4-9填寫人數點擊下單直接下單,下單成功后,屏幕下方會提示桌號(如圖)。下單即向數據庫的訂單詳情表插入數據,插入客戶定的菜號、桌號、備注信息等。圖4-10下單成功點擊轉臺:圖4-11換桌位換臺成功后有提示(如圖),轉臺對于數據庫的操作,就是將原來訂單號的中的桌號編程就該之后的桌號。圖4-12換座位成功查臺:圖4-12查臺并臺:所謂并臺,就是兩桌人并成一桌,對于數據庫所做的操作有:先把被并的目標桌號的狀態修改為空位,再把訂單上的桌號修改為并臺后的桌號即可。并臺必須針對的是已經開過桌的桌子。圖4-13并臺并臺選擇桌號:查出來的都是開過桌的桌號。圖4-14選擇桌號結賬這一功能,就是從點餐詳情表中取出,訂單號為1的所有訂單信息,并且再跟據菜號,將菜肴的價格取出,相加得到總價格顯示出來。結賬成功后,將數據庫中訂單表中的isPay字段的狀態改成已支付。(0表示未支付,1表示已支付)圖4-15結算界面注銷:圖4-16注銷4.1.3 關鍵代碼以下是點菜功能的關鍵代碼://添菜監聽器 privateOnClickListeneraddListener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ //調用點菜方法 addMeal(); } }; //添菜方法 privatevoidaddMeal(){ //獲得LayoutInflater實例 LayoutInflaterinflater=LayoutInflater.from(this); //實例化在彈出對話框中添加的視圖 finalViewv=inflater.inflate(R.layout.order_detail,null); //獲得視圖中的Spinner對象,菜單下拉列表 finalSpinnermenuSpinner=(Spinner)v.findViewById(R.id.menuSpinner); //獲得視圖中的EditText對象,數量 EditTextnumEt=(EditText)v.findViewById(R.id.numEditText); //獲得視圖中的EditText實例,備注 EditTextremarkEt=(EditText)v.findViewById(R.id.add_remarkEditText); Stringurl=HttpUtil.BASE_URL+"/servlet/MenuServlet"; Stringresult=HttpUtil.queryStringForGet(url); try{ JSONArraytables=newJSONArray(result); List<JSONObject>lists=newArrayList<JSONObject>(); for(inti=0;i<tables.length();i++) { lists.add(tables.getJSONObject(i)); } JsonArrayAdapteradapter=newJsonArrayAdapter(this,R.layout.spinner_lo,lists,newString[]{"id","name","price"},newint[]{ R.id.id_TextView01,R.id.price_TextView02, R._TextView03,}); menuSpinner.setAdapter(adapter); }catch(JSONExceptione){ //TODOAuto-generatedcatchblock Log.e("amaker","轉換數據出錯"); } //獲得AlertDialog.Builder實例 AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder //設置標題 .setMessage("請點菜:") //設置自定義視圖 .setView(v) //設置確定按鈕 .setPositiveButton("確定",newDialogInterface.OnClickListener(){ //確定按鈕事件 publicvoidonClick(DialogInterfacedialog,intid){ //獲得ListView中的自定義視圖LinearLayout LinearLayoutv1=(LinearLayout)menuSpinner .getSelectedView(); //獲得TextView,菜編號 TextViewid_tv=(TextView)v1 .findViewById(R.id.id_TextView01); //獲得TextView,菜價格 TextViewprice_tv=(TextView)v1 .findViewById(R._TextView03); //獲得TextView,菜名稱 TextViewname_tv=(TextView)v1 .findViewById(R.id.price_TextView02); //獲得EditText,菜數量 EditTextnum_et=(EditText)v .findViewById(R.id.numEditText); //獲得EditText,菜備注 EditTextremark_et=(EditText)v .findViewById(R.id.add_remarkEditText); //菜編號值 StringidStr=id_tv.getText().toString(); //菜價格值 StringpriceStr=price_tv.getText().toString(); //菜名稱值 StringnameStr=name_tv.getText().toString(); //菜數量值 StringnumStr=num_et.getText().toString(); //菜備注值 StringremarkStr=remark_et.getText().toString(); //封裝到Map中 map=newHashMap(); map.put("id",idStr); map.put("name",nameStr); map.put("num",numStr); map.put("price",priceStr); map.put("remark",remarkStr); //添加到ListView data.add(map); //關聯的TextView to[0]=R.id.id_ListView; to[1]=R._ListView; to[2]=R.id.num_ListView; to[3]=R.id.price_ListView; to[4]=R.id.remark_ListView; //實例化SimpleAdapter sa=newSimpleAdapter(OrderActivity.this,data, R.layout.listview,from,to); //為ListView綁定數據 lv.setAdapter(sa); } }).setNegativeButton("取消",null); AlertDialogalert=builder.create(); alert.show(); }4.1.4 服務器端的實現服務器端功能主控計算機處理各無線終端發送過來的數據信息并進行處理、加工(必要的情況下還進行信息回饋)以及發送,從而進行控制、結算、統計、結賬打印以及管理等一系列職能操作。服務端主要是數據庫操作,針對無線終端各模塊而設置響應相應功能的服務器小程序。主要的Servlet(如圖顯示)。服務器端服務器端響應點菜的Servlet響應登錄的Servlet響應開桌的Servlet響應詳細訂單的Servlet響應轉臺的Servlet響應結算的Servlet響應更新桌號的Servlet響應更新菜譜的Servlet響應查臺的Servlet響應并臺的Servlet圖4-17服務器功能圖4.2網頁系統實現4.2.1 界面展示 訂餐系統主界面展示了所有的菜品,聽過客戶查看選擇,并可以加入購入車,準備下單訂餐。圖4-18菜品展示點擊詳情,進入菜單詳情頁面:圖4-19菜品詳情點擊訂購:若當前用戶沒有登錄,則會跳出登錄的頁面,只有登錄之后的用戶才能訂購,否則只允許查看。跳入登錄頁面:圖4-20登錄界面若登錄不符合要求,也會有相應的驗證信息:如圖圖4-21登錄驗證若用戶登錄成功后訂購,出現購物車界面:圖4-22購物車進入購物車界面后,客戶可以選擇繼續購物或者下單,若選擇繼續購物,則跳出主頁,菜單頁面,若生成訂單,則跳入訂單信息確認頁面:如圖圖4-23訂單確認若客戶沒有訂購任何菜肴,則不能提交訂單,提示如下圖:圖4-24訂單提交驗證4.2.2 關鍵代碼登錄功能以下是登錄功能的關鍵代碼:login.jsp頁面:<scripttype="text/javascript"> functioncheckName(){ varuserName=document.loginForm.loginName.value; //獲得用戶層對象: varuDiv=document.getElementById("userNameDiv"); if(userName.length==0){ uDiv.innerHTML="<fontsize='3'color='red'>用戶名不能為空!</font>"; returnfalse;//函數有返回值 } uDiv.innerHTML=""; returntrue; } functioncheckPwd(){ varuserPwd=document.loginForm.loginPass.value; varpDiv=document.getElementById("passwordDiv"); if(userPwd.length==0){ pDiv.innerHTML="<fontsize='3'color='red'>密碼不能為空!</font>"; returnfalse;//函數有返回值 } pDiv.innerHTML=""; returntrue; }//jquey中的方法,當頁面一加載的時候就執行方法$(document).ready( function(){ //當登錄按鈕點擊時,觸發方法 $("#loginBT").click( function(){ varusername=$("#loginName").val(); varpwd=$("#loginPass").val(); //利用ajax去后臺判斷,用戶輸入的用戶是否可以登錄 $.ajax( { url:"${base}/LoginServlet", type:"post", data:"username="+username+"&pwd="+pwd, dataType:"json", success:successInfo } ); } ); }); //ajax的回調函數,接受后臺判斷過后傳過來的結果 functionsuccessInfo(json){ varerror=json.errorMsg;//tipDiv if(error!=null){ //后臺若判斷登錄失敗,前臺提示信息 $("#tipsDiv").show(); }else{ window.location.href="show.jsp"; } }</script>點菜功能以下是點菜進入購物車功能的關鍵代碼:<jsp:useBeanid="caritems"class="shopping.ShoppingCar"scope="session"></jsp:useBean><%Stringid=request.getParameter("menuId");if(id!=null&&!(id.equals(""))){ MenutblDaoImplimp=newMenutblDaoImpl(); Menutblmenu1=imp.findById(Integer.parseInt(id)); caritems.addItem(Integer.parseInt(id),menu1); session.se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 修路增加補充合同標準文本
- 代理貸款協議合同標準文本
- 書面形式合同樣本
- 供電公司并網合同樣本
- 二零二五版行政上訴狀及格式
- 二零二五大巴車包車協議合同
- 乙方物流合同樣本
- 擔保公司過橋協議合同二零二五年
- 高職高專英語電子教案
- 有限責任公司擔保管理制
- 中建項目商務管理手冊
- 承插型盤扣式腳手架作業指導書
- 二氧化碳的檢測
- 《菊次郎的夏天》電影賞析
- 佳能相機PowerShot SX60 HS使用說明書
- 2025屆高考語文復習:補寫語句+課件
- 人教版部編版統編版一年級語文上冊漢語拼音9《y+w》課件
- CB-Z-211-1984船用金屬復合材料超聲波探傷工藝規程
- CJJ99-2017 城市橋梁養護技術標準
- 澳大利亞省公開課一等獎新名師比賽一等獎課件
- 《職業道德與法治》開學第一課(導言)(課件)-【中職專用】中職思想政治《職業道德與法治》高效課堂課件+教案(高教版2023·基礎模塊)
評論
0/150
提交評論