無(wú)線(xiàn)點(diǎn)餐系統(tǒng)的設(shè)計(jì)及影響人民幣幣值變化的因素分析_第1頁(yè)
無(wú)線(xiàn)點(diǎn)餐系統(tǒng)的設(shè)計(jì)及影響人民幣幣值變化的因素分析_第2頁(yè)
無(wú)線(xiàn)點(diǎn)餐系統(tǒng)的設(shè)計(jì)及影響人民幣幣值變化的因素分析_第3頁(yè)
無(wú)線(xiàn)點(diǎn)餐系統(tǒng)的設(shè)計(jì)及影響人民幣幣值變化的因素分析_第4頁(yè)
無(wú)線(xiàn)點(diǎn)餐系統(tǒng)的設(shè)計(jì)及影響人民幣幣值變化的因素分析_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Android實(shí)訓(xùn)報(bào)告班級(jí):10級(jí)軟件技術(shù)學(xué)號(hào):姓名:指導(dǎo)老師:

目錄1無(wú)線(xiàn)點(diǎn)餐系統(tǒng)的背景和意義 32功能模塊的設(shè)計(jì) 32.1客戶(hù)端 32.2數(shù)據(jù)庫(kù) 33主要任務(wù) 54模塊操作 54.1登陸模塊客戶(hù)端實(shí)現(xiàn) 54.2登錄模塊服務(wù)器端實(shí)現(xiàn) 64.3程序主菜單實(shí)現(xiàn) 74.4點(diǎn)餐功能客戶(hù)端實(shí)現(xiàn) 74.5點(diǎn)餐功能服務(wù)器端實(shí)現(xiàn) 85附錄: 8

