// 响应客户端内容,登录失败 out.print(\ } out.flush(); out.close(); }
private String build(User u){ String userMsg = \ userMsg+=\ userMsg+=\ userMsg+=\ return userMsg; }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); }
public void init() throws ServletException { }
public LoginServlet() { super(); }
public void destroy() { super.destroy(); } }
3. 程序主菜单实现
用户登陆成功以后便可以进入到系统的主菜单界面了,主菜单是通过GridView来展示的。在GridView中的自组建是ImageView,每一个ImageView代表一个功能,当单击ImageView时候跳转到相应的功能界面。 程序主菜单的实现需要完成如下步骤。
24
1) 在工程的res\\layout\\目录下创建一个布局文件,该布局文件外层是LinerLayout,使用一个图片资源充当背景色,内层是一个GridView
2) 创建一个名称为“MainMenuActivity”的Activity,在onCreate方法中设置Activity界面标题和布局,实例化GridView组件,为GridView绑定Adapter。
import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.Toast;
public class MainMenuActivity extends Activity { @Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setTitle(\掌中宝无线订餐系统-主菜单\ setContentView(R.layout.main_menu);
GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this)); }
3) 定义一个名称为“ImageAdapter”的类,该类继承BaseAdapter,为GridView设置Adapter
// 继承BaseAdapter
public class ImageAdapter extends BaseAdapter { // 上下文
private Context mContext; // 构造方法
public ImageAdapter(Context c) { mContext = c;
25
}
// 组件个数
public int getCount() {
return mThumbIds.length; }
// 当前组件
public Object getItem(int position) { return null; }
// 当前组件id
public long getItemId(int position) { return 0; }
// 获得当前视图
public View getView(int position, View convertView, ViewGroup parent) { // 声明图片视图
ImageView imageView; if (convertView == null) { // 实例化图片视图
imageView = new ImageView(mContext);
// 设置图片视图属性
imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else {
imageView = (ImageView) convertView; }
// 设置图片视图图片资源
imageView.setImageResource(mThumbIds[position]); // 为当前视图添加监听器 switch (position) { case 0:
// 添加点餐监听器 imageView.setOnClickListener(orderLinstener); break; case 1: // 并台监听器 imageView.setOnClickListener(unionTableLinstener); break; case 2: // 添加转台监听器 imageView.setOnClickListener(changeTableLinstener); break; case 3:
26
// 添加查台监听器 imageView.setOnClickListener(checkTableLinstener); break; case 4:
// 添加更新监听器 imageView.setOnClickListener(updateLinstener); break; case 5:
//添加设置监听器 //////////////////////////////////////////////////////?? break; case 6:
// 添加注销监听器 imageView.setOnClickListener(exitLinstener); break;
case 7:
// 添加结算监听器 imageView.setOnClickListener(payLinstener); break; default: break; }
return imageView; }
// 图片资源数组
private Integer[] mThumbIds = {
R.drawable.diancai, R.drawable.bingtai, R.drawable.zhuantai, R.drawable.chatai, R.drawable.gengxin, R.drawable.shezhi, R.drawable.zhuxiao, R.drawable.jietai }; }
4) 定义一个单击监听器,打开点餐界面。
OnClickListener orderLinstener = new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); // 启动订餐Activity intent.setClass(MainMenuActivity.this, OrderActivity.class); startActivity(intent); } };
27
4. 点餐功能客户端的实现
进入程序主菜单之后,单击“点菜”项便进入了点菜的操作界面。点菜功能是本项目中最为复杂的一个功能,它的操作过程分为三步:开桌、点菜和下单。 开桌过程是要求操作员输入桌号和人数,将点餐时间。操作员编号、桌号和人数保存到服务器端的OrderTbl表中。点餐时间去服务器当前时间有程序自动完成,操作员编号取登陆过程中保存在AharePreferences中的登录信息,桌号引用TableTbl表中的数据,这里为了提高程序的预案算效率,在客户端使用SQLite将服务端数据保存下来,点餐过程所使用的桌号从客户端数据存取,程序提供客户端数据和服务器数据的同步功能,人数由操作员输入。
点菜,开桌后同一桌人可能要点好多道菜,这样在开桌的基本上进行点菜,点菜的过程是要求用户输入菜
28