一. 为什么要做这个项目?
记的有一次看新闻,其中报道过台湾一家酒店使用ipad让客人自己点餐,客人可以使用这个ipad从全部菜中挑选自己喜欢的,又可以选择自己的特色的。还可以直接结帐。我就想了一下,为什么不在android 系统上做一个人呢,因为以后这个系统的普及度一定很高的。于是我就上网查了一下相关的项目。发现有好多人已经开始做了,我自己并没有调研,就附上别人调研的情况吧。(最近看不少人都在考虑无线点餐系统,我也做了一个,目前正在朋友的酒店测试和完善。我的目的是通过android软硬件结合,做行业应用,彻底改变目前落后的点菜方式,淘汰手工菜谱。本系统采用WIFI网络,设计的目标是不需要服务员干预,由客户自助点餐,有点像KTV点歌那种,让后通过网络将点菜信息分发至后厨无线打印机、前台收银服务器。为了知道客户真正需要什么,目前已经和十几家酒店客户进行沟通,通过对这个行业的深度分析及调研,设计出最优秀的产品。记得马云说过,只有实实在在能给社会提供价值东西,才会得到市场的认可,我希望能有对此项目感兴趣的朋友,能一起来做起来成立网络团队。
我从网上又看到成本的问题,网上是做如下解释:现在一个普通菜谱的成本为每本400-1000元,每年得更换2-4次,每年一个房间的菜谱成本就是800-4000元,而一个android平板的成本为1000~2000元,因此成本要低很多的。我发现网上的一些项目只是单纯的完成点菜功能而已,或只是PDA移动点餐。所以我想在平板上实现真真的给予客人点菜的自由权并且在点菜功能实现的前提下,可以加入一些娱乐功能,简单的比如看电影呀。
与传统点菜比较:
项目 | 传统菜谱 | 电子菜谱 |
外观 | 个性化制作封面 | 个性化制作封面 |
更换菜品 | 每次制作新菜谱时才能更换 | 随时更换 |
菜品清洁 | 贴条或服务器提醒 | 随时设置不可见可不可点 |
菜品信息 | 菜品、价格及简单介绍 | 菜名、价格、做法介绍,可以嵌入大量图文甚至视频 |
附加信息 | 无 | 健康提示、卡路里含量、配餐等 |
推荐菜品 | 制作菜谱时设定 | 随时设定 |
广告植入 | 基本上没有 | 可对自已或合作伙伴的产品进行演示推广 |
自助点菜 | 不能 | 客人点餐可以形成菜单确认后提交服务员 |
外观保持 | 使用久了会出现磨损、脱页等 | 更换封面,贴膜后保持常新 |
风格 | 不更换不可以变换 | 根据酒店风格定制界面,春节、中秋、圣诞、情人节等可以更换不同皮肤,增强节日气氛。也可以根据婚宴、寿宴等不同需求个性化定制,彰显时尚品味 |
制作成本 | 500-200元/本,2本/年,需要不间段地印刷,累计成本高 | 首次投资成本略高,累计成本低 |
二. 系统的模块划分
1) 顾客终端:该终端为顾客提供菜品搜索功能,顾客可以按菜品名或厨师名进行搜索,同时顾客可以看到菜品图片。顾客在点完菜品,点击“提交”按钮后,终端将把点菜消息发送到系统管理终端,系统管理终端登记点菜信息后向厨师终端转发点菜消息,表示做菜任务到达。将顾客的需求发送给系统管理端(平台是android系统的平板或手机)
2)系统管理终端:该终端负责进行对菜品、厨师的管理,并且包含账户控制、收银、销售统计等操作。在收银时负责打印票据,向顾客终端发送清理原信息的消息。该终端同时负责监测顾客终端和厨师终端的在线情况,并负责所有的通信消息处理。接受顾客终端和厨师中断的需求。(一台xp电脑)
3)厨师终端:该终端按“先来先服务”的原则为厨师分配做菜任务,并将菜品完成消息发送到系统管理端,可以由系统管理端进行处理也可以分离出单独一个模块。(一台或几台xp电脑)
4)数据终端:该终端负责数据的存储。将菜的信息,顾客的信息,餐桌使用情况的信息保存起来。(一台装了sql 2005的服务器,可以和系统管理中端共享一台电脑)
三. 系统的网络结构
四个终端都通过路邮器相连起来,顾客终端用wifi与路由器相连。
由于无线局域网传输距离的限制, 因此若脱离其无线服务覆盖范围时通信便会中断, 为解决此一问题须构建无缝的漫游连接. 以802.11b为例以三个不重叠信道1,6,11为基础向外扩充, 如此当无线网卡由信道11之覆盖区漫游至信道6之覆盖区时, 便能自动切换至信道6之服务区而不中断联机.同理可再由信道6之覆盖区漫游至信道1之覆盖区.这个如何实现现在还没有一个实现方法。
四. 系统的工作流程
客人进入店中,服务员手持Pad查询空闲座位,带领客人进入座位,输入座位号,顾客人数进入系统,然后将Pad交给客人进行点餐。点餐完毕后提交发送到系统管理端,再发送给后厨进行打印制作。顾客就餐完毕,只接在Pad上面确认结账,收取客人款项后,结束服务。点餐到最后结帐都不在需要服务员。顾客也可以选择不在Pad上结帐,可以到前台也就是系统管理端结帐。
点菜流程:
五. 数据表
本系统总共有9张表,即菜品表、菜销售表、点菜表、做菜表、管理员表、会员表,餐桌使用情况表,日志表和统计表,具体的表结构如表1--表7:
表 1 菜品表
Dishes(菜品表)设计 | |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 |
dishid | char | 是 | 8 | DISH0001-DISH9999 | DISH0001 | 否 | 菜品编号 |
dishname | nchar | 否 | 50 |
|
| 是 | 菜品名称 |
dishprice | float | 否 |
| 大于等于0.0 | 0.0 | 是 | 菜品单价 |
dishdiscount | float | 否 |
| 大于0小于等于1 | 1 | 是 | 菜品折扣 |
dishpay | float | 否 |
| 大于等于0小于等于菜品单价 | 菜品单价*菜品折扣 | 是 | 菜品折扣后的单价 |
freq | int | 否 |
| 大于等于0 | 0 | 是 | 累计评分次数,用于动态统计平均分 |
scores | int | 否 |
| 大于等于0 | 0 | 是 | 累计评价总分,用于动态统计平均分 |
average | int | 否 |
| 大于等于0 | 0 | 是 | 平均分,等于总分/评次,每次评分后将重新计算 |
dishphoto | image | 否 |
|
|
| 是 | 菜品图片 |
dishvariety | int | 否 |
|
| 0 | 是 | 菜品口味 (一位代表一种口味) |
表2 菜销售表
DishSales(菜销售表)设计 |
| |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 | |
dishedtoken | int | 是 |
|
| Auto-increase | 否 | 对属于一张桌子的菜单的标识 | |
dishedtime | char | 否 | 19 |
|
| 否 | 点菜时间,用于后厨按先来先服务原则分配做菜任务 | |
deskid | int | 是 |
| 1-50 |
| 否 | 桌号,记录发出点菜要求的顾客所在桌子 | |
dishid | char | 是 | 8 | DISH0001-DISH9999 |
| 否 | 菜品编号,记录顾客所点菜品信息 | |
amount | int | 否 |
| 大于等于0 | 0 | 是 | 菜品份数,顾客对同一菜品所要求的量 | |
dishpay | float | 否 |
| 大于等于0 |
| 是 | 付款 | |
表3 点菜表(每个桌号对应一张表)
DishedTable(点菜表)设计 |
| |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 | |
dishedtime | char | 否 | 19 |
|
| 否 | 点菜时间,用于后厨按先来先服务原则分配做菜任务 | |
deskid | int | 是 |
| 1-50 |
| 否 | 桌号,记录发出点菜要求的顾客所在桌子 | |
dishid | char | 是 | 8 | DISH0001-DISH9999 |
| 否 | 菜品编号,记录顾客所点菜品信息 | |
amount | int | 否 |
| 大于等于0 | 0 | 是 | 菜品份数,顾客对同一菜品所要求的量 | |
dishvariety | int | 否 |
| 大于等于0 |
| 是 | 口味 | |
customers | int | 否 |
|
|
| 是 | 顾客人数 | |
memberid | char | 否 | 10 | 0000000000-9999999999 |
| 是 | 会员ID | |
dishpay | float | 否 |
| 大于等于0 |
| 是 | 付款 | |
cooked | bool | 否 |
|
|
| 否 | 是否已经做完 | |
表 4 做菜表(从点餐表中获取)
CookingTable(做菜表)设计 | |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 |
dishid | char | 是 | 8 | DISH0001-DISH9999 | DISH0001 | 否 | 菜品编号 |
amount | int | 否 |
| 大于等于0 | 0 | 是 | 菜品份数,顾客对同一菜品所要求的量 |
dishvariety | int | 否 |
| 大于等于0 |
| 是 | 口味 |
表 5 餐座使用情况表
DeskUse(做菜表)设计 | |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 |
deskid | char | 是 | 8 | DISH0001- DISH9999 | COOK0001 | 否 | 桌号 |
use | bool | 是 |
|
|
| 否 | 是否在使用 |
表 6 管理员表
Admin(管理员表)设计 | |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 |
username | nchar | 是 | 50 |
|
| 否 | 系统管理员账户名称,作为该表的主键 |
passwd | char | 否 | 6 |
| 000000 | 是 | 账户密码,默认为“000000” |
permission | int | 否 |
| 0或1 | 0 | 是 | 管理员权限,0代表超级管理员,1代表普通管理员 |
表 7 会员表
member(会员表)设计 | |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 |
memberid | char | 是 | 10 |
|
| 否 | 会员ID |
passwd | char | 否 | 6 |
| 000000 | 是 | 账户密码,默认为“000000” |
membername | char | 否 | 10 |
| 0 | 是 | 会员姓名 |
customcounts | int |
|
| 大于等于0 | 0 | 是 | 消费次数 |
custompay | float |
|
| 大于等于0 | 0 | 是 | 共消费金额 |
表 8 销售统计表
SalesStatistics(销售统计表)设计 | |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 |
date | char | 是 | 10 |
|
| 否 | 日期 |
sales | float | 否 |
| 大于等于0.0 | 0.0 | 是 | 销售额,结账后将销售额进行累加 |
表 9 日志记录表
Logs(日志记录表)设计 | |||||||
字段名称 | 数据类型 | 主键 | 数据长度 | 数据范围 | 默认值 | 允许空 | 字段说明 |
logid | int | 是 |
|
|
| Auto-increase | 日志标示,不断增加 |
identity | int | 是 | 10 |
|
| 否 | 产生日志动作的身份 0:管理员 1:顾客 |
name | nchar | 否 | 50 |
|
| 是 | 管理员:帐户名 顾客: 桌号 |
六. 总结
这个只是一个草稿,还有需多要考虑的方面还没有设计,比如客户端和服务端通信格式的定义,现在离完成这个project还有很长的路要走,希望自己能坚持下去,完成属于自己的project,现在就构思这么多了,等以后在添加修改。