基于Android的点菜系统数据库设计Word格式.docx

上传人:b****3 文档编号:17399463 上传时间:2022-12-01 格式:DOCX 页数:23 大小:152.51KB
下载 相关 举报
基于Android的点菜系统数据库设计Word格式.docx_第1页
第1页 / 共23页
基于Android的点菜系统数据库设计Word格式.docx_第2页
第2页 / 共23页
基于Android的点菜系统数据库设计Word格式.docx_第3页
第3页 / 共23页
基于Android的点菜系统数据库设计Word格式.docx_第4页
第4页 / 共23页
基于Android的点菜系统数据库设计Word格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于Android的点菜系统数据库设计Word格式.docx

《基于Android的点菜系统数据库设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于Android的点菜系统数据库设计Word格式.docx(23页珍藏版)》请在冰豆网上搜索。

基于Android的点菜系统数据库设计Word格式.docx

(2)建立存储过程total_sum_detail,输入一桌子和房间编号,即可查出该桌顾客的消费总额13

(3)建立存储过程P2,输入一服务员的编号,即可查出服务员的相关信息14

(4)建立存储过程P3,输入一厨师编号,查询厨师的相关信息:

14

(5)建立存储过程P3,根据顾客的需求,输入一房间编号,选择不同型号的桌子14

5数据库设计脚本14

1需求分析

1.1编写目的

使用该文档的使用成员为实现基于android的酒店点菜系统的开发人员以及酒店具体组织管理人员。

小组各成员所做的工作:

邱炳发分析设计,概念设计,逻辑设计,表项设计,E-R图设计

丘润桂逻辑设计,物理设计,表项设计,E-R图设计

祁睿逻辑设计,物理设计,数据处理

梁文桂表项分析,数据处理,脚本编写

1.2背景

项目名称:

基于android的酒店点菜管理系统。

项目提出者:

系统项目组织人员。

项目开发者:

系统项目开发小组。

项目鉴定者:

暂无。

项目开始时间:

2011-07-13。

1.3目标

  目前大多数酒店由于规模的限制,忽略了点菜系统的重要性,而本系统专为具有一定规模和经济条件的大型酒店设计。

通过集成从顾客定桌、点菜、上菜到结帐等一系列功能,为每个环节明确分工,并通过可视化的软件支持,有效减小了人为差错的概率,代之以高效、便捷、准确的数字化服务系统,使酒店的管理更加规范化。

用户分为两类:

普通操作员(酒店服务员):

只须具有初级的计算机操作能力,一般高中生以上经过稍稍培训都可胜任,只是负责点菜进行时一些简单数据的插入、更新、查询。

管理人员:

这些人员应具备一定的数据库知识,不过只要了解就行,这些人员负责对数据库中重要数据及基本数据的更新,如对静态表的重新定义,普通用户的权限分配。

1.4需求分析

1.4.1系统总体需求

(l)通过对酒店点菜各个步骤、所需的各项信息等的分析,我们规定:

1对于整个系统而言,拥有两种用户:

普通操作人员和管理人员.

2一名服务员可以负责多张桌的点菜任务,一张桌只能由一名服务员负责点菜.

3一个房间仅由一名服务员作为负责人,一名负责人只能负责一个房间.

4一个厨师可以做多样菜,一个菜式有多个厨师会做。

(2)通过对酒店点菜各方面分析,酒店点菜中包含的实体有服务员、厨师、房间、桌子、菜表。

包含的数据项分别如下:

1服务员编号,服务员姓名,服务员性别,服务员年龄,雇佣时间,职位.

2房间编号,房间名,房间容纳人数,桌子数,房间型号,房间状态、房间负责人等.

3桌子编号,桌子容纳人数,桌子房间号、桌子状态.

4菜编号,菜名,价格,菜类别等.

5厨师编号,厨师姓名,厨师性别,厨师年龄,厨师雇佣时间,厨师职称,厨师状态.

(3)实体之间的联系有:

①服务员(负责人)与房间之间(1:

1).

②服务员与桌子之间(1:

M).