1無(wú)線(xiàn)點(diǎn)餐系統(tǒng)的背景和意義餐飲傳統(tǒng)的點(diǎn)菜方式是純?nèi)斯げ僮鳎煞?wù)員記錄顧客點(diǎn)的菜,在具體工作中容易出現(xiàn)問(wèn)題。因此,無(wú)限點(diǎn)餐模式應(yīng)運(yùn)而生。它不僅可以有效地提高餐飲業(yè)的工作效率,更可以規(guī)模服務(wù)體系,提高整體服務(wù)質(zhì)量和管理水平,并為規(guī)模化經(jīng)營(yíng)提供了堅(jiān)實(shí)的技術(shù)基礎(chǔ)。2功能模塊的設(shè)計(jì)2.1客戶(hù)端客戶(hù)端主要有以下幾個(gè)模塊構(gòu)成:登陸、點(diǎn)餐、更新、結(jié)賬等功能。結(jié)構(gòu)圖:無(wú)線(xiàn)點(diǎn)餐系統(tǒng)無(wú)線(xiàn)點(diǎn)餐系統(tǒng)登陸點(diǎn)菜更新結(jié)賬查臺(tái)轉(zhuǎn)臺(tái)并臺(tái)開(kāi)桌點(diǎn)菜更新菜譜更新桌號(hào)2.2數(shù)據(jù)庫(kù)客戶(hù)端采用SQLite數(shù)據(jù)庫(kù),服務(wù)器采用MySQL數(shù)據(jù)庫(kù),并提供了客戶(hù)端數(shù)據(jù)和服務(wù)器端數(shù)據(jù)和服務(wù)器端數(shù)據(jù)的同步功能,提高了程序的運(yùn)行效率。創(chuàng)建了6張表分別是:系統(tǒng)用戶(hù)表(UserTbl)、菜譜分類(lèi)表(MenuTypeTbl)、餐桌表(TableTbl)、菜譜表(MenuTbl)、訂單表(OrderTbl)、訂單明細(xì)表。系統(tǒng)用戶(hù)表:登陸系統(tǒng)使用。菜譜分類(lèi)表:方便點(diǎn)餐,將菜單信息進(jìn)行分類(lèi),如熱菜、涼菜等。餐桌表:用來(lái)表示顧客在哪個(gè)桌位就坐。菜譜表:菜譜表用來(lái)保存菜信息,如分類(lèi)、名稱(chēng)和價(jià)格等。訂單表:當(dāng)顧客開(kāi)桌點(diǎn)菜時(shí)生成的信息,保存到該表。訂單明細(xì)表:訂單明細(xì)表和上面的訂單表是一對(duì)多的關(guān)系,即一桌客人點(diǎn)了多份菜。3主要任務(wù) 無(wú)線(xiàn)點(diǎn)餐系統(tǒng)的登陸、點(diǎn)餐模塊的客戶(hù)端與服務(wù)器端和程序主菜單的實(shí)現(xiàn)部分。4模塊操作4.1登陸模塊客戶(hù)端實(shí)現(xiàn)1.創(chuàng)建一個(gè)Android工程,名為“WirelessOrder_Client”。2.在res\layout目錄下,創(chuàng)建“l(fā)ogin_system.xml”的布局文件,布局文件外層使用LinearLayout布局,內(nèi)嵌TableLayout完成布局管理。布局文件引用一個(gè)圖片資源來(lái)顯示背景圖片、倆個(gè)TextView用來(lái)顯示用戶(hù)名稱(chēng)和密碼、兩個(gè)EditText用來(lái)輸入用戶(hù)名和密碼、兩個(gè)Button用來(lái)登陸和取消系統(tǒng)。代碼均見(jiàn)附錄!3.創(chuàng)建名為“LoginActivity”的Acivity,在類(lèi)的頂部聲明所用的EditText和Button組件,在onCreate()方法中調(diào)用setContenView(R.layout.login_system)方法設(shè)置布局視圖。通過(guò)findViewById()方法實(shí)例化EditText和Button對(duì)象。4.定義一個(gè)工具類(lèi)HttpUtil來(lái)獲得HttpRequest對(duì)象和HttpResponse對(duì)象,以及發(fā)送get和post請(qǐng)求獲得返回response信息的方法。5.定義一個(gè)顯示提示信息的對(duì)話(huà)框方法,用來(lái)顯示提示信息。6.定義validate()方法,對(duì)用戶(hù)名稱(chēng)和密碼進(jìn)行非空驗(yàn)證。7.定義一個(gè)query()方法,通過(guò)用戶(hù)名稱(chēng)和密碼盡心查詢(xún),發(fā)送Post請(qǐng)求,獲得響應(yīng)結(jié)果。8.定義login()方法,該方法調(diào)用query()方法,獲得查詢(xún)結(jié)果,并將查詢(xún)結(jié)果通過(guò)SharedPrerences保存到XML配置文件,以便在后面程序的點(diǎn)餐中使用用戶(hù)信息。Login()方法調(diào)用saveUserMsg()方法將用戶(hù)信息保存到配置文件。9.為登錄按鈕添加單擊監(jiān)聽(tīng)器,在onClick()方法中,首先調(diào)用calidate()方法進(jìn)行驗(yàn)證,如果驗(yàn)證通過(guò)再調(diào)用login()方法,如果登錄成功,系統(tǒng)進(jìn)入主菜單界面,否則提示登錄失敗信息。如果驗(yàn)證失敗則提示失敗信息,請(qǐng)求用戶(hù)重新輸入。10.為取消按鈕添加單擊監(jiān)聽(tīng)器,在onClick()方法中調(diào)用finish()方法結(jié)束該Activity。運(yùn)行結(jié)果如圖:4.2登錄模塊服務(wù)器端實(shí)現(xiàn)創(chuàng)建一個(gè)名為“WirelessOrder_server”的Web工程。創(chuàng)建程序需要的包結(jié)構(gòu)。dao包用于放置采用DAO設(shè)計(jì)模式實(shí)現(xiàn)的訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)接口及其實(shí)現(xiàn)類(lèi);entity包用于放置對(duì)應(yīng)數(shù)據(jù)庫(kù)表的實(shí)體類(lèi);servlet包用于放置Servlet類(lèi);filter包用于放置過(guò)濾器;util包是工具類(lèi)。程序要訪(fǎng)問(wèn)MySQL數(shù)據(jù)庫(kù),所以要添加MySQL驅(qū)動(dòng)包“mysql-connector-java-5.0.3-bin.jar”。將該jar文件添加到工程的classpath下。創(chuàng)建訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的工具類(lèi)DBUtil,該類(lèi)的主要功能是打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接。將配置信息保存到配置文件中,這樣可以在不修改程序的前提下移植數(shù)據(jù)庫(kù)。創(chuàng)建用于封裝UserTbl表信息的實(shí)體類(lèi)User類(lèi)。創(chuàng)建訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的DAO接口類(lèi)UserDao。創(chuàng)建UserDao接口實(shí)現(xiàn)類(lèi)UserDaoImpl。創(chuàng)建LoginServlet類(lèi)響應(yīng)請(qǐng)求。該類(lèi)通過(guò)request.getParameter()方法獲得請(qǐng)求參數(shù),調(diào)用UserDaoImpl的login()方法,并根據(jù)登陸結(jié)果返回響應(yīng)結(jié)果信息。4.3程序主菜單實(shí)現(xiàn)在工程的res\layout\目錄下創(chuàng)建一個(gè)布局文件,該布局文件外層是LinearLayout,使用一個(gè)圖片資源充當(dāng)背景色,內(nèi)層是一個(gè)GridView。創(chuàng)建“MainMenuActivity”的Acivity,在onCreate()方法中設(shè)置Acivity界面標(biāo)題和布局,實(shí)例化GridView組件,為GridView綁定Adapter。定義一個(gè)名稱(chēng)為“ImageAdapter”的類(lèi),該類(lèi)集成BaseAdapter,為GridView設(shè)置Adapter。定義一個(gè)單擊監(jiān)聽(tīng)器,打開(kāi)點(diǎn)餐界面。4.4點(diǎn)餐功能客戶(hù)端實(shí)現(xiàn)在工程的res\layout\目錄下創(chuàng)建一個(gè)名稱(chēng)為“order.xml”的布局文件,該文件外層使用LinearLayout布局,內(nèi)層嵌套TableLayout。TableLayout中有三行:第一行TextView和一個(gè)Spinner,提示操作員選擇課桌號(hào);第二行TextView和EditText,要求永華輸入人數(shù);第三行3個(gè)Button,分別是開(kāi)桌,點(diǎn)菜和下單,TableLayout下面有一個(gè)ListView用來(lái)顯示客戶(hù)點(diǎn)菜列表。創(chuàng)建“OrderAcivity”的Activity,該Activity集成Acitivity,在OderActivity頂部聲明使用到的實(shí)例,在OnCreate方法中初始化之。開(kāi)桌功能,要求操作員選擇桌號(hào)并輸入人數(shù),并將這些信息保存到服務(wù)器端MySQL數(shù)據(jù)庫(kù)中的OrderTbl表中。這里需要為桌號(hào)下拉列表Spinner綁定數(shù)據(jù),為開(kāi)桌按鈕添加監(jiān)聽(tīng)器,實(shí)現(xiàn)具體操作。點(diǎn)菜功能。單擊點(diǎn)菜按鈕,彈出點(diǎn)菜對(duì)話(huà)框,要求輸入點(diǎn)菜信息。定義一個(gè)View視圖,添加到對(duì)話(huà)框,并且自定義視圖中有一個(gè)Spinner引用菜單列表數(shù)據(jù)。在res\layout\目錄下創(chuàng)建“order_detail.xml”的布局文件,外層是LinearLayout,內(nèi)層嵌套TableLayout。程序運(yùn)行結(jié)果如圖:4.5點(diǎn)餐功能服務(wù)器端實(shí)現(xiàn)在“WirelessOrder_Server”工程的“com.amaker.entity”包中創(chuàng)建一個(gè)實(shí)體類(lèi)Order,該類(lèi)封裝了數(shù)據(jù)中OrderTbl表的信息,以面向?qū)ο蟮姆椒▉?lái)操作該表。在該包中創(chuàng)建實(shí)體類(lèi)OrderDetail,該類(lèi)封裝了數(shù)據(jù)庫(kù)中QueryOrderDetail表的信息,以面向?qū)ο蟮姆椒▉?lái)操作該表。在“com.amaker.dao”包中創(chuàng)建一個(gè)OrderDao接口,有四個(gè)方法,分別用來(lái)保存訂單信息Order、保存訂單詳細(xì)信息OrderDetail、更新桌號(hào)狀態(tài)為有人和更新桌號(hào)狀態(tài)為空位。在“com.amaker.dao.impl”包中創(chuàng)建OrderDaoImpl的實(shí)現(xiàn)類(lèi)實(shí)現(xiàn)OrderDao接口里定義的方法。在“com.amaker.servlet”包中創(chuàng)建一個(gè)名稱(chēng)“StarTableServlet”的Servlet,響應(yīng)客戶(hù)端請(qǐng)求,調(diào)用后臺(tái)數(shù)據(jù),保存數(shù)據(jù),更新餐桌狀態(tài)。5附錄:login_system.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/login" > <TableLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1"> <TableRow> <TextViewandroid:text=""/> <TextViewandroid:text=""/> </TableRow> <TableRow> <TextViewandroid:text=""/> <TextViewandroid:text=""/> </TableRow> <TableRow> <TextViewandroid:text=""/> <TextViewandroid:text=""/> </TableRow> <TableRow> <TextViewandroid:text=""/> <TextViewandroid:text=""/> </TableRow> <TableRow> <TextViewandroid:text=""/> <TextViewandroid:text=""/> </TableRow> <TableRow> <TextViewandroid:text=""/> <TextViewandroid:text=""/> </TableRow> <TableRow> <TextViewandroid:text=""/> <TextViewandroid:text=""/> </TableRow> <TableRow> <TextView android:text="用戶(hù)名稱(chēng):" android:id="@+id/TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#0000ff" /> <EditText android:text="" android:id="@+id/userEditText" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </TableRow> <TableRow> <TextView android:text="用戶(hù)密碼:" android:id="@+id/TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#0000ff" /> <EditText android:text="" android:id="@+id/pwdEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:password="true"/> </TableRow> <TableRow android:gravity="right"> <Button android:text="取消" android:id="@+id/cancelButton" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:text="登陸" android:id="@+id/loginButton" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </TableRow> </TableLayout></LinearLayout>LoginActivitypackagecom.amaker.wlo;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.DialogInterface;importandroid.content.Intent;importandroid.content.SharedPreferences;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.Toast;importcom.amaker.util.HttpUtil;publicclassLoginActivityextendsActivity{ //聲明登錄、取消按鈕 privateButtoncancelBtn,loginBtn; //聲明用戶(hù)名、密碼輸入框 privateEditTextuserEditText,pwdEditText; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //設(shè)置標(biāo)題 setTitle("掌中寶無(wú)線(xiàn)訂餐系統(tǒng)-用戶(hù)登錄"); //設(shè)置當(dāng)前Activity界面布局 setContentView(R.layout.login_system); //通過(guò)findViewById方法實(shí)例化組件 cancelBtn=(Button)findViewById(R.id.cancelButton); //通過(guò)findViewById方法實(shí)例化組件 loginBtn=(Button)findViewById(R.id.loginButton); //通過(guò)findViewById方法實(shí)例化組件 userEditText=(EditText)findViewById(R.id.userEditText); //通過(guò)findViewById方法實(shí)例化組件 pwdEditText=(EditText)findViewById(R.id.pwdEditText); cancelBtn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ finish(); } }); loginBtn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ if(validate()){ if(login()){ Intentintent=newIntent(LoginActivity.this,MainMenuActivity.class); startActivity(intent); }else{ showDialog("用戶(hù)名稱(chēng)或者密碼錯(cuò)誤,請(qǐng)重新輸入!"); } } } }); } //登錄方法 privatebooleanlogin(){ //獲得用戶(hù)名稱(chēng) Stringusername=userEditText.getText().toString(); //獲得密碼 Stringpwd=pwdEditText.getText().toString(); //獲得登錄結(jié)果 Stringresult=query(username,pwd); if(result!=null&&result.equals("0")){ returnfalse; }else{ saveUserMsg(result); returntrue; } } //將用戶(hù)信息保存到配置文件 privatevoidsaveUserMsg(Stringmsg){ //用戶(hù)編號(hào) Stringid=""; //用戶(hù)名稱(chēng) Stringname=""; //獲得信息數(shù)組 String[]msgs=msg.split(";"); intidx=msgs[0].indexOf("="); id=msgs[0].substring(idx+1); idx=msgs[1].indexOf("="); name=msgs[1].substring(idx+1); //共享信息 SharedPreferencespre=getSharedPreferences("user_msg",MODE_WORLD_WRITEABLE); SharedPreferences.Editoreditor=pre.edit(); editor.putString("id",id); editor.putString("name",name); mit(); } //驗(yàn)證方法 privatebooleanvalidate(){ Stringusername=userEditText.getText().toString(); if(username.equals("")){ showDialog("用戶(hù)名稱(chēng)是必填項(xiàng)!"); returnfalse; } Stringpwd=pwdEditText.getText().toString(); if(pwd.equals("")){ showDialog("用戶(hù)密碼是必填項(xiàng)!"); returnfalse; } returntrue; } privatevoidshowDialog(Stringmsg){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setMessage(msg) .setCancelable(false) .setPositiveButton("確定",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ } }); AlertDialogalert=builder.create(); alert.show(); } //根據(jù)用戶(hù)名稱(chēng)密碼查詢(xún) privateStringquery(Stringaccount,Stringpassword){ //查詢(xún)參數(shù) StringqueryString="account="+account+"&password="+password; //url Stringurl=HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString; //查詢(xún)返回結(jié)果 returnHttpUtil.queryStringForPost(url);}}HttpUtilpackagecom.amaker.util;importjava.io.IOException;importorg.apache.http.HttpResponse;importorg.apache.http.client.ClientProtocolException;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.util.EntityUtils;publicclassHttpUtil{ //基礎(chǔ)URL publicstaticfinalStringBASE_URL=":8888/WirelessOrder_Server/"; //獲得Get請(qǐng)求對(duì)象request publicstaticHttpGetgetHttpGet(Stringurl){ HttpGetrequest=newHttpGet(url); returnrequest; } //獲得Post請(qǐng)求對(duì)象request publicstaticHttpPostgetHttpPost(Stringurl){ HttpPostrequest=newHttpPost(url); returnrequest; } //根據(jù)請(qǐng)求獲得響應(yīng)對(duì)象response publicstaticHttpResponsegetHttpResponse(HttpGetrequest)throwsClientProtocolException,IOException{ HttpResponseresponse=newDefaultHttpClient().execute(request); returnresponse; } //根據(jù)請(qǐng)求獲得響應(yīng)對(duì)象response publicstaticHttpResponsegetHttpResponse(HttpPostrequest)throwsClientProtocolException,IOException{ HttpResponseresponse=newDefaultHttpClient().execute(request); returnresponse; } //發(fā)送Post請(qǐng)求,獲得響應(yīng)查詢(xún)結(jié)果 publicstaticStringqueryStringForPost(Stringurl){ //根據(jù)url獲得HttpPost對(duì)象 HttpPostrequest=HttpUtil.getHttpPost(url); Stringresult=null; try{ //獲得響應(yīng)對(duì)象 HttpResponseresponse=HttpUtil.getHttpResponse(request); //判斷是否請(qǐng)求成功 if(response.getStatusLine().getStatusCode()==200){ //獲得響應(yīng) result=EntityUtils.toString(response.getEntity()); returnresult; } }catch(ClientProtocolExceptione){ e.printStackTrace(); result="網(wǎng)絡(luò)異常!"; returnresult; }catch(IOExceptione){ e.printStackTrace(); result="網(wǎng)絡(luò)異常!"; returnresult; }returnnull;} //獲得響應(yīng)查詢(xún)結(jié)果 publicstaticStringqueryStringForPost(HttpPostrequest){ Stringresult=null; try{ //獲得響應(yīng)對(duì)象 HttpResponseresponse=HttpUtil.getHttpResponse(request); //判斷是否請(qǐng)求成功 if(response.getStatusLine().getStatusCode()==200){ //獲得響應(yīng) result=EntityUtils.toString(response.getEntity()); returnresult; } }catch(ClientProtocolExceptione){ e.printStackTrace(); result="網(wǎng)絡(luò)異常!"; returnresult; }catch(IOExceptione){ e.printStackTrace(); result="網(wǎng)絡(luò)異常!"; returnresult; }returnnull;} //發(fā)送Get請(qǐng)求,獲得響應(yīng)查詢(xún)結(jié)果 publicstaticStringqueryStringForGet(Stringurl){ //獲得HttpGet對(duì)象 HttpGetrequest=HttpUtil.getHttpGet(url); Stringresult=null; try{ //獲得響應(yīng)對(duì)象 HttpResponseresponse=HttpUtil.getHttpResponse(request); //判斷是否請(qǐng)求成功 if(response.getStatusLine().getStatusCode()==200){ //獲得響應(yīng) result=EntityUtils.toString(response.getEntity()); returnresult; } }catch(ClientProtocolExceptione){ e.printStackTrace(); result="網(wǎng)絡(luò)異常!"; returnresult; }catch(IOExceptione){ e.printStackTrace(); result="網(wǎng)絡(luò)異常!"; returnresult; }returnnull;}}DBCpertiesdriver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/wireless_db?useUnicode=true&characterEncoding=utf-8username=rootpassword=1DBUtilpackagecom.amaker.util;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.util.Properties;/****@authorhz.guo* 數(shù)據(jù)庫(kù)工具類(lèi)*/publicclassDBUtil{ /* *關(guān)閉數(shù)據(jù)庫(kù)連接 */ publicvoidcloseConn(Connectionconn){ try{ conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } /* *打開(kāi)數(shù)據(jù)庫(kù)連接 */ publicConnectionopenConnection(){ Propertiesprop=newProperties(); Stringdriver=null; Stringurl=null; Stringusername=null; Stringpassword=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"); Class.forName(driver); returnDriverManager.getConnection(url,username,password); }catch(Exceptione){ e.printStackTrace(); } returnnull; }}UserTblpackagecom.amaker.entity;/****@authorhz.guo* 用于封裝UserTbl表的實(shí)體類(lèi)*/publicclassUser{ //編號(hào) privateintid; //賬號(hào) privateStringaccount; //密碼 privateStringpassword; //用戶(hù)名稱(chēng) privateStringname; //性別 privateStringgender; //權(quán)限 privateintpermission; //備注 privateStringremark; publicStringgetAccount(){ returnaccount; } publicvoidsetAccount(Stringaccount){ this.account=account; } publicStringgetGender(){ returngender; } publicvoidsetGender(Stringgender){ this.gender=gender; } publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicintgetPermission(){ returnpermission; } publicvoidsetPermission(intpermission){ this.permission=permission; } publicStringgetRemark(){ returnremark; } publicvoidsetRemark(Stringremark){ this.remark=remark; }}UserDaoImplpackagecom.amaker.dao.impl;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.amaker.dao.UserDao;importcom.amaker.entity.User;importcom.amaker.util.DBUtil;/****@author郭宏志*用戶(hù)登錄DAO實(shí)現(xiàn)類(lèi)*/publicclassUserDaoImplimplementsUserDao{ /** *通過(guò)用戶(hù)名稱(chēng)和密碼登錄,登錄成功返回User對(duì)象,登錄失敗返回null */ publicUserlogin(Stringaccount,Stringpassword){ //查詢(xún)SQL語(yǔ)句 Stringsql="selectid,account,password,name,permission,remark"+ "fromuserTbl"+ "whereaccount=?andpassword=?"; //數(shù)據(jù)庫(kù)連接工具類(lèi) DBUtilutil=newDBUtil(); //獲得連接 Connectionconn=util.openConnection(); try{ //獲得預(yù)定義語(yǔ)句 PreparedStatementpstmt=conn.prepareStatement(sql); //設(shè)置查詢(xún)參數(shù) pstmt.setString(1,account); pstmt.setString(2,password); //執(zhí)行查詢(xún) ResultSetrs=pstmt.executeQuery(); //判斷用戶(hù)是否存在 if(rs.next()){ //獲得用戶(hù)信息 intid=rs.getInt(1); Stringname=rs.getString(4); intpermission=rs.getInt(5); Stringremark=rs.getString(6); //封裝用戶(hù)信息 Useru=newUser(); u.setId(id); u.setAccount(account); u.setPassword(password); u.setName(name); u.setPermission(permission); u.setRemark(remark); returnu; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ util.closeConn(conn); } returnnull; } publicstaticvoidmain(String[]args){ UserDaodao=newUserDaoImpl(); Useru=dao.login("admin","123"); System.out.println(u.getAccount()); }}LoginServletpackagecom.amaker.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.amaker.dao.UserDao;importcom.amaker.dao.impl.UserDaoImpl;importcom.amaker.entity.User;/****@author郭宏志*響應(yīng)Android客戶(hù)端發(fā)來(lái)的請(qǐng)求*/publicclassLoginServletextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html"); PrintWriterout=response.getWriter(); UserDaodao=newUserDaoImpl(); //獲得客戶(hù)端請(qǐng)求參數(shù) Stringusername=request.getParameter("account"); Stringpassword=request.getParameter("password"); Useru=dao.login(username,password); if(u!=null){ //響應(yīng)客戶(hù)端內(nèi)容,登錄成功 out.print(build(u)); }else{ //響應(yīng)客戶(hù)端內(nèi)容,登錄失敗 out.print("0"); } out.flush(); out.close(); } privateStringbuild(Useru){ StringuserMsg=""; userMsg+="id="+u.getId(); userMsg+=";"; userMsg+="name="+u.getName(); returnuserMsg; } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doGet(request,response); } publicvoidinit()throwsServletException{ } publicLoginServlet(){ super(); } publicvoiddestroy(){ super.destroy(); }}main_menu.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" android:background="@drawable/menu_bg" android:layout_width="fill_parent"android:layout_height="fill_parent"><GridViewandroid:id="@+id/gridview"android:layout_width="fill_parent"android:layout_height="fill_parent"android:numColumns="auto_fit"android:verticalSpacing="10dp"android:horizontalSpacing="10dp"android:columnWidth="90dp"android:stretchMode="columnWidth"android:gravity="center"/></LinearLayout>MainMenuActivitypackagecom.amaker.wlo;importcom.amaker.util.HttpUtil;publicclassMainMenuActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setTitle("掌中寶無(wú)線(xiàn)訂餐系統(tǒng)-主菜單");setContentView(R.layout.main_menu);GridViewgridview=(GridView)findViewById(R.id.gridview);gridview.setAdapter(newImageAdapter(this));}//繼承BaseAdapterpublicclassImageAdapterextendsBaseAdapter{ //上下文privateContextmContext;//構(gòu)造方法publicImageAdapter(Contextc){mContext=c;}//組件個(gè)數(shù)publicintgetCount(){returnmThumbIds.length;}//當(dāng)前組件publicObjectgetItem(intposition){returnnull;}//當(dāng)前組件idpubliclonggetItemId(intposition){return0;}//獲得當(dāng)前視圖publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ //聲明圖片視圖ImageViewimageView;if(convertView==null){ //實(shí)例化圖片視圖imageView=newImageView(mContext);//設(shè)置圖片視圖屬性imageView.setLayoutParams(newGridView.LayoutParams(85,85));imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);imageView.setPadding(8,8,8,8);}else{imageView=(ImageView)convertView;}//設(shè)置圖片視圖圖片資源imageView.setImageResource(mThumbIds[position]);//為當(dāng)前視圖添加監(jiān)聽(tīng)器switch(position){ case0: //添加點(diǎn)餐監(jiān)聽(tīng)器 imageView.setOnClickListener(orderLinstener); break; case1: //并臺(tái)監(jiān)聽(tīng)器 imageView.setOnClickListener(unionTableLinstener); break; case2: //添加轉(zhuǎn)臺(tái)監(jiān)聽(tīng)器 imageView.setOnClickListener(changeTableLinstener); break; case3: //添加查臺(tái)監(jiān)聽(tīng)器 imageView.setOnClickListener(checkTableLinstener); break; case4: //添加更新監(jiān)聽(tīng)器 imageView.setOnClickListener(updateLinstener); break; case6: //添加注銷(xiāo)監(jiān)聽(tīng)器 imageView.setOnClickListener(exitLinstener); break; case7: //添加結(jié)算監(jiān)聽(tīng)器 imageView.setOnClickListener(payLinstener); break; default: break; }returnimageView;}//圖片資源數(shù)組privateInteger[]mThumbIds={R.drawable.diancai,R.drawable.bingtai,R.drawable.zhuantai,R.drawable.chatai,R.drawable.gengxin,R.drawable.shezhi,R.drawable.zhuxiao,R.drawable.jietai};}//更新監(jiān)聽(tīng)器OnClickListenerupdateLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(); //啟動(dòng)結(jié)算Activity intent.setClass(MainMenuActivity.this,UpdateActivity.class); startActivity(intent); } };//查臺(tái)監(jiān)聽(tīng)器OnClickListenercheckTableLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(); //啟動(dòng)結(jié)算Activity intent.setClass(MainMenuActivity.this,CheckTableActivity.class); startActivity(intent); } };//結(jié)算監(jiān)聽(tīng)器OnClickListenerpayLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(); //啟動(dòng)結(jié)算Activity intent.setClass(MainMenuActivity.this,PayActivity.class); startActivity(intent); } };//訂餐監(jiān)聽(tīng)器OnClickListenerorderLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(); //啟動(dòng)訂餐Activity intent.setClass(MainMenuActivity.this,OrderActivity.class); startActivity(intent); } }; //注銷(xiāo)監(jiān)聽(tīng)器OnClickListenerexitLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ logout(); } }; //轉(zhuǎn)臺(tái)監(jiān)聽(tīng)器OnClickListenerchangeTableLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ changeTable(); } }; //并臺(tái)監(jiān)聽(tīng)器OnClickListenerunionTableLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ unionTable(); } }; //換臺(tái)系統(tǒng) privatevoidchangeTable(){ //獲得LayoutInflater實(shí)例 LayoutInflaterinflater=LayoutInflater.from(this); //獲得LinearLayout視圖實(shí)例 Viewv=inflater.inflate(R.layout.change_table,null); //從LinearLayout中獲得EditText實(shí)例 finalEditTextet1=(EditText)v.findViewById(R.id.change_table_order_number_EditText); finalEditTextet2=(EditText)v.findViewById(R.id.change_table_no_EditText); AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setMessage("真的要換桌位嗎?") .setCancelable(false) .setView(v) .setPositiveButton("確定",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ //獲得訂單號(hào) StringorderId=et1.getText().toString(); //獲得桌號(hào) StringtableId=et2.getText().toString(); //查詢(xún)參數(shù) StringqueryString="orderId="+orderId+"&tableId="+tableId; //url Stringurl=HttpUtil.BASE_URL+"servlet/ChangeTableServlet?"+queryString; //查詢(xún)返回結(jié)果 Stringresult=HttpUtil.queryStringForPost(url); //顯示結(jié)果 Toast.makeText(MainMenuActivity.this,result,Toast.LENGTH_LONG).show(); } }) .setNegativeButton("取消",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ dialog.cancel(); } }); AlertDialogalert=builder.create(); alert.show(); } //并臺(tái)系統(tǒng) privatevoidunionTable(){ //實(shí)例化LayoutInflater LayoutInflaterinflater=LayoutInflater.from(this); //獲得自定義視圖 Viewv=inflater.inflate(R.layout.union_table,null); //獲得Spinner finalSpinnerspinner1=(Spinner)v.findViewById(R.id.union_table_Spinner1); finalSpinnerspinner2=(Spinner)v.findViewById(R.id.union_table_Spinner2); //訪(fǎng)問(wèn)服務(wù)器的URL StringurlStr=HttpUtil.BASE_URL+"servlet/UnionTableServlet"; try{ //實(shí)例化URL URLurl=newURL(urlStr); //URLConnection實(shí)例 URLConnectionconn=url.openConnection(); //獲得輸入流 InputStreamin=conn.getInputStream(); //獲得DocumentBuilderFactory對(duì)象 DocumentBuilderFactoryfactory=DocumentBuilderFactory .newInstance(); //獲得DocumentBuilder對(duì)象 DocumentBuilderbuilder=factory.newDocumentBuilder(); //獲得Document對(duì)象 Documentdoc=builder.parse(in); //獲得節(jié)點(diǎn)列表 NodeListnl=doc.getElementsByTagName("table"); //Spinner數(shù)據(jù) Listitems=newArrayList(); //獲得XML數(shù)據(jù) for(inti=0;i<nl.getLength();i++){ //桌位編號(hào) Stringid=doc.getElementsByTagName("id") .item(i).getFirstChild().getNodeValue(); //桌號(hào) intnum=Integer.parseInt(doc.getElementsByTagName("num") .item(i).getFirstChild().getNodeValue()); Mapdata=newHashMap(); data.put("id",id); items.add(data); } //獲得SpinnerAdapter SpinnerAdapteras=new SimpleAdapter(this,items, android.R.layout.simple_spinner_item, newString[]{"id"},newint[]{android.R.id.text1}); //綁定數(shù)據(jù) spinner1.setAdapter(as); spinner2.setAdapter(as); }catch(Exceptione){ e.printStackTrace(); } AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setMessage("真的要并桌嗎?") .setCancelable(false) .setView(v) .setPositiveButton("確定",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ TextViewtv1=(TextView)spinner1.getSelectedView(); TextViewtv2=(TextView)spinner2.getSelectedView(); StringtableId1=tv1.getText().toString(); StringtableId2=tv2.getText().toString(); //查詢(xún)參數(shù) StringqueryString="tableId1="+tableId1+"&tableId2="+tableId2; //url Stringurl=HttpUtil.BASE_URL+"servlet/UnionTableServlet2?"+queryString; //查詢(xún)返回結(jié)果 Stringresult=HttpUtil.queryStringForPost(url); } }) .setNegativeButton("取消",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ dialog.cancel(); } }); AlertDialogalert=builder.create(); alert.show(); } //退出系統(tǒng) privatevoidlogout(){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setMessage("真的要退出系統(tǒng)嗎?") .setCancelable(false) .setPositiveButton("確定",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ SharedPreferencespres=getSharedPreferences("user_msg",MODE_WORLD_WRITEABLE); SharedPreferences.Editoreditor=pres.edit(); editor.putString("id",""); editor.putString("name",""); Intentintent=newIntent(); intent.setClass(MainMenuActivity.this,LoginActivity.class); startActivity(intent); } }) .setNegativeButton("取消",newDialogInterface.OnClickListener(){

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論