基于Android客户端的食堂订餐系统的毕业设计.docx
- 文档编号:20158566
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:52
- 大小:70.22KB
基于Android客户端的食堂订餐系统的毕业设计.docx
《基于Android客户端的食堂订餐系统的毕业设计.docx》由会员分享,可在线阅读,更多相关《基于Android客户端的食堂订餐系统的毕业设计.docx(52页珍藏版)》请在冰豆网上搜索。
基于Android客户端的食堂订餐系统的毕业设计
基于Android客户端的食堂订餐系统的毕业设计
基于Android客户端的食堂订餐系统的设计与实现
摘要:
在网络技术快速发展的今天,原先普通的电话预定餐厅已经不能满足的功能需求。
网络越来越贴近生活,本产品通过网络订餐方便商家客户互动。
用户通过注册登陆的方式能及时看到餐饮商家更新的信息,包括餐厅环境,菜肴信息,菜价等,反馈饭菜的好吃与否。
商家可及时更新信息,处理订单,通知客户订单确认。
系统管理员可以维护更新发布消息,还可以推荐食品(根据反馈),菜谱管理等一些辅助功能。
关键词:
Android;客户端;订餐
一、引言
(一)开发背景
在网络技术快速发展的今天,原先普通的电话预定餐厅已经不能满足的功能需求。
网络越来越贴近生活,本产品通过网络订餐方便商家客户互动。
用户通过注册登陆的方式能及时看到餐饮商家更新的信息,包括餐厅环境,菜肴信息,菜价等,反馈饭菜的好吃与否。
商家可及时更新信息,处理订单,通知客户订单确认。
系统管理员可以维护更新发布消息,还可以推荐食品(根据反馈),菜谱管理等一些辅助功能。
(二)面向对象
学校内的学生,教师
(三)开发工具的介绍
以下是对食物信息管理系统的开发环境进行阐述:
操作系统:
WindowsXP
数据库:
Mysql8.2
开发工具:
Eclipse
二、需求分析
1 用户注册
用户使用android APP进行注册或登录。
若未注册可选择注册,只有注册用户方可点餐。
未注册用户:
只能登陆查询餐厅菜肴信息,不能订餐;
注册用户:
注册提供用户名,密码邮箱,短号或其他联系方式,学号或工号。
可以查询信息,可以订餐。
2登陆
客户端登陆进行点餐,服务端登陆进行管理。
3 查看餐厅信息
显示餐厅的各种信息,包括餐厅名称,ID图片 文字说明。
用户找到自己喜欢的餐厅后,点击餐厅图片进入此餐厅信息页面,可同构点击菜肴信息进入订餐。
4 查看菜肴信息
用户再点击进入菜肴信息后,可以查看所有菜肴信息,包括名称、图片、价格、餐厅等,找到自己喜欢的菜肴可以点击确定,还可以根据就餐爱好,分类查询,动态搜索。
5 订餐确认
用户在选择餐厅菜肴后,可点击确定,系统根据用户选择会自动生成订单信息,包括订单ID,用户名,学号或工号,餐厅ID,餐厅名称,菜肴ID,菜肴名称,菜式剩余数量,到餐时间,取货地点,联系方式等。
用户查看又不满意可以取消订单或者更换菜肴,直至满意。
然后点击订单确认,此订单生成,订单信息系统自动存储。
6 商家确认订单生成
在用户生成订单后,餐厅查看,并确认。
7 商家更新信息
商家根据实体店近期信息,可选择更新餐厅信息,包括菜肴信息及优惠信息等。
更新菜肴信息:
包括名称、口味、图片、编号、价格等,更新优惠信息。
更新结束后,点击确认,信息生成并保存在服务端。
三、系统设计
(一)系统设计的体系结构
本系统的设计及开发采用了流行的B/S(浏览器/服务器)模式的数据库体系,用户端主要负责人机交互,包括一些与数据和应用关系的图形和界面运用。
Web服务器主要负责对客户端应用程序的集中管理。
应用服务器主要负责应用系统的逻辑结构和数据关系,即事务处理。
应用服务器又可以根据其处理的具体业务不同而分为多个。
数据服务器则主要负责数据的存储和组织、分布式管理、备份和同步等等。
(二)系统流程图
根据食物网站设计的特点,将其分为两大模块:
前台用户模块和后台管理员模块。
1.前台模块流程图如图3-1所示:
图3-1前台模块流程图
2.后台模块流程图如图3-2所示:
图3-2后台模块流程图
(三)系统功能图
绘制系统结构图的过程,实际上就是对系统功能模块进行分解设计的过程,即合理地将数据流程图转变为所需要的系统结构图。
系统结构图将会使读者和用户能直观的了解系统的结构模式,理解系统的各个功能的结构,能很好地方便用户使用和理解整个系统。
根据上述分析,按照结构化程序设计的需求,得到系统模块图,如图3-3所示:
四、数据库表设计
(一)系统E-R图
E-R图由实体、实体的属性以及实体之间的关系三部分组成,实体是具有相同的性质并且彼此之间可以相互区分的现实世界对象的集合;属性是实体所具有的特征,它是描述实体或者关系的性质的数据项;实体之间的关系通常是指不同实体之间的关系。
图4-1E-R图
(二)系统数据表设计
数据库在物理设备上的存储结构与存取方法被称为数据库的物理结构,它依赖与给定的计算机系统。
为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构。
根据上面的实体关系分析以及ER图,设计系统的数据库表。
1.管理员信息表(t_admin),用来记录管理员的姓名及密码的信息。
表4-1管理员信息表
序号
列名
数据类型
标识
主键
允许空
说明
1
userId
Int
是
是
否
管理员编号
2
userName
varchar(50)
否
否
是
管理员姓名
3
userPw
varchar(50)
否
否
是
管理员密码
2.站内公告信息表(t_gonggao),主要记录了站内公告的标题、内容、日期和公告发布者,公告删除则是在数据库表中显示公告是否已被删除。
表4-2站内公告信息表
序号
列名
数据类型
标识
主键
允许空
说明
1
gonggao_id
Int
是
是
否
公告编号
2
gonggao_title
varchar(50)
否
否
是
公告标题
3
gonggao_content
varchar(8000)
否
否
是
公告内容
4
gonggao_data
varchar(50)
否
否
是
公告日期
5
gonggao_fabuzhe
Varchar(50)
否
否
是
发布者
6
gonggao_del
Varchar(50)
否
否
是
公告删除
7
gonggao_one1
varchar(50)
否
否
是
公告1
8
gonggao_one2
varchar(50)
否
否
是
公告2
9
gonggao_one3
varchar(50)
否
否
是
公告3
10
gonggao_one4
varchar(50)
否
否
是
公告4
11
gonggao_one5
datetime(0)
否
否
是
公告5
12
gonggao_one6
datetime(0)
否
否
是
公告6
13
gonggao_one7
Int(11)
否
否
是
公告7
14
gonggao_one8
Int(11)
否
否
是
公告8
3.食物信息表(t_Food),该表主要用来记录食物的名称、所在地址、食物价格和食物的详情,并且可以在数据库表中查看到食物信息是否被删除,其中食物编号是表中的外键。
表4-3食物信息表
序号
列名
数据类型
标识
主键
允许空
说明
1
Id
Int
是
是
否
食物编号
2
name
varchar(50)
否
否
是
食物名称
3
address
varchar(50)
否
否
是
地址
4
menpiao
Int
否
否
是
送餐
5
xiangqing
varchar(5000)
否
否
是
详情
6
del
char(10)
否
否
是
删除
4.订单信息表(t_jiudian),用来记录客人的名称、地址以及客人的号码、联系人和订餐的一些标准,其中食物编号是信息表中的外键。
表4-4酒店信息表
序号
列名
数据类型
标识
主键
允许空
说明
1
Id
Int
是
是
否
食堂编号
2
name
varchar(50)
否
否
是
食物名称
3
address
char(10)
否
否
是
送餐地址
4
tel
char(10)
否
否
是
送餐号码
5
lianxiren
char(10)
否
否
是
联系人
6
biaozhun
char(10)
否
否
是
标准
7
Food_id
int
否
否
是
食物编号
8
del
char(10)
否
否
是
删除
表4-5食物信息表
序号
列名
数据类型
标识
主键
允许空
说明
1
Id
Int
是
是
否
食物编号
2
name
varchar(50)
否
否
是
食物名称
3
address
varchar(5000)
否
否
是
内容
4
tel
varchar(50)
否
否
是
联系方式
5
lianxiren
varchar(50)
否
否
是
联系人
6
jianjie
varchar(50)
否
否
是
简介
7
del
varchar(50)
否
否
是
删除
6.订餐信息表(t_foods),用来记录订餐的标、内容以及订餐的日期。
表4-6订餐信息表
序号
列名
数据类型
标识
主键
允许空
说明
1
foods_id
Int
是
是
否
订餐编号
2
foods_title
varchar(50)
否
否
是
订餐标题
3
foods_content
varchar(5000)
否
否
是
订餐内容
4
foods_date
varchar(50)
否
否
是
订餐日期
5
foods_one1
varchar(50)
否
否
是
订餐1
6
foods_one2
varchar(50)
否
否
是
订餐2
7
foods_one3
varchar(50)
否
否
是
订餐3
8
foods_one4
varchar(50)
否
否
是
订餐4
9
foods_one5
Int
否
否
是
订餐5
7.网友投票信息表t_toupiao),通过投票的方式得知用户是如何评价每一种食物的,该表记录了投票的名称和投票的日期。
表4-7网友投票信息表
序号
列名
数据类型
标识
主键
允许空
说明
1
toupiao_id
Int
是
是
否
投票编号
2
toupiao_name
varchar(50)
否
否
是
投票名称
3
toupiao_date
varchar(5000)
否
否
是
投票日期
8.用户信息表(t_user),用来记录用户名、密码、用户类型、用户的真实姓名及用户的地址、性别、用户的联系方式、邮箱和QQ。
表4-8用户信息表
序号
列名
数据类型
标识
主键
允许空
说明
1
user_id
Int
是
是
否
用户编号
2
user_name
varchar(50)
否
否
是
用户名
3
user_pw
varchar(5000)
否
否
是
用户密码
4
user_type
Int
否
否
是
用户类型
5
user_realname
varchar(50)
否
否
是
用户真实姓名
6
user_address
varchar(50)
否
否
是
用户住址
7
user_sex
varchar(50)
否
否
是
性别
8
user_tel
varchar(50)
否
否
是
用户联系方式
9
user_email
varchar(50)
否
否
是
用户邮箱
10
user_qq
varchar(50)
否
否
是
用户QQ
五、系统功能的具体实现
(一)网站首页
在食物资源管理网站首页可查看发布的订餐资讯、发布的食物公告信息、可按关键字查询食物信息、可进行投票调查等功能,用户登录之后即可进入网站首页,首页如下图5-1所示:
图5-1网站首页图
主要代码如下:
packagefood.test.zqz.util;
importjava.io.InputStream;
import.HttpURLConnection;
import.URL;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importorg.apache.http.HttpResponse;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.message.BasicNameValuePair;
importorg.apache.http.protocol.HTTP;
importorg.apache.http.util.EntityUtils;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.util.Log;
importandroid.widget.ImageView;
importfood.test.domain.Food;
/**
*
*@authorzhuqiuzhu从服务器获取有关主界面的所有数据
*
*/
publicclassGetNetWorkData{
//菜品图片资源定位符
publicfinalstaticStringURL="http:
//10.0.2.2:
8080/DestineFoodServer/images";
publicfinalstaticStringURL_AllFood="http:
//10.0.2.2:
8080/DestineFoodServer/GetAllFoodServlet";
/**
*
*@paramurl
*服务器端的URI地址
*@paramparams
*发给服务端的请求参数,以键值对的形式封装名字和对应的值,
*
*其中params的名字键位应该跟服务端保持一致
*
*@return
*/
publicfinalstaticStringBuffergetConnectionPost(Stringurl,
HashMap
StringBuffersb=newStringBuffer();
HttpPostrequest=null;
HttpResponseresponse=null;
try{
if(url!
=null){
/*----------请求--------------------*/
request=newHttpPost(url);
List
for(Map.Entry
params.entrySet()){
Stringname=entry.getKey();
Stringvalue=entry.getKey();
list.add(newBasicNameValuePair(name,value));
}
request.setEntity(newUrlEncodedFormEntity(list,HTTP.UTF_8));
/*-------------响应-------------------*/
response=newDefaultHttpClient().execute(request);
if(response.getStatusLine().getStatusCode()==200){
Stringtemp=EntityUtils.toString(response.getEntity());
if(temp.trim().length()>0){
sb.append(temp);
}else{
sb.append("errorresponsedatalength");
}
}else{
sb.append("errorresponsecode:
").append(
response.getStatusLine().getStatusCode());
}
}else{
//url为空
returnnull;
}
}catch(Exceptione){
e.printStackTrace();
}
returnsb;
}//endofgetConnectionPost()
/**
*
*对服务器端的响应数据进行“解码”
*
*解码规则:
约定服务器端传送的数据为字符串类型,格式为
*"[name=value;name=value;...],[name=value;...]...",
*注意"="两端无空格,必须以"["开头,以"]"结束
*
*
*@paramsb
*服务器端的响应数据
*@return一个以键值对形式存储的服务端响应数据
*/
publicfinalstaticArrayList
ArrayList
StringitemStr="";
Stringname="";
Stringvalue="";
Foodfood;
do{
inta=sb.indexOf(',');
if(a==-1){
itemStr=sb;
//decode(resData,initResponse);
food=newFood();
//一个while语句对应一个Food对象,等等还要重构
while(true){
intn_last=itemStr.indexOf('=');
name=itemStr.substring(1,n_last);
System.out.println(name);
intv_first=itemStr.indexOf('=');
itemStr=itemStr.substring(v_first);
intv_last=itemStr.indexOf(';');
if(v_last==-1){
v_last=itemStr.indexOf(']');
}
value=itemStr.substring(1,v_last);
System.out.println(value);
if(name.equals("foodId")&&name!
=null){
food.foodId=Integer.parseInt(value);
}elseif(name.equals("foodPrice")&&name!
=null){
food.foodPrice=Float.parseFloat(value);
}elseif(name.equals("foodType")&&name!
=null){
food.foodType=Integer.parseInt(value);
}elseif(name.equals("foodDescri")&&name!
=null){
food.foodDescri=value;
}elseif(name.equals("foodImage")&&name!
=null){
food.foodImage=value;
}elseif(name.equals("foodName")&&name!
=null){
food.foodName=value;
}else{
Log.e("-----","errorparams");
}
itemStr=itemStr.substring(v_last);
if(itemStr.trim().startsWith("]")
||itemStr.trim().length()<=2){
break;
}
}//endofwhile
resData.add(food);
break;
}
itemStr=sb.substring(0,a);
//decode(resData,itemStr);
food=newFood();
while(true){
intn_last=itemStr.indexOf('=');
name=itemStr.substring(1,n_last);
Syste
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 客户端 食堂 系统 毕业设计