③厨师与菜表(N:

(4)通过以上分析,酒店点菜数据库包含的模块有:

①输入模块 主要是各种信息的输入,如服务员信息、厨师信息、房间信息、桌子信息、菜表信息等.

②输出模块 主要是各种查询结果的输出等.

编号

数据流名

输入

输出

1

变更服务员

变更信息

服务员信息

2

查询服务员

服务员编号

3

变更厨师

厨师信息

4

查询厨师

厨师编号

5

变更房间

房间信息

6

查询房间

房间编号

7

变更餐桌

餐桌信息

8

查询餐桌

桌子编号

9

变更菜单

菜单信息

10

菜单

菜号

菜名、菜价

11

查询空闲房间

房间状态限制条件

空闲房间信息

12

查询空闲餐桌

餐桌状态限制条件

空闲餐桌信息

13

结账

餐桌号、房间编号

用餐信息

14

提交点菜请求

服务员号、桌号、日期、菜号

点菜信息

15

获得点菜请求

菜号、桌号、房间号、菜名

16

提交做菜信息

菜号、桌号、房间编号

17

提交上菜信息

18

变更厨师分工信息

厨师号、菜号

厨师分工信息

19

预定餐桌

20

预定房间

21

交款

桌号、房间编号

餐桌信息、房间信息

(5)功能需求分析

1 服务员信息的管理:

查询、增、删、改

2 菜单信息的管理:

3 厨师信息的管理:

4 房间信息的管理:

5 餐桌信息的管理:

6 前台定桌:

顾客可以根据自己的需求,选择不同型号的房间或大厅

7 房间/大厅点菜:

服务员按照用户需求为其点菜并提交菜单给厨房

8 厨师和菜的分组:

厨师和菜分别分组,每组厨师和一组菜一一对应,该组每位厨师会做该组所有的菜。

9 厨师做菜管理:

厨师可以获得自己的待做菜单,并对已做的菜进行标记。

10 上菜管理:

服务员对已上菜和待上菜进行管理。

11 结帐服务:

审核菜单,协助顾客结帐。

1.4.2软硬件平台设计

(1)软件平台:

windows系列操作系统(后台管理)、基于android的操作系统(点菜)、Sql-Server2008数据库

(2)硬件平台:

基于android的手持型电子菜单

2概念设计(E-R图设计)

2.1实体服务员与桌子之间的联系

相关说明:

上述E-R图表示一名服务员负责多张桌子的点菜,一张桌子可以由多名服务员服务。

2.2实体服务员(负责人)与房间之间的联系

上述E-R图表示一个房间只能由一个房间负责人负责,一个房间负责人只能负责一个房间。

2.3厨师和菜表之间的联系

上述E-R图表示一名厨师可以做多样菜,一样菜有多名厨师会做。

2.4总E-R图

将上述分E-R全部合并,并化简的到如下的总E-R图(为简化画图工作,上述各实体中的属性未画出):

上述E-R图中服务员、桌子和房间之间的联系如上述3中的E-R图一样,厨师和菜表之间表示的联系如上述2中的E-R图一样。

服务员、桌子、房间、厨师和菜表这五者之间通过点菜联系起来。

3逻辑设计

3.1表设计

本次设计的数据库在SQLServer2008上实现,将概念结构设计中的E-R图转换成SQLSever2008支持的关系数据模型后,结合上述分析得到如下数据表:

(1)服务员表(waiter):

主码为服务员编号:

waiter_no

属性

数据类型

默认值

备注

属性说明

waiter_no

char(10)

Notnull

primarykey

waiter_name

char(20)

Null

服务员姓名

waiter_sex

char(4)

服务员性别

waiter_age

int

服务员年龄

hire_date

date

雇用日期

headship

普通或负责人

职位

(2)桌子表(tables):

主码为桌子编号:

table_no

notnull

table_volume

桌子容纳人数

table_room

Notnull

foreignkey

桌子房间号

status

忙或空闲

桌子状态

(3)房间表(room):

主码为房间编号:

room_no

room_no

Primarykey

room_name

房间名

room_volume

房间容纳人数

table_num

桌子数量

room_size

char(6)

小、中、大、豪华

房间型号

房间状态

room_manager

foreignkey(依据服务员表中的服务员编号)

负责人

(4)厨师表(cook):

主码为厨师编号:

cook_no

cook_no

cook_name

厨师姓名

cook_sex

厨师性别

cook_age

厨师年龄

雇用时间

初、中、高级等

职称

忙或闲

状态

(5)菜表(food_scheme):

主码为:

food_no

菜编号

food_name

菜名

price

float

价格

food_class

菜所属类别

(6)服务员-桌子表【服务】

(server_table):

主码是waiter_no+table_no

primary

menu_time

点菜时间

(7)菜单表(menu):

主码为服务员编号、桌子编号、房间编号、厨师编号和菜编号构成waiter_no+table_no+room_no+cook_no+food_no;

外码为服务员编号、桌子编号、房间编号、厨师编号和菜编号分别受服务员表、桌子表、房间表、厨师表和菜表中相应属性的约束。

made

Null(可以为空)

默认否

是否做完

served

是否上菜

3.2视图设计

1、空闲房间(房间号,负责人)

从房间基本表导出

createviewfree_room

as

selectroom_no,room_manager

fromroom

wherestatus='

空闲'

2、大厅空闲桌(桌号,可容纳人数)

从桌子基本表导出

createviewfree_tables

selecttable_no,table_volume

fromtables

3、所有房间、桌空闲信息(房间号,桌号,空闲状态)

从房间和桌子基本表导出

createviewfree_tables_room

selectroom_no,table_no,a.status

fromtablesa,roomb

4、结帐(房间号,桌号,菜号,菜名,单价)

从点菜表、菜表导出

createviewsum

selectroom_no,table_no,food_no,food_name,price

frommenu,food_scheme

5、服务员点菜生成视图

菜单(桌号,服务员号,点菜时间,菜的编号,菜号,菜名,价格,是否已上)

createviewmenu_view

selectwaiter_no,room_no,table_no,food_no,food_name,price,menu_time,servered

6、厨师做菜视图

做菜(房间号,桌号,菜号,菜名,是否已上)

createviewmade_food

selectroom_no,table_no,food_no,food_name,made

4物理设计

为了加速表的查询,根据所设计的表的特点,我们决定在对服务员表中的‘服务员编号waiter_no’,厨师表中的‘厨师编号cook_no’,菜息表中的‘菜编号food_no‘,房间表中的‘房间编号room_no’分别建立索引.

createuniqueindexindex_waiter_noonwaiter(waiter_no)

createuniqueindexindex_cook_noonwaiter(cook_no)

createuniqueindexindex_food_noonwaiter(food_no)

createuniqueindexindex_room_noonwaiter(room_no)

4.1触发器

(1)建立触发器room_waiter_insert(保证一名服务员最多只能负责一个房间)

createtriggerroom_waiter_insert

onroom

forinsert

ifexists(select*fromInserted)

begin

print'

对不起,一个房间只能有一名服务员负责!

'

rollbacktransaction

end

4.2存储过程

(1)建立存储过程total_sum,输入一桌子和房间编号,即可查出该桌顾客的消费总额

createproceduretotal_sum@tab_nochar(10),@r_nochar(10),@sumfloatout

as

declare@pricefloat,@numberint

set@sum=0

set@number=0

declarecurSumcursorfor

selectprice,num

fromfood_schemea,menub

wherea.food_no=b.food_noandb.table_no=@tab_noandb.room_no=@r_no

opencurSum

fetchcurSuminto@price,@number

while(@@FETCH_STATUS=0)

begin

set@sum=@sum+@price*@number

fetchcurSuminto@price,@number

end

closecurSum

deallocatecurSum

select@sumas消费总额

end

(2)建立存储过程total_sum_detail,输入一桌子和房间编号,即可查出该桌顾客的消费总额

createproceduretotal_sum_detail@tab_nochar(10),@r_nochar(10),@sumfloatout

declare@pricefloat,@foodnamechar(20),@foodnochar(10),@foodclasschar(6)

declare@numberint

select@sum=0,@number=0

createtable#sumTemp

foodNochar(10),

foodNamechar(20),

foodPricefloat,

numberint,

foodClasschar(6)

selectb.food_no,food_name,price,num,food_class

groupbyb.food_no,food_name,price,num,food_class

fetchcurSuminto@foodno,@foodname,@price,@number,@foodclass

insert#sumTempvalues(@foodno,@foodname,@price,@number,@foodclass)

fetchcurSuminto@foodno,@foodname,@price,@number,@foodclass

select*from#sumTemp

end

(3)建立存储过程P2,输入一服务员的编号,即可查出服务员的相关信息

createprocedurecha_xuan_wait(@sNochar(10))

select*

fromwaiter

wherewaiter_no=@sNo

(4)建立存储过程P3,输入一厨师编号,查询厨师的相关信息:

createprocedurecha_xuan_cook(@sNochar(10))

fromcook

wherecook_no=@sNo

(5)建立存储过程P3,根据顾客的需求,输入一房间编号,选择不同型号的桌子

Createprocedurefree_tabl_room(@room_namechar(20))

As

Selecttables_no

Fromtablesa,roomb

Wherea.tables_room=b.room_noandroom_name=@room_nameanda.status='

andb.status='

5数据库设计脚本

--------------------数据库初始化工作-----------------------

setnocounton

setdateformatmdy

go

usemaster

ifexists(select*fromsysdatabaseswherename='

orderSystem'

dropdatabaseorderSystem

--------------------数据库的建立-----------------------------

createdatabaseorderSystem

ONprimary

(NAME='

orderSystem_data'

FILENAME='

d:

\VisualStudio2008\orderSystem_data.MDF'

SIZE=3,

FILEGROWTH=1,

MAXSIZE=10)

LOGON

orderSystem_Log'

\VisualStudio2008\orderSystem_Log.LDF'

SIZE=1,

FILEGROWTH=1,

MAXSIZE=5)

GO

------------------表的建立---------------------------------

useorderSystem

ifexists(select*fromsysobjectswherename='

waiter'

droptabledbo.waiter

print'

droptablewaiter'

createwaiter'

createtablewaiter(

waiter_nochar(10)Notnull/*服务员编号*/

constraintw_nochkc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1