基于javaweb校园订餐系统毕业论文 java网上订餐系统毕业论文
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
毕业论文中文摘要
基于Android平台的手机网上订餐系统的研究与实现摘要: ANDROID手机网上点餐系统是基于ANDROID手机的一款网络应用软件,目的在于为注册用户和餐馆提供极大的便利。应用此软件,用户可以轻松便捷地实现自己的点菜要求。此系统基于C/S结构,采用PHP和MYSQL编程来实现对数据的存储和操作。手机客户端主要应用ANDROID开发技术,使用ACTIVITY组件,并遵照MVC模式进行开发。网络数据交互则遵照HTTP协议来实现与服务器端的通信。本文第一章引言部分对整个系统和开发的背景作了简要的分析。第二章简要介绍开发环境与开发工具与相关技术。第三章是系统的需求分析和数据库的设计,客户端程序的整体结构及【【微信】】服务的设计。第四章是主体功能的编码实现,介绍本系统各个功能模块的具体实现。最后则是对开发过程的总结。关键词: Android Json数据 HttpClient SOAP协议 【【微信】】服务 |
---|
1 绪论
何谓“网上订餐”?简言之,就是由网站担任消费者与餐饮商家之间的“媒介”,消费者直接通过网络来预订餐厅座位或房间。订餐者根据菜系、位置、价位等找到中意的餐馆酒店后,只需鼠标点击并输入就餐时间、人数等信息即可,订餐网会在完成预订后通过e-mail或短信告知预订情况。网上订餐不仅对消费者完全免费,还可提供不同程度的折扣,使人们在没有就餐烦恼的情况下享受物美价廉的可口饭菜。
1.1 研究背景
随着计算机、互联网和移动终端及其应用的快速发展,不断的改变着人们的工作方式、交流方式、学习方式以及生活的各个方面,尤其是电子商务的突飞猛进正使人们的购物方式、支付方式发生着翻天覆地的变化。
如今快节奏的生活方式让人们困扰不已,而就餐与交通问题首当其冲。餐厅太过拥挤、客流高峰期就餐困难、点餐等待等问题层出不穷。如果能有一个为广大民众所接受的系统应用解决这些问题,对于解决生活中的困扰及提升人们的生活质量都有极大的帮助。
1.2 目前形势
国内也有不少网上订餐的服务形式,其中包括线上订购、在线支付等等。其实,想法都很不错,但想实现网上订购,这些网上订餐的形式应该很难,个中原因主要就是餐饮行业普遍存在的信息化意识薄弱,这让网上订餐成为实在的瓶颈,短时期内这是很难突破的,这也是为什么现在真正能实现网上订餐、并能被广泛接纳的网上订餐行为,依然离不开电话直接订购的主要原因。
据不完全统计,2008年新上线订餐类网站近千家,大多数集中在经济较发达的大都市和一级城市,如北京、上海、广州、深圳、重庆、福州、厦门等。 网上订餐,想真正实现“网上订,网上付”的正规化,还需要很长的一段时日。
1.3 选题方向及意义
据了解,目前国内较为成熟的、成体系的餐饮预定类网站为数不多,“行业巨头”主要集中在京、沪、粤三地DD请客800、饭统网雄踞京城;订餐小秘书、大众点评网坐镇上海滩、八界网独守羊城。处于餐饮产业链中的新生产业DD网络订餐业,正受到越来越多投资人的偏爱。记者调查发现,当下众多此类网站,如大众点评网、订餐小秘书、紫页114、请客800等,都有一个共同的盈利模式,即通过互联网帮客人订餐、提供一定的折扣,从而获得店方给予的返点,这样的运营模式实际就是餐饮行业的携程网。这些网站不仅可以给网民提供海量的餐厅信息、交流美食心得的平台,而且可以给订餐者实实在在的折扣。
2 开发环境及相关技术简介
2.1 开发环境简介
本系统是基于Android平台的网上订餐系统,因此Android平台是首要搭建的平台,鉴于目前主流的Android系统基本上都在Android2.1版本以上,因此就选择Android SDK 2.1版本作为开发本系统Android手机客户端的基础。
此外,本系统使用Apache+PHP+MySQL作为Web端的开发基础。
下面就是本系统开发所需的各种软件的名称及版本等级。
1、JDK 1.6及其以上版本。该版本为较高的版本,具有很多低版本所不具备的新特性。
2、Web应用服务器,Apache 2.2.6版本。
3、数据库,MySQL5.1及其以上版本。MySQL功能强大且安装方便,并且支持事物后更增添了数据的完整性及安全性。
4、开发环境,【【微信】】 Ja【【微信】】ers 3.5 及其以上版本,该版本支持EE系统的开发。
5、Android SDK 2.1及其【【微信】】 开发插件ADT。
2.2 Web Service技术简介
【【微信】】平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,【【微信】】平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议有:XML和XSD、SOAP、WSDL、UDDI及调用RPC与消息传递。而本系统所用的协议则是:SOAP和WSDL。
SOAP即简单对象访问协议(Simple Object Access Protocal),它是用于交换XML编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。【【微信】】打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。
WSDL就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述【【微信】】及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
3 系统功能设计及概述
3.1 系统开发背景
随着计算机技术的发展,越来越多的人依赖计算机。而智能手机的诞生及其相关应用的发展、电信技术的进步,又为移动终端及其应用的普及提供了可能。
Google公司2005年推出的Google地图,2008年推出的第一款Android智能手机,极大地促进了手机应用的大发展。本系统将主要基于Google Map及Android应用软件来实现一个美食订购、分享的平台,通过Web端以及Android手机端的实现使用户可以实时与他人分享自己喜欢的美食,并且可以通过Google Map精确快速的找到饭店所在的位置。
3.2 功能概述
现在对该系统的基本功能进行简单介绍。
1、Web会员端:
用户可以通过注册模块注册会员账号,通过登录系统实现美食信息的查询、收藏和分享,实现美食的订购,管理个人信息。
2、Web商户端:
商户也可以通过注册模块注册成为系统商户,商户被审核通过后即可登录系统设置餐厅信息,包括利用google地图上传餐厅具体的经纬度;管理餐厅所提供的美食信息,包括添加、删除、修改;查询和管理会员订单,包括是否接受订单、所订餐品是否发出等。
3、Web管理端
当管理员登陆系统后,可以对整个系统进行管理,包括审核商户、文章、广告信息;添加、修改和删除美食种类及美食信息;改变站长推荐、今日特价等信息;对数据库进行维护。
4、Android客户端
会员除了通过电脑访问该系统之外,还可以通过在手机中安装相应的程序来访问该系统。在手机端,用户同样可以注册成为会员或登录系统,登陆成功后可以查看美食信息、搜索美食信息、上传美食信息、查询个人信息、查看个人的订单、及个人收藏的美食信息。
3.3 MySQL数据库设计
本系统中的信息表主要有11张数据表:网站文章表、会员信息表、商户信息表、美食种类表、餐品信息表、餐厅信息表、评论表、广告表、订单表、订单详情表、用户推荐美食信息表(详见附录一)。
3.4 Android客户端的设计
本系统的Android客户端是基于Android 2.1 开发出来的,下面是对Android应用程序的构成进行介绍。先看项目的目录结构(如下图一):
(图1)
在该程序中,包含如下一些主要的文件,接下来就详细解释一下。
1、src目录
src目录中存放的是该项目的源代码,其内部结构会根据用户所声明的包自行组织,例如本系统中所用的三个基本包,它们包含了程序所用到的Activity和各种类及各种方法。
2、gen目录
该目录下的文件是ADT自动生成的,并不需要人为地修改。它就是项目的字典,项目中用户界面、字符串、图片、声音等资源都会在该类中创建它们唯一的ID,当项目中使用这些资源时,会通过该类得到资源的引用。
3、Android 2.1
该目录中存放的是该项目支持的JAR包,同时还包含项目打包时需要的META-INF目录。
4、res目录
该目录用于存放应用城中经常使用的资源文件,包括图片、声音布局文件及参数描述文件等,包括多个目录,以drawable开头的三个文件是用来保存不同格式的图片的资源。Layout文件夹则是存放所有的布局文件的。Values是用来存放程序所用到的字符串、颜色及样式描述文件的。
5、AndroidManifest.xml文件
该文件时应用程序的系统控制文件,是应用程序的全局性描述文件,让外界知道该应用程序包含哪些组件、资源、何时运行及应用程序自身应该拥有的权限的声明。例如,本程序应用到的权限有:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第一个是访问网络的权限,第二个是精确定位的权限,第三个是应用照相权限,第四个是往存储卡中写入数据的权限。
3.5 Web Service服务端的设计
Android应用通常都是运行在手机平台上,手机系统的硬件资源是有限的,不管是存储能力还是计算能力都很有限,在Android系统上开发、运行一些单用户、小型应用还是可能的,但是对于需要进行大量的数据处理、复杂计算的应用,还是只能不是爱远程服务器上,而Android应用将只是充当这些应用的客户端。
【【微信】】用于消除不同平台、不同语言之间的差异,将现有的应用程序发布成开放式的服务,从而允许互联网上任何地方、任何平台、任何语言的应用程序可以向全世界发布信息或提供某种服务。
本系统采用SOAP(Simple Object Access Protocol,简单对象访问协议),它是一种具有扩展性的XML消息协议。SOAP是一个应用程序向另一个应用程序发送XML消息。SOAP消息是从SOAP发送者传至SOAP接受者的单路消息,任何应用程序均可作为发送者或者接受者。SOAP仅定义消息结构和消息处理的协议,与底层的传输协议独立。因此,SOAP协议能通过HTTP,JMS或者SMTP协议传输。
使用PHP做服务端,要用Android去访问,用JSON和XML提供返回的数据,而Android端则可以用Apache的HttpClient去访问。
JSON(Ja【【微信】】on) 是一种轻量级的数据交换格式。它基于Ja【【微信】】(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, Ja【【微信】】, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本项目的Android客户端就是利用这个组件进行Web服务请求的。
4 系统实现及功能实例
4.1 Web会员端主要功能实现及示例
4.1.1 注册、登陆验证功能的实现
当进入网站首页时,会发现网站右侧的登陆标签,若你是会员,请点击登陆,就会跳转至登陆页面;若你不是会员,也点击登录。因为登陆页面注册按钮,用户就可以进入注册页面。在注册或登录的过程中,页面会提示不同程度的提示信息,比如登录或注册成功并自动跳转页面,会提示你的用户名或密码输入不正确等。
4.1.2 查询美食信息(包括餐厅地图信息)
(图2) (图3)
当用户在浏览美食信息时,点击进入餐厅查询餐厅所有美食信息,用户在餐厅详细信息页面可以看到美食的详细信息,包括美食信息及美食所在餐厅的位置信息,为用户提供全面细致的餐厅及美食信息。实现过程:
【【微信】】;
var map;
【【微信】】ray=[];
function initialize(lat,lng){
geocoder=new google.maps.Geocoder();
【【微信】】oogle.maps.LatLng(lat,lng);
【【微信】】={
zoom: 13,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP }
map=new google.maps.Map(document.getElementById("map_canvas"), 【【微信】】);
【【微信】】(latlng); 【【微信】】(event.【【微信】】); }); }
- 购买、收藏美食功能的实现
(图4) (图5)
用户如果要点餐,那就必须进入美食的详细信息页面(如图4),这样就可以进行点餐和收藏了。用户只要点击订购按钮,就可以把美食添加进菜单,而且用户还可以改变订购的数量,为用户添加了便利(如图5)。
(图6) (图7)
用户在订购结束后即可进行结算,点击购物车页面的结算按钮,即可进入填写订单详细信息页面(如图6),在确认订单详细信息后,用户即可提交订单(如图7),完成订餐过程。
4.2 Web商户端功能实现及实例
4.2.1 注册、登陆验证功能的实现
当商户进入网站首页时,会发现网站底部有商务合作与餐厅管理两个标签,若你不是已注册商户,点击商务合作就会跳转至注册页面;若你已是注册商户,点击餐厅管理。商户在注册后会在经过网站管理员的审核之后才会通过;在登录的过程中,页面会提示不同程度的提示信息,比如登录或注册成功并自动跳转页面,会提示你的用户名或密码输入不正确等。
4.2.2 管理餐厅信息(上传、修改、删除)功能的实现
(图8) (图9)
当商户已经过审核可以登录至商户管理页面时(如图8),商家可以选择修改餐厅信息页面上传餐厅信息(如图9),系统设置当前的区域为保定火车站附近的区域。这里可以通过Google地图获取商家餐厅的具体位置(精确的经纬度)并在确认上传之后上传至数据库。获取地图并添加位置数组的map.js代码如下所示:
【【微信】】;
var map;
【【微信】】ray=[];
function initialize(){
geocoder=new google.maps.Geocoder();
【【微信】】oogle.maps.LatLng(38.86300,115.48003);//这里就是页面当前显示的地理位置的具体经纬度。
【【微信】】={
zoom: 13,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map=new google.maps.Map(document.getElementById("map_canvas"), 【【微信】】);
google.maps.event.【【微信】】(map, 'click', function(event){
【【微信】】(event.【【微信】】);
});
}
function 【【微信】】(【【微信】】){<!--增加标记--!>
【【微信】】ew google.maps.LatLng(【【微信】】);
【【微信】】=new google.maps.Marker({
position: 【【微信】】,
map: map
});
document.getElementById("show_x").value=【【微信】】.lat();<!--获得标记的经度障允驹谖谋究蛑--!>
document.getElementById("show_y").value=【【微信】】.lng();<!--获得标记的纬度障允驹谖谋究蛑--!>
map.setCenter(【【微信】】);
markersArray.push(marker);
}
4.3 Android手机端功能实现及实例
4.3.1 登陆及验证功能的实现
(图10) (图11)
当用户安装Android客户端后即可运行。首先进入的是欢迎界面,然后会自动跳转进入登录界面。这里用户可以登录或注册,这里就点击登录按钮,如果你输入的用户名和密码不一致,系统就会提示你重新输入(如图10)。当你输入正确的用户名和密码后,系统就会自动跳转进入系统的主界面(如图11)。关键代码如下所示:
HttpPost httpPost=new HttpPost(url);
HttpClient client=new DefaultHttpClient();
StringBuilder str=new StringBuilder();
//获取用户名文本框内容
String editUid=uid.getText().toString();
//获取密码框内容
String editPwd=pwd.getText().toString();
ArrayList<Name【【微信】】> params=new ArrayList<Name【【微信】】>();
params.add(new BasicName【【微信】】("username",editUid));
params.add(new BasicName【【微信】】("password",editPwd));
BufferedReader buffer=null;
try{
httpPost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse httpRes=client.execute(httpPost);
if(httpRes.getStatusLine().getStatusCode()==200){
buffer=new BufferedReader(new InputStreamReader(httpRes.getEntity().getContent()));
for(String s=buffer.readLine();s !=null; s=buffer.readLine()){
str.append(s);
}
//String out=EntityUtils.toString(httpRes.getEntity().getContent();"UTF_8");
//StringBuilder sb=new StringBuilder();
Log.i(Tag,str.toString());
buffer.close();
JSONObject json=new JSONObject(str.toString());
String title=json.getString("title");
Log.i(Tag,title);
int id=json.getInt("id");
if(id==1){
Toast.makeText(this, id + title ,Toast.LENGTH_SHORT).show();
//跳转到主页面
Intent 【【微信】】=new Intent();
【【微信】】.setClass(FanyouClient.this,MainActivity.class);
【【微信】】=new Bundle();
bundle.putString("action","register");
【【微信】】.putExtras(bundle);
startActivity(【【微信】】);
FanyouClient.this.finish();
}
else
Toast.makeText(this,"对不起,请重新输入用户名或密码" ,Toast.LENGTH_SHORT).show();
4.3.2 订购美食功能的实现
(图12) (图13)
用户在进入系统主界面后,可以看到几个主要按钮,如果想要订餐,可以进入餐厅(如图12所示),这样就可以如同web端一样浏览餐厅信息,在选择某个餐厅后,就可以看到餐厅所有的美食信息,在浏览餐品详细信息时,用户就可以进行购买和收藏等操作了(如图13所示)。关键代码如下所示:
中媒网丨北京暂停堂食的日子:预制菜热卖,外卖不打烊假期订单增长约三成
暂停堂食是什么意思,北京餐厅停止营业,多地宣布暂停食堂,北京餐饮停业本报华夏时报记者卢晓 北京报道
五一假期一直被看做是消费黄金周。其中餐饮更是撑起消费的半边天。
但今年的五一假期却有些特殊。5月4日,北京市新型冠状病毒肺炎疫情防控工作新闻发布会宣布,“五一”节后北京餐饮经营单位继续暂停堂食服务。此前在4月30日,北京市宣布为了进一步降低疫情传播风险,“五一”假期,全市餐饮经营单位暂停堂食,转为外卖和自提服务。
外卖成为衡量今年五一北京消费市场的一个风向标。5月4日,饿了么方面告诉《华夏时报》记者,北京市场的外卖订单“五一”期间增长了两至三成。美团外卖方面也告诉记者,5月1日-5月3日,北京市场餐饮外卖订单量稳中有升,与去年同期相比增长了超三成,其中全城送订单量环比上涨超过四成。
外卖不打烊
虽然五一假期餐饮门店堂食暂停,但《华夏时报》记者在北京街头走访发现,外卖服务却不打烊。不少餐厅在门口支起了长桌,桌上打包好的一份份外卖等待被骑手或者消费者领走。
有餐饮商家告诉《华夏时报》记者,五一期间明显感觉外卖订单量有所上涨,“特别是五一当天,不仅订单量多,而且单价也相对比较高,大多都是家庭聚餐。”
针对愿意自提的用户,外卖平台为商户提供了“到店自取”服务。用户可以提前在线上下单,按照约定时间到店内自取。数据显示,5月1日当天,美团外卖开通到店自取商户数量比4月30日增长近两成,目前该平台上已有约六成外卖商家开通了到店自取服务。
更多的人选择等待骑手送达。
5月4日下午将近三点,某外卖平台的骑手告诉《华夏时报》记者,当天他已经送了快四十单,“放假了,单子明显多。”他同时告诉记者,虽然订单多了,但由于没有堂食,派单也相对集中,等餐的时间比之前短,送餐速度相对也更快一些。
需要提及的是,除了在餐厅订外卖外,今年五一还鼓励市民多渠道订购原材料、半成品、预制菜等回家做饭。
《华夏时报》记者从盒马了解到,5月1日其预制菜销量环比涨500%。饿了么全能超市也紧急启动预制菜专项,与大润发、物美等商超合作,5月上线累计超过100个半成品菜和预制菜。
不仅预制菜在今年五一成为更多消费者的外卖选择,商超订单也大幅增加。
“4月28日以来,店内美团闪购订单量日均超500单以上。居民购置的物资主要集中在果蔬、肉类、粮油、熟食、鸡蛋等必需品上。”位于临时管控区的京客隆劲松商城店相关工作人员如此表示。美团外卖北京区域相关负责人也表示,目前临时管控区内的外卖订单主要以商超类订单为主。
增加骑手保供
面对增多的外卖需求,外卖平台一方面增加更多的外卖商户,另一方面则在统筹更多的配送运力。
为了稳住现金流,此前不少未开通外卖的商家,在今年五一尝试开通外卖业务。据记者了解,美团和饿了么都为餐饮商户开通上线外卖的绿色通道,最快1个小时就能完成资质审核,商家申请当日即可上线营业。据统计,5月1日当天,北京有473家餐饮商户通过美团的绿色通道申请上线外卖,比前一日增长338%。
此外,外卖平台也在增加更多的运力。
《华夏时报》记者从美团方面了解到,为满足北京市民的生活需求,美团配送已增加了三成骑手运力储备及600万-800万元骑手补贴,投入启动实时、灵活的“跨区调度配送”和“驻点配送”,并调配1.5倍运力集中保障商超订单,优先保障封控、管控区居民以及老弱病残孕群体的外卖配送需求。
饿了么方面则告诉《华夏时报》记者,堂食暂停后,外卖和超市的订单都会大幅上涨,其在大润发、物美、京客隆等重点保供商超驻点取送,并为朝阳区、丰台区部分商超门店增派10%-20%配送力量。
这其中,骑手的防疫保障颇为外界关注。上述外卖骑手对记者表示,现在没有48小时内的核酸报告,没法送外卖。饿了么方面还告诉记者,除了要求骑手持有效期内的核酸检测证明上岗外,五一假期期间其再次追加20万只N95/KN95口罩组织下发。
此外,外卖平台还纷纷推出举措,鼓励骑手参与保供工作的积极性。
记者从美团方面了解到,骑手遇到因疫情所产生的异常订单都可以向平台申诉免责。饿了么方面还告诉记者,考虑到特殊情况,会对疫情管控影响到的区域的订单给予“超时免赔”和更高单价。
责任编辑:黄兴利 主编:寒丰