随着智能手机的应用,GPS、wifi 技术的成熟,关于手机订餐应用的需求也逐渐增---手机订外卖、手机订餐方便了客户。例如,去餐厅用餐前客户可以在手机 APP 上查看当前餐厅是否有空位,可以预订餐位,且在出发前就可在手机点餐,并注明到店时间,到店后无需等待就可享用美食。对于餐厅来说,也节省了人力,无需太多的点菜服务人员,节省了开店成本。以下为基于 Android 手机订餐系统的设计。
1 系统模块设计
订餐系统主要分为三个模块。
1.1 订餐客户端程序
该程序安装在用餐客户的手机上,主要功能是用户通过手机选择餐厅,预订餐位,并点菜下单。
1.2 餐厅管理客户端程序
该程序可分为两部分,一是可安装在餐厅管理人员的手机上,主要功能是餐厅管理人员可通过手机查看订单,上传及修改餐厅菜品,上传餐厅简介及当前时段用餐情况等信息。
另一部分功能主要是为餐厅管理人员开发的订餐管理系统,以网页形式体现,餐厅管理人员可通过浏览器在网页管理餐厅的订单信息及菜品信息,也可以通过网页来管理餐厅,对于较小的餐厅,餐厅管理人员可直接用手机客户端管理餐厅,对于大、中型餐厅可用计算机通过网页来实现餐厅订餐信息的管理。
1.3 服务器端数据服务系统
服务器端程序用来接收手机客户端用户发来的消息并做处理,如订餐信息,餐厅管理人员发来的菜品修改信息等,并对数据库做相应的修改。
2 系统模块详细设计
2.1 订餐客户端程序。该程序安装在用餐客户的手机上,主要功能是用户通过手机选择餐厅,预订餐位,并点菜下单。根据用户当前所在位置,系统会推荐用户周边的餐厅,用户也可自己搜索、选择,并查看餐厅就餐环境及当前就餐人数,是否有空位;选择好餐厅后,可直接进入点餐界面,点餐界面将菜品分类,并显示菜品图片、品名、价格等,用户可点击选择,并可对每一个菜品输入特别要求,如少辣;选好菜品后,可输入订餐人姓名、电话、用餐人数等信息,并下单,就可直接传送到服务器端的数据库了。主要实现方法如下:
(1)服务器端传送给手机端的数据,如餐厅列表、菜品列表,可以将从数据库中取得的数据转换为 JSONObject 或 JSONArray 的格式,客户端收到后可直接解析。(2)手机客户端连接服务器端时,主要采用http 网络连接方法,如 http://192.168.199.115 /DC_server/t_cp.(3)手机客户端数据采用分页加载方法,即只下载并显示用户当前所查看的数据(如餐厅列表、菜品列表)这样可节省网络资源。
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
// 判断是否滚动到底部
if (view.getLastVisiblePosition() == view.getCoun(t) - 1) {
if (havedata) {page += 1;
conservice (MyGlobal.cp_url + “?sh_id = ” +Bundle1.getString(“
sh_id”)+“&page=”+page+“&search_key=”+search_data);}}}
该程序被安装在餐厅管理人员的手机上,主要功能是餐厅管理人员可通过手机查看订单,上传及修改餐厅菜品,上传餐厅简介及当前时段用餐情况等信息。主要功能有:查看订单、上传菜品、修改菜品、修改餐厅信息、修改用户密码,该模块的难点主要在上传菜品图片,即在手机中查找菜品图片,选择后上传到服务器,并修改数据库;主要方法:
(1)对手机上的图片进行列表,供用户选择,通过 Gridview+自定义 adapter 实现图片的显示。
(2)以文件做为参数,传送至服务器端,实现菜品图片的上传,代码如下。
FileBody file=new FileBody(imageFile);
mpEntity.addPar(t"picPath",file);
mpEntity.addPart ("picName",new StringBody(file.getFilename()));
httppost.setEntity(mpEntity);
HttpResponse httpResponse=httpclient.execute(httppost);
2.3 服务器端数据服务系统
该程序主要是接收手机上发来的信息,并修改数据库,以及根据手机发来的信息,从数据库中查询相关数据并返回信息给手机客户端;该程序被安装在服务器端,服务器端程序为 web 程序,可用tomcat+jsp+mysql 组合,主要分为两个部分,一个是用于接收订餐客户手机上发来的信息;另一部分用于接收餐厅管理人员手机客户端信息。主要方法如下:
(1)服务器端传送给手机端的数据,如餐厅列表、菜品列表,可以将从数据库中取得的数据转换为 JSONObject 或 JSONArray 的格式,客户端收到后可直接解析。
List<Object> data=new ArrayLis(t);
try{ResultSet rs=sp.execQuery(sql,iPageSize,Integer.parseIn(ti-Page));
i(fsp.getPageCoun(t)>=Integer.parseIn(tiPage))
{int i=0;
do {Map<String,String>cell=new HashMap<String,String>();
cell.pu(t“cp_id”,rs.getString(“id”));
cell.pu(t“cp_type_name”,rs.getString(“cp_type_name”));
cell.pu(t“cp_type_id”,rs.getString(“cp_type_id”));
……
data.add(cell);
}while(++i<iPageSize && rs.nex(t));}
} catch (SQLException ex) {ex.printStackTrace(); }
JSONArray array=new JSONArray(data);
out.prin(tarray.toString());
(2)接收餐厅管理人员上传的图片,将图片存入服务器指定目录,并修改数据库中菜品图片名称。
OutputStream out =new FileOutputStream (new File(path,file-name));
InputStream in=item.getInputStream();
int length=0;
byte[] buf=new byte[1024];
System.out.println(“获取文件总量的容量:”+ item.getSize());
while((length=in.read(buf))! =-1){out.write(buf,0,length); }
String sql=“update t_cp set cp_img=‘”+filename +“' where id=”+cp_id;
conn.doUpdate(sql);
参考文献
[1]徐光侠,封雷,涂演,等。基于 Android 和 Google Maps 的生活辅助系统的设计与实现[J].重庆邮电大学学报(自然科学版),2012,2.
[2]王晋东;移动终端上传网络图片的算法实现[J].电子技术与软件工程,2013,17.