随着智能手机的应用,GPS、wifi技术的成熟,关于手机订餐应用的需求也逐渐增手机订外卖、手机订餐方便了客户。例如,去餐厅用餐前客户可以在手机APP上查看当前餐厅是否有空位,可以预订餐位,且在出发前就可在手机点餐,并注明到店时间,到店后无需等待就可享用美食。对于餐厅来说,也节省了人力,无需太多的点菜服务人员,节省了开店成本。以下为基于Android手机订餐系统的设计。 1系统模块设计 订餐系统主要分为三个模块。 1。1订餐客户端程序 该程序安装在用餐客户的手机上,主要功能是用户通过手机选择餐厅,预订餐位,并点菜下单。 1。2餐厅管理客户端程序 该程序可分为两部分,一是可安装在餐厅管理人员的手机上,主要功能是餐厅管理人员可通过手机查看订单,上传及修改餐厅菜品,上传餐厅简介及当前时段用餐情况等信息。 另一部分功能主要是为餐厅管理人员开发的订餐管理系统,以网页形式体现,餐厅管理人员可通过浏览器在网页管理餐厅的订单信息及菜品信息,也可以通过网页来管理餐厅,对于较小的餐厅,餐厅管理人员可直接用手机客户端管理餐厅,对于大、中型餐厅可用计算机通过网页来实现餐厅订餐信息的管理。 1。3服务器端数据服务系统 服务器端程序用来接收手机客户端用户发来的消息并做处理,如订餐信息,餐厅管理人员发来的菜品修改信息等,并对数据库做相应的修改。 2系统模块详细设计 2。1订餐客户端程序。该程序安装在用餐客户的手机上,主要功能是用户通过手机选择餐厅,预订餐位,并点菜下单。根据用户当前所在位置,系统会推荐用户周边的餐厅,用户也可自己搜索、选择,并查看餐厅就餐环境及当前就餐人数,是否有空位;选择好餐厅后,可直接进入点餐界面,点餐界面将菜品分类,并显示菜品图片、品名、价格等,用户可点击选择,并可对每一个菜品输入特别要求,如少辣;选好菜品后,可输入订餐人姓名、电话、用餐人数等信息,并下单,就可直接传送到服务器端的数据库了。主要实现方法如下:(1)服务器端传送给手机端的数据,如餐厅列表、菜品列表,可以将从数据库中取得的数据转换为JSONObject或JSONArray的格式,客户端收到后可直接解析。(2)手机客户端连接服务器端时,主要采用http网络连接方法,如http:192。168。199。115DCservertcp。(3)手机客户端数据采用分页加载方法,即只下载并显示用户当前所查看的数据(如餐厅列表、菜品列表)这样可节省网络资源。 if(scrollStateOnScrollListener。SCROLLSTATEIDLE){ 判断是否滚动到底部 if(view。getLastVisiblePosition()view。getCount()1){ if(havedata){page1; conservice(MyGlobal。cpurl?shidBundle1。getStrin(shidpagepagesearchkeysearchdata); }}} 2。2餐厅管理客户端程序 该程序被安装在餐厅管理人员的手机上,主要功能是餐厅管理人员可通过手机查看订单,上传及修改餐厅菜品,上传餐厅简介及当前时段用餐情况等信息。主要功能有:查看订单、上传菜品、修改菜品、修改餐厅信息、修改用户密码,该模块的难点主要在上传菜品图片,即在手机中查找菜品图片,选择后上传到服务器,并修改数据库;主要方法: (1)对手机上的图片进行列表,供用户选择,通过Gridview自定义adapter实现图片的显示。 (2)以文件做为参数,传送至服务器端,实现菜品图片的上传,代码如下。 FileBodyfilenewFileBody(imageFile); mpEntity。addPart(picPath,file); mpEntity。addPart(picName,newStringBody(file。getFilename ())); httppost。setEntity(mpEntity); HttpResponsehttpResponsehttpclient。execute(httppost); 2。3服务器端数据服务系统 该程序主要是接收手机上发来的信息,并修改数据库,以及根据手机发来的信息,从数据库中查询相关数据并返回信息给手机客户端;该程序被安装在服务器端,服务器端程序为web程序,可用tomcatjspmysql组合,主要分为两个部分,一个是用于接收订餐客户手机上发来的信息;另一部分用于接收餐厅管理人员手机客户端信息。主要方法如下: (1)服务器端传送给手机端的数据,如餐厅列表、菜品列表,可以将从数据库中取得的数据转换为JSONObject或JSONArray的格式,客户端收到后可直接解析。 ListdatanewArrayList(); try{ResultSetrssp。execQuery(sql,iPageSize,Integer。parseInt(iPage)); if(sp。getPageCount()Integer。parseInt(iPage)) {inti0; do{MapcellnewHashMap(); cell。put(cpid,rs。getString(id cell。put(cptypename,rs。getString(cptypename cell。put(cptypeid,rs。getString(cptypeid data。add(cell); }while(i } }catch(SQLExceptionex){ex。printStackTrace(); } JSONArrayarraynewJSONArray(data); out。print(array。toString()); (2)接收餐厅管理人员上传的图片,将图片存入服务器指定目录,并修改数据库中菜品图片名称。 OutputStreamoutnewFileOutputStream(newFile(path,filename)); InputStreaminitem。getInputStream(); intlength0; byte〔〕bufnewbyte〔1024〕; System。out。println(获取文件总量的容量:item。getSize()); while((lengthin。read(buf))!1) {out。write(buf,0,length); } Stringsqlupdatetcpsetcpimgfilenamewhereidcpid; conn。doupdate(sql); 参考文献 〔1〕徐光侠,封雷,涂演,等。基于Android和GoogleMaps的生活辅助系统的设计与实现〔J〕。重庆邮电大学学报(自然科学版),2012,2。 〔2〕王晋东;移动终端上传网络图片的算法实现〔J〕。电子技术与软件工程,2013,17。