马上动手!!!

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所示

sjg

                                                                图1

1.2系统技术选型

          Android客户端使用java语言开发,Web服务器采用Tomcat服务器技术,网络通信使用Apache HTTP协议客户端, 使用servlet来响应请求。后台数据库模拟远程连接MySQL,与Android本地的Sqlite数据库实现同步。如图2所示

steg

                                                                      图2

1.3系统系统数据库设计

s4  s2
s3

2.系统实现

skj

说明:

       用户验证成功以后,将进入使用界面,满足各种功能需求,并提供友好界面。  

2.1用户管理功能

      用户不同,拥有的权限不同,提供不同的用户权限,并且通过数据库修改,记录。

      1打开用户管理,总管理员能观看所有用户,并可以修改数据。

      2.管理员有提高用户权限的能力。

      3.普通用户有基本的使用权限。                                              

2.2餐桌管理功能

        餐桌管理可以进行对餐桌完成增删改查的任务。 并且可以对餐桌进行分区管理。

2.3预订功能

          可以根据用户要求,进行订单的处理,反应及时。

2.4餐单管理功能

       可对食物进行分类管理,方便查询,并且提供今日推荐,人性化服务。

2.5报表功能

      对食普通用户可以对餐桌进行结账,查询账单等操作,管理员可以对总的费用,客户数量等,进行查阅,提供一种更好的总结的方式
20140430 024040
andlog
tomlog

服务器端:

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

7.混合高斯模型(Mixtures of Gaussians)和 EM 算法

这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation)。 与k-means 一样,给定的训练样本是{x (1), … ,x (m)},我...

阅读全文

6. K-means聚类算法

K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般。聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例...

阅读全文

2 条评论

欢迎留言