1、Android实训乔艳丽06Android实训报告院系:计算机与信息工程学院班级:10级软件技术(1)班学号:10060401006姓名:乔艳丽无线点餐系统需求分析餐饮传统的点菜方式是纯人工操作,由服务员记录顾客点的菜,在具体工作中容易出现以下问题:手写单据字迹潦草从而导致上错菜、传菜分单出错现象严重、加菜和查账程序较繁琐。处理特殊口味有遗漏和偏差、客人催菜遗忘现象较频繁、计算账单易出错、不方便人员管理等等。正因如此,无线点餐模式应运而生。它不仅可以有效地提高餐饮业的工作效率,更可以规范服务体系,提高整体服务质量和管理水平,并为规模化经营提供了坚实的技术基础。我们生活在一个充斥着数字技术的世界
2、里,数字技术几乎侵入到我们生活的每个细节。点餐系统在使用上不及Wi-Fi点餐系统便利:服务员依然使用手持终端为顾客点餐,当消费者点完餐后,服务员将存储在手持终端内的点餐信息,对准布置在餐厅各个位置的红外接收端进行发射,接收端会将点餐信息通过网线传送到前台计算机。前台计算机会对点餐信息进行分类处理,然后将点餐信息分别发送给收银台和厨房。一登录模块一(1)(1)登录模块Android客户端实现首先,为了提高系统的安全性,要想使用该系统必须进行系统登录。其次,每个点餐信息中都要用到登录用户信息,这样可以做到责任分明,工作严谨。登录的基本流程是:通过用户输入的用户名称和用户密码,到后台数据库做查询,如
3、果有该用户则进入系统,否则提示用户输入错误。创建一个Android工程,名称为“WirelessOrder_Client”。在工程的reslayout目录下,创建一个名称为“login_system.xml“的布局文件。创建一个名称为”oginActivity”的,Activity,在类的顶部声明用到的Editatext和Button组件。package com.amaker.wlo;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import a
4、ndroid.content.Intent;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
5、 extends Activity / 声明登录、取消按钮 private Button cancelBtn,loginBtn; / 声明用户名、密码输入框 private EditText userEditText,pwdEditText; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); / 设置标题 setTitle(掌中宝无线订餐系统-用户登录); / 设置当前Activity界面布局 setContentView(R.layout.login_sys
6、tem); / 通过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
7、(R.id.pwdEditText); cancelBtn.setOnClickListener(new OnClickListener() Override public void onClick(View v) finish(); ); loginBtn.setOnClickListener(new OnClickListener() Override public void onClick(View v) if(validate() if(login() Intent intent = new Intent(LoginActivity.this,MainMenuActivity.clas
8、s); startActivity(intent); else showDialog(用户名称或者密码错误,请重新输入!); ); / 登录方法 private boolean login() / 获得用户名称 String username = userEditText.getText().toString(); / 获得密码 String pwd = pwdEditText.getText().toString(); / 获得登录结果 String result=query(username,pwd); if(result!=null&result.equals(0) return fal
9、se; else saveUserMsg(result); return true; / 将用户信息保存到配置文件 private void saveUserMsg(String msg) / 用户编号 String id = ; / 用户名称 String name = ; / 获得信息数组 String msgs = msg.split(;); int idx = msgs0.indexOf(=); id = msgs0.substring(idx+1); idx = msgs1.indexOf(=); name = msgs1.substring(idx+1); / 共享信息 Share
10、dPreferences pre = getSharedPreferences(user_msg, MODE_WORLD_WRITEABLE); SharedPreferences.Editor editor = pre.edit(); editor.putString(id, id); editor.putString(name, name); mit(); / 验证方法 private boolean validate() String username = userEditText.getText().toString(); if(username.equals() showDialog
11、(用户名称是必填项!); return false; String pwd = pwdEditText.getText().toString(); if(pwd.equals() showDialog(用户密码是必填项!); return false; return true; private void showDialog(String msg) AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(msg) .setCancelable(false) .setPositiveButto
12、n(确定, 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=+password; / url String url
13、= HttpUtil.BASE_URL+servlet/LoginServlet?+queryString; / 查询返回结果 return HttpUtil.queryStringForPost(url); 为了实现登录功能,Android需要通过网络访问后台的数据库进行查询。Android访问网络的实现方法很多,如Web Service,HTTP,直接使用WebView浏览器。package com.amaker.util;import java.io.IOException;import org.apache.http.HttpResponse;import org.apache.htt
14、p.client.ClientProtocolException;import org.apache.http.client.methods.HttpGet;import org.apache.http.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
15、.1:8888/WirelessOrder_Server/; / 获得Get请求对象request public static HttpGet getHttpGet(String url) HttpGet request = new HttpGet(url); return request; / 获得Post请求对象request public static HttpPost getHttpPost(String url) HttpPost request = new HttpPost(url); return request; / 根据请求获得响应对象response public stat
16、ic HttpResponse getHttpResponse(HttpGet request) throws ClientProtocolException, IOException HttpResponse response = new DefaultHttpClient().execute(request); return response; / 根据请求获得响应对象response public static HttpResponse getHttpResponse(HttpPost request) throws ClientProtocolException, IOExceptio
17、n HttpResponse response = new DefaultHttpClient().execute(request); return response; / 发送Post请求,获得响应查询结果 public static String queryStringForPost(String url) / 根据url获得HttpPost对象 HttpPost request = HttpUtil.getHttpPost(url); String result = null; try / 获得响应对象 HttpResponse response = HttpUtil.getHttpRe
18、sponse(request); / 判断是否请求成功 if(response.getStatusLine().getStatusCode()=200) / 获得响应 result = EntityUtils.toString(response.getEntity(); return result; catch (ClientProtocolException e) e.printStackTrace(); result = 网络异常!; return result; catch (IOException e) e.printStackTrace(); result = 网络异常!; retu
19、rn result; return null; / 获得响应查询结果 public static String queryStringForPost(HttpPost request) String result = null; try / 获得响应对象 HttpResponse response = HttpUtil.getHttpResponse(request); / 判断是否请求成功 if(response.getStatusLine().getStatusCode()=200) / 获得响应 result = EntityUtils.toString(response.getEnti
20、ty(); return result; catch (ClientProtocolException e) e.printStackTrace(); result = 网络异常!; return result; catch (IOException e) e.printStackTrace(); result = 网络异常!; return result; return null; / 发送Get请求,获得响应查询结果 public static String queryStringForGet(String url) / 获得HttpGet对象 HttpGet request = Http
21、Util.getHttpGet(url); String result = null; try / 获得响应对象 HttpResponse response = HttpUtil.getHttpResponse(request); / 判断是否请求成功 if(response.getStatusLine().getStatusCode()=200) / 获得响应 result = EntityUtils.toString(response.getEntity(); return result; catch (ClientProtocolException e) e.printStackTrac
22、e(); result = 网络异常!; return result; catch (IOException e) e.printStackTrace(); result = 网络异常!; return result; return null; 程序运行结果如下:一(2)登录模块服务器端实现后台的服务器实现采用JDBC访问后台数据库,Servlet响应HttpRequest请求,并返会响应 结果。为了完成该功能我们需要安装MySQL数据库并配置Tomcat服务器,这部分内容将不再赘述。DBUtil工具类内容如下所示。package com.amaker.util;import java.sql
23、.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;author hz.guo public class DBUtil public void closeConn(Connection conn) try conn.close(); catch (SQLException e) e.printStackTrace(); public Connection openConnection() Properties prop = new Propertie
24、s(); String driver = null; String url = null; String username = null; String password = null; try prop.load(this.getClass().getClassLoader().getResourceAsStream( DBConfig.properties); driver = prop.getProperty(driver); url = prop.getProperty(url); username = prop.getProperty(username); password = pr
25、op.getProperty(password); Class.forName(driver); return DriverManager.getConnection(url, username, password); catch (Exception e) e.printStackTrace(); return null; 创建UserDao接口实现类UserDaoImpl.package com.amaker.dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Resul
26、tSet;import java.sql.SQLException;import com.amaker.dao.UserDao;import com.amaker.entity.User;import com.amaker.util.DBUtil;/* * * author 郭宏志 * 用户登录DAO实现类 */public class UserDaoImpl implements UserDao /* * 通过用户名称和密码登录,登录成功返回User对象,登录失败返回null */ public User login(String account, String password) / 查询
27、SQL语句 String sql = select id,account,password,name,permission,remark + from userTbl + where account=? and password=? ; / 数据库连接工具类 DBUtil util = new DBUtil(); / 获得连接 Connection conn = util.openConnection(); try / 获得预定义语句 PreparedStatement pstmt = conn.prepareStatement(sql); / 设置查询参数 pstmt.setString(1
28、, account); pstmt.setString(2, password); / 执行查询 ResultSet rs = pstmt.executeQuery(); / 判断用户是否存在 if (rs.next() / 获得用户信息 int id = rs.getInt(1); String name = rs.getString(4); int permission = rs.getInt(5); String remark = rs.getString(6); / 封装用户信息 User u = new User(); u.setId(id); u.setAccount(account); u.setPassword(password); u.setName(name); u.setPermission(permission); u.setRemark(remark); return u; catch (SQLException e) e.printStackTrace(); fina
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1