ImageVerifierCode 换一换
格式:DOCX , 页数:63 ,大小:389.94KB ,
资源ID:21588532      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21588532.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android实训杨超杰26文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android实训杨超杰26文档格式.docx

1、它不仅可以有效地提高餐饮业的工作效率,更可以规模服务体系,提高整体服务质量和管理水平,并为规模化经营提供了坚实的技术基础。2功能模块的设计2.1客户端客户端主要有以下几个模块构成:登陆、点餐、更新、结账等功能。结构图:2.2数据库客户端采用SQLite数据库,服务器采用MySQL数据库,并提供了客户端数据和服务器端数据和服务器端数据的同步功能,提高了程序的运行效率。创建了6张表分别是:系统用户表(UserTbl)、菜谱分类表(MenuTypeTbl)、餐桌表(TableTbl)、菜谱表(MenuTbl)、订单表(OrderTbl)、订单明细表。系统用户表:登陆系统使用。菜谱分类表:方便点餐,将

2、菜单信息进行分类,如热菜、凉菜等。餐桌表:用来表示顾客在哪个桌位就坐。菜谱表:菜谱表用来保存菜信息,如分类、名称和价格等。订单表:当顾客开桌点菜时生成的信息,保存到该表。订单明细表:订单明细表和上面的订单表是一对多的关系,即一桌客人点了多份菜。3主要任务 无线点餐系统的登陆、点餐模块的客户端与服务器端和程序主菜单的实现部分。4模块操作4.1登陆模块客户端实现1.创建一个Android工程,名为“WirelessOrder_Client”。2.在reslayout目录下,创建“login_system.xml”的布局文件,布局文件外层使用LinearLayout布局,内嵌TableLayout完

3、成布局管理。布局文件引用一个图片资源来显示背景图片、俩个TextView用来显示用户名称和密码、两个EditText用来输入用户名和密码、两个Button用来登陆和取消系统。代码均见附录!3.创建名为“LoginActivity”的Acivity,在类的顶部声明所用的EditText和Button组件,在onCreate()方法中调用setContenView(R.layout.login_system)方法设置布局视图。通过findViewById()方法实例化EditText和Button对象。4.定义一个工具类HttpUtil来获得HttpRequest对象和HttpResponse对象

4、,以及发送get和post请求获得返回response信息的方法。5.定义一个显示提示信息的对话框方法,用来显示提示信息。6.定义validate()方法,对用户名称和密码进行非空验证。7.定义一个query()方法,通过用户名称和密码尽心查询,发送Post请求,获得响应结果。8.定义login()方法,该方法调用query()方法,获得查询结果,并将查询结果通过SharedPrerences保存到XML配置文件,以便在后面程序的点餐中使用用户信息。Login()方法调用saveUserMsg()方法将用户信息保存到配置文件。9.为登录按钮添加单击监听器,在onClick()方法中,首先调用c

5、alidate()方法进行验证,如果验证通过再调用login()方法,如果登录成功,系统进入主菜单界面,否则提示登录失败信息。如果验证失败则提示失败信息,请求用户重新输入。10.为取消按钮添加单击监听器,在onClick()方法中调用finish()方法结束该Activity。运行结果如图:4.2登录模块服务器端实现1.创建一个名为“WirelessOrder_server”的Web工程。2.创建程序需要的包结构。dao包用于放置采用DAO设计模式实现的访问数据库接口及其实现类;entity包用于放置对应数据库表的实体类;servlet包用于放置Servlet类;filter包用于放置过滤器;

6、util包是工具类。3.程序要访问MySQL数据库,所以要添加MySQL驱动包“mysql-connector-java-5.0.3-bin.jar”。将该jar文件添加到工程的classpath下。4.创建访问数据库的工具类DBUtil,该类的主要功能是打开和关闭数据库连接。将配置信息保存到配置文件中,这样可以在不修改程序的前提下移植数据库。5.创建用于封装UserTbl表信息的实体类User类。6.创建访问数据库的DAO接口类UserDao。7.创建UserDao接口实现类UserDaoImpl。8.创建LoginServlet类响应请求。该类通过request.getParameter(

7、)方法获得请求参数,调用UserDaoImpl的login()方法,并根据登陆结果返回响应结果信息。4.3程序主菜单实现1.在工程的reslayout目录下创建一个布局文件,该布局文件外层是LinearLayout,使用一个图片资源充当背景色,内层是一个GridView。2.创建“MainMenuActivity”的Acivity,在onCreate()方法中设置Acivity界面标题和布局,实例化GridView组件,为GridView绑定Adapter。3.定义一个名称为“ImageAdapter”的类,该类集成BaseAdapter,为GridView设置Adapter。4.定义一个单击

8、监听器,打开点餐界面。4.4点餐功能客户端实现1.在工程的reslayout目录下创建一个名称为“order.xml”的布局文件,该文件外层使用LinearLayout布局,内层嵌套TableLayout。TableLayout中有三行:第一行TextView和一个Spinner,提示操作员选择课桌号;第二行TextView和EditText,要求永华输入人数;第三行3个Button,分别是开桌,点菜和下单,TableLayout下面有一个ListView用来显示客户点菜列表。2.创建“OrderAcivity”的Activity,该Activity集成Acitivity,在OderActiv

