湖南科技大学本科生毕业设计(论文)
protocolHelper.setRequest(ProtocolHelper.REGISTER,ProtocolHelper.QUERY, member); result = protocolHelper.sendRequestVO(); // 向服务端发送数据 if (result.size() > 0) { response = result.get(0); } // 根据服务端的相应信息进行相应判断 if (response != null) { Editor namedata = sharedPreferences.edit(); namedata.putString(\namedata.commit(); Editor passworddata = sharedPreferences.edit(); passworddata.putString(\passworddata.commit(); // 将用户名存在sharedPreferences // 将密码存在sharedPreferences // 登录成功,进入主界面 else // 登录失败,弹出错误信息 当用户点击注册按钮时,通过Android的Intent机制,就从登陆界面跳转到注册界面,接下来实现系统注册的功能。 4.2.2 系统注册
注册界面如图4.6,跟登陆界面一下,它也有一个属于它的布局文件来摆放这些控件,在此模块中必须要输入正确这些注册信息,才能正常的进行注册。
- 21 -
湖南科技大学本科生毕业设计(论文)
图4.6 注册界面
当用户点击取消按钮时,界面会跳转回到登陆界面,当用户点击注册按钮时会跟服务器端的数据库进行连接,把用户所填的信息拼接发给服务器,服务器处理过后将数据插入到数据库中对应的表中。客户端实现注册代码如下: bRegister.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 获取用户输入数据 if(name.equals(\}else {//如果不为空则先放入HashMap中,再做密码输入是否一致的判断 // 判断输入的密码是否一致 if (infoHashMap.get(\ infoHashMap.get(\ // 拼凑数据 //如果用户输入用户名或密码为空,则给出提示,用户名和密码不能为空 data = \ + \ + \ + infoHashMap.get(\ + infoHashMap.get(\ Member member=new Member(name,password,infoHashMap .get(\ protocolHelper.setObject(member); - 22 -
湖南科技大学本科生毕业设计(论文)
// 准备请求数据 protocolHelper.setRequest(ProtocolHelper.REGISTER, ProtocolHelper.INSERT, data); // 向服务端发送请求 response = protocolHelper.sendRequest(); // 判断响应信息,根据信息触发不同的事件 if (response.equals(\ // 跳转到主界面 } else // 以对话框的形式给出错误信息 } else // 以对话框的形式给出错误信息:密码必须一致 4.2.3 浏览菜品
用户登陆成功或者选择游客登陆成功后,会直接进入到主界面,如图4.7,主界面的布局采用的是TabHost分页式布局,每一个Tab都对应一个Activity,通过addTab这个方法来添加Tab,这个控件让Android手机多个Activity共享一个界面,而且操作方便,简单,布局好看。
图4.7 主界面
当用户选择菜单选项时,在其下面将列出从服务器端发送过来菜品简要信息数据,客户端想要看到这些数据必须对它进行一系列的处理,在此,本模块采用了ListView来显示菜品信息,ListView是以列表的形式来展示具体内容,并且能够根据数据的长度自适应的显示,要想ListView显示数据必须要为其添加适配器(Adapter),适配器分为很多种,有ArrayAdapter、SimpleAdapter、BaseAdapter等等,由于在该ListView中显示的
- 23 -
湖南科技大学本科生毕业设计(论文)
数据比较多,而且还有图片信息等,所以在此采用BaseAdapter来构建适配器。
构建BaseAdapter核心代码: // 菜单模块的自定义适配器。 class ProductAdapter extends BaseAdapter { public View getView(int position, View convertView, ViewGroup parent){ ViewHolder viewHolder = null; // 如果convertView为空 则为其创建一个View if (convertView == null) { LayoutInflater inflater = LayoutInflater.from(ctx); viewHolder = new ViewHolder(); convertView = inflater.inflate(R.layout.listitem, null); // 获得listitem布局中的控件并添加到View上 convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } // 获得所有的数据并灌入convertView中 return convertView;} } // 如果convertView不为空 那么直接为其灌入数据 向服务器获得菜品信息的数据代码: public void proRequest() { helper.setRequest(ProtocolHelper.GOODSLIST, ProtocolHelper.QUERY, \ BaseProducts bp = new BaseProducts(); bp.setBid(1); helper.setObject(bp); List
湖南科技大学本科生毕业设计(论文)
4.2.4 搜索菜品
图4.8 搜索界面
如果菜品数量过多,用户将会很难找到自己心仪的菜品,在此,本项目为了方便用户选择特定的菜品,设计了一个搜索菜品的功能,通过搜索界面,用户可以通过商品名称、商家名称、商品价格三个搜索条件来搜索对自己胃口的菜品,如图4.8,该功能暂时仅支持单条件搜索,在此列出按商品名称搜索的核心代码,另外两种搜索代码跟此差不多。
// 通过商品名称模糊查询。 public void getProductByName(String name) { List productListByname = new ArrayList(); Cursor cursor = dbutil.querygoodsByName(name); int count = cursor.getCount(); cursor.moveToFirst(); if (count > 0) { for (int i = 0; i < count; i++) { HashMap map = new HashMap(); map.put(\ map.put(\ map.put(\ map.put(\ map.put(\ productListByname.add(map); - 25 -
// 对菜品数据遍历查找