Android無線點餐系統(tǒng)_第1頁
Android無線點餐系統(tǒng)_第2頁
Android無線點餐系統(tǒng)_第3頁
Android無線點餐系統(tǒng)_第4頁
Android無線點餐系統(tǒng)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、android無線點餐系統(tǒng) 院系:計算機與信息工程學(xué)院 班級:10級軟件技術(shù)一班 姓名: 學(xué)號:目錄一、 無線點餐系統(tǒng)需求分析31. 系統(tǒng)的背景分析和構(gòu)建必要性32. 該系統(tǒng)在性能功能上應(yīng)達(dá)到如下需求:3二、 更新模塊服務(wù)器端實現(xiàn)31 updatedao接口32 updatedaoimpl類43 名稱“updateservlet”的servlet類5三、 轉(zhuǎn)臺模塊android客戶端實現(xiàn)71 名稱為“change_table.xml”的布局文件72 changetable()方法83 調(diào)用changetable方法94 添加轉(zhuǎn)臺監(jiān)聽器9四、 轉(zhuǎn)臺模塊服務(wù)器端實現(xiàn)101 changgetable

2、dao接口102 changgetabledaoimpl類103 名稱為“changetableservlet”的servlet類11五、 并臺模塊android客戶端實現(xiàn)121 名稱為union_table.xml的布局文件122 名稱為uniontable()的方法133 調(diào)用uniontable方法15六、 并臺模塊服務(wù)器端實現(xiàn)151 名稱為“uniontabledao”的接口152 uniontabledaoimpl類163 存儲過程17一、 無線點餐系統(tǒng)需求分析1. 系統(tǒng)的背景分析和構(gòu)建必要性數(shù)字化餐飲管理系統(tǒng)是處于導(dǎo)入市場的階段。無線點餐系統(tǒng)管理軟件供應(yīng)商在餐飲行業(yè)市場滿地找餐飲老

3、板,希望出售自己產(chǎn)品。而餐飲老板在這個信息化滿天飛的時代,總要受到影響,也希望通過這種數(shù)字化管理軟件使得自己經(jīng)營的餐飲能更有效的得到管理,能更多的盈利?;赼ndroid平臺開發(fā)無線訂餐系統(tǒng)。android平臺給我們提供了巨大的自由空間,再運用java面向?qū)ο笳Z言,是系統(tǒng)功能更加強大。mysql 是一個杰出的數(shù)據(jù)庫平臺,具有功能強大,安全可靠等特點,可用于中小型聯(lián)機事務(wù)處理、數(shù)據(jù)倉庫及電子商務(wù)等。首先,我們得確定使用這個系統(tǒng)的用戶應(yīng)該有顧客、廚師、管理員(包括收銀員,只是其權(quán)限有限制)。顧客和管理員應(yīng)該是系統(tǒng)數(shù)據(jù)的起點,由他們做出相應(yīng)的操作,然后系統(tǒng)進(jìn)行處理;廚師則為系統(tǒng)數(shù)據(jù)的終點,因為最終的

4、任務(wù)分配情況是反映到廚師身上的。整個系統(tǒng)的關(guān)鍵任務(wù)就是保證顧客所點菜品能夠由廚師完成,系統(tǒng)保證能將做菜任務(wù)準(zhǔn)確無誤地傳達(dá)給廚師。2. 該系統(tǒng)在性能功能上應(yīng)達(dá)到如下需求:(1)操作簡單、界面友好: 完全控件式的頁面布局,使得菜品,資訊,座位等信息的錄入工作更簡便,許多選項包括餐廳信息,桌位,包房信息等只需要點擊鼠標(biāo)就可以完成;另外,跟蹤出現(xiàn)的提示信息也讓用戶隨時清楚自己的操作情況。對常見的類似網(wǎng)站的管理的各個方面:基本信息錄入、瀏覽、刪除、修改、搜索等方面都大體實現(xiàn),顧客對菜品的預(yù)定及支付方式;(2) 即時可見:對客戶預(yù)定餐飲信息的處理(包括錄入、刪除)將立即在另一應(yīng)用端及服務(wù)器的對應(yīng)欄目顯示出

