1课题名称目标 1
2需求分析 1
21 数需求 1
22事务需求 2
23数流 3
24数字典 5
3数库结构设计 8
31概念设计 8
311分ER图建立 8
312整体ER图 9
32逻辑设计 10
321 ER图关系模型转换 10
322优化处理 11
323 户子模式建立 12
4数库物理设计 12
41存储程 13
42 触发器 13
5数库实施 13
51SQL中数库实施 13
511数库数库象建立 13
512数入库 15
52 数库测试 15
521建立数库数库象进行测试 15
6 总结 29
7 附录 30
1课题名称目标
次实训设计数库课题名称餐厅理系统
餐厅理系统功包括顾客点菜结账员工资料进行理餐桌信息进行统设置消费情况进行查询等功基功:
(1)菜谱信息理:菜谱进行增查改删操作查询前餐厅推出菜品增加菜品修改菜品价格删菜品
(2)餐桌信息理:查询前餐厅中餐桌座位数情况客位实现餐桌进行申请
(3)顾客信息理:查询顾客相关信息性年龄联系方式等新顾客时添加新顾客信息
(4)顾客订单功:实现订单具唯订单号结账根顾客数选择相应餐桌号够指定服务员
(6)顾客点菜:实现顾客点菜功顾客订单进行修改删点菜品修改数量时查询某位顾客订单
(7)顾客结账:根订单号进行结账(防止相姓名顾客致结错帐)够根消费金额进行应折扣消费信息存档消费记录中
2需求分析
通解餐饮行业特点实际情况分析饭店基情况入手结合实现功系统行性进行分析提高行性做数分析
21 数需求
餐桌数包括餐桌号座位数状态(空)
餐厅存储顾客信息员工信息
菜品信息菜品编号名称类价格等
v 具体数需求:
◎订单阶段需数
l 顾客信息:包括顾客编号
l 订单信息:包括订单编号消费时间
l 餐桌信息:包括编号容数状态等
l 员工信息:包括员工工号
◎点菜阶段需数
l 订单信息:订单编号
l 菜品信息:包括菜品编号菜品名称菜品数量等
◎结账阶段需数:
l 订单信息:包括订单编号顾客编号
l 菜品信息:包括菜品编号菜品名称菜品数量等
l 员工信息:包括员工工号
l 折扣信息:包括消费金额折扣数
◎员工理需数:
l 员工档案:包括工号姓名性工资
◎顾客理需数:
l 顾客档案:包括编号姓名性等
◎消费记录理需数:
l 消费信息:订单编号消费金额折扣金额结账时间
22事务需求
v 数录入
l 录入顾客信息
l 录入餐桌信息
l 录入员工信息
l 录入菜品信息
v 数更新删
l 更新删餐桌信息
l 更新删菜谱菜品信息
l 更新删员工信息
l 更新删顾客信息
l 更新删订单菜品信息
v 数查询
l 查询餐桌信息
l 查询售菜品信息
l 查询订单信息
l 查询顾客点菜信息
l 查询员工信息
l 查询顾客消费信息
23数流
(1)顶层数流
P1
订单处理
E2
服务员
E1
顾客
负责
F1
变更信息
(2) 第层数流
P22
点菜处理
F21
折扣
菜谱
P21
直接单
E21
顾客
E23
服务员
P23
结账
E22
订单
位 生成 账单
(3)第二层数流
点菜业务
申请变更
P312
点菜处理
反馈变更
查菜谱
P315
判断变更方式
P314
变更处理
加菜减菜
P311
直接单
F312
存储账单
E312
订单
E311
顾客
位 生成 账单
P313
台处理
F311
存储订单
点菜业务
24数字典
1) 数项
Foodtable(餐桌)数项
属性
存储代码
类型
长度
餐桌号
Foodtableno
varchar
10
座位数
seatingno
int
状态
Foodtablestate
varchar
10
Menus(菜谱)数项
属性
存储代码
类型
长度
编号
Dishno
varchar
10
名称
Dishname
varchar
10
类
Dishclass
varchar
10
价格
Dishprice
float
Worker(员工)数项
属性
存储代码
类型
长度
工号
Workerno
varchar
10
姓名
Workername
varchar
10
性
Workersex
varchar
4
年龄
Workerage
int
工资
Workersalary
int
Customer(顾客)数项
属性
存储代码
类型
长度
编号
Customerno
varchar
10
姓名
Customername
varchar
10
性
Customersex
varchar
4
联系方式
Customerphoneno
varchar
20
Oder(订单)数项
属性
存储代码
类型
长度
订单编号
Oderno
varchar
10
顾客编号
Customerno
varchar
10
消费时间
consumetime
datetime
餐桌编号
Foodtableno
varchar
10
服务员编号
Workerno
varchar
10
Menus_Oder(点菜)数项
属性
存储代码
类型
长度
订单编号
Oderno
varchar
10
菜品编号
Dishno
varchar
10
菜品名称
Disnname
varchar
10
菜品数量
Dish_amount
int
Discount_rules(折扣规)数项
属性
存储代码
类型
长度
消费金额
Consumption
float
折扣
Discount
float
Sales_bill(消费账单)数项
属性
存储代码
类型
长度
订单编号
Oderno
varchar
10
消费金额
Consumption
float
折扣金额
after_discount
float
账单时间
Billtime
int
2) 数结构
编号
数结构名
属性
1
餐桌信息
餐桌号座位数状态
2
菜谱
编号名称类价格
3
员工信息
工号姓名性年龄工资
4
顾客信息
编号姓名性联系方式
5
订单信息
订单编号顾客编号消费时间餐桌编号服务员编号
6
点菜
订单编号菜品编号菜品名称菜品数量
7
折扣规
消费金额折扣
8
消费账单
订单编号消费金额折扣金额账单时间
3) 数流
编号 数流名 输入 输出
1 菜品信息 修改菜品 菜谱
2 空闲餐桌 选择餐桌 订单
3 点菜信息 加菜退菜 点菜
4 记入账单 订单 结账
5 结账 折扣方式 结账
4) 数存储
编号 数存储名 输入 输出
1 顾客信息更新 顾客新信息 顾客信息
2 菜谱更新 新增菜品 菜谱
3 订单储存 订单 订单信息
4 餐桌更新 新增餐桌 餐桌
5 账单存储 消费信息 账单记录
5) 处理程
编号 处理程名 输入数流 输出数流
1 顾客点菜 菜谱 订单
2 结账 订单 账单记录
3数库结构设计
31概念设计
311分ER图建立
(1) 订单形成程1
n
1
1
1
n
n
n
1
n
负责
包含
菜品
选择
菜谱
顾客
查
生成
订单
服务员
(2)结账形成程
消费金额
包含
支付
顾客
订单
应
折扣规
应
312整体ER图
1
1
1
应
1
1
1
1
1
1
1
应
1
1
1
1
1
1
1
n
n
n
n
n
工资
应
员工
折扣
销售记录
账单
支付
保存
位置
餐桌
负责
订单
单
包含
菜品
选择
查
顾客
菜谱
32逻辑设计
321 ER图关系模型转换
A 转换规
实体型转换成关系模型实体属性关系属性实体码关系码
实体型间联系常情况:
a 11联系转换独立关系模式意端应关系模式合
b 1:n联系转换成独立关系模式n端应关系模式合
c mn联系转换成关系模式
d 33实体间联系转换成关系模式
e 具相码关系模式合
B根规关系模型(划线属性码)
菜谱(菜品编号菜品名称菜品类菜品价格)
顾客(顾客编号姓名性年龄联系方式)
餐桌(餐桌号座位数状态)
员工(工号姓名性年龄工资)
订单(订单编号顾客编号消费时间餐桌编号服务员编号)
菜谱_订单(订单编号菜品编号菜品名称菜品数量)
消费记录(订单号消费金额折扣金额账单时间)
折扣规(消费金额折扣)
322优化处理
1) 确定数赖
2) 关系模式间数赖进行极化分析减冗余
3) 数赖理关系模式进行分析否存部分函数赖函数传递值赖等确保关系模式满足第三范式
4) 需求分析阶段处理求分析样应环境模式否合适确定否某模式进行合分解
5) 关系模式进行必分解分析样应环境模式否合适确定否某模式进行合分解
323 户子模式建立
名称
描述
插入新顾客信息
新顾客插入顾客信息姓名性等
单位
顾客餐订单分配餐桌
点菜
存储顾客点菜品
删菜品
删顾客点某菜品
修改菜品数量
修改顾客点某菜品数量
查询顾客点菜信息
查询顾客点菜品
消费总额
计算顾客次消费总额顾客支付完账单时消费信息存档消费记录中
结账更改餐桌状态
顾客结账餐桌状态改空
删菜谱中菜品
删菜谱中存某菜品
修改菜品价格
修改菜谱中某菜品价格
菜谱添加菜品
菜谱添加新菜品
trig_discount
触发器顾客进行结账时消费金额区间会折扣
trig_Sales_bill
触发器消费金额达定额数时会送相应优惠券
trig_Menus
触发器菜谱添加新菜品该菜品名称含红字会发出生意必定红红火火祝福语
4数库物理设计
数库物理设备存储结构存取方法数库物理结构赖选定数库理系统定逻辑数模型选取合适应环境物理结构程数库物理设计阶段务时确定数库物理结构断进行优化处理建立索引触发器存储程
41存储程
存储程实现数库操作增删改功执行时需调御函数样参数参定义存储程提供程封装效果执行需调更程度简化数处理程
餐饮理具体存储程名称作详见323具体代码详见第521部分
42 触发器
餐饮理具体触发器名称作详见323具体代码详见第521部分
5数库实施
51SQL中数库实施
511数库数库象建立
create database Restaurant_Management
建表
create table Menus
菜谱
(Dishno varchar(10) primary key
Dishname varchar(10)
Dishclass varchar(10)
Dishprice float
)
create table Customer
顾客
(Customerno varchar(10) primary key
Customername varchar(10) not null
Customersex varchar(4) check (Customersex'男'or Customersex'女') not null
Customerphoneno varchar(20) unique not null
)
create table Foodtable
餐桌
(Foodtableno varchar(10) primary key
seatingno int not null
Foodtablestate varchar(6)check(Foodtablestate'空' or Foodtablestate'')
)
drop table Oder
create table Oder
订单
(Oderno varchar(10) primary key
Customerno varchar(10) not null
consumetime datetime not null
Foodtableno varchar(10) not null
Workerno varchar(10) not null
foreign key(Customerno) references Customer(Customerno)
foreign key(Foodtableno)references Foodtable(Foodtableno)
foreign key(Workerno) references Worker(Workerno)
)
create table Worker
员工
(Workerno varchar(10) primary key
Workername varchar(10)
Workersex varchar(4) check(Workersex'男' or Workersex'女')
Workerage int
Workersalary int
)
drop table Menus_Oder
create table Menus_Oder
点菜
(Oderno varchar(10)
Dishno varchar(10)
Disnname varchar(10)
Dish_amount int not null
Primary key(DishnoOderno)
foreign key(Dishno) references Menus(Dishno)
foreign key(Oderno) references Oder(Oderno)
)
drop table Sales_bill
create table Sales_bill
销售账单
(
Oderno varchar(10) primary key
Consumption float
after_discount float
Billtime datetime
foreign key(Oderno) references Oder(Oderno)
)
drop table Discount_rules
create table Discount_rules
折扣规
(Consumption float primary key
Discount float
)
512数入库
系统采数逐条录入方法
52 数库测试
521建立数库数库象进行测试
(1)存储程
插入新顾客信息
drop procedure 插入新顾客信息
create procedure 插入新顾客信息
(@Customerno varchar(10)
@Customername varchar(10)
@Customersex varchar(4)
@Customerphoneno varchar(20)
)
as
insert
into Customer
values(@Customerno@Customername@Customersex@Customerphoneno)
select * from Customer
验证
execute 插入新顾客信息'112699''李阳''男'''
单位
drop procedure 单位
create procedure 单位
(@Oderno varchar(10)
@Customerno varchar(10)
@consumetime datetime
@Foodtableno varchar(10)
@Wokerno varchar(10)
)
as
begin transaction 开始事务
insert
into Oder
values(@Oderno@Customerno@consumetime@Foodtableno@Wokerno )
if ((select Foodtablestate from Foodtable where Foodtableno@Foodtableno)<>'空')
begin
print '该餐桌请重选餐桌'
Rollback tran
return
end
else
begin
update Foodtable
set Foodtablestate ''
where Foodtableno@Foodtableno
print '单成功请位开始点菜'
end
commit tran
验证
execute 单位'O_001''112699''20131226''TB_005''W_002'
execute 单位'O_002''112698''20131226''TB_004''W_003'
餐桌时显示
成功单时显示
查单情况
select * from Oder
select * from Foodtable
菜谱查询
select * from Menus
删菜谱中菜品
create procedure 删菜谱中菜品
@Dishno varchar(10)
as
delete
from Menus
Where Dishno@Dishno
select * from Menus
验证
execute 删菜谱中菜品 'D_112'
修改菜品价格
create procedure 修改菜品价格
(
@Dishno varchar(10)
@Dishprice float
)
as
update Menus
set Dishprice@Dishprice
Where Dishno@Dishno
select * from Menus
验证
execute 修改菜品价格 'D_113''30'
菜谱增加菜品
create procedure 菜谱增加菜品
(@Dishno varchar(10)
@Dishname varchar(10)
@Dishclass varchar(10)
@Dishprice float
)
as
insert into Menus
values(@Dishno@Dishname@Dishclass@Dishprice)
select * from Menus
验证
execute 菜谱增加菜品'D_112''时蔬''炒类''20'
点菜增加查询删修改
点菜
create procedure 点菜
(@Oderno varchar(10)
@Dishno varchar(10)
@Disnname varchar(10)
@Dish_amount int
)
as
insert into Menus_Oder
values(@Oderno@Dishno@Disnname@Dish_amount)
select * from Menus_Oder where Oderno@Oderno
验证
execute 点菜'O_001''D_111''炒河虾''2'
execute 点菜'O_001''D_114''鸡蛋炒芹菜''1'
execute 点菜'O_001''D_115''三鲜汤''3'
查询客户点菜信息
create procedure 查询顾客点菜信息
@Customerno varchar(10)
as
select Customerno@CustomernoMenusDishnoDishnameDish_amount
from MenusMenus_OderOder
where OderCustomerno@Customerno and MenusDishnoMenus_OderDishno and OderOdernoMenus_OderOderno
验证
execute 查询顾客点菜信息 '112699'
删菜品
create procedure 删菜品
(@Oderno varchar(10)
@Dishno varchar(10)
)
as
delete
from Menus_Oder
Where Oderno@Oderno and Dishno@Dishno
select * from Menus_Oder where Oderno@Oderno
验证
execute 删菜品 'O_001''D_111'
修改菜品数量
create procedure 修改菜品数量
(@Oderno varchar(10)
@Dishno varchar(10)
@Dish_amount int
)
as
update Menus_Oder
set Dish_amount@Dish_amount
Where Oderno@Oderno and Dishno@Dishno
select * from Menus_Oder where Oderno@Oderno
验证
execute 修改菜品数量 'O_001''D_111''3'
计算总消费额
DROP procedure 消费总额
create procedure 消费总额
(@Oderno varchar(10)
@Consumption float output
@discount float output
)
as
select @ConsumptionSUM(Dishprice*Dish_amount)
from Menus_OderMenusOder
where MenusDishnoMenus_OderDishno and OderOdernoMenus_OderOderno and OderOderno@Oderno
begin tran 启事务
if exists
(select Consumption from Discount_rules where Consumption@Consumption)
判断Discount_rules中否应折扣
begin
select @discountDiscount from Discount_rules where Consumption@Consumption
end
ELSE
begin
INSERT into Discount_rules(Consumption) VALUES(@Consumption)
@Consumption插入Discount_rules
select @discountDiscount from Discount_rules where Consumption@Consumption
获取应折扣
end
if exists(select Oderno from Sales_bill where Oderno@Oderno)判断消费账单否已该消费记录
begin
print '消费记录已插入消费账单重复插入'
end
else
begin
insert
into Sales_bill(OdernoConsumptionafter_discountBilltime)
values(@Oderno@Consumption@Consumption*@discountGETDATE())
print '成功消费记录插入消费账单'
end
commit tran 提交事务
验证
declare @Consumption float@discount float@Oderno varchar(10)'O_001'
execute 消费总额 'O_001'@Consumption output@discount output
select OdernoCustomername@Consumption 总消费@discount 折扣
from OderCustomer
where CustomerCustomernoOderCustomerno and Oderno@Oderno
消费信息插入消费记录中
已结账提示
结账餐桌状态
create procedure 结账更改信息
@Oderno varchar(10)
as
update Foodtable 修改餐桌状态
set Foodtablestate'空'
where Foodtableno(select Foodtableno from Oder where Oderno@Oderno)
验证
execute 结账更改信息 'O_001'
菜谱操作
查询菜谱
select * from Menus
删菜谱中菜品
create procedure 删菜谱中菜品
@Dishno varchar(10)
as
delete
from Menus
Where Dishno@Dishno
select * from Menus
验证
execute 删菜谱中菜品 'D_112'
执行前:
执行:
修改菜品价格
create procedure 修改菜品价格
(
@Dishno varchar(10)
@Dishprice float
)
as
update Menus
set Dishprice@Dishprice
Where Dishno@Dishno
select * from Menus
验证
execute 修改菜品价格 'D_113''40'
执行:
菜谱增加菜品
create procedure 菜谱增加菜品
(@Dishno varchar(10)
@Dishname varchar(10)
@Dishclass varchar(10)
@Dishprice float
)
as
insert into Menus
values(@Dishno@Dishname@Dishclass@Dishprice)
select * from Menus
验证
execute 菜谱增加菜品'D_112''时蔬''炒类''20'
执行:
(2)触发器
折扣
DROP trigger trig_discount
create trigger trig_discount on Discount_rules
for insert
as
begin
declare @expand float
select @expandConsumption From inserted
if(@expand<50)
begin
update Discount_rules
set Discount1 where Consumption@expand
end
else if(@expand>50and @expand<100)
begin
update Discount_rules
set discount095 where Consumption@expand
end
else if(@expand>100and @expand<150)
begin
update Discount_rules
set discount090 where Consumption@expand
end
else if(@expand>150and @expand<200)
begin
update Discount_rules
set discount085 where Consumption@expand
end
else
begin
update Discount_rules
set discount080 where Consumption@expand
end
end
验证
insert into Discount_rules(Consumption)
values('250')
select Discount from Discount_rules WHERE Consumption'250'
送优惠券
drop trigger trig_Sales_bill
create trigger trig_Sales_bill on Sales_bill
for insert
as
begin
declare @expand float
select @expandConsumption From inserted
if(@expand>150and @expand<200)
begin
print '送您5元优惠券'
end
else if(@expand>200)
begin
print '送您10元优惠券'
end
end
祝福语
drop trigger trig_Menus
create trigger trig_Menus on Menus
for insert
as
begin
declare @dishname varchar(10)
select @dishnamedishname From inserted
if (@dishname like '红')
begin
print '生意必定红红火火'
end
end
6 总结
次课程设计中遇严重问题时间太短太少星期考试课时间构思整理思路画ER图时间真正动手开始做课程设计时间剩晚熬夜拼命完成点遗憾构思时想系统更完善具备更功时间问题终放弃甚身清楚现完成系统存缺陷法完全满足实际生活需次实训中遇问题关知识方面老师悉心指导学帮助终解决
课程设计中学东西感受颇第次课程设计巩固前学知识学知识进行串联第二初略学设计数库步骤:需求分析概念结构设计逻辑结构设计物理结构设计运行实现运行维护第三学会熟练存储程触发器前没做关存储程实验触发器方面实验少机会已掌握
学期数库次实训落幕感觉挺舍然没相关课程觉数库学会止步接想法学知识强化达运想学会C++JAVA数库连接
7 附录
附录1 数库表截图
(1)Customer表
(2)Discount_rules表
(3)Foodtable表
(4)Menus表
(5)Menus_Oder表
(6)Oder表
(7)Sales_bill表
(8)Worker表
附录2 视图截图
(1)点菜视图
(2) 结账视图
(3)整体视图
附录3 存储程
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档