




已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
* 2014 屆本科畢業(yè)論文(設(shè)計) 論文(設(shè)計)題目: android手機終端點菜系統(tǒng) 學(xué)生姓名: * 所在院系: 信息工程學(xué)院 所學(xué)專業(yè): 計算機科學(xué)與技術(shù) 導(dǎo)師姓名: * 完成時間: 2014-05-10 摘要 本課題所實現(xiàn)的電子點菜系統(tǒng)改變了傳統(tǒng)的服務(wù)員和菜單的點菜模式,采用新穎的電子終端點菜系統(tǒng),這種新式的方式使得餐館更有檔次和特色,對于其在同行業(yè)的競爭有著明顯的幫助。本課題采用c/s開發(fā)模式,分為服務(wù)器端和android客戶端的一些操作。在服務(wù)器端主要采用jsp動態(tài)網(wǎng)頁技術(shù),實現(xiàn)了后臺餐館一方對菜譜信息的管理和對顧客訂單的處理。在客戶端主要采用android技術(shù)實現(xiàn)了顧客對菜品的查找、分類查看、顧客對自己訂單的選擇和查看,顧客在確定訂單之后可以提交給餐館一方,使得餐館一方得以查看并通知廚房做出菜品。關(guān)鍵詞 android,mysql,jsp,javaabstractelectronic ordering system the realization of this project has changed the traditional service and menu menu mode,the novel electronic terminal order system,the new method makes the restaurant more grades and characteristics,this is very helpful for the same industry competition.this topic uses c/s development mode,divided into some operation server and android client.on the server side jsp dynamic webpage technology mainly uses,this has realized the backstage restaurant management side of the menu informationand customer order processing.the client uses the android technology to realize the customer on the foodsearch, classification and view view, of their customers the choice of orders,customers in the restaurant after the order is confirmed can be submitted to a party.this makes the restaurant side to see and notice the kitchen to make dishes.keywords android,mysql,jsp,java目 錄1. 緒論11.1項目背景及意義11.2 android系統(tǒng)概述12. 系統(tǒng)理論和技術(shù)路線32.1 android四大組件32.2 c/s體系32.3 jsp和servlet42.4系統(tǒng)主要路線42.5 運行環(huán)境要求52.5.1 硬件環(huán)境52.5.2 軟件環(huán)境53. 系統(tǒng)需求分析53.1各模塊關(guān)系圖53.2數(shù)據(jù)庫設(shè)計63.2.1 數(shù)據(jù)庫列表63.2.2數(shù)據(jù)庫連接的實現(xiàn)73.3 功能需求描述113.4 主要開發(fā)工具133.4.1 myeclipse133.4.2 adt144. 軟件系統(tǒng)設(shè)計154.1后臺功能模塊154.1.1后臺登陸模塊154.1.2后臺菜品模塊174.1.3后臺訂單模塊194.2客戶端功能模塊204.2.1首頁面模塊204.2.2主功能模塊214.2.3訂單模塊234.2.4游戲模塊255. 結(jié)論26謝詞27參考文獻2811. 緒論1.1項目背景及意義 由于互聯(lián)網(wǎng)的高速發(fā)展,而電子技術(shù)由于在外國比如說美國最先得到了發(fā)展并被用于生活的各個領(lǐng)域,而餐飲作為我們生活中的一個重要環(huán)節(jié),它的發(fā)展也是非常迅猛的,以美國舉例,從1999年的餐飲業(yè)的營業(yè)額3500多億美元到2010年的6000多億,由于人們對餐飲業(yè)的關(guān)注,所以電子技術(shù)對餐飲的影響非常大,所以像手機點菜系統(tǒng)的發(fā)展在美國已經(jīng)逐漸得得到了普及。在我們國家,餐飲是人民非常關(guān)心的一個方向,但是點菜系統(tǒng)在餐飲業(yè)的普及還只是剛剛開始,現(xiàn)在僅僅是在一部分比較高檔的餐廳出現(xiàn),但是我們從餐飲業(yè)的發(fā)展不難看出,點菜系統(tǒng)的普及是肯定的。近幾年,隨著android和ios技術(shù)的發(fā)展,智能手機和平板不僅僅被廣大的青年、青少年甚至兒童和老年人接受并使用,電子產(chǎn)品正在影響著我們生活的方方面面,而餐飲作為我們都必不可少的一部分也不可避免的和電子產(chǎn)品結(jié)合到了一起。手機、平板的點菜系統(tǒng)替代人工服務(wù)員的點菜方式不僅僅節(jié)省了大量的勞動力,降低了成本,而且還方便收銀員對賬單支出的管理,使得餐廳的財政能得到高效透明的管理,當然現(xiàn)代化的電子點菜方式相比較于傳統(tǒng)的點菜員會得到廣大消費者尤其是青年人的喜愛。 根據(jù)科技的發(fā)展對社會帶來的影響,電子點菜系統(tǒng)必將取代傳統(tǒng)的點菜模式,如今電子點菜系統(tǒng)已經(jīng)在比較高檔的餐廳中開始出現(xiàn)并被使用,電子點菜系統(tǒng)必將得到發(fā)展。1.2 android系統(tǒng)概述android最初是android公司創(chuàng)辦,后由google公司收購,google希望將android創(chuàng)造成一個標準化的、可移動的移動電話平臺,進而在移動互聯(lián)網(wǎng)形成一個開放性的操作平臺。2007年谷歌發(fā)布第一個android1.1版本,但并未得到市場的廣泛支持,但是到2009年,android1.5版本的面世,android憑借“豪華”的界面和藍牙支持,獲得了大量的開發(fā)者支持。到目前為止,android已經(jīng)超過ios在市場的占有量,國內(nèi)大量的手機廠商開始生產(chǎn)android操作系統(tǒng)的手機,android已經(jīng)成為世界上最主流的手機操作系統(tǒng)。0 圖1-1 android系統(tǒng)的體系結(jié)構(gòu)android系統(tǒng)的底層是建立在linux系統(tǒng)之上,總共包括linux內(nèi)核、android運行時、函數(shù)庫、應(yīng)用程序框架、應(yīng)用程序?qū)?。linux層為android提供了內(nèi)存管理、網(wǎng)絡(luò)協(xié)議棧、驅(qū)動模型、進程管理等核心系統(tǒng)服務(wù)。android運行時則是由兩部分組成:android虛擬機和android核心庫集,android核心庫集提供了java語言核心庫所能使用的絕大多數(shù)功能,而虛擬機則負責(zé)運行android應(yīng)用程序。在這里要區(qū)分的是android和jvm是完全不同的,jvm永興的是java字節(jié)碼,也就是.class文件,而android虛擬機則運行的是專有的dex文件。函數(shù)庫包含了一整套能被android應(yīng)用程序框架所調(diào)用的庫的集合,像android專有的輕量級數(shù)據(jù)庫sqlite等,需要注意的是android應(yīng)用程序并不1能直接調(diào)用這些庫,需要經(jīng)過應(yīng)用程序框架來調(diào)用。android應(yīng)用程序框架最主要的功能是提供了大量的api供開發(fā)者使用,不管是系統(tǒng)的應(yīng)用程序還是開發(fā)者自己開發(fā)的應(yīng)用程序都可以公平的調(diào)用它。應(yīng)用程序?qū)泳褪俏覀兤綍r在手機上所見的包括系統(tǒng)提供的時鐘瀏覽器、聯(lián)系人等等還是自己下載的由開發(fā)者自己開發(fā)的android所有的應(yīng)用程序。2. 系統(tǒng)理論和技術(shù)路線2.1 android四大組件 activity要實現(xiàn)的功能是用戶交互的組件,它是用戶可以看到的,一個activity可以包含多個ui組件并顯示,例如textview、button、imageview、adapaterview等組件。service在地位上和activity是并列的,但是它和activity不同處在于service對于用戶是不可見的,所以它不能和用戶進行交互,因此service有自己的生命周期,并不依賴于一個activity,他的主要功能是為其他組件提供后臺服務(wù)和監(jiān)控其他組件的運行狀態(tài)。broadcastreceiver從名字上說可以把其當做一個信息廣播的接收組件,開發(fā)者通過集成父類broadcastreceiver來實現(xiàn)自己的功能。其它組件通過sendbroadcast()等方法來發(fā)送廣播,子類broadcastreceiver通過onreceiver(context context,intent intent)方法來監(jiān)聽接收消息。contentprovider和其它三個組件最大不同在于其可以從其它app程序接口中取得其它app中的信息,最常見例子是:好多app需要讀取我們手機聯(lián)系人中的數(shù)據(jù),而contentprovider就能提供這個需求。2.2 c/s體系 c/s即客戶端/服務(wù)器端結(jié)構(gòu),如果說c/s就最好和b/s作比較,那具體的項目舉例就是需要下載的qq客戶端就屬于c/s模式,而網(wǎng)頁版的qq就屬于b/s結(jié)構(gòu)的項目。c/s結(jié)構(gòu)中需要用戶下載專有的客戶端軟件,而b/s模式,客戶端不需要下載任何用戶界面,從這一方面來說節(jié)約了開發(fā)成本,但是從安全性來說,c/s模式對于每個用戶都有一個客戶端,而b/s模式的客戶端是被所有用戶公用,而且不固定,所以來說,c/s比較b/s來說安全性相對較高。2.3 jsp和servlet servlet是作用在服務(wù)器端,其本質(zhì)就是一個java類,它可以響應(yīng)客戶端的請求,并作出處理。servlet有它自己的生命周期,包括服務(wù)器對一個servlet的首次加載、對servlet的初始化、初始化后對客戶端請求的響應(yīng)、最后的銷毀。對于servlet的初始化我們只能調(diào)用其里面的init()方法一次,以后再用都不會在調(diào)用這個方法,而當servlet銷毀時,會調(diào)用destroy()這個方法。需要注意的是在后臺項目里面,如果用到了servlet,對于每一個servlet我們需要在web-inf目錄中的web.xml對其進行配置。在?問號位置放置此servlet的名字?一般和其name放置內(nèi)容一致。在 /? 里面,一定要放置此servlet在項目中的位置路徑。 jsp作為java的腳本語言,他其實也可以被當做是servlet,因為對于jsp語法,jsp引擎是先將其轉(zhuǎn)換成servlet代碼,然后才帶入執(zhí)行,jsp有自己的標簽語言,像c標簽庫、s標簽庫等,jsp還有自己的內(nèi)置對象,像request、response、session等。對于jsp的聲明格式為,對于jsp的注釋的格式為。 在本系統(tǒng)中我們主要是用到j(luò)sp中requset、response、session內(nèi)置對象像servlet請求數(shù)據(jù),servlet通過doget、dopost方法獲取請求信息,并做處理,將處理后的信息傳送給需要的jsp頁面,jsp頁面獲取servlet傳送過來的信息后將其輸入在網(wǎng)頁上。2.4系統(tǒng)主要路線 在數(shù)據(jù)庫方面,我所設(shè)計的電子點菜系統(tǒng)用到的是mysql數(shù)據(jù)庫,大致包括菜品表、菜品順序表、優(yōu)惠券表、用戶表、管理員表、銷售量表、意見反饋表;對于數(shù)據(jù)庫的存儲管理我們借助于navicat for mysql工具軟件來實現(xiàn)。對于服務(wù)器端的設(shè)計,主要用html、css來實現(xiàn),其中對于數(shù)據(jù)庫的請求和獲取數(shù)據(jù)庫的信息并顯示,主要會用到j(luò)sp語言來實現(xiàn),如用jsp中jdbc技術(shù)來實現(xiàn)和數(shù)據(jù)庫的連接,用jsp中一些內(nèi)置對象request、response來處理http請求中各種參數(shù)的處理。通過servlet中doget()、dopost()方法來對jsp頁面的請求信息進行處理,并反饋給相對應(yīng)的jsp頁面。對于android客戶端應(yīng)用程序的設(shè)計主要分三個功能。首先是應(yīng)用程序的界面設(shè)計,我們會用到ui中的一些組件,像一些布局管理器、view、button按鈕等。其次是界面間的內(nèi)部通信,我們會用到intent、intentfilter來實現(xiàn)。最后是android和后臺的通信我們會用到android的網(wǎng)絡(luò)應(yīng)用技術(shù)來實現(xiàn),如用url來讀取網(wǎng)絡(luò)資源、relconnection來提交請求。2.5 運行環(huán)境要求 2.5.1 硬件環(huán)境 服務(wù)端:ie瀏覽器pad客戶端:無特殊要求,因為android項目在設(shè)計時是按照建議七寸分辨率的屏幕來做,因此最好是選用這個尺寸大小的屏幕,在cpu主頻上最好選用1.5mhz以上,如果主頻太低,影響程序運行速度。2.5.2 軟件環(huán)境服務(wù)端:mysql數(shù)據(jù)庫、myeclipse 、android adtpad客戶端:android4.1及以上,如果版本太低,那么一些在4.1以后新增的一些功能,因為app中用到,但是老版本不能識別,造成程序運行不了,所以盡量選用新版本的平板。3. 系統(tǒng)需求分析3.1各模塊關(guān)系圖此系統(tǒng)設(shè)計主要由以下各功能組成,分別包括后臺服務(wù)器端和客戶端的一些功能,在服務(wù)器端主要包括管理員的登陸、管理員對菜品信息的管理、管理員對訂單信息的管理。在客戶端所要實現(xiàn)的模塊中,此app中所要實現(xiàn)的功能包括首頁面的今日特色推薦、按照不同分類來進行菜品(包括葷菜、素材、價錢、酒品)顯示、已點的菜品、登陸注冊、個人信息和小游戲模塊,系統(tǒng)所包含的模塊如下圖所示: 圖2-1 系統(tǒng)模塊3.2數(shù)據(jù)庫設(shè)計3.2.1 數(shù)據(jù)庫列表數(shù)據(jù)庫我們采用mysql數(shù)據(jù)庫,所需要建立的表有:(1)菜品表(dish)是為了可以在客戶端可以實現(xiàn)對菜品按照不同類型的排序和查找。其中包括主鍵菜名(id)、菜名(dishname)、菜圖(dishimage)、菜價(dishprice)、菜品所屬類別(dishcategory)、菜品是否被推薦(isrecommend)、菜品的拼音拼寫(spell)、菜品的拼音簡拼(simplespell)。(2)菜單順序表(dish_order)是主功能,是為了餐館能正確有序的讓廚房做出每道菜,并且可以使每道菜能正確送到每個餐桌。其中包括主鍵菜品所屬上菜順序(menunumber)、桌名(tableid)、菜品id(dishid)、菜名(dishname)、此類菜所點數(shù)量(dishcount)。(3)菜品的銷售量表(dish_salevolume)主要是方便餐館一方可以對每道菜進行統(tǒng)計,并可對此進行各方面的調(diào)整。其中包括主鍵為菜品id(dishid)此菜品的銷售量(realsale)。(4)意見反饋表(feedback)主要是方便客戶對菜的味道和餐館的服務(wù)等提出意見。其中包括主鍵用戶id(id)、此用戶所提得意見(information)。(5)管理員表(manager)主要是為了餐館一方在pc端登陸所用。其中包括主鍵管理員id(id)、登錄名(username)、登錄密碼(userpassword)。(6)用戶表(user)主要是為了實現(xiàn)對用戶信息的存儲。其中包括主鍵用戶id(id)、登錄名(username)、登錄密碼(password)。(7)優(yōu)惠券表(user_coupon)主要是為了實現(xiàn)對優(yōu)惠券信息的的管理。其中包括主鍵優(yōu)惠券id(id)、優(yōu)惠券所屬用戶的用戶的id(userid)、優(yōu)惠券有效開始日期(couponstarttime)、優(yōu)惠券的份額(couponvalue)優(yōu)惠券有效截止日期(couponendtime)。3.2.2數(shù)據(jù)庫連接的實現(xiàn)對于數(shù)據(jù)庫的連接,本系統(tǒng)用到的是java中的jdbc技術(shù),jdbc為開發(fā)者提供很多核心的類庫,并規(guī)范了連接數(shù)庫的要求,包括對數(shù)據(jù)庫的連接、對數(shù)據(jù)庫的查詢和各種操作、從數(shù)據(jù)庫中獲取數(shù)據(jù)。jdbc中有很多接口和常用類,我們主要用到的是drivermanager、connection、statement、resultset。當然我們通過jdbc技術(shù)和數(shù)據(jù)庫進行連接時,對不同的數(shù)據(jù)庫我們需要加載不同的驅(qū)動程序類,本系統(tǒng)我們用到的是mysql數(shù)據(jù)庫,所以我們將mysql-connector-java的包導(dǎo)入程序即可保證與數(shù)據(jù)庫的連接。 此系統(tǒng)采取mysql數(shù)據(jù)庫,數(shù)據(jù)庫的連接程序在后臺padoeder_service程序src目錄的util包中,首先我們現(xiàn)在src目錄中建立一個名字為dbcperties的配置文件,里面存放數(shù)據(jù)庫連接需要的連接名、url、數(shù)據(jù)庫的用戶名和密碼。對于配置文件的使用可以方便其他使用者在不同的地方進行使用,其他使用者只需要在配置文件中重新改寫不同的信息而不需要在代碼中更改。drivermanager可以自動尋找相應(yīng)的數(shù)據(jù)庫驅(qū)動程序,并可以與之連接,drivermanager可以識別mysql數(shù)據(jù)庫、sql server等數(shù)據(jù)庫的驅(qū)動,drivermanager通過調(diào)用class.forname(”),接著我們通過drivermanager中的getconnection(string url,string user,string password)方法與數(shù)據(jù)庫即可取得連接,在getconnection方法中的三個參數(shù)中,url對于不同的數(shù)據(jù)庫有不同的url,url的組成包括協(xié)議、子協(xié)議、子名組成,由于本系統(tǒng)用的是mysql數(shù)據(jù)庫,因此我們就用連接mysql數(shù)據(jù)庫的url做例子,對于連接mysql的url為:jdbc:mysql:/:4417,在這里需要注意的是常用的數(shù)據(jù)庫端口是3306,因為本人設(shè)置的是4417,因此在我們這里我的url中的端口號為4417。getconnection中的user和password分別為自己數(shù)據(jù)庫對應(yīng)的賬號和密碼,對于數(shù)據(jù)庫的連接代碼如下:public class dbutil public connection openconnection() properties prop = new properties();string driver = null;string url = null;string username = null;string password = null;string yhc_url= null;try prop.load(this.getclass().getclassloader().getresourceasstream( dbcperties);driver = prop.getproperty(driver);url = prop.getproperty(url);username = prop.getproperty(username);password = prop.getproperty(password); yhc_url = prop.getproperty(yhc_url);class.forname(driver);return drivermanager.getconnection(url, username, password); catch (exception e) e.printstacktrace();return null;public string geturl() properties prop = new properties();string yhc_url = null;try prop.load(this.getclass().getclassloader().getresourceasstream( dbcperties); yhc_url = prop.getproperty(yhc_url); return yhc_url; catch (exception e) e.printstacktrace();return null;配置文件dbcperties中所存放的信息如下:driver=com.mysql.jdbc.driverurl=jdbc:mysql:/:4417/e-menu?useunicode=true&charactere ncoding=utf-8username=rootpassword=123456jdbc中的另外一個常用接口connection代表與數(shù)據(jù)庫驅(qū)動程序代表的連接,一個應(yīng)用程序中可以與數(shù)據(jù)庫有一個或者多個數(shù)據(jù)連接,connection可以向數(shù)據(jù)庫輸入數(shù)據(jù)庫查詢語句,數(shù)據(jù)庫因此而能執(zhí)行其輸入的查詢語句。statement作為jdbc的另外一個常用接口,他的出現(xiàn)主要是因為對數(shù)據(jù)庫操作的語句,是封裝在其中,它分為statement、preparedstatement、callablestatement三種對象,對于如果查詢中沒有參數(shù),那么我們就可以使用statement對象中的executequery、executeupdate等方法對數(shù)據(jù)庫進行查詢、更新、增刪等操作而如果查詢的語句中如果限制條件中需要輸入?yún)?shù),那么我們就需要通過preparedstatement來對數(shù)據(jù)庫進行操作,我們可以通過preparedstatement可以通過里面setstring(?,?)、setint(?,?)、setboolean(?,?)來對查詢語句中的參數(shù)賦值,舉例如下:string sql = select id,dishname,dishimage,dishprice,dishcategory,isrecommend,spell,simplespell,realsale from dish,dish_salevolume where dishid=id limit ?,? ;ps = conn.preparestatement(sql);ps.setint(1, pagenow);ps.setint(2, pagesize);callablestatement因為在本系統(tǒng)中并不常用,在這里就不做概述。resultset作為jdbc中另外一個重要的接口,他的主要功能是存儲從數(shù)據(jù)庫中查詢獲取的數(shù)據(jù),resultset中常用的方法包括next()用來使光標移動到數(shù)據(jù)庫記錄的下一條,因為其這功能,我們可以在代碼中判斷數(shù)據(jù)庫查詢結(jié)果中的數(shù)據(jù)我們是否都取得完畢,如果取完,那么next()方法返回一個false,因此循環(huán)就可以截止了。舉例如下:string sql = select id,dishname,dishimage,dishprice,dishcategory,isrecommend,spell,simplespell,realsale from dish,dish_salevolume where dishid=id limit ?,? ;ps = conn.preparestatement(sql);ps.setint(1, pagenow);ps.setint(2, pagesize);rs = ps.executequery();while(rs.next() dish = new dish();dish.setid(rs.getint(1);dish.setdishname(rs.getstring(2);dish.setdishimage(rs.getstring(3);dish.setdishprice(rs.getint(4);dish.setdishcategory(rs.getstring(5);dish.setisrecommand(rs.getboolean(6);dish.setspell(rs.getstring(7);dish.setsimplespell(rs.getstring(8);dish.setsalevolume(rs.getint(9);3.3 功能需求描述 下表主要對整個點菜系統(tǒng)所有的模塊進行了描述,包括android端和服務(wù)器端功能的描述。包括每個模塊要實現(xiàn)的功能,每個模塊的優(yōu)先級,每個模塊的權(quán)限都進行了描述,像菜品類別分類顯示、用戶的登陸、在服務(wù)器端的管理員登錄模塊、服務(wù)器端對菜品的查找、修改、服務(wù)器端對訂單的管理等等。具體各部分的功能如下表所示: 系統(tǒng)功能需求分析圖 模塊功能 優(yōu)先級描述 權(quán)限說明 首頁顯示主界面 一級圖片按鈕的形式顯示在界面;每個按鈕跳入對應(yīng)的界面; 運行程序后,直接進入; 菜品類別 葷菜系列海鮮系列素菜系列飯湯系列酒品飲料一級顯示不同類別的菜品信息 今日推薦今日推薦一級顯示店家每日推薦的菜品信息 本店熱賣本店熱賣一級根據(jù)銷量顯示菜品 用戶登錄用戶登錄/注冊一級登錄后可以保存和使用游戲中贏取的優(yōu)惠卷登錄后按鈕轉(zhuǎn)換成我的信息按鈕 我的信息我的信息二級顯示用戶的優(yōu)惠卷信息,數(shù)量等登錄后才會顯示 菜品搜索簡易搜索語音搜索一級 根據(jù)菜品名稱模糊搜索,不想打字也可語音搜索 已點的菜已點的菜二級 顧客已經(jīng)提交的菜品信息更多娛樂游戲一級 給你展現(xiàn)一道本店的菜,讓你來猜菜名,連續(xù)3道你就可以獲取優(yōu)惠券了每天機會只有一次哦! 獲取優(yōu)惠卷須 先登錄周邊查找一級 你可以利用百度地圖,搜索附近的一些ktv、超市、酒店、娛樂場所等,解決餐后安排問題意見反饋二級消費者反饋對本餐廳的服務(wù)的滿意度調(diào)查和意見退出程序二級退出本程序服務(wù)器登陸二級對菜品進行增刪改查查看訂單,桌號訂單,結(jié)賬后相應(yīng)訂單記錄刪除 登陸后可操作3.4 主要開發(fā)工具3.4.1 myeclipse對于myeclipse的解釋,首先要說eclipse,eclipse是基于java語言且開放并且可以擴展的操作平臺。eclipse包含了一個標準的插件集,包括java development tools 即jdt,eclipse有很多的優(yōu)點。eclipse首先來說源碼是開放的,所有的開發(fā)人員都可以研究它,另外,eclipse是可以擴展的,它不僅支持java的開發(fā),還包括php、c等很多語言的開發(fā)和使用,只需要下載相應(yīng)的插件即可。而且eclipse對于很多的平臺都是支持的,像linux、windows等等。對于不同的平臺,eclipse提供相對應(yīng)的工具包。當然用eclipse來開發(fā)軟件,更高效和迅速。myeclipse作為eclipse的擴展板,不僅繼承了eclipse的所有功能,而且在我們的軟件中,因其能很好的處理在javaee和數(shù)據(jù)庫的開發(fā),因而我們能利用javaee中jsp、javascript和數(shù)據(jù)庫來實現(xiàn)我們軟件中后臺的功能。而且myeclipse還內(nèi)嵌了tomcat,因此我們還可以直接將后臺在其上進行發(fā)布。對于tomcat,他是一個免費的軟件,我們可以通過其來發(fā)布自己的項目。對于項目的發(fā)布,我們可以自己手動的發(fā)布,亦可以通過myeclipse來發(fā)布。我們比較贊同手工的項目發(fā)布,因為我們可以定期的清理tomcat中已經(jīng)不用的項目,而不需要每次發(fā)布一次項目都要將以前的項目都發(fā)布了,如果不定期清理,我們每次發(fā)布項目所浪費的時間會增大很多。在tomcat的目錄文件中分好幾個目錄文件,像/bin是用來存放一些腳本文件、像/config中是存放一些配置文件、/logs中存放的是日志文件而我們手動發(fā)布項目時候我們只需要將完整的項目放到/webapps目錄下面,然后啟動tomcat,在瀏覽器中輸入相對應(yīng)的http:/localhost:8080/之后,如果出現(xiàn)tomcat的網(wǎng)頁,那么就證明我們的tomcat啟動成功,接下來在瀏覽器中輸入我們項目的url,即可對項目進行查看。3.4.2 adtadt是eclipse中的一個插件,它可以快速讓開發(fā)者創(chuàng)建一個android的項目和開發(fā)界面,而且其包括了android基本框架的api組件??偟膩碚f,有了adt插件,我們可以更高效的來實現(xiàn)對android項目的開發(fā)。在adt中我們可以很方便的對客戶端app進行調(diào)試,對于android項目的調(diào)試,可以有虛擬機和真機兩種調(diào)試方法。在本系統(tǒng)中因為需要的是一個占用內(nèi)存比較大,而且屏幕分辨率比較高的程序,所以我們選用真機來調(diào)試,選用真機來調(diào)試程序,首先需要下載此手機的驅(qū)動程序,如果用戶嫌棄麻煩,那么可以直接下載360手機安裝助手或者騰訊手機安裝助手,然后用數(shù)據(jù)先連接手機,在pc端手機助手中會自動幫助手機安裝客戶端手機助手,我們接著打開系統(tǒng)設(shè)置-開發(fā)者選項-將允許usb調(diào)試、允許模擬位置、不鎖定屏幕勾選,然后點擊adt中的運行,選中自己的手機,接著,本系統(tǒng)app將自動安裝到手機中,用戶即可調(diào)試。假如說沒有android真機,在其它android項目測試時,我們可以在android virtual device manager 中查看我們所建立的虛擬機,當然我們也可以根據(jù)自己項目要求新建立一個虛擬機,自由分配內(nèi)存大小,但是假如有真機我們還是第一個選擇真機,因為虛擬機在穩(wěn)定性和快捷性上都不如真機,可能有些錯誤我們在虛擬機上面不一定調(diào)試不出來。在android adt的調(diào)試中,我們用專門的ddms進行調(diào)試,ddms主要分為設(shè)備面板,信息面板,信息輸出面板。在設(shè)備面板中,我們可以查看當前在調(diào)試android項目所用的android機。在ddms中我們用到的最多的是信息輸出面板中的logcat,當我們調(diào)試程序時,如果我們的程序有錯誤,我們可以在錯誤的地方拋出異常,而在logcat中有一功能saved filters,這就相當于系統(tǒng)為我們提供了一個過濾器,我們可以在新建一個自己需要的過濾器,以此來捕獲自己項目中的錯誤,這個方法在項目初期調(diào)試運行期間后經(jīng)常用到,當然強大的adt還為我們提供了在手機和電腦之間可以相互傳送數(shù)據(jù)的功能,在ddms中如果我們項目中有用到sqlite數(shù)據(jù)庫,我們還可以查看這個數(shù)據(jù)庫中我們所存的數(shù)據(jù)。4. 軟件系統(tǒng)設(shè)計4.1后臺功能模塊4.1.1后臺登陸模塊管理員登陸的模塊主要通過jsp登陸頁面向一個servlet提交管理員輸入的用戶名和密碼。jsp頁面所用的技術(shù)是一個form表單,form表單中的action屬性對應(yīng)相對應(yīng)要驗證登陸信息正確與否的一個servlet,而此servlet類通過集成httpservlet類,并通過doget、dopost方法中的request請求獲取form表單中的管理員信息,servlet通過連接數(shù)據(jù)庫進行驗證,如果管理員登錄信息合法,那么servlet通過doget方法中response方法直接跳轉(zhuǎn)到后臺管理主界面。servlet處理中的主要代碼展示如下:public void doget(httpservletrequest request, httpservletresponse response)throws servletexception, ioexception response.setcontenttype(text/html;charset=utf-8);printwriter out = response.getwriter();httpsession session = request.getsession();string action = request.getparameter(action); system.out.println(action);managedao md = new managedaoimpl();md.deletecoupon();if(login.equals(action)string username = request.getparameter(username);string password = request.getparameter(userpassword);system.out.println(username+sdfc);out.print(username); boolean flag = md.check(username, password);if(flag)httpsession username = request.getsession(true);username.setattribute(username, username);system.out.println(username);response.sendredirect(manage/main.jsp);else/*out.print(登錄失敗);out.print(重新登錄);system.out.println(登錄失敗);*/ response.sendredirect(manage/index.jsp?result=fail); 管理員登陸界面效果圖如下:圖4-1 后臺登陸4.1.2后臺菜品模塊 后臺菜品的管理主要是實現(xiàn)了一個對菜品進行分頁的顯示和對菜品進行修改、刪除的功能。對菜品的分頁顯示的功能實現(xiàn)流程為:一個jsp頁面通過page指令中的session向一個servlet傳輸當前頁面(pagenow)和每頁顯示的菜品數(shù)(pagesize),servlet通過調(diào)用分頁顯示功能的函數(shù)將jsp頁面需要的菜品數(shù)據(jù)傳送回jsp頁面,jsp頁面通過c標簽將數(shù)據(jù)顯示到頁面中,servlet獲取jsp請求數(shù)據(jù)和向jsp傳輸和數(shù)據(jù)所用到的方法和后臺管理員登陸時向servlet驗證信息時用到的技術(shù)是一樣的,因此在此就不做解釋。而實現(xiàn)分頁顯示功能的函數(shù)部分代碼如下:public pagebean findbypagedish(int pagesize, int pagenow) / todo auto-generated method stubdbutil util = new dbutil();connection conn = util.openconnection();pagebean pb = new pagebean();pb.setpagesize(pagesize);dish dish = null;int pagenow = (pagenow-1)*pagesize;try string sql = select id,dishname,dishimage,dishprice,dishcategory,isrecommend,spell,simplespell,realsale from dish,dish_salevolume where dishid=id limit ?,? ;ps = conn.preparestatement(sql);ps.setint(1, pagenow);ps.setint(2, pagesize);rs = ps.executequery();while(rs.next() dish = new dish();dish.setid(rs.getint(1);dish.setdishname(rs.getstring(2);dish.setdishimage(rs.getstring(3);dish.setdishprice(rs.getint(4);dish.setdishcategory(rs.getstring(5);dish.setisrecommand(rs.getboolean(6);dish.setspell(rs.getstring(7);dish.setsimplespell(rs.getstring(8);dish.setsalevolume(rs.getint(9);pb.getdish().add(dish);string sql2 = select count(distinct id) from dish;ps = conn.preparestatement(sql2);rs = ps.executequery();if(rs.next()pb.setpagesizes( rs.getint(1) ; catch (sqlexception e) / todo auto-generated catch blocke.printstacktrace();finallyclose();return pb;后臺菜單管理界面效果圖如下:圖4-2 后臺菜單管理4.1.3后臺訂單模塊 后臺訂單的管理和后臺菜品的管理所用到的技術(shù)是一樣的,都是需要在jsp頁面中對數(shù)據(jù)進行分頁顯示。二者不同在于訂單管理請求的數(shù)據(jù)庫表是dish,而后臺訂單的管理請求的數(shù)據(jù)庫是dish_order,后臺訂單管理所要實現(xiàn)的功能包括對所有訂單的查找,在顧客結(jié)賬時候?qū)?shù)據(jù)庫表dish_order中相應(yīng)的數(shù)據(jù)進行清除。后臺訂單管理效果圖如下:圖4-3 后臺訂單管理4. 2客戶端功能模塊4.2.1首頁面模塊在首頁面模塊,我們主要實現(xiàn)的是通過一個gallery畫廊視圖組件來實現(xiàn)一個跑馬燈的效果來自動顯示存放在一個adapter對象中的一組菜品信息。當然我們會在adapter中每一個圖片中加上一個onclicklistener,當顧客自己通過手勢向左或者向右滑動的時候,gallery中會更換為adapter中存儲的其它菜品圖片。我們通過在里面存放每日推薦的菜品,然后顧客在首次打開客戶端的時候,看到的就是餐飲方主打的菜品。接著顧客可以通過自己的需求進入主功能的模塊。對于客戶端首頁面效果圖如下:圖4-4 客戶端首頁面4.2.2主功能模塊在功能模塊,我們實現(xiàn)的是一個類似于新聞瀏覽頁面的界面,在上邊界和左側(cè)邊界,我們選中不同的按鈕,相應(yīng)出來不同排序的界面。這種模式值得注意,一般因為手機的屏幕大小,我們不會讓側(cè)邊界的功能模塊出現(xiàn),因為這樣留給顯示信息模塊的位置就更小了,對于用戶的體驗就更不好了。因為我們本系統(tǒng)的設(shè)計是考慮到是在平板等尺寸比較大的android系統(tǒng)上運行,因此我們采用這種模式,這樣的模式對于用戶對于菜品的選擇更方便。而為了實現(xiàn)這個功能,我們就需要用到fragment,對于fragment,我們可以把它認為是activity的一個片段,它有自己的生命周期,但是它的生命周期完全是建立在activity之上,activity銷毀時,在他上面的fragment也會相應(yīng)的銷毀,activity暫停的時候,相應(yīng)的fragment也會相應(yīng)的銷毀。因為fragment屬于activity的一個子模塊,所以二者可以進行通信。當然在主功能模塊的菜品信息顯示模塊中,我們用到的是baseadapter,adapterview我們可以把它當做是一個存放列表的一個容器,他有很多的子類,如果他的子類能完成我們的功能時候,那么我們直接調(diào)用子類即可,像arrayadapter、simpleadapter、baseadapter,像第一個我們只能存放list集合的一組值性質(zhì)的數(shù)據(jù),而對于baseadapter我們可以最大限度得對各列表項進行封裝,因此,我們所用的是基于對baseadapter進行繼承而實現(xiàn)菜單的顯示。而對于菜品信息的傳送,當然我們是像數(shù)據(jù)庫請求而獲取的,具體的流程是,我們像每一個按鍵設(shè)置一個監(jiān)聽onclicklistener,當我們點擊按鈕時候,客戶端通過urlconnection請求向服務(wù)器端進行請求,而服務(wù)器端的處理客戶端請求的一個ser
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)文化建設(shè)評估試卷及答案
- 2025年信息安全技術(shù)人才資格考試卷及答案
- 2025年護理管理師考試試題及答案
- 2025年統(tǒng)計學(xué)原理與應(yīng)用考試試題及答案
- 知識產(chǎn)權(quán)侵權(quán)糾紛訴訟代理服務(wù)合同
- 體育賽事公平競賽承諾書標準模板下載
- 婚姻忠誠協(xié)議中房產(chǎn)居住權(quán)專屬保留范本
- 企業(yè)高級管理人員競業(yè)限制及補償協(xié)議
- 網(wǎng)絡(luò)店鋪債務(wù)處理與權(quán)益維護合同
- 娛樂業(yè)勞務(wù)派遣職業(yè)病防治及責(zé)任協(xié)議
- 醫(yī)院食堂營養(yǎng)餐實施方案
- 2024中國房企數(shù)字化產(chǎn)品力白皮書
- 《地方文化資源在幼兒園中開發(fā)利用的比較研究》
- 水泥基材料改性研究-洞察分析
- 3-1-絕緣安全用具、驗電器的使用方法
- 安規(guī)線路培訓(xùn)
- 2024勞動法律法規(guī)培訓(xùn)
- 幼升小公有住宅租賃合同(2篇)
- 實驗室安全教育課件
- 無縫氣瓶檢驗作業(yè)指導(dǎo)書2024
- 4.1基因指導(dǎo)蛋白質(zhì)的合成(第1課時)高一下學(xué)期生物人教版必修2
評論
0/150
提交評論