4-28 1,250 views
首先必须要感谢师兄!
告知近期会联系我,马上激动了,师兄告知可能是做Android应用,在移动云平台部。决定结合现在所学的知识,决定做一个简单的demo来表下自己决心!首先放上一个大二的java项目,叫做StarBar餐厅系统,在关于我里面有提到,这里是具体的项目文档。就改它了!
自己对云计算的理解就是硬件资源的虚拟化;而大数据就是海量数据的高效处理。看过百度移动互联网发展趋势报告2014春节专版,发展这种天外飘来一朵云的日子越来越近。很明显智能手机则是移动互联网时代一个标志性的客户端工具,具有强大的移动“云”计算和存储能力,可以通过移动通信网络来实现无线网络接入,从而实现各种各样的云应用。还记得云应用最大的好处就是轻量级的客户端,实现强大的功能,Android貌似就是一个不错的选择。
现在重新设计项目,使用Android客户端实现无线点菜,实现一个小型“云”的概念。
1.系统分析设计
1.1系统物理架构
系统使用无线网络, Android客户端,web服务器,后台数据库服务器。Android系统通过无线网络访问web服务器,或访问数据。客户端采用Android系统(2.3版本以上)。服务器使用Tomcat7.0,MySQL数据库,如图1所示
图1
1.2系统技术选型
Android客户端使用java语言开发,Web服务器采用Tomcat服务器技术,网络通信使用Apache HTTP协议客户端, 使用servlet来响应请求。后台数据库模拟远程连接MySQL,与Android本地的Sqlite数据库实现同步。如图2所示
图2
1.3系统系统数据库设计
2.系统实现
说明:
用户验证成功以后,将进入使用界面,满足各种功能需求,并提供友好界面。
2.1用户管理功能
用户不同,拥有的权限不同,提供不同的用户权限,并且通过数据库修改,记录。
1打开用户管理,总管理员能观看所有用户,并可以修改数据。
2.管理员有提高用户权限的能力。
3.普通用户有基本的使用权限。
2.2餐桌管理功能
餐桌管理可以进行对餐桌完成增删改查的任务。 并且可以对餐桌进行分区管理。
2.3预订功能
可以根据用户要求,进行订单的处理,反应及时。
2.4餐单管理功能
可对食物进行分类管理,方便查询,并且提供今日推荐,人性化服务。
2.5报表功能
对食普通用户可以对餐桌进行结账,查询账单等操作,管理员可以对总的费用,客户数量等,进行查阅,提供一种更好的总结的方式
服务器端:
DBUtils:创建数据库连接对象
StaffDTO:用来存放用户信息
StaffDAO:用来对处理User相关的数据操作(大二的代码的确现在觉得还是很欠缺,这里采用.dao.impl 接口的概念会更好,并且使用service类来统一管理,并且service类也设计成接口,方便扩展.service.impl)
UserServlet:处理用户请求,并返回
package com.starbar.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.starbar.dto.StaffDTO; import com.starbar.dao.StaffDAO; public class UserServlet extends HttpServlet { public UserServlet() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StaffDAO staffDAO = new StaffDAO(); StaffDTO staffDTO = new StaffDTO(); String username = request.getParameter("username"); // 获得从客户端传入的用户名和密码 String password = request.getParameter("password"); staffDTO.setUserName(username); staffDTO.setUserPassword(password); System.out.println("username: " + username); System.out.println("password: " + password); System.out.println("登陆成功!"); PrintWriter out = response.getWriter(); if (StaffDAO.Login(staffDTO) != null) { out.print("success"); } out.flush(); out.close(); } public void init() throws ServletException { // Put your code here } }
客户端:
先实现一个网络登录的过程,当用户点击login按钮后,创建一个http请求,发送到服务器端。获得服务器返回的结果后,再进行判断并执行相关操作。httpclient相当于一个浏览器,通过它可以很方便的发出GET,POST请求
该Activity的具体代码如下:
package com.rayleigh.starbar; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.*; public class MainActivity extends Activity { private EditText usernameEdit; private EditText passwordEdit; private Button loginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); usernameEdit = (EditText) findViewById(R.id.usernameEdit); passwordEdit = (EditText) findViewById(R.id.pwdEdit); loginButton = (Button) findViewById(R.id.loginButton); loginButton.setOnClickListener(loginListener); } Handler handler = new Handler(){ public void handleMessage(Message msg) { super.handleMessage(msg); Bundle data = msg.getData(); String val = data.getString("value"); Log.i("mylog","请求结果-->" + val); } }; Runnable runnable = new Runnable(){ @Override public void run() { System.out.println("Login Button clicked!"); String httpUrl = "http://10.96.63.65:8080/starbar/servlet/UserServlet"; System.out.println(httpUrl); HttpPost request = new HttpPost(httpUrl); HttpClient httpClient = new DefaultHttpClient(); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username", usernameEdit .getText().toString())); params.add(new BasicNameValuePair("password", passwordEdit .getText().toString())); HttpResponse response; try { HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8"); request.setEntity(entity); response = httpClient.execute(request); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String str = EntityUtils.toString(response.getEntity()); System.out.println("response:" + str); if (str.trim().equals("success")) { System.out.println("登录成功!"); Intent intent = new Intent(MainActivity.this, MainActivity.class); startActivity(intent); } else { System.out.println("登录失败!"); } } else { System.out.println("连接失败!"); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Message msg = new Message(); Bundle data = new Bundle(); data.putString("value","传递!"); msg.setData(data); handler.sendMessage(msg); } }; OnClickListener loginListener = new OnClickListener() { @Override public void onClick(View v) { new Thread(runnable).start(); } }; }
图挂了一半...
这样子看起来好多了