5、來,達(dá)到“即時點擊、即時見效”的功能;(3)系統(tǒng)運行應(yīng)該快速、穩(wěn)定、高效和可靠;(4)在結(jié)構(gòu)上應(yīng)具有很好的可擴展性,便于將來的功能擴展和維護。二、 更新模塊服務(wù)器端實現(xiàn)更新模塊服務(wù)器的實現(xiàn)主要是:創(chuàng)建dao查詢數(shù)據(jù)列表;創(chuàng)建servlet,拼成xml格式數(shù)據(jù)輸出,響應(yīng)客戶端請求。具體步驟說明如下。1 updatedao接口在工程的“com.amaker.dao”包中定義一個updatedao接口,在該接口中聲明兩個方法,分別用來獲得菜譜數(shù)據(jù)列表和桌位數(shù)據(jù)列表。package com.amaker.dao;import java.util.list;public interface update

6、dao / 獲得菜單列表public list getmenulist();/ 獲得餐桌列表public list gettablelist();2 updatedaoimpl類在工程的“com.amaker.dao.impl”包中定義一個updatedaoimpl類實現(xiàn)updatedao接口中的方法。package com.amaker.dao.impl;import java.sql.connection;import java.sql.resultset;import java.sql.sqlexception;import java.sql.statement;import java.

7、util.arraylist;import java.util.list;import com.amaker.dao.updatedao;import com.amaker.entity.menu;import com.amaker.util.dbutil;public class updatedaoimpl implements updatedao / 獲得菜單列表public list getmenulist() / 查詢sql語句string sql =" select id,typeid,price,name,pic,remark from menutbl "/ 數(shù)

