版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Android實訓(xùn)報告班級:10級軟件技術(shù)學(xué)號:姓名:指導(dǎo)老師:
目錄1無線點(diǎn)餐系統(tǒng)的背景和意義 32功能模塊的設(shè)計 32.1客戶端 32.2數(shù)據(jù)庫 33主要任務(wù) 54模塊操作 54.1登陸模塊客戶端實現(xiàn) 54.2登錄模塊服務(wù)器端實現(xiàn) 64.3程序主菜單實現(xiàn) 74.4點(diǎn)餐功能客戶端實現(xiàn) 74.5點(diǎn)餐功能服務(wù)器端實現(xiàn) 85附錄: 8
1無線點(diǎn)餐系統(tǒng)的背景和意義餐飲傳統(tǒng)的點(diǎn)菜方式是純?nèi)斯げ僮?,由服?wù)員記錄顧客點(diǎn)的菜,在具體工作中容易出現(xiàn)問題。因此,無限點(diǎn)餐模式應(yīng)運(yùn)而生。它不僅可以有效地提高餐飲業(yè)的工作效率,更可以規(guī)模服務(wù)體系,提高整體服務(wù)質(zhì)量和管理水平,并為規(guī)模化經(jīng)營提供了堅實的技術(shù)基礎(chǔ)。2功能模塊的設(shè)計2.1客戶端客戶端主要有以下幾個模塊構(gòu)成:登陸、點(diǎn)餐、更新、結(jié)賬等功能。結(jié)構(gòu)圖:無線點(diǎn)餐系統(tǒng)無線點(diǎn)餐系統(tǒng)登陸點(diǎn)菜更新結(jié)賬查臺轉(zhuǎn)臺并臺開桌點(diǎn)菜更新菜譜更新桌號2.2數(shù)據(jù)庫客戶端采用SQLite數(shù)據(jù)庫,服務(wù)器采用MySQL數(shù)據(jù)庫,并提供了客戶端數(shù)據(jù)和服務(wù)器端數(shù)據(jù)和服務(wù)器端數(shù)據(jù)的同步功能,提高了程序的運(yùn)行效率。創(chuàng)建了6張表分別是:系統(tǒng)用戶表(UserTbl)、菜譜分類表(MenuTypeTbl)、餐桌表(TableTbl)、菜譜表(MenuTbl)、訂單表(OrderTbl)、訂單明細(xì)表。系統(tǒng)用戶表:登陸系統(tǒng)使用。菜譜分類表:方便點(diǎn)餐,將菜單信息進(jìn)行分類,如熱菜、涼菜等。餐桌表:用來表示顧客在哪個桌位就坐。菜譜表:菜譜表用來保存菜信息,如分類、名稱和價格等。訂單表:當(dāng)顧客開桌點(diǎn)菜時生成的信息,保存到該表。訂單明細(xì)表:訂單明細(xì)表和上面的訂單表是一對多的關(guān)系,即一桌客人點(diǎn)了多份菜。3主要任務(wù) 無線點(diǎn)餐系統(tǒng)的登陸、點(diǎn)餐模塊的客戶端與服務(wù)器端和程序主菜單的實現(xiàn)部分。4模塊操作4.1登陸模塊客戶端實現(xiàn)1.創(chuàng)建一個Android工程,名為“WirelessOrder_Client”。2.在res\layout目錄下,創(chuàng)建“l(fā)ogin_system.xml”的布局文件,布局文件外層使用LinearLayout布局,內(nèi)嵌TableLayout完成布局管理。布局文件引用一個圖片資源來顯示背景圖片、倆個TextView用來顯示用戶名稱和密碼、兩個EditText用來輸入用戶名和密碼、兩個Button用來登陸和取消系統(tǒng)。代碼均見附錄!3.創(chuàng)建名為“LoginActivity”的Acivity,在類的頂部聲明所用的EditText和Button組件,在onCreate()方法中調(diào)用setContenView(R.layout.login_system)方法設(shè)置布局視圖。通過findViewById()方法實例化EditText和Button對象。4.定義一個工具類HttpUtil來獲得HttpRequest對象和HttpResponse對象,以及發(fā)送get和post請求獲得返回response信息的方法。5.定義一個顯示提示信息的對話框方法,用來顯示提示信息。6.定義validate()方法,對用戶名稱和密碼進(jìn)行非空驗證。7.定義一個query()方法,通過用戶名稱和密碼盡心查詢,發(fā)送Post請求,獲得響應(yīng)結(jié)果。8.定義login()方法,該方法調(diào)用query()方法,獲得查詢結(jié)果,并將查詢結(jié)果通過SharedPrerences保存到XML配置文件,以便在后面程序的點(diǎn)餐中使用用戶信息。Login()方法調(diào)用saveUserMsg()方法將用戶信息保存到配置文件。9.為登錄按鈕添加單擊監(jiān)聽器,在onClick()方法中,首先調(diào)用calidate()方法進(jìn)行驗證,如果驗證通過再調(diào)用login()方法,如果登錄成功,系統(tǒng)進(jìn)入主菜單界面,否則提示登錄失敗信息。如果驗證失敗則提示失敗信息,請求用戶重新輸入。10.為取消按鈕添加單擊監(jiān)聽器,在onClick()方法中調(diào)用finish()方法結(jié)束該Activity。運(yùn)行結(jié)果如圖:4.2登錄模塊服務(wù)器端實現(xiàn)創(chuàng)建一個名為“WirelessOrder_server”的Web工程。創(chuàng)建程序需要的包結(jié)構(gòu)。dao包用于放置采用DAO設(shè)計模式實現(xiàn)的訪問數(shù)據(jù)庫接口及其實現(xiàn)類;entity包用于放置對應(yīng)數(shù)據(jù)庫表的實體類;servlet包用于放置Servlet類;filter包用于放置過濾器;util包是工具類。程序要訪問MySQL數(shù)據(jù)庫,所以要添加MySQL驅(qū)動包“mysql-connector-java-5.0.3-bin.jar”。將該jar文件添加到工程的classpath下。創(chuàng)建訪問數(shù)據(jù)庫的工具類DBUtil,該類的主要功能是打開和關(guān)閉數(shù)據(jù)庫連接。將配置信息保存到配置文件中,這樣可以在不修改程序的前提下移植數(shù)據(jù)庫。創(chuàng)建用于封裝UserTbl表信息的實體類User類。創(chuàng)建訪問數(shù)據(jù)庫的DAO接口類UserDao。創(chuàng)建UserDao接口實現(xiàn)類UserDaoImpl。創(chuàng)建LoginServlet類響應(yīng)請求。該類通過request.getParameter()方法獲得請求參數(shù),調(diào)用UserDaoImpl的login()方法,并根據(jù)登陸結(jié)果返回響應(yīng)結(jié)果信息。4.3程序主菜單實現(xiàn)在工程的res\layout\目錄下創(chuàng)建一個布局文件,該布局文件外層是LinearLayout,使用一個圖片資源充當(dāng)背景色,內(nèi)層是一個GridView。創(chuàng)建“MainMenuActivity”的Acivity,在onCreate()方法中設(shè)置Acivity界面標(biāo)題和布局,實例化GridView組件,為GridView綁定Adapter。定義一個名稱為“ImageAdapter”的類,該類集成BaseAdapter,為GridView設(shè)置Adapter。定義一個單擊監(jiān)聽器,打開點(diǎn)餐界面。4.4點(diǎn)餐功能客戶端實現(xiàn)在工程的res\layout\目錄下創(chuàng)建一個名稱為“order.xml”的布局文件,該文件外層使用LinearLayout布局,內(nèi)層嵌套TableLayout。TableLayout中有三行:第一行TextView和一個Spinner,提示操作員選擇課桌號;第二行TextView和EditText,要求永華輸入人數(shù);第三行3個Button,分別是開桌,點(diǎn)菜和下單,TableLayout下面有一個ListView用來顯示客戶點(diǎn)菜列表。創(chuàng)建“OrderAcivity”的Activity,該Activity集成Acitivity,在OderActivity頂部聲明使用到的實例,在OnCreate方法中初始化之。開桌功能,要求操作員選擇桌號并輸入人數(shù),并將這些信息保存到服務(wù)器端MySQL數(shù)據(jù)庫中的OrderTbl表中。這里需要為桌號下拉列表Spinner綁定數(shù)據(jù),為開桌按鈕添加監(jiān)聽器,實現(xiàn)具體操作。點(diǎn)菜功能。單擊點(diǎn)菜按鈕,彈出點(diǎn)菜對話框,要求輸入點(diǎn)菜信息。定義一個View視圖,添加到對話框,并且自定義視圖中有一個Spinner引用菜單列表數(shù)據(jù)。在res\layout\目錄下創(chuàng)建“order_detail.xml”的布局文件,外層是LinearLayout,內(nèi)層嵌套TableLayout。程序運(yùn)行結(jié)果如圖:4.5點(diǎn)餐功能服務(wù)器端實現(xiàn)在“WirelessOrder_Server”工程的“com.amaker.entity”包中創(chuàng)建一個實體類Order,該類封裝了數(shù)據(jù)中OrderTbl表的信息,以面向?qū)ο蟮姆椒▉聿僮髟摫?。在該包中?chuàng)建實體類OrderDetail,該類封裝了數(shù)據(jù)庫中QueryOrderDetail表的信息,以面向?qū)ο蟮姆椒▉聿僮髟摫?。在“com.amaker.dao”包中創(chuàng)建一個OrderDao接口,有四個方法,分別用來保存訂單信息Order、保存訂單詳細(xì)信息OrderDetail、更新桌號狀態(tài)為有人和更新桌號狀態(tài)為空位。在“com.amaker.dao.impl”包中創(chuàng)建OrderDaoImpl的實現(xiàn)類實現(xiàn)OrderDao接口里定義的方法。在“com.amaker.servlet”包中創(chuàng)建一個名稱“StarTableServlet”的Servlet,響應(yīng)客戶端請求,調(diào)用后臺數(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="用戶名稱:" 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="用戶密碼:" 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; //聲明用戶名、密碼輸入框 privateEditTextuserEditText,pwdEditText; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //設(shè)置標(biāo)題 setTitle("掌中寶無線訂餐系統(tǒng)-用戶登錄"); //設(shè)置當(dāng)前Activity界面布局 setContentView(R.layout.login_system); //通過findViewById方法實例化組件 cancelBtn=(Button)findViewById(R.id.cancelButton); //通過findViewById方法實例化組件 loginBtn=(Button)findViewById(R.id.loginButton); //通過findViewById方法實例化組件 userEditText=(EditText)findViewById(R.id.userEditText); //通過findViewById方法實例化組件 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("用戶名稱或者密碼錯誤,請重新輸入!"); } } } }); } //登錄方法 privatebooleanlogin(){ //獲得用戶名稱 Stringusername=userEditText.getText().toString(); //獲得密碼 Stringpwd=pwdEditText.getText().toString(); //獲得登錄結(jié)果 Stringresult=query(username,pwd); if(result!=null&&result.equals("0")){ returnfalse; }else{ saveUserMsg(result); returntrue; } } //將用戶信息保存到配置文件 privatevoidsaveUserMsg(Stringmsg){ //用戶編號 Stringid=""; //用戶名稱 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(); } //驗證方法 privatebooleanvalidate(){ Stringusername=userEditText.getText().toString(); if(username.equals("")){ showDialog("用戶名稱是必填項!"); returnfalse; } Stringpwd=pwdEditText.getText().toString(); if(pwd.equals("")){ showDialog("用戶密碼是必填項!"); 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ù)用戶名稱密碼查詢 privateStringquery(Stringaccount,Stringpassword){ //查詢參數(shù) StringqueryString="account="+account+"&password="+password; //url Stringurl=HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString; //查詢返回結(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請求對象request publicstaticHttpGetgetHttpGet(Stringurl){ HttpGetrequest=newHttpGet(url); returnrequest; } //獲得Post請求對象request publicstaticHttpPostgetHttpPost(Stringurl){ HttpPostrequest=newHttpPost(url); returnrequest; } //根據(jù)請求獲得響應(yīng)對象response publicstaticHttpResponsegetHttpResponse(HttpGetrequest)throwsClientProtocolException,IOException{ HttpResponseresponse=newDefaultHttpClient().execute(request); returnresponse; } //根據(jù)請求獲得響應(yīng)對象response publicstaticHttpResponsegetHttpResponse(HttpPostrequest)throwsClientProtocolException,IOException{ HttpResponseresponse=newDefaultHttpClient().execute(request); returnresponse; } //發(fā)送Post請求,獲得響應(yīng)查詢結(jié)果 publicstaticStringqueryStringForPost(Stringurl){ //根據(jù)url獲得HttpPost對象 HttpPostrequest=HttpUtil.getHttpPost(url); Stringresult=null; try{ //獲得響應(yīng)對象 HttpResponseresponse=HttpUtil.getHttpResponse(request); //判斷是否請求成功 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)查詢結(jié)果 publicstaticStringqueryStringForPost(HttpPostrequest){ Stringresult=null; try{ //獲得響應(yīng)對象 HttpResponseresponse=HttpUtil.getHttpResponse(request); //判斷是否請求成功 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請求,獲得響應(yīng)查詢結(jié)果 publicstaticStringqueryStringForGet(Stringurl){ //獲得HttpGet對象 HttpGetrequest=HttpUtil.getHttpGet(url); Stringresult=null; try{ //獲得響應(yīng)對象 HttpResponseresponse=HttpUtil.getHttpResponse(request); //判斷是否請求成功 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ù)庫工具類*/publicclassDBUtil{ /* *關(guān)閉數(shù)據(jù)庫連接 */ publicvoidcloseConn(Connectionconn){ try{ conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } /* *打開數(shù)據(jù)庫連接 */ 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表的實體類*/publicclassUser{ //編號 privateintid; //賬號 privateStringaccount; //密碼 privateStringpassword; //用戶名稱 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郭宏志*用戶登錄DAO實現(xiàn)類*/publicclassUserDaoImplimplementsUserDao{ /** *通過用戶名稱和密碼登錄,登錄成功返回User對象,登錄失敗返回null */ publicUserlogin(Stringaccount,Stringpassword){ //查詢SQL語句 Stringsql="selectid,account,password,name,permission,remark"+ "fromuserTbl"+ "whereaccount=?andpassword=?"; //數(shù)據(jù)庫連接工具類 DBUtilutil=newDBUtil(); //獲得連接 Connectionconn=util.openConnection(); try{ //獲得預(yù)定義語句 PreparedStatementpstmt=conn.prepareStatement(sql); //設(shè)置查詢參數(shù) pstmt.setString(1,account); pstmt.setString(2,password); //執(zhí)行查詢 ResultSetrs=pstmt.executeQuery(); //判斷用戶是否存在 if(rs.next()){ //獲得用戶信息 intid=rs.getInt(1); Stringname=rs.getString(4); intpermission=rs.getInt(5); Stringremark=rs.getString(6); //封裝用戶信息 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客戶端發(fā)來的請求*/publicclassLoginServletextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html"); PrintWriterout=response.getWriter(); UserDaodao=newUserDaoImpl(); //獲得客戶端請求參數(shù) Stringusername=request.getParameter("account"); Stringpassword=request.getParameter("password"); Useru=dao.login(username,password); if(u!=null){ //響應(yīng)客戶端內(nèi)容,登錄成功 out.print(build(u)); }else{ //響應(yīng)客戶端內(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("掌中寶無線訂餐系統(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;}//組件個數(shù)publicintgetCount(){returnmThumbIds.length;}//當(dāng)前組件publicObjectgetItem(intposition){returnnull;}//當(dāng)前組件idpubliclonggetItemId(intposition){return0;}//獲得當(dāng)前視圖publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ //聲明圖片視圖ImageViewimageView;if(convertView==null){ //實例化圖片視圖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)聽器switch(position){ case0: //添加點(diǎn)餐監(jiān)聽器 imageView.setOnClickListener(orderLinstener); break; case1: //并臺監(jiān)聽器 imageView.setOnClickListener(unionTableLinstener); break; case2: //添加轉(zhuǎn)臺監(jiān)聽器 imageView.setOnClickListener(changeTableLinstener); break; case3: //添加查臺監(jiān)聽器 imageView.setOnClickListener(checkTableLinstener); break; case4: //添加更新監(jiān)聽器 imageView.setOnClickListener(updateLinstener); break; case6: //添加注銷監(jiān)聽器 imageView.setOnClickListener(exitLinstener); break; case7: //添加結(jié)算監(jiān)聽器 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)聽器OnClickListenerupdateLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(); //啟動結(jié)算Activity intent.setClass(MainMenuActivity.this,UpdateActivity.class); startActivity(intent); } };//查臺監(jiān)聽器OnClickListenercheckTableLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(); //啟動結(jié)算Activity intent.setClass(MainMenuActivity.this,CheckTableActivity.class); startActivity(intent); } };//結(jié)算監(jiān)聽器OnClickListenerpayLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(); //啟動結(jié)算Activity intent.setClass(MainMenuActivity.this,PayActivity.class); startActivity(intent); } };//訂餐監(jiān)聽器OnClickListenerorderLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(); //啟動訂餐Activity intent.setClass(MainMenuActivity.this,OrderActivity.class); startActivity(intent); } }; //注銷監(jiān)聽器OnClickListenerexitLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ logout(); } }; //轉(zhuǎn)臺監(jiān)聽器OnClickListenerchangeTableLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ changeTable(); } }; //并臺監(jiān)聽器OnClickListenerunionTableLinstener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ unionTable(); } }; //換臺系統(tǒng) privatevoidchangeTable(){ //獲得LayoutInflater實例 LayoutInflaterinflater=LayoutInflater.from(this); //獲得LinearLayout視圖實例 Viewv=inflater.inflate(R.layout.change_table,null); //從LinearLayout中獲得EditText實例 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){ //獲得訂單號 StringorderId=et1.getText().toString(); //獲得桌號 StringtableId=et2.getText().toString(); //查詢參數(shù) StringqueryString="orderId="+orderId+"&tableId="+tableId; //url Stringurl=HttpUtil.BASE_URL+"servlet/ChangeTableServlet?"+queryString; //查詢返回結(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ǒng) privatevoidunionTable(){ //實例化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); //訪問服務(wù)器的URL StringurlStr=HttpUtil.BASE_URL+"servlet/UnionTableServlet"; try{ //實例化URL URLurl=newURL(urlStr); //URLConnection實例 URLConnectionconn=url.openConnection(); //獲得輸入流 InputStreamin=conn.getInputStream(); //獲得DocumentBuilderFactory對象 DocumentBuilderFactoryfactory=DocumentBuilderFactory .newInstance(); //獲得DocumentBuilder對象 DocumentBuilderbuilder=factory.newDocumentBuilder(); //獲得Document對象 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++){ //桌位編號 Stringid=doc.getElementsByTagName("id") .item(i).getFirstChild().getNodeValue(); //桌號 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(); //查詢參數(shù) StringqueryString="tableId1="+tableId1+"&tableId2="+tableId2; //url Stringurl=HttpUtil.BASE_URL+"servlet/UnionTableServlet2?"+queryString; //查詢返回結(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024商貿(mào)城內(nèi)兒童娛樂中心店面租賃及安全管理合同2篇
- 《基于SVM的入侵檢測性能改進(jìn)研究》
- 2024年家電品牌區(qū)域經(jīng)銷商授權(quán)協(xié)議書范本3篇
- 《我國分享經(jīng)濟(jì)監(jiān)管研究》
- 《基于互聯(lián)網(wǎng)金融背景下的D公司融資渠道研究》
- 《改進(jìn)YOLOv4算法的道路病害識別系統(tǒng)研究與實現(xiàn)》
- 《基于平衡記分卡的D保險公司全面預(yù)算管理研究》
- 《SDN下基于強(qiáng)化學(xué)習(xí)的智能路由算法》
- 2024年度水電消防工程糾紛解決合同2篇
- 《UPLC-MS法研究角鯊烯及其氧化物對大鼠體內(nèi)CoQ10平衡的影響》
- 鈸式換能器的共振特性研究
- 《我們?nèi)タ春!烽喿x答案
- 智慧酒店無人酒店綜合服務(wù)解決方案
- 考研英語一新題型歷年真題(2005-2012)
- 健身房會籍顧問基礎(chǔ)培訓(xùn)資料
- 9脊柱與四肢、神經(jīng)系統(tǒng)檢查總結(jié)
- 秀場內(nèi)外-走進(jìn)服裝表演藝術(shù)智慧樹知到答案章節(jié)測試2023年武漢紡織大學(xué)
- 【高分復(fù)習(xí)筆記】王建《現(xiàn)代自然地理學(xué)》(第2版)筆記和課后習(xí)題詳解
- TSGD0012023年壓力管道安全技術(shù)監(jiān)察規(guī)程-工業(yè)管道(高清晰版)
- SMM英國建筑工程標(biāo)準(zhǔn)計量規(guī)則中文 全套
- 2023-2024學(xué)年浙江省富陽市小學(xué)數(shù)學(xué)四年級上冊期末通關(guān)題
評論
0/150
提交評論