一、系统分析
1.1 项目背景
1.1.1 项目分析
随着科技的快速发展,消费者希望得到更快捷、便利的就餐体验。他们越来越倾向于使用电子设备进行点餐和支付,且对个性化服务的需求日益增长。点餐管理系统旨在通过技术手段,提升餐饮服务的效率和质量,满足现代消费者的需求。与此同时,餐饮企业面临着运营效率、成本控制、顾客满意度提升等挑战。点餐管理系统通过使用先进的信息技术,帮助餐饮企业优化服务流程,提高管理效率,降低运营成本,并实现数据驱动的决策支持。此外,随着环保意识的提升,无纸化点餐也成为餐饮业的一个发展趋势。点餐管理系统将支持电子菜单和在线点餐,减少纸张的使用,符合可持续发展的理念。
1.1.2项目可行性
技术可行性
(1)数据库技术:采用成熟的数据库管理系统(MySQL),确保数据的稳定性、安全性和可扩展性。
(2)软件开发技术:利用成熟的软件开发框架(PyQT5)和编程语言(Python),实现系统的快速开发和稳定运行。
(3)网络安全技术:采用防火墙、数据加密等技术手段,保障系统数据的安全传输和存储。
经济可行性
(1)成本效益分析:通过系统自动化处理订单、库存管理等功能,降低人力成本;提高顾客满意度,增加回头客数量,提升营业收入。
(2)投资回收期:根据餐饮企业规模和运营情况,预计系统在较短时间内能够实现投资回收。
(3)风险评估:对系统开发、实施和运营过程中可能出现的风险进行评估,并制定相应的应对措施。
社会可行性
(1)符合法律法规:系统开发和使用需遵守国家相关法律法规,确保系统合规性。
(2)用户需求满足:通过市场调研和用户需求分析,确保系统能够满足餐饮企业和顾客的实际需求。
(3)社会效益:提高餐饮企业的服务质量和运营效率,促进餐饮业的健康发展;优化顾客就餐体验,提升社会福祉。
1.2 需求分析
点餐管理系统围绕提升顾客体验和优化餐饮企业运营两大核心目标展开。对顾客而言,系统提供用户友好的界面,支持顾客轻松浏览菜单、点餐、支付,并实时查看订单状态。对餐饮企业而言,点餐管理系统着眼于数据的收集与分析,将帮助餐厅收集顾客的点餐数据、偏好和反馈,为餐厅提供宝贵的数据支持,帮助他们做出更加精准的市场定位和营销策略。
1.2.1 总体概述:
- 顾客需求:登录界面、查阅菜品、选购菜品、查阅订单、服务评价
- 商家需求:员工信息 、订单结账、菜单信息、餐桌信息
1.2.2 点餐阶段数据详解:
①下订单阶段需要的数据:
- 顾客信息:包括顾客编号。
- 订单信息:包括订单编号、消费时间。
- 餐桌信息:包括编号、员工id
②点菜阶段需要的数据:
- 订单信息:订单编号
- 菜品信息:包括菜品编号、菜品名称、菜品数量等。
③结账阶段需要的数据:
- 订单信息:包括订单编号、顾客编号
- 菜品信息:包括菜品编号、菜品名称、菜品数量等。
- 员工信息:包括员工工号
- 折扣信息:包括消费金额、折扣数
④员工管理需要的数据::
- 员工档案:包括工号、姓名、性别、职位
⑤顾客管理需要的数据:
- 顾客档案:包括编号、姓名、性别等。
⑥消费记录管理需要的数据有:
- 消费信息:订单编号、消费金额、折扣后金额、结账时间
1.2.3数据操作:
①数据录入
录入顾客信息、录入餐桌信息、录入员工信息、录入菜品信息 。
②数据更新/删除
更新/删除餐桌信息、更新/删除菜谱菜品信息、更新/删除员工信息、更新/删除顾客信息、更新/删除订单菜品信息
③数据查询
查询在售菜品信息、查询订单信息、查询顾客点菜信息 、查询员工信息、查询顾客消费信息
点餐管理系统顶层数据流图:
第0层数据流图:
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
用户ID | Uid | varchar(30) | NOT NULL | 主码 |
用户名 | Uname | varchar(30) | ||
密码 | Upassword | varchar(30) | NOT NULL | |
联系电话 | Uphone | varchar(30) | ||
注册日期 | Rdate | varchar(30) |
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
菜品编号 | Fid | varchar(30) | NOT NULL | 主码 |
菜品名 | Fname | varchar(30) | NOT NULL | |
价格 | Fprice | decimal(10,2) | NOT NULL |
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
订单ID | Oid | varchar(30) | NOT NULL | 主码 |
下单时间 | setTime | varchar(30) | ||
订单状态 | Ostate | varchar(30) | ||
桌号 | Tid | varchar(10) | NOT NULL | 外码 |
用户ID | Uid | varchar(30) | NOT NULL | 外码 |
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
桌号 | Tid | varchar(10) | NOT NULL | 主码 |
员工ID | Sid | varchar(30) | 外码 |
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
员工id | Sid | varchar(30) | NOT NULL | 主码 |
员工姓名 | Sname | varchar(30) | ||
职位 | Sposition | varchar(30) | ||
性别 | Ssex | varchar(8) | NOT NULL | |
年龄 | Sage | int | NOT NULL |
6.评价表(assess)
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
订单ID | Oid | varchar(30) | NOT NULL | 主码/外码 |
用户ID | Uid | varchar(30) | NOT NULL | 主码/外码 |
评价 | feeling | varchar(500) |
7.折扣规则(rules)
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
VIP等级 | vip | int | 主码 | |
升级所需经验值 | exp | int | ||
折扣 | discount | decimal(3,2) | NOT NULL |
8.消费记录(consumptions)
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
用户ID | Uid | varchar(30) | NOT NULL | 外码 |
订单ID | OId | varchar(30) | NOT NULL | 主码/外码 |
支付时间 | paytime | varchar(30) | ||
折扣前金额 | consumption | decimal(10,2) | NOT NULL | |
折扣 | discount | varchar(30) | ||
折扣后金额 | mon | decimal(10,2) | NOT NULL |
9.订单详情表(detail)
注解 | 属性 | 数据类型 | 是否为NULL | 主/外码 |
订单ID | Oid | varchar(30) | NOT NULL | 主码 |
数量 | num | int | ||
价格 | Fprice | decimal(10,2) | ||
菜品名 | Fid | varchar(30) | NOT NULL | 外码 |
2.2概念结构设计
ER图
2.3数据库系统实现
1.用户表(user)
create table user
(
Uid varchar(30) not null,
Uname varchar(30),
Upassword varchar(30) not null,
Uphone varchar(30),
Rdate varchar(30),
primary key(Uid)
);
2.菜品表(menu)
create table menu
(
Fid varchar(30),
Fname varchar(30),
Fprice decimal(10,2),
primary key(Fid)
);
3.订单表(order)
create table orders
(
Oid varchar(30) not null,
setTime varchar(30),
Ostate varchar(30),
Tid int not null,
Uid varchar(30) not null,
primary key(Oid),
foreign key(Tid) references table_seat(Tid),
foreign key(Uid) references user(Uid)
);
4.桌位表(table)
create table table_seat
(
Tid int not null,
Sid varchar(30),
primary key(Tid),
foreign key(Sid) references staff(Sid)
);
5.员工表(staff)
create table staff
(
Sid varchar(30) not null,
Snamee varchar(30),
Sposition varchar(30),
Ssex varchar(8) not null,
Sage int not null,
primary key(Sid)
);
6.评价表(assess)
create table assess
(
Oid varchar(30) not null,
Uid varchar(30) not null,
feeling varchar(500),
primary key(Oid),
foreign key(Oid) references orders(Oid),
foreign key(Uid) references user(Uid)
);
7.折扣规则(rules)
create table rules
(
value int,
discount decimal(3,2) not null,
primary key(value)
);
8.消费记录(consumptions)
create table consumptions
(
Uid varchar(30) not null,
Oid varchar(30) not null,
paytime varchar(30),
consumption decimal(10,2) not null,
mon decimal(10,2) not null,
primary key(Oid),
foreign key(Oid) references orders(Oid),
foreign key(Uid) references user(Uid)
);
9.订单详情表(detail)
create table detail
(
Oid varchar(30) not null,
Fid varchar(30) not null,
num int,
foreign key(Oid) references orders(Oid),
foreign key(Fid) references menu(Fid)
);
视图:
create view view_menu
as
select Fname,Fprice
from menu;
create view view_rules
as
select value,discount
from rules ;
存储过程:
create procedure display_orders(in uuid varchar(11))
begin
select Oid,setTime,Ostate,Tid
from orders
where uuid = orders.Uid;
end
create procedure display_detail(in ooid varchar(20))
begin
select Fname,num
from detail
where ooid = detail.Oid;
end
create procedure display_consumptions(in uuid varchar(11))
begin
select Oid,paytime,consumption,mon
from consumptions
where uuid = consumptions.Uid;
end
触发器
create trigger update_state
after update on consumptions
for each row
begin
if (new.paytime is not null) then
update orders
set Ostate = '已完成'
where new.Oid = orders.Oid;
end if;
end
登录界面:
注册界面:
注册时账号密码都不能为空:
密码和确认密码须一致:
注册成功:
登录时账号密码不能为空:
账号要存在,密码要正确:
主界面:
菜品选购界面:
选择菜品时会实时显示总金额:
菜品和桌号都要选择
订单记录界面:
查看订单详情:
消费记录界面:
用户中心界面:
个性设定用户名或电话:
提供密码修改功能:
新密码不能为空:
新密码和确认密码需要一致:
更新成功:
查看会员规则详情:
意见评价:
评价成功:
每个订单只能评价一次:
员工可以修改订单状态:
员工可以查看已完成订单的信息:
员工可以查看订单详情:
员工可以查看顾客的评论:
员工可以看桌位负责情况:
指导老师:王 艳
小组成员:邓振辉
高保强
李明智