Android实训乔艳丽06.docx

上传人:b****2 文档编号:23491993 上传时间:2023-05-17 格式:DOCX 页数:50 大小:160.14KB
下载 相关 举报
Android实训乔艳丽06.docx_第1页
第1页 / 共50页
Android实训乔艳丽06.docx_第2页
第2页 / 共50页
Android实训乔艳丽06.docx_第3页
第3页 / 共50页
Android实训乔艳丽06.docx_第4页
第4页 / 共50页
Android实训乔艳丽06.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

Android实训乔艳丽06.docx

《Android实训乔艳丽06.docx》由会员分享,可在线阅读,更多相关《Android实训乔艳丽06.docx(50页珍藏版)》请在冰豆网上搜索。

Android实训乔艳丽06.docx

Android实训乔艳丽06

Android

院系:

计算机与信息工程学院

班级:

10级软件技术

(1)班

学号:

10060401006

姓名:

乔艳丽

无线点餐系统需求分析

餐饮传统的点菜方式是纯人工操作,由服务员记录顾客点的菜,在具体工作中容易出现以下问题:

手写单据字迹潦草从而导致上错菜、传菜分单出错现象严重、加菜和查账程序较繁琐。

处理特殊口味有遗漏和偏差、客人催菜遗忘现象较频繁、计算账单易出错、不方便人员管理等等。

正因如此,无线点餐模式应运而生。

它不仅可以有效地提高餐饮业的工作效率,更可以规范服务体系,提高整体服务质量和管理水平,并为规模化经营提供了坚实的技术基础。

我们生活在一个充斥着数字技术的世界里,数字技术几乎侵入到我们生活的每个细节。

点餐系统在使用上不及Wi-Fi点餐系统便利:

服务员依然使用手持终端为顾客点餐,当消费者点完餐后,服务员将存储在手持终端内的点餐信息,对准布置在餐厅各个位置的红外接收端进行发射,接收端会将点餐信息通过网线传送到前台计算机。

前台计算机会对点餐信息进行分类处理,然后将点餐信息分别发送给收银台和厨房。

 

一登录模块

(1)

(1)登录模块Android客户端实现

首先,为了提高系统的安全性,要想使用该系统必须进行系统登录。

其次,每个点餐信息中都要用到登录用户信息,这样可以做到责任分明,工作严谨。

登录的基本流程是:

通过用户输入的用户名称和用户密码,到后台数据库做查询,如果有该用户则进入系统,否则提示用户输入错误。

创建一个Android工程,名称为“WirelessOrder_Client”。

在工程的res\layout目录下,创建一个名称为“login_system.xml“的布局文件。

 

创建一个名称为”oginActivity”的,Activity,在类的顶部声明用到的Editatext和Button组件。

packagecom.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);

//设置标题

setTitle("掌中宝无线订餐系统-用户登录");

//设置当前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();

//获得登录结果

Stringresult=query(username,pwd);

if(result!

=null&&result.equals("0")){

returnfalse;

}else{

saveUserMsg(result);

returntrue;

}

}

//将用户信息保存到配置文件

privatevoidsaveUserMsg(Stringmsg){

//用户编号

Stringid="";

//用户名称

Stringname="";

//获得信息数组

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();

}

//根据用户名称密码查询

privateStringquery(Stringaccount,Stringpassword){

//查询参数

StringqueryString="account="+account+"&password="+password;

//url

Stringurl=HttpUtil.BASE_URL+"servlet/LoginServlet?

"+queryString;

//查询返回结果

returnHttpUtil.queryStringForPost(url);

}

}

为了实现登录功能,Android需要通过网络访问后台的数据库进行查询。

Android访问网络的实现方法很多,如WebService,HTTP,直接使用WebView浏览器。