9、ity顶部声明使用到的实例,在OnCreate方法中初始化之。3.开桌功能,要求操作员选择桌号并输入人数,并将这些信息保存到服务器端MySQL数据库中的OrderTbl表中。这里需要为桌号下拉列表Spinner绑定数据,为开桌按钮添加监听器,实现具体操作。4.点菜功能。单击点菜按钮,弹出点菜对话框,要求输入点菜信息。定义一个View视图,添加到对话框,并且自定义视图中有一个Spinner引用菜单列表数据。在reslayout目录下创建“order_detail.xml”的布局文件,外层是LinearLayout,内层嵌套TableLayout。程序运行结果如图:4.5点餐功能服务器端实现1.在

10、“WirelessOrder_Server”工程的“com.amaker.entity”包中创建一个实体类Order,该类封装了数据中OrderTbl表的信息,以面向对象的方法来操作该表。2.在该包中创建实体类OrderDetail,该类封装了数据库中 QueryOrderDetail表的信息,以面向对象的方法来操作该表。3.在“com.amaker.dao”包中创建一个OrderDao接口,有四个方法,分别用来保存订单信息Order、保存订单详细信息OrderDetail、更新桌号状态为有人和更新桌号状态为空位。4.在“com.amaker.dao.impl”包中创建OrderDaoImpl

11、的实现类实现OrderDao接口里定义的方法。5.在“com.amaker.servlet”包中创建一个名称“StarTableServlet”的Servlet,响应客户端请求,调用后台数据,保存数据,更新餐桌状态。login_system.xmlLinearLayout xmlns:android= android:orientation=vertical layout_width=fill_parentlayout_height=background=drawable/login TableLayout stretchColumns=1 /TableRow EditText +id/use

12、rEditText/用户密码:+id/pwdEditTextpassword=true TableRow gravity=rightButton android:取消+id/cancelButton登陆+id/loginButton/TableLayout/LinearLayoutLoginActivitypackage com.amaker.wlo;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.In

13、tent;import android.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.amaker.util.HttpUtil;public class LoginActivity extends Activity

14、 / 声明登录、取消按钮 private Button cancelBtn,loginBtn; / 声明用户名、密码输入框 private EditText userEditText,pwdEditText; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); / 设置标题 setTitle(掌中宝无线订餐系统-用户登录); / 设置当前Activity界面布局 setContentView(R.layout.login_system); / 通过findVie

15、wById方法实例化组件 cancelBtn = (Button)findViewById(R.id.cancelButton); loginBtn = (Button)findViewById(R.id.loginButton); userEditText = (EditText)findViewById(R.id.userEditText); pwdEditText = (EditText)findViewById(R.id.pwdEditText); cancelBtn.setOnClickListener(new OnClickListener() Override public vo

16、id onClick(View v) finish(); ); loginBtn.setOnClickListener(new OnClickListener() if(validate() if(login() Intent intent = new Intent(LoginActivity.this,MainMenuActivity.class); startActivity(intent); else showDialog(用户名称或者密码错误,请重新输入! / 登录方法 private boolean login() / 获得用户名称 String username = userEdi

17、tText.getText().toString(); / 获得密码 String pwd = pwdEditText.getText().toString(); / 获得登录结果 String result=query(username,pwd); if(result!=null&result.equals(0) return false; else saveUserMsg(result); return true; / 将用户信息保存到配置文件 private void saveUserMsg(String msg) / 用户编号 String id = ; / 用户名称 String n

18、ame = / 获得信息数组 String msgs = msg.split( int idx = msgs0.indexOf(= id = msgs0.substring(idx+1); idx = msgs1.indexOf( name = msgs1.substring(idx+1); / 共享信息 SharedPreferences pre = getSharedPreferences(user_msg, MODE_WORLD_WRITEABLE); SharedPreferences.Editor editor = pre.edit(); editor.putString(id, i

19、d);name, name); mit(); / 验证方法 private boolean validate() if(username.equals( showDialog(用户名称是必填项! if(pwd.equals(用户密码是必填项! return true; private void showDialog(String msg) AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(msg) .setCancelable(false) .setPositiveButton(确定,

20、 new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int id) AlertDialog alert = builder.create(); alert.show(); / 根据用户名称密码查询 private String query(String account,String password) / 查询参数 String queryString = account=+account+password; / url String url = HttpUtil.BASE_URL

21、+servlet/LoginServlet?+queryString; / 查询返回结果 return HttpUtil.queryStringForPost(url);HttpUtilpackage com.amaker.util;import java.io.IOException;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.methods.HttpGet;import org.apache.ht

22、tp.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;public class HttpUtil / 基础URL public static final String BASE_URL=http:/192.168.0.1:8888/WirelessOrder_Server/ / 获得Get请求对象request public static HttpGet getHttpGet(String url) HttpGet request = new HttpGet(url);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1