版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、u eurasia 歐亞學(xué)院 信息工程學(xué)院 專業(yè)綜合課程設(shè)計報告 項目題目 基于安卓的網(wǎng)上訂餐系統(tǒng) 專業(yè)班級: 統(tǒng)本電信1301班 學(xué)號: 馬麗 192 指導(dǎo)教師: 宏于 有強 完成時間: 2016 年12月30日 設(shè)計報告成績評定表 評分容 成績 系統(tǒng)方案思路合理性(10% 報告容的完整性(10%) 硬件原理圖及說明(20%) 程序流程圖(20%) 程序清單(10%) 調(diào)試及結(jié)果分析(10%) 系統(tǒng)改進(jìn)建議或者方案(10%) 格式規(guī)(10%) 總分 備注:以上總分為該組的平均分,根據(jù)成員分工具體分?jǐn)?shù)如下。 小組成員 分工 分?jǐn)?shù) 馬麗 軟件調(diào)試 摘要 隨著科技的發(fā)展,二十一世紀(jì)成為了以網(wǎng)絡(luò)化,
2、信息化為核心的社會。網(wǎng)絡(luò)商業(yè)化 也成為了時下最熱門的詞匯。隨著信息技術(shù)的不斷更新,特別是 07 年谷歌公司推出了 Android 開放源碼,讓 Android 操作系統(tǒng)成為了移動平臺的寵兒,本系統(tǒng)主要分析了中 小型餐飲店管理與發(fā)展的現(xiàn)狀所面臨的問題, 發(fā)現(xiàn)傳統(tǒng)的服務(wù)模式已經(jīng)不能適應(yīng)市場發(fā) 展的需求,方便、快捷、個性化的網(wǎng)上訂餐服務(wù)正在進(jìn)入人們的生活。針對這類問題, 結(jié)合當(dāng)代科技發(fā)展的新成果,本文構(gòu)思規(guī)劃了一套最貼切的服務(wù)模式,為中小型餐飲店 外送服務(wù)提供了一套系統(tǒng)。 本設(shè)計是一個基于 Android 手機的網(wǎng)上訂餐系統(tǒng),采用 C/S 模式,能為客戶提供網(wǎng) 上選擇瀏覽菜品介紹,點菜訂餐服務(wù),并為
3、管理員提供一個服務(wù)平臺實現(xiàn)用戶信息與顧 客訂單的管理,從而提高了服務(wù)的質(zhì)量,本文從系統(tǒng)需求、系統(tǒng)實際、代碼實現(xiàn)幾個方 面介紹了整個軟件的開發(fā)過程,這個系統(tǒng)采用JAVA、 SQL Server 數(shù)據(jù)庫 ,并利用 MyEclipse、TOMCATAndroid SDK、ADT AVD DDM等開發(fā)環(huán)境或者開發(fā)工具。 關(guān)鍵詞:An droid ; Java; MyEclipse ; SQLite ; SQL Server 2005 ABSTRACT With the developme nt of scie nee and tech no logy,the21st cen tury hasbecom
4、e a society centred on informationand network.Henee commercializationof network has become one of the hottest topics in rece nt years. An droid operat ing system is gradually going to be the darling of the mobile platform, which results from the con sta ntly updat ing of in formati on tech no logy,
5、especially the appeara nee of An droid ope n source carried out by Google compa ny in 2007. The system mentioned in this article mainly focus on the problems faced by the middle and small reataurantsin theirmanagement and development, and finds that the traditi onal service mode can not adapt to the
6、 n eeds of the developme nt of the market any more.A more convenient, quicker,a nd pers on alized service en ters people s lifeonline reservations. In view of the existing problems and comb ining the latest achieveme nts of the developme nt of moder n tech no logy, I have con ceived a set of the mos
7、t appropriate patter n of dilivery service for the restaura nt in dustry. This desig n is a on li ne reservatio ns system based on the An droid mobile phones, which adopts C/S mode. It can provide services for clients to choose dishes introductionfreely ,and to order meal actively.Besides, it can al
8、so offer a service platform for man ager to regulate the user in formati ons and customer orders, so as to improve the quality of their services .In this article, I d like to introduce the whole development process of this software in details from the system requirements, system realization,codeimpl
9、ementation and someother aspects.This system uses JAVA,SQL Server database,i n additi on, MyEclipse、 TOMCAT An droid SDK、ADT AVD DDMS and other developme nt en viro nments or developme nt tools are also used in it. Keywords: Android ; Java; MyEclipse ; SQLite ; SQL Server 2005 第一章引 言 1.1項目背景 1 1.2 項
10、目目的 1 1.3 主要容 2 第二章系統(tǒng)理論與技術(shù)3 2.1 An droid 3 2.1.1 An droid簡介 3 2.1.2 An droid Features 特性 3 2.1.3 An droid基本框架(An droid Architecture ) 4 2.1.4 An droid 系統(tǒng)的四大組件 4 2.2 Java 5 2.3 SQL Server 2005和SQLite 數(shù)據(jù)庫 5 2.4 C/S 模式 6 第三章系統(tǒng)分析與設(shè)計 8 3.1 功能需求 8 3.2 模塊結(jié)構(gòu)與流程 9 3.2.1 客戶端 9 3.2.2服務(wù)端 10 3.3數(shù)據(jù)庫設(shè)計 11 3.3.1 數(shù)據(jù)
11、庫表及其結(jié)構(gòu) 11 3.3.2 數(shù)據(jù) 12 3.3.3客戶端數(shù)據(jù)庫的連接 13 3.3.4 服務(wù)器數(shù)據(jù)庫的連接 14 3.4系統(tǒng)結(jié)構(gòu) 15 3.4.1 部署圖 15 3.4.2 類圖 15 3.5 執(zhí)行概念 16 第四章系統(tǒng)實現(xiàn)18 4.1 An droid 環(huán)境搭建 18 4.2客戶端 19 4.2.1 系統(tǒng)登錄 19 4.2.2系統(tǒng)注冊 21 4.2.3瀏覽菜品 23 424搜索菜品 25 425訂餐 26 426結(jié)賬 28 4.3服務(wù)端 29 4.3.1 系統(tǒng)登錄 29 4.3.2訂單管理 30 433菜品管理 32 4.3.4會員管理 35 第五章 結(jié)束語38 參考文獻(xiàn)40 致 謝41
12、 第一章引 言 1.1項目背景 伴隨著我國市場經(jīng)濟的高度發(fā)展,企業(yè)越來越依賴于市場和客戶,這種依賴關(guān)系已 經(jīng)開始逐步提升到關(guān)乎企業(yè)生存的高度。如何獲得更多客流量,如何通過小的代價而使 商家獲得更大的知名度,這是使企業(yè)得以生存、發(fā)展、壯大的關(guān)鍵。年銷售過億的眾多 電子商務(wù)案例讓人們看到了更多的商機。 與應(yīng)用場景相當(dāng)有限的PC (個人電腦)相比, 生而具備便攜屬性的手機給了電商們更大的想象空間。移動電子商務(wù)由此產(chǎn)生了。移動 電子商務(wù)就是利用手機、PDA及掌上電腦等無線終端進(jìn)行的 B2BB2C或C2C的電子商務(wù)。 它將因特網(wǎng)、移動通信技術(shù)、短距離通信技術(shù)及其它信息處理技術(shù)完美的結(jié)合,使人們 可以在任
13、何時間、任何地點進(jìn)行各種商貿(mào)活動,實現(xiàn)隨時隨地、線上線下的購物與交易、 在線電子支付以及各種交易活動、商務(wù)活動、金融活動和相關(guān)的綜合服務(wù)活動等。 而An droid操作系統(tǒng)憑借著自己開放的平臺允許任何移動終端廠商加入到An droid 聯(lián)盟中,從而使得越來越多的用戶傾向于選擇操作系統(tǒng)為An droid的手機品牌。選擇設(shè) 計基于An droid平臺的軟件,毫無疑問能覆蓋更多的群眾,餐飲業(yè)在電子商務(wù)中還處 于形成的初期,傳統(tǒng)的餐飲業(yè)中,大都是以實際門面形式來進(jìn)行宣傳和交流。作為網(wǎng)絡(luò) 普及化的社會,這還缺少了一些更為現(xiàn)代化的元素。餐飲業(yè)是一個個性化、多樣化的服 務(wù)業(yè),而電子商務(wù)則最能體現(xiàn)個性化、多樣
14、化服務(wù)的方式。而且現(xiàn)在大部分電子商務(wù)都 體現(xiàn)為向大企業(yè)服務(wù),結(jié)合餐飲這個行業(yè)的特點,最終還發(fā)展為同小區(qū)小店服務(wù)的模式。 以最貼切的方式,最靈便的服務(wù)進(jìn)入個個網(wǎng)絡(luò)社區(qū),進(jìn)入人們的生活。 1.2 項目目的 如今宅男宅女日益增加,很多餐飲店都提供外賣服務(wù),傳統(tǒng)的外賣服務(wù)需要客戶給 商家打并報出地址,商家那邊也需要記錄下客戶的信息,才能將外賣準(zhǔn)確的送達(dá),但在 這之間都是人在操作,難免會出現(xiàn)偏差和遺漏為客戶或者商家?guī)頁p失。如今3G網(wǎng)絡(luò) 覆蓋圍越來越廣,An droid手機也占領(lǐng)了手機行業(yè)的大頭,那么我們可以考慮做一個 An droid的應(yīng)用來方便商家和客戶,讓出錯率達(dá)到最低。用戶要點餐的時候只需手機上
15、 網(wǎng)點一下菜單就能吃到自己喜歡吃的菜品,這里面蘊含了很大的商機,完全能夠有效的 提高商家的營業(yè)額,基于以上因素,所以提出了這樣一個基于 An droid的網(wǎng)上訂餐系統(tǒng)。 本項目的目的是開發(fā)一個可以讓用戶在手機上操作的客戶端,然后與服務(wù)器連接進(jìn) 行數(shù)據(jù)交互,來實現(xiàn)網(wǎng)上訂餐的流程。客戶端需要實現(xiàn)瀏覽菜品,點菜,下訂單,搜索 等功能。服務(wù)器端需實現(xiàn)添加、刪除、修改菜品、對訂單的處理,以及對會員的管理等 功能。 本項目是一款基于An droid手機平臺的訂餐系統(tǒng),使擁有An droid手機的用戶生活 更加方便快捷,使得手機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地都 能吃到自己喜歡的菜品。使
16、人們的生活更加多樣化。也使設(shè)計者更加熟練An droid的技 術(shù)和其他在市場上的特點。 1.3 主要容 通過對實際情況的調(diào)研,本系統(tǒng)大致可分為三個部分,即手機客戶端、電腦服務(wù)器 端和圖形化界面工具。系統(tǒng)采用 HTTP協(xié)議來進(jìn)行數(shù)據(jù)傳輸。采用 C/S結(jié)構(gòu),客戶端為 基于An droid操作系統(tǒng)平臺的智能手機,主要的業(yè)務(wù)邏輯則服務(wù)器端來實現(xiàn),數(shù)據(jù)存儲 在數(shù)據(jù)庫服務(wù)器。客戶端主要實現(xiàn)位置服務(wù),商品展示,會員注冊及登錄,購物車,商 品搜索和個人信息等功能,服務(wù)器端主要是完成數(shù)據(jù)交互和數(shù)據(jù)邏輯處理,而圖形界面 化工具則是負(fù)責(zé)商品、訂單等的增刪改查。 為了一步步實現(xiàn)確定的功能,本論文主要容安排如下: 第一
17、章:引言(介紹課題研究的背景和目的) 第二章:系統(tǒng)理論與技術(shù)(在本項目中設(shè)計到的技術(shù)簡介) 第三章:系統(tǒng)分析與設(shè)計(需求分析,數(shù)據(jù)庫的分析與設(shè)計以及系統(tǒng)結(jié)構(gòu)的設(shè)計) 第四章:系統(tǒng)實現(xiàn)(根據(jù)需求分析來實現(xiàn)系統(tǒng)的各個模塊功能,使客戶端與服務(wù)器, 服務(wù)器與數(shù)據(jù)庫能正常數(shù)據(jù)交互。這部分主要搭建開發(fā)環(huán)境,編寫代碼,測試,運行) 第五章:結(jié)束語(對本項目做一個項目總結(jié)) 第二章系統(tǒng)理論與技術(shù) 2.1 An droid 2.1.1 An droid 簡介 An droid 一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基 于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、
18、中間件、用戶界面和應(yīng) 用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。 An droid是基于Lin ux核的軟件平臺和操作系統(tǒng),早期由Google開發(fā)(在華注冊商 標(biāo)名為“安致”),后由開放手機聯(lián)盟(Open Handset Allianee )開發(fā)。它采用了軟件 堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以 Linux核 工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以Java作為編 寫程序的一部分。另外,為了推廣此技術(shù),Google和其它幾十個手機公司建立了開放手 機聯(lián)盟。An droid在未公開之前常被傳聞為 Goo
19、gle或gPho na大多傳聞?wù)J為Google開 發(fā)的是自己的手機產(chǎn)品,而不是一套軟件平臺。到了2010年1月,Google開始發(fā)表自 家品牌手機的Nexus One,目前最新SDK版本為An droid 4.0.3 。 2.1.2 An droid Features特性 An droid系統(tǒng)有如下的幾大特性: 應(yīng)用程序框架支持組件的重用與替換 Dalvik虛擬機專門為移動設(shè)備做了優(yōu)化 部集成瀏覽器該瀏覽器基于開源的WebKit引擎 優(yōu)化的圖形庫 包括2D和3D圖形庫,3D圖形庫基于OpenGL ES SQLite用作結(jié)構(gòu)化的數(shù)據(jù)存儲 多媒體支持 包括常見的音頻、視頻和靜態(tài)印象文件格式(如MP
20、EG4MP3,AAC, AMR, JPG, PNG GSM(依賴于硬件) 藍(lán)牙 Bluetooth, EDGE, 3G, and WiFi(依賴于硬件) 照相機,GPS指南針,和加速度計(依賴于硬件) 豐富的開發(fā)環(huán)境 包括設(shè)備模擬器,調(diào)試工具,存及性能分析圖表,和Eclipse 集成開發(fā)環(huán)境插件 2.1.3 An droid基本框架(An droid Architecture ) 及尸PL1CAT1 口則導(dǎo) HoTt Phone ApplicATroN Framework Centene View Systirfl Pjck PT na fl Hl FK2 o 11 me o s t aki:
21、 t ai a r* 1 d. Meirilbe! i- irmhi 苣 m code m mes m rum b er maaif色氐三 in soQr m 圖3.4全局E-R圖 下面列舉主要實體: 管理員實體(Admin)包括管理員編號、管理員(登錄)、登錄密碼、管理員等級等 屬性,如圖3.5所示 圖3.5管理員實體屬性圖 會員實體(Membe)包括會員編號、會員(登錄帳號)、登錄密碼、管理員性別,聯(lián) 系,聯(lián)系地址,會員積分等屬性。如圖3.6所示。 圖3.6會員實體屬性圖 3.3.3客戶端數(shù)據(jù)庫的連接 Andorid 數(shù)據(jù)庫存儲的位置在data/data/rc 圖 4.1 eclipse
22、下載 第三步:安裝 An droid Http:/developer.a ndroid./sdk SDK:首先要下載SDK,可以在這個網(wǎng)址下載 ,如圖4.2,選擇相應(yīng)的系統(tǒng)進(jìn)行安裝 Z劃捲咚輿ii*北電汛期r_S loDer5I 上-心川庇片審Er pg-仔 LtewrrlEKsd Download tha Android SDK VI 皿izfc 斤匸疋tRFiarM uJ-JilL. FC9* Cu M nb vlr -rd P f! rf- ;wf:e! 1 -Hirim 叫福 aM i TPifcith :JJFi !盅;宙 砂卩!e nu笛聊亡 4ZT 0-t jrr-j sur:
23、l.zhLF 1 hKI L1 IlKz-V SDKTia- ana CPfWtqrHi mu R 士 PlfllWBIH Wnduu L.IU*_ hkiL 2 Ib_ 25mM :壻4 JC7W咄上花臥* : 2牌凹:竄 ,?Trcf-srl_ w;r r p H 迖 弋雖RfM ft-:E llM=fR* 1 niN- -ifIf = 1 lfr it ! Silt 11 客 L *事丁巧飛刑V P一 卜 4n=iiw: 空K 卜* :d F !: t* .t 4.r-: -.4F - d LUK t-rk - ? uji n:b : sm atirrt ll 站 H ItV Kuhj
24、at-e hfw mriiA AnnBbi 賞Kimri ih4 3 Rm-n* Pi m Uwn: ef bcwi iIm AIVinstallnewsoftware 選擇add,將會彈出一個框,如 圖4.3所示 圖4.3 ADT的安裝 點擊OK選擇要安裝的軟件,占next,然后選擇接受協(xié)議,直到安裝成功,重啟 Eclipse 軟件,設(shè)置 An droid SDK Home, Win dow-refre nee |tre# filter Lml 曲 *an*F41 -i M4l 曲 I -BnllLii 尬二 Jnnrl I * iln.t 出 Xi Lji H IhJttll 防 3 Ji
25、.*, t In. DwViif 帛T.4 涉 i “ i 訂 47 ”r Td_Bd4t、0 a in ? AndriAji心 * AnirDi 山 Triefereces SD La-ral i a |1:、y dr *= n I x :f-i-b w wdr s-i dJ ndk rLaJml常畫V Hcie “認(rèn) Li st hf SlOt Ju cti.- rtl-is1 is rJ_v relMdkd :cuce 啦吐 la I. J ftf j 1/ -t (iK* Ts-eti. T中I ferit.i lAdrPfojMl 匕l(fā)irml :”口 Scut-e- rraj ct
26、 M山.上 I*!Pf4j vl L Jlzudr 1 C-u ZviE-ca Fr-a j *r=t jhmlr j iSra q 0) resp onse = result.get(O); /根據(jù)服務(wù)端的相應(yīng)信息進(jìn)行相應(yīng)判斷 if (resp onse != n ull) / 將用戶名存在 sharedPreferences Editor n amedata = sharedPrefere nces.edit(); namedata.putString(name, etUsername.getText().toString().trim(); n mit(); / 將密碼存在 shared
27、Preferences Editor passworddata = sharedPrefere nces.edit(); passworddata.putStri ng(password, etPassword.getText().toStri ng().trim(); mit(); /登錄成功,進(jìn)入主界面 else / 登錄失敗,彈出錯誤信息 當(dāng)用戶點擊注冊按鈕時,通過 An droid的In te nt機制,就從登陸界面跳轉(zhuǎn)到注冊界 面,接下來實現(xiàn)系統(tǒng)注冊的功能。 4.2.2系統(tǒng)注冊 注冊界面如圖4.6,跟登陸界面一下,它也有一個屬于它的布局文件來擺放這些控 件,在此模塊中必須要輸入正確這
28、些注冊信息,才能正常的進(jìn)行注冊。 圖4.6注冊界面 當(dāng)用戶點擊取消按鈕時,界面會跳轉(zhuǎn)回到登陸界面,當(dāng)用戶點擊注冊按鈕時會跟服 務(wù)器端的數(shù)據(jù)庫進(jìn)行連接,把用戶所填的信息拼接發(fā)給服務(wù)器,服務(wù)器處理過后將數(shù)據(jù) 插入到數(shù)據(jù)庫中對應(yīng)的表中??蛻舳藢崿F(xiàn)注冊代碼如下: bRegister.set On ClickListe ner(new On ClickListe ner() public void on Click(View v) /獲取用戶輸入數(shù)據(jù) if(n ame.equals()|password.equals()|repassword.equals() /如果用戶輸入用戶名或密碼為空,則給出提示
29、,用戶名和密碼不能為空 else /如果不為空則先放入HashMa中,再做密碼輸入是否一致的判斷 /判斷輸入的密碼是否一致 if (in foHashMap.get(password).equals( in foHashMap.get(repassword) /拼湊數(shù)據(jù) data = n ame + in foHashMap.get(username) + ; + password + in foHashMap.get(password) +; + sex + in foHashMap.get(sex) + ; + num + in foHashMap.get( number) + ; + a
30、ddress + in foHashMap.get(address); Member member=new Member( name,password,i nfoHashMap .get(sex), nu mber,address); protocolHelper.setObject(member); /準(zhǔn)備請求數(shù)據(jù) protocolHelper.setRequest(ProtocolHelper.REGISTER, ProtocolHelper.lNSERT, data); /向服務(wù)端發(fā)送請求 resp onse = protocolHelper.se ndRequest(); /判斷響應(yīng)信
31、息,根據(jù)信息觸發(fā)不同的事件 if (resp on se.equals(success) /跳轉(zhuǎn)到主界面 else /以對話框的形式給出錯誤信息 else /以對話框的形式給出錯誤信息:密碼必須一致 4.2.3瀏覽菜品 用戶登陸成功或者選擇游客登陸成功后,會直接進(jìn)入到主界面,如圖4.7,主界面 的布局采用的是TabHost分頁式布局,每一個Tab都對應(yīng)一個Activity ,通過addTab這個 方法來添加Tab,這個控件讓An droid手機多個Activity 共享一個界面,而且操作方便, 簡單,布局好看。 弼甌 4 T1:37| FroductList 車 個 A15S 黒不魄】片 護h
32、r徉琲 畜皚榆將I A 3 BQ 鼎盤t豆粗 2 A QI 0.234 50 末炒苗苣 書北菜 S 湯 8 25 T0 圖4.7 主界面 當(dāng)用戶選擇菜單選項時,在其下面將列出從服務(wù)器端發(fā)送過來菜品簡要信息數(shù)據(jù), 客戶端想要看到這些數(shù)據(jù)必須對它進(jìn)行一系列的處理,在此,本模塊采用了ListView來 顯示菜品信息,ListView是以列表的形式來展示具體容,并且能夠根據(jù)數(shù)據(jù)的長度自適 應(yīng)的顯示,要想ListView顯示數(shù)據(jù)必須要為其添加適配器(Adapter),適配器分為很多 種,有ArrayAdapter、SimpleAdapter、BaseAdapter等等,由于在該 ListView 中顯示
33、的 數(shù)據(jù)比較多,而且還有圖片信息等,所以在此采用 BaseAdapter來構(gòu)建適配器。 構(gòu)建BaseAdapter核心代碼: /菜單模塊的自定義適配器。 class ProductAdapter exte nds BaseAdapter public View getView(i nt positi on. View conv ertView, ViewGroup pare nt) ViewHolder viewHolder = n ull; /如果convertView為空則為其創(chuàng)建一個View if (con vertView = n ull) LayoutI nflater in fla
34、ter = LayoutI nflater.from(ctx); viewHolder = new ViewHolder(); conv ertView = in flater.i nflate(R .l ayout.listitem, n ull); /獲得listitem 布局中的控件并添加到View上 conv ertView.setTag(viewHolder); /如果convertView不為空那么直接為其灌入數(shù)據(jù) else viewHolder = (ViewHolder) conv ertView.getTag(); /獲得所有的數(shù)據(jù)并灌入convertView中 return
35、 con vertView; 向服務(wù)器獲得菜品信息的數(shù)據(jù)代碼: public void proRequest() helper.setRequest(ProtocolHelper.GOODSLIST, ProtocolHelper.QUERY, ); BaseProducts bp = new BaseProducts(); bp.setBid(1); helper.setObject(bp); List result = helper.se ndRequestVO(); if (result = n ull) 424搜索菜品 Productlist 0.234 川齋 50 券if禹爸 東北區(qū)
36、 8 鬲 豈3 3 奩品的.音家窖稱商時格 展示圉卜商至乜稱商忑名稱 兩品忙杞 圖4.8搜索界面 如果菜品數(shù)量過多,用戶將會很難找到自己心儀的菜品,在此,本項目為了方便用 戶選擇特定的菜品,設(shè)計了一個搜索菜品的功能,通過搜索界面,用戶可以通過商品名 稱、商家名稱、商品價格三個搜索條件來搜索對自己胃口的菜品,如圖4.8,該功能暫 時僅支持單條件搜索,在此列出按商品名稱搜索的核心代碼,另外兩種搜索代碼跟此差 不多。 /通過商品名稱模糊查詢。 public void getProductByName(Stri ng n ame) List productListB yn ame = new Arra
37、yList(); Cursor cursor = dbutil.querygoodsByName( name); int count = cursor.getCo un t(); cursor.moveToFirst(); if (count 0) /對菜品數(shù)據(jù)遍歷查找 for (i nt i = 0; i count; i+) HashMap map = new HashMap(); map.put(bid, cursor.getInt(0); map.put(bpicture, cursor.getStri ng(4); map.put(b name, cursor.getStri ng(
38、1); map.put(bstyle, cursor.getStri ng(2); map.put(bprice, cursor.getString(3); productListB yn ame.add(map); cursor.moveToNext(); cursor.close(); productList = productListB yn ame; searchAdapter. no tifyDataSetCha nged(); else /提示沒有找到要查詢的菜品 4.2.5訂餐 訂餐功能是本項目的核心功能,前面做的那些僅僅是為訂餐功能做鋪墊。當(dāng)用戶點 擊每一行菜品時,不論這菜品時
39、在菜品列表中還是在搜索列表中都會跳轉(zhuǎn)到菜品詳細(xì)信 息界面,在跳轉(zhuǎn)的同時,Intent里面會PutExtra菜品的數(shù)據(jù),在詳細(xì)信息界面中再將 Intent里面的數(shù)據(jù)取出并顯示。界面如圖 4.9,在該界面中顯示了菜品的圖片、價格、 評分、是否有折扣、菜品詳細(xì)介紹等菜品信息,還有兩個按鈕和輸入訂餐份數(shù)的文本輸 入框,該輸入框只允許輸入數(shù)字。如果用戶選好了菜品,并且準(zhǔn)備將菜品加入購物車時, 用戶首先得輸入一個菜品份數(shù),并點擊加入購物車按鈕,這時系統(tǒng)將進(jìn)行一系列的邏輯 處理,如果購物車中沒有物品則直接加入,如果購物車中已經(jīng)有物品了,則將用戶剛加 入購物車的菜品數(shù)據(jù)跟購物車中原有的數(shù)據(jù)進(jìn)行匹配,如果已經(jīng)有
40、了,那么將提示用戶, 該物品購物車?yán)镆延校粗畡t加入購物車。 圖4.9菜品詳情 在此列出跳轉(zhuǎn)界面時對數(shù)據(jù)處理的代碼: 菜品行點擊事件,把數(shù)據(jù)putExtra到Intent中 public void on ltemClick(AdapterView pare nt. View view, i nt id, long positi on) if (position != -1) ViewHolder holder = (ViewHolder) view.getTag(); TextView tvid = (TextView) view.fi ndViewByld(R.id.tvid); TextV
41、iew tvn ame = (TextView) view.fi ndViewById(R.id.tvn ame); TextView tvprice = (TextView) view.fi ndViewById(R.id.tvprice); Intentintent=new In te nt(ProductListActivity.this,DetailsActivity.class); inten t.putExtra(pic, (Bitmap) holder.ivpicture.getTag(); intent.putExtra(bid, tvid.getText().toString
42、(); intent.putExtra(bname, tvname.getText().toString(); inten t.putExtra(bprice, tvprice.getText().toStri ng(); startActivity(i nten t); 在詳細(xì)信息界面中取出Intent里面的數(shù)據(jù)代碼: Intent intent = getI nten t(); Bitmap pic=(Bitmap)i nten t.getParcelableExtra(pic); ivdish=(ImageView)fi ndViewById(R.id.ivdish); ivdish.s
43、etlmageBitmap(pic); /獲得商品id tvbid=i nte nt.getStri ngExtra(bid); /獲得菜名 bn ame= inten t.getStri ngExtra(b name); price =i nten t.getStri ngExtra(bprice); 將菜品添加到購物車中代碼: badd.set On ClickListe ner( new On ClickListe ner() public void on Click(View v) int coun t=ProductListActivity.cartdata.size(); if(c
44、ou nt0)表示購物車中有數(shù)據(jù) for(int i=0;icount;i+) Stri ng existid=(Stri ng)(HashM ap) ProductListActivity.cartdata.get(i).get(bid); if(existid.equals(tvbid)/購物車中有相同的數(shù)據(jù) else HashMap item = new HashMap(); item.put(bid, tvbid); item.put(bprice, price); item.put(bname, bname); item.put(bnum, etinput.getText().toS
45、tring(); data.add(item);/將HashMa添加到 List 中 else/購物車為空時直接添加 Intentintent=new In te nt(DetailsActivity.this,ProductListActivity.class); intent.putExtra(changenum, etinput.getText().toString(); startActivity(i nten t); 4.2.6結(jié)賬 當(dāng)然,訂餐完成之后就得去購物車模塊進(jìn)行結(jié)賬操作。 首先用戶可以選中購物車中的物品,點擊men按鈕對物品進(jìn)行修改數(shù)量和刪除操 作。要實現(xiàn) An droid
46、 menu 功能必須重載 on CreateOptio nsMe nu、on PrepareOptio nsMe nu 以及onOptionsItemSelected三個方法,第一個方法是用來創(chuàng)建 men按鈕顯示的菜單項, 第二個方法是限制菜單項只在購物車列表中顯示,第三個方法則是實現(xiàn)菜單項功能的。 在本模塊中,為men添加了兩個菜單項,一個是修改數(shù)量,一個是刪除,可以對購物車 中物品的數(shù)量進(jìn)行修改和刪除操作,沒選中物品則會提示錯誤。 其次為每一條ListView添加了一個長點擊事件,及 setOnLongClickListener 接口, 在此接口中必須實現(xiàn)on Click方法,當(dāng)用戶點擊物
47、品不放時會直接將該選中物品刪除。 最后點擊結(jié)算按鈕系統(tǒng)將會把訂單中的數(shù)據(jù)進(jìn)行封裝,并使用protocolHelper中的 sen dRequest方法向服務(wù)器發(fā)送請求,并接受服務(wù)器端返回的消息,如果消息不為空則 說明訂單生成成功,提示用戶訂單生成,該方法代碼如下: /使用ProtocolHelper的setRequest方法對請求類型,操作及傳送來的數(shù)據(jù) data進(jìn)行 封裝 helper.setObject(order); helper.setRequest(helper.ORDER, helper.lNSERT, ); /使用ProtocolHelper的sendRequest方法對服務(wù)器發(fā)
48、送請求并返回服務(wù)器發(fā)回得消 Stri ng result = helper.se ndRequest(); /如果服務(wù)器返回消息不為null,則說明訂單以生產(chǎn)成功,彈出提示 if (result != null List list = new ArrayList(); setList(list); /創(chuàng)建適配器對象 cartadapter = new SimpleAdapter( ProductListActivity.this, cartdata, R.layout.cartlist, new Stri ng bid, bn ame, bprice, b num , new in t R.i
49、d.markid, R.id.shopname, R.id.price, R.id. nu mber ); /設(shè)置listview的適配器 cartlistView.setAdapter(cartadapter); 客戶端的基本功能介紹到此結(jié)束了,接下來介紹服務(wù)器端的功能實現(xiàn)。 4.3服務(wù)端 服務(wù)端分為管理員登陸、訂單管理、菜品管理、會員管理四個模塊,主要是為商家 對客戶端發(fā)送過來的數(shù)據(jù)進(jìn)行處理,以及對客戶端的數(shù)據(jù)進(jìn)行更新操作。服務(wù)端代碼是 用JavaSE來實現(xiàn),下面對每一個模塊進(jìn)行詳細(xì)分析。 4.3.1系統(tǒng)登錄 當(dāng)管理員運行程序后,必須得進(jìn)行登錄認(rèn)證,在服務(wù)器端數(shù)據(jù)庫的用戶表中有一個 用戶權(quán)
50、限的字段,如果值為0則表示為管理員賬號,如果值為1則表示用戶賬號,在此模 塊中僅僅為管理員提供登錄功能,并不支持管理員注冊功能,所以管理員是唯一的,這 也是系統(tǒng)數(shù)據(jù)安全性的一種表現(xiàn)。登錄界面如圖4.10所示,管理員點擊登陸時如果用戶 名和密碼輸入錯誤則會彈出錯誤信息,輸入正確則進(jìn)入管理界面。 圖4.10管理員登陸界面 在該模塊中核心代碼在于獲取用戶輸入的信息并跟數(shù)據(jù)庫中管理員的信息進(jìn)行匹 配,代碼如下: public void actio nPeformed(Actio nEve nt e) if (e.getActio nComma nd().equals(logi n) if (jt_pa
51、ssword.getText().toStri ng().equals() | jt_username.getText().toStri ng().equals() JOptionPane.showMessageDialog(null,用戶名或密碼不能為空); else Admi nDAO admin = new Admi nDAO(c on fig); Stringlogo= admi n.lo gi nAdmi ns(jt_username.getText().toStri ng(), jt_password.getText().toStri ng(); if (logo.equals(s
52、uccess) logi n.dispose(); Mai nJ frame.getI nsta nce(); else JOptionPane.showMessageDialog(null,用戶名或密碼錯誤); else if (e.getActionCommand().equals(exist) System.exit(0); 4.3.2訂單管理 當(dāng)管理員登陸成功后,那么就進(jìn)入了管理界面,在該界面中采用了JavaSE的卡片布 局方式,這個布局方式跟客戶端主界面的布局方式差不多,也是多個面板共用一個框架。 在管理界面中,將管理員操作數(shù)據(jù)的方式分為了訂單管理、菜品管理、會員管理三個模 塊,首先
53、介紹一下訂單管理模塊的設(shè)計與實現(xiàn)。 在訂單管理模塊中,從上到下分為三個部分,最上面是查看訂單按鈕,中間是訂單 的一些基本信息表結(jié)構(gòu),有訂單編號、訂單生成時間、請求人、請求人聯(lián)系方式、訂單 狀態(tài),這里主要是使用DefaultTableModle來實現(xiàn)這樣一個表結(jié)構(gòu),最下面是一個查詢 訂單詳細(xì)信息的按鈕,如圖4.11。 當(dāng)管理員點擊查看訂單時,系統(tǒng)將會從數(shù)據(jù)庫中將訂單表的信息取出并放入到 DefaultTableModle里面一遍管理員對訂單進(jìn)行查看。當(dāng)管理員選中一行訂單信息,再 點擊查看訂單詳細(xì)信息按鈕時,將會彈出一個訂單詳情對話框,如圖4.12所示,在該對 話框中顯示了訂單中的信息,以及一個訂
54、單完成的按鈕,如果交易完成,在這里的交易 完成的定義是商家把菜品做好,送到用戶的地址并且用戶付清所有費用,貝U管理員點擊 該按鈕,將會彈出訂單完成消息框,并且將此訂單從訂單管理界面中移除。 圖4.11訂單管理界面 3E品鳥忻 1 0?*!4 我J 1 53.0 圖4.12訂單詳細(xì)對話框 在此功能中的難點在于,當(dāng)訂單完成之后將其從訂單列表中移除,在此該模塊是這 樣設(shè)計的,在數(shù)據(jù)庫中為每一個訂單加一個標(biāo)識位初始化為0,查詢訂單時把標(biāo)識位為0 的訂單都添加到列表中,當(dāng)點擊訂單完成時將標(biāo)識位改為1,然后再查詢一次訂單表那 么就能將訂單移除。核心代碼如下: public void complete na
55、l int id) btn_complete = new Butt on (”訂單已完成); btn_complete.setBou nds(300, 20, 100, 30); this.add(btn_complete); btn_complete.addActio nListe ner(new Actio nListe ner() public void actio nPerformed(Actio nEve nt e) if (OrdersDAO.updateState(id, 1) JOptionPane.showMessageDialog(null,訂單已完成); listJPa
56、nel list = listJPa nel.get In sta nce(); list.i nsertl ntoTable(vec); ); 4.3.3菜品管理 菜品管理界面需要實現(xiàn)的功能是能使管理員對菜品進(jìn)行增加、刪除、修改等操作, 在該模塊中布局方式跟訂單管理界面基本一樣,如圖4.13所示 訂單實1甲茉詁世瓚 59 週CC首那 tttss- :忌 親十_榮 丨奏 I gsitia i o d.a 25.Z :叭 4C.U +fO 岳知i訂 1LJT止止 片曲宇ST 圖4.13菜品管理界面 添加新菜功能實現(xiàn):當(dāng)管理員點擊添加新菜按鈕時會彈出一個輸入菜品信息的界 面,如圖4.14所示,在此
57、界面中可以輸入菜品的名稱、價格、菜系、折扣、上傳圖片、 詳細(xì)描述等。點擊新增按鈕時會進(jìn)行一系列的判斷,比如名稱不能為空,價格不能為空 等等限制。管理員將信息輸入完成后就會將這些信息添加到數(shù)據(jù)庫中的菜品信息表中, 然后再菜品列表中讀取出來,該功能的難點在于圖片的上傳功能,圖片存入數(shù)據(jù)庫中的 是圖片的絕對路徑,如果在該路徑中找不到圖片資源那么將會不能顯示圖片,該功能核 心代碼如下: 上傳圖片按鈕功能代碼: btn_uploadlma.addActio nListe ner(new Actio nListe ner() public void actio nPeformed(Actio nEve n
58、t e) /初始化jfc_upload控件,并設(shè)置其只能上傳圖片 jfc_upload = new JFileChooser(); jfc_upload.setAcceptAIIFileFilterUsed(false); /設(shè)置該控件過濾器,圖片格式為(.png) jfc_upload.setFileFilter( new FileFilter() public String getDescripti on() return 圖片格式(.png); public boolea n accept(File f) if /圖片名稱以.jpg結(jié)尾return true; else retur n
59、false; /設(shè)置該控件過濾器,圖片格式為(.jpg ) jfc_upload.setFileFilter( new FileFilter() public String getDescripti on() return 圖片格式(.jpg ) ; public boolea n accept(File f) if /圖片名稱以.jpg結(jié)尾return true; else return false; 增加按鈕功能實現(xiàn)代碼: btn _add.addAct ion Liste ner(new Acti on Liste ner() public void actio nPerformed(A
60、ctio nEve nt e) in sert On eProducts();向數(shù)據(jù)庫中插入一條菜品數(shù)據(jù)方法 VectorVector v = productsMoreOperati on Jpa nel .fin dall(); productsMoreOperati on Jpa nel.i nsertData(v); 圖4.14新增菜品界面 修改菜品信息功能:管理員選中一行菜品后,點擊更改選定菜品按鈕就會跳轉(zhuǎn)到更 改菜品信息界面,如圖4.15,在這個界面中將菜品的信息全都顯示在了相應(yīng)的文本輸入 框里面以便管理員對照修改,用戶點擊更新后會調(diào)用updataO neProducts方法將數(shù)據(jù)庫
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版整式課件
- 守株待兔動畫課件
- 員工心態(tài) 課件
- 第四單元(復(fù)習(xí))-二年級語文上冊單元復(fù)習(xí)(統(tǒng)編版)
- 西南林業(yè)大學(xué)《操作系統(tǒng)原理》2023-2024學(xué)年期末試卷
- 西京學(xué)院《融合新聞報道》2022-2023學(xué)年第一學(xué)期期末試卷
- 抗戰(zhàn)英雄家書
- 西京學(xué)院《基礎(chǔ)護理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《電氣控制技術(shù)與PLC》2021-2022學(xué)年期末試卷
- 西華師范大學(xué)《自然地理》2021-2022學(xué)年第一學(xué)期期末試卷
- 滬科版九年級物理全一冊知識點總結(jié)(滬教版)
- 飛輪儲能在電網(wǎng)調(diào)頻中的工程應(yīng)用
- 家長會課件:家庭教育為主題家長會課件
- 麻醉藥品和第一類精神藥品使用及殘余液銷毀登記記錄
- 六年級英語上冊期中考試質(zhì)量分析
- 臨床微生物學(xué)檢驗:實驗六 腸道桿菌的檢驗(一)
- Invoice商業(yè)發(fā)票模板
- 工藝、設(shè)備設(shè)施交付檢維修手續(xù)
- 中藥房用中藥飲片用戶需求書
- 學(xué)校每月安全主題教育月(一月一主題)活動安排
- 煤礦重大生產(chǎn)安全事故隱患判定標(biāo)準(zhǔn)解讀課件
評論
0/150
提交評論