8、據(jù)庫連接工具類dbutil util = new dbutil();/ 獲得連接connection conn = util.openconnection();try / 獲得預(yù)定義語句statement pstmt = conn.createstatement();/ 執(zhí)行查詢resultset rs = pstmt.executequery(sql);/ 判斷訂單詳細(xì)list list = new arraylist();while (rs.next() / 獲得菜單信息int id = rs.getint(1);int typeid = rs.getint(2);int price =

9、rs.getint(3);string name = rs.getstring(4);string pic = rs.getstring(5);string remark = rs.getstring(6);menu m = new menu();m.setid(id);m.setname(name);m.setpic(pic);m.setprice(price);m.setremark(remark);m.settypeid(typeid);list.add(m);return list; catch (sqlexception e) e.printstacktrace(); finally

10、 util.closeconn(conn);return null;/ 獲得餐桌列表public list gettablelist() return null;3 名稱“updateservlet”的servlet類在工程的“com.amaker.servlet”包中定義一個名稱“updateservlet”的servlet類響應(yīng)客戶端請求,將數(shù)據(jù)列表拼成xml格式數(shù)據(jù),發(fā)送到客戶端。package com.amaker.servlet;import java.io.ioexception;import java.io.printwriter;import java.util.list;im

11、port javax.servlet.servletexception;import javax.servlet.http.httpservlet;import javax.servlet.http.httpservletrequest;import javax.servlet.http.httpservletresponse;import com.amaker.dao.updatedao;import com.amaker.dao.impl.updatedaoimpl;import com.amaker.entity.menu;public class updateservlet exten

12、ds httpservlet / 構(gòu)造方法public updateservlet() super();/ 銷毀方法public void destroy() super.destroy(); / 響應(yīng)get請求public void doget(httpservletrequest request, httpservletresponse response)throws servletexception, ioexception response.setcontenttype("text/xml");printwriter out = response.getwriter

13、();/ 實例化dao updatedao dao = new updatedaoimpl();/ 獲得菜譜列表list list = dao.getmenulist();/ 拼xml格式數(shù)據(jù)out.println("<?xml version='1.0' encoding='utf-8'?>");/ 根節(jié)點out.println("<menulist>");for (int i = 0; i <list.size(); i+) menu m = (menu)list.get(i);out.p

14、rintln("<menu>");/ 菜譜編號out.print("<id>");out.print(m.getid();out.println("</id>");/ 分類out.print("<typeid>");out.print(m.gettypeid();out.println("</typeid>");/ 名稱out.print("<name>");out.print(m.getname();o

15、ut.println("</name>");/ 圖片路徑out.print("<pic>");out.print(m.getpic();out.println("</pic>");/ 價格out.print("<price>");out.print(m.getprice();out.println("</price>");/ 備注out.print("<remark>");out.print(m.getr

16、emark();out.println("</remark>");out.println("</menu>");out.println("</menulist>");out.flush();out.close();/ 響應(yīng)post請求public void dopost(httpservletrequest request, httpservletresponse response)throws servletexception, ioexception doget(request,response

17、);/ 初始化方法public void init() throws servletexception 三、 轉(zhuǎn)臺模塊android客戶端實現(xiàn)轉(zhuǎn)臺模塊要實現(xiàn)的功能是:當(dāng)顧客開桌或下單后要求更換桌位的過程。這一過程需要更新保存在服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù),具體更新的是ordertbl表中該訂單對應(yīng)的桌號以及更換桌位的狀態(tài)。具體實現(xiàn)步驟說明如下。1 名稱為“change_table.xml”的布局文件在該工程的目錄下定義一個名稱為“change_table.xml”的布局文件,該布局文件外層使用linearlayout布局,內(nèi)層嵌套tablelayout,該布局作為自定義試圖添加到彈出對話框中提示用戶輸

18、入信息。<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:android="android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><tablelayout android:layout_width="fill_parent"

19、android:layout_height="fill_parent" android:stretchcolumns="1"><tablerow><textview android:text="訂單編號:" android:id="+id/textview"android:layout_width="wrap_content" android:layout_height="wrap_content"/><edittext android:t

20、ext="" android:id="+id/change_table_order_number_edittext"android:layout_width="fill_parent" android:layout_height="wrap_content"/></tablerow><tablerow><textview android:text="更換桌號:" android:id="+id/textview"android:layout

21、_width="wrap_content" android:layout_height="wrap_content"/><edittext android:text="" android:id="+id/change_table_no_edittext"android:layout_width="fill_parent" android:layout_height="wrap_content"/></tablerow></tablelayo

22、ut></linearlayout>2 changetable()方法在工程的“mainmenuactivity”類中定義一個changetable()方法該方法首先實現(xiàn)定義的布局文件,將其添加到alertdialog中,在對話框的確定方法中獲得訂單編號和更換桌號,條調(diào)用服務(wù)器servlet,更新數(shù)據(jù),并顯示更新結(jié)果。/ 換臺系統(tǒng)private void changetable()/ 獲得layoutinflater實例layoutinflater inflater = layoutinflater.from(this);/ 獲得linearlayout視圖實例view v

23、=inflater.inflate(r.layout.change_table, null);/ 從linearlayout中獲得edittext實例final edittext et1 = (edittext) v.findviewbyid(r.id.change_table_order_number_edittext);final edittext et2 = (edittext) v.findviewbyid(r.id.change_table_no_edittext);alertdialog.builder builder = new alertdialog.builder(this)

24、;builder.setmessage(" 真的要換桌位嗎?") .setcancelable(false) .setview(v) .setpositivebutton("確定", new dialoginterface.onclicklistener() public void onclick(dialoginterface dialog, int id) / 獲得訂單號 string orderid = et1.gettext().tostring(); / 獲得桌號 string tableid = et2.gettext().tostring(

25、); / 查詢參數(shù) string querystring = "orderid="+orderid+"&tableid="+tableid; / url string url = httputil.base_url+"servlet/changetableservlet?"+querystring; / 查詢返回結(jié)果 string result = httputil.querystringforpost(url); / 顯示結(jié)果 toast.maketext(mainmenuactivity.this,result,toast

26、.length_long).show(); ) .setnegativebutton("取消", new dialoginterface.onclicklistener() public void onclick(dialoginterface dialog, int id) dialog.cancel(); );alertdialog alert = builder.create();alert.show();3 調(diào)用changetable方法定義轉(zhuǎn)臺監(jiān)聽器,調(diào)用changetable方法。/ 轉(zhuǎn)臺監(jiān)聽器 onclicklistener changetablelinste

27、ner = new onclicklistener() overridepublic void onclick(view v) changetable();4 添加轉(zhuǎn)臺監(jiān)聽器主菜單gridview添加監(jiān)聽器。case 2:/ 添加轉(zhuǎn)臺監(jiān)聽器imageview.setonclicklistener(changetablelinstener);break;四、 轉(zhuǎn)臺模塊服務(wù)器端實現(xiàn)為了響應(yīng)android客戶端的請求需要定義servlet,為了更新數(shù)據(jù)庫需要定義dao接口來操作數(shù)據(jù)庫。具體步驟說明如下。1 changgetabledao接口在工程的“com.amaker.dao”包中定義一個chan

28、ggetabledao接口,在該接口中定義一個轉(zhuǎn)臺方法changetable().package com.amaker.dao;/ 轉(zhuǎn)臺dao接口public interface changetabledao / 轉(zhuǎn)臺方法public void changetable(int orderid,int tableid);2 changgetabledaoimpl類在工程的“com.amaker.dao”包中定義一個changgetabledaoimpl類實現(xiàn)上述接口。該類需要更新訂單表以及更換桌位的狀態(tài),為此本代碼的實現(xiàn)使用了事務(wù)控制。package com.amaker.dao.impl;im

29、port java.sql.connection;import java.sql.preparedstatement;import java.sql.sqlexception;import com.amaker.dao.changetabledao;import com.amaker.util.dbutil;/* * author 郭宏志 * 完成轉(zhuǎn)臺功能 */public class changetabledaoimpl implements changetabledao public void changetable(int orderid, int tableid) / 更新sql語句s

30、tring sql = " update tabletbl set flag = 0 where id = "+ " (select tableid from ordertbl as ot where ot.id = ?)"string sql2 = " update ordertbl set tableid = ? where id = ? "string sql3 = " update tabletbl set flag = 1 where id = ?"/ 數(shù)據(jù)庫連接工具類dbutil util = new

31、dbutil();/ 獲得連接connection conn = util.openconnection();try conn.setautocommit(false);/ 獲得預(yù)定義語句preparedstatement pstmt = conn.preparestatement(sql);pstmt.setint(1, orderid);/ 更新桌位狀態(tài)pstmt.executeupdate();pstmt = conn.preparestatement(sql2);/ 設(shè)置參數(shù)pstmt.setint(1, tableid);pstmt.setint(2, orderid);/ 更新訂單

32、表pstmt.executeupdate();pstmt = conn.preparestatement(sql3);pstmt.setint(1, tableid);/ 更新桌位狀態(tài)pstmt.executeupdate();mit(); catch (sqlexception e) e.printstacktrace();try conn.rollback(); catch (sqlexception e1) e1.printstacktrace(); finally util.closeconn(conn);3 名稱為“changetableservlet”的servlet類在工程的“c

33、om.amaker.servlet”包中定義一個名稱為“changetableservlet”的servlet類,該類響應(yīng)客戶端請求,調(diào)用dao更新數(shù)據(jù)庫數(shù)據(jù),返回信息給客戶端。package com.amaker.servlet;import java.io.ioexception;import java.io.printwriter;import javax.servlet.servletexception;import javax.servlet.http.httpservlet;import javax.servlet.http.httpservletrequest;import ja

34、vax.servlet.http.httpservletresponse;import com.amaker.dao.changetabledao;import com.amaker.dao.impl.changetabledaoimpl;/* * author 郭宏志 * 完成轉(zhuǎn)臺功能 */public class changetableservlet extends httpservlet / 構(gòu)造方法public changetableservlet() super();/ 銷毀方法public void destroy() super.destroy(); / 響應(yīng)get請求publi

35、c void doget(httpservletrequest request, httpservletresponse response)throws servletexception, ioexception response.setcontenttype("text/html");printwriter out = response.getwriter();/ 獲得請求參數(shù)string orderid = request.getparameter("orderid");string tableid = request.getparameter(&q

36、uot;tableid");/ 實例化changetabledaochangetabledao dao = new changetabledaoimpl();/ 調(diào)用轉(zhuǎn)臺方法dao.changetable(integer.parseint(orderid), integer.parseint(tableid);/ 返回客戶端信息out.println("更換成功!");out.flush();out.close();/ 響應(yīng)post請求public void dopost(httpservletrequest request, httpservletrespons

37、e response)throws servletexception, ioexception doget(request,response);/ 初始化方法public void init() throws servletexception 五、 并臺模塊android客戶端實現(xiàn)1 名稱為union_table.xml的布局文件該布局文件外層使用linearlayout布局,內(nèi)層嵌套tablelayout,tablelayout中有兩行,每行通過一個spinner提示用戶選擇桌號。<?xml version="1.0" encoding="utf-8&qu

38、ot; ?> <linearlayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <tablelayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:s

39、tretchcolumns="1"> <tablerow> <textviewandroid:text="被并桌位:" android:id="+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <spinnerandroid:id="+id/union_table_spinner1" android:layout

40、_width="fill_parent" android:layout_height="wrap_content" /> </tablerow> <tablerow> <textviewandroid:text="目標(biāo)桌位:" android:id="+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <

41、;spinnerandroid:id="+id/union_table_spinner2" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </tablerow> </tablelayout> </linearlayout>2 名稱為uniontable()的方法在mainmenuactivity類中創(chuàng)建一個名稱為uniontable()的方法,該方法定義了一個對話框提示用戶選擇合并桌號,在對

42、話框中添加了自定義視圖,訪問服務(wù)器獲得桌位信息并綁定到spinner,然后在確定方法中提交合并請求。/ 并臺系統(tǒng)private void uniontable()/ 實例化layoutinflaterlayoutinflater inflater = layoutinflater.from(this);/ 獲得自定義視圖view v =inflater.inflate(r.layout.union_table, null);/ 獲得spinnerfinal spinner spinner1 = (spinner) v.findviewbyid(r.id.union_table_spinner1

43、);final spinner spinner2 = (spinner) v.findviewbyid(r.id.union_table_spinner2);/ 訪問服務(wù)器的urlstring urlstr = httputil.base_url + "servlet/uniontableservlet"try / 實例化urlurl url = new url(urlstr);/ urlconnection 實例urlconnection conn = url.openconnection();/ 獲得輸入流inputstream in = conn.getinputst

44、ream();/ 獲得documentbuilderfactory對象documentbuilderfactory factory = documentbuilderfactory.newinstance();/ 獲得documentbuilder對象documentbuilder builder = factory.newdocumentbuilder();/ 獲得document對象document doc = builder.parse(in);/ 獲得節(jié)點列表nodelist nl = doc.getelementsbytagname("table");/ spin

45、ner數(shù)據(jù)list items = new arraylist();/ 獲得xml數(shù)據(jù)for (int i = 0; i < nl.getlength(); i+) / 桌位編號string id = doc.getelementsbytagname("id").item(i).getfirstchild().getnodevalue();/ 桌號int num = integer.parseint(doc.getelementsbytagname("num").item(i).getfirstchild().getnodevalue();map

46、data = new hashmap();data.put("id", id);items.add(data);/ 獲得spinneradapterspinneradapter as = new simpleadapter(this, items, android.r.layout.simple_spinner_item,new string "id" , new int android.r.id.text1 );/ 綁定數(shù)據(jù)spinner1.setadapter(as);spinner2.setadapter(as); catch (exception

47、 e) e.printstacktrace();alertdialog.builder builder = new alertdialog.builder(this);builder.setmessage(" 真的要并桌嗎?") .setcancelable(false) .setview(v) .setpositivebutton("確定", new dialoginterface.onclicklistener() public void onclick(dialoginterface dialog, int id) textview tv1 = (

48、textview) spinner1.getselectedview(); textview tv2 = (textview) spinner2.getselectedview(); string tableid1 = tv1.gettext().tostring(); string tableid2 = tv2.gettext().tostring(); / 查詢參數(shù) string querystring = "tableid1="+tableid1+"&tableid2="+tableid2; / url string url = httpu

49、til.base_url+"servlet/uniontableservlet2?"+querystring; / 查詢返回結(jié)果 string result = httputil.querystringforpost(url); ) .setnegativebutton("取消", new dialoginterface.onclicklistener() public void onclick(dialoginterface dialog, int id) dialog.cancel(); );alertdialog alert = builder.c

50、reate();alert.show();3 調(diào)用uniontable方法創(chuàng)建一個并臺監(jiān)聽器,調(diào)用uniontable方法。/ 并臺監(jiān)聽器 onclicklistener uniontablelinstener = new onclicklistener() overridepublic void onclick(view v) uniontable();六、 并臺模塊服務(wù)器端實現(xiàn)1 名稱為“uniontabledao”的接口在工程的“com.amaker.dao”包中定義一個名稱為“uniontabledao”的接口。該接口中有兩個方法,分別用來獲得桌位列表和更新合并后的數(shù)據(jù)。package

51、 com.amaker.dao;import java.util.list;/ 并臺功能接口public interface uniontabledao / 獲得桌位列表public list gettablelist();/ 更新合并后的數(shù)據(jù)public void updatestatus(int tableid1,int tableid2);2 uniontabledaoimpl類在工程的“com.amaker.dao.impl”包中定義一個uniontabledaoimpl類實現(xiàn)uniontabledao。package com.amaker.dao.impl;import java.sql.callablestatement;import java.sql.connection;import java.sql.resultset;import java.sql.sqlexception;import java.sql.statement;import java.util.arraylist;import java.util.list;import com.amaker.dao.uniontabledao;import com.amaker.entity.unionta

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論