packagecom.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{

//基础URL

publicstaticfinalStringBASE_URL="http:

//192.168.0.1:

8888/WirelessOrder_Server/";

//获得Get请求对象request

publicstaticHttpGetgetHttpGet(Stringurl){

HttpGetrequest=newHttpGet(url);

returnrequest;

}

//获得Post请求对象request

publicstaticHttpPostgetHttpPost(Stringurl){

HttpPostrequest=newHttpPost(url);

returnrequest;

}

//根据请求获得响应对象response

publicstaticHttpResponsegetHttpResponse(HttpGetrequest)throwsClientProtocolException,IOException{

HttpResponseresponse=newDefaultHttpClient().execute(request);

returnresponse;

}

//根据请求获得响应对象response

publicstaticHttpResponsegetHttpResponse(HttpPostrequest)throwsClientProtocolException,IOException{

HttpResponseresponse=newDefaultHttpClient().execute(request);

returnresponse;

}

//发送Post请求,获得响应查询结果

publicstaticStringqueryStringForPost(Stringurl){

//根据url获得HttpPost对象

HttpPostrequest=HttpUtil.getHttpPost(url);

Stringresult=null;

try{

//获得响应对象

HttpResponseresponse=HttpUtil.getHttpResponse(request);

//判断是否请求成功

if(response.getStatusLine().getStatusCode()==200){

//获得响应

result=EntityUtils.toString(response.getEntity());

returnresult;

}

}catch(ClientProtocolExceptione){

e.printStackTrace();

result="网络异常!

";

returnresult;

}catch(IOExceptione){

e.printStackTrace();

result="网络异常!

";

returnresult;

}

returnnull;

}

//获得响应查询结果

publicstaticStringqueryStringForPost(HttpPostrequest){

Stringresult=null;

try{

//获得响应对象

HttpResponseresponse=HttpUtil.getHttpResponse(request);

//判断是否请求成功

if(response.getStatusLine().getStatusCode()==200){

//获得响应

result=EntityUtils.toString(response.getEntity());

returnresult;

}

}catch(ClientProtocolExceptione){

e.printStackTrace();

result="网络异常!

";

returnresult;

}catch(IOExceptione){

e.printStackTrace();

result="网络异常!

";

returnresult;

}

returnnull;

}

//发送Get请求,获得响应查询结果

publicstaticStringqueryStringForGet(Stringurl){

//获得HttpGet对象

HttpGetrequest=HttpUtil.getHttpGet(url);

Stringresult=null;

try{

//获得响应对象

HttpResponseresponse=HttpUtil.getHttpResponse(request);

//判断是否请求成功

if(response.getStatusLine().getStatusCode()==200){

//获得响应

result=EntityUtils.toString(response.getEntity());

returnresult;

}

}catch(ClientProtocolExceptione){

e.printStackTrace();

result="网络异常!

";

returnresult;

}catch(IOExceptione){

e.printStackTrace();

result="网络异常!

";

returnresult;

}

returnnull;

}

程序运行结果如下:

 

(2)登录模块服务器端实现

后台的服务器实现采用JDBC访问后台数据库,Servlet响应HttpRequest请求,并返会响应

结果。

为了完成该功能我们需要安装MySQL数据库并配置Tomcat服务器,这部分内容将不再赘述。

DBUtil工具类内容如下所示。

packagecom.amaker.util;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

importjava.util.Properties;

@authorhz.guo

publicclassDBUtil{

publicvoidcloseConn(Connectionconn){

try{

conn.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

publicConnectionopenConnection(){

Propertiesprop=newProperties();

Stringdriver=null;

Stringurl=null;

Stringusername=null;

Stringpassword=null;

try{

prop.load(this.getClass().getClassLoader().getResourceAsStream(

"DBConfig.properties"));

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;

}

}

创建UserDao接口实现类UserDaoImpl.

 

packagecom.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实现类

*/

publicclassUserDaoImplimplementsUserDao{

/**

*通过用户名称和密码登录,登录成功返回User对象,登录失败返回null

*/

publicUserlogin(Stringaccount,Stringpassword){

//查询SQL语句

Stringsql="selectid,account,password,name,permission,remark"+

"fromuserTbl"+

"whereaccount=?

andpassword=?

";

//数据库连接工具类

DBUtilutil=newDBUtil();

//获得连接

Connectionconn=util.openConnection();

try{

//获得预定义语句

PreparedStatementpstmt=conn.prepareStatement(sql);

//设置查询参数

pstmt.setString(1,account);

pstmt.setString(2,password);

//执行查询

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();

}fina

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

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

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