您的位置:首页 > 游戏 > 游戏 > 点餐系统实战开发教程01需求分析

点餐系统实战开发教程01需求分析

2024/10/6 6:51:43 来源:https://blog.csdn.net/u012877217/article/details/141297198  浏览:    关键词:点餐系统实战开发教程01需求分析

目录

  • 1 需求分析
    • 1.1 顾客角色
    • 1.2 服务员角色
    • 1.3 后厨角色
    • 1.4 收银员角色
  • 2 数据源设计
    • 2.1 用户表
    • 2.2 餐桌表
    • 2.3 菜品表
    • 2.4 订单表
    • 2.5 订单项表
    • 2.6 菜品制作状态表
    • 2.7 收银记录表
    • 2.8 会员表
    • 2.9 充值记录表
    • 2.10 积分表
    • 2.11 积分记录表
    • 2.12 优惠券表
    • 2.13 优惠券使用记录表
    • 2.14 活动表
  • 总结

民以食为天,日常不管是工作餐,商务宴请,聚会,活动,都离不开和餐厅打交道。现在其实餐厅的信息化已经走的比较靠前了,有的提供机器人负责制作和服务。我们本次实战教程,就是结合这种日常的生活场景,结合微搭低代码工具,从0到1构建一个点餐系统。

1 需求分析

在分析需求的时候,我们通常按照角色来梳理功能。比如餐厅我们可以分为常见的几种角色,包括顾客、服务员、收银、后厨。不同的角色我们可以设置不同的功能。

将功能拆分后,我们还要合并在一起,合并的逻辑就是按照实际的业务流程,分析在流程上各种角色如何有机的配合在一起。

按照角色我们先拆解一下功能点:

1.1 顾客角色

首页

  • 餐厅信息、推荐菜品、促销活动展示

点餐

  • 选择用餐方式(堂食/外卖)
  • 浏览菜单,查看菜品详情(包括制作时间、会员价格、评价等)
  • 添加菜品到购物车
  • 显示热门菜品和推荐菜品

订单管理

  • 查看当前订单状态和历史订单记录
  • 进行催单操作
  • 使用优惠券和积分抵扣

个人中心

  • 管理个人信息、查看余额和积分
  • 充值功能,查看充值记录
  • 提供反馈和评价

1.2 服务员角色

首页

  • 显示待处理订单、餐桌状态和重要通知

订单管理

  • 查看所有订单的状态,进行催单、更新状态(如上菜、加急处理
  • 记录上菜操作,更新菜品状态

餐桌管理

  • 查看餐桌状态,管理空闲和占用的餐桌

个人中心

  • 管理个人信息、查看工作记录、提供反馈

1.3 后厨角色

首页

  • 显示待制作的菜品、制作状态和重要通知

制作管理

  • 查看所有待制作的菜品,更新制作状态(如开始制作、完成)

历史记录

  • 查看历史制作记录,分析制作效率

个人中心

  • 管理个人信息、查看工作记录、提供反馈

1.4 收银员角色

首页

  • 显示当前餐桌状态、待结算订单和重要通知

订单管理

  • 查看所有订单的详细信息,进行结算操作
  • 处理退款或修改订单

优惠券管理

  • 创建和管理优惠券,查看使用情况

会员管理

  • 查看会员信息,管理充值和积分

报表和分析

  • 查看销售报表、顾客反馈和活动效果分析

用户管理

  • 管理用户角色和权限

菜品管理

  • 添加、编辑和删除菜品,管理菜品分类和价格

活动和促销管理

  • 创建和管理促销活动,设置优惠券和积分活动

数据分析

  • 查看销售数据、顾客行为分析和库存管理

2 数据源设计

有了一定的功能拆解后,我们需要将功能点设计和拆分到数据源的字段中,我们一共形成了如下的数据源:

2.1 用户表

CREATE TABLE Users (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
role ENUM(‘customer’, ‘waiter’, ‘chef’, ‘cashier’) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

用户表用来存储我们的登录人员信息

2.2 餐桌表

CREATE TABLE Tables (
table_id INT PRIMARY KEY AUTO_INCREMENT,
table_number VARCHAR(10) NOT NULL,
status ENUM(‘available’, ‘occupied’) DEFAULT ‘available’,
capacity INT NOT NULL,
has_table_sign BOOLEAN DEFAULT TRUE, – 是否有桌签
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

餐桌用来管理餐厅的可以使用的餐桌,餐桌是和点餐业务相关

2.3 菜品表

CREATE TABLE MenuItems (
item_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
category VARCHAR(50) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
member_price DECIMAL(10, 2) DEFAULT NULL, – 会员价格
description TEXT,
preparation_time INT DEFAULT 0, – 制作时间,以分钟为单位
available BOOLEAN DEFAULT TRUE, – 是否可点
popularity INT DEFAULT 0, – 热门程度
is_recommended BOOLEAN DEFAULT FALSE, – 是否为推荐菜品
is_sample BOOLEAN DEFAULT FALSE, – 是否为试吃样品
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

菜品是餐厅可以提供的服务的具体体现,日常可以由管理员维护好,后厨根据每日物资采购情况决定当天哪些菜品可以制作和售卖

2.4 订单表

CREATE TABLE Orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
table_id INT NULL, – 对于有桌签的订单
order_number VARCHAR(20) UNIQUE, – 对于无桌签的拼桌订单
user_id INT NOT NULL,
status ENUM(‘pending’, ‘in_progress’, ‘completed’, ‘cancelled’) DEFAULT ‘pending’,
total_price DECIMAL(10, 2) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (table_id) REFERENCES Tables(table_id),
FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

订单表记录顾客点餐的具体信息

2.5 订单项表

CREATE TABLE OrderItems (
order_item_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
item_id INT NOT NULL,
quantity INT NOT NULL,
priority INT DEFAULT 0, – 优先级字段
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES Orders(order_id),
FOREIGN KEY (item_id) REFERENCES MenuItems(item_id)
);

一个订单可能要关联多个菜品,在订单项表记录顾客点餐的菜品信息

2.6 菜品制作状态表

CREATE TABLE DishStatus (
status_id INT PRIMARY KEY AUTO_INCREMENT,
order_item_id INT NOT NULL,
status ENUM(‘pending’, ‘in_progress’, ‘completed’, ‘served’) DEFAULT ‘pending’,
priority INT DEFAULT 0, – 优先级字段
order_time TIMESTAMP, – 下单时间字段
waiting_time INT DEFAULT 0, – 等待时间,以秒为单位
served_time TIMESTAMP NULL, – 记录上菜时间
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_item_id) REFERENCES OrderItems(order_item_id)
);

订单下单后,会通知后厨进行制作,后厨可以根据实际情况来安排菜品制作的优先级

2.7 收银记录表

CREATE TABLE Payments (
payment_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
amount DECIMAL(10, 2) NOT NULL,
payment_method ENUM(‘cash’, ‘credit_card’, ‘mobile_payment’) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES Orders(order_id)
);

用餐完毕后,可以在收银台进行结账,记录结账信息

2.8 会员表

CREATE TABLE Members (
member_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL, – 关联用户
membership_level ENUM(‘regular’, ‘silver’, ‘gold’, ‘platinum’) DEFAULT ‘regular’, – 会员等级
balance DECIMAL(10, 2) DEFAULT 0.00, – 账户余额
bonus_amount DECIMAL(10, 2) DEFAULT 0.00, – 赠送金额
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

为了促进餐厅发展,可以结合会员充值赠送业务来促进回购

2.9 充值记录表

CREATE TABLE RechargeRecords (
recharge_id INT PRIMARY KEY AUTO_INCREMENT,
member_id INT NOT NULL,
amount DECIMAL(10, 2) NOT NULL, – 充值金额
bonus DECIMAL(10, 2) DEFAULT 0.00, – 赠送金额
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (member_id) REFERENCES Members(member_id)
);

记录会员的充值信息,为后续的经营提供数据参考

2.10 积分表

CREATE TABLE Points (
point_id INT PRIMARY KEY AUTO_INCREMENT,
member_id INT NOT NULL,
total_points INT DEFAULT 0, – 总积分余额
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (member_id) REFERENCES Members(member_id)
);

充值和消费都可以赠送一定的积分,积分可以用来兑换餐厅里的日常物品

2.11 积分记录表

CREATE TABLE PointsRecords (
record_id INT PRIMARY KEY AUTO_INCREMENT,
member_id INT NOT NULL,
points INT NOT NULL, – 积分数量(正数为获取,负数为使用)
source ENUM(‘recharge’, ‘purchase’, ‘referral’, ‘promotion’) NOT NULL, – 积分来源
order_id INT DEFAULT NULL, – 关联订单(如果适用)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (member_id) REFERENCES Members(member_id),
FOREIGN KEY (order_id) REFERENCES Orders(order_id)
);

记录积分获取的过程和消费的过程

2.12 优惠券表

CREATE TABLE Coupons (
coupon_id INT PRIMARY KEY AUTO_INCREMENT,
code VARCHAR(50) UNIQUE NOT NULL, – 优惠券代码
discount_type ENUM(‘fixed’, ‘percentage’) NOT NULL, – 优惠类型(固定金额或百分比)
discount_value DECIMAL(10, 2) NOT NULL, – 优惠金额或百分比
start_date TIMESTAMP NOT NULL, – 开始日期
end_date TIMESTAMP NOT NULL, – 结束日期
usage_limit INT DEFAULT 1, – 每个用户的使用次数限制
total_limit INT DEFAULT 100, – 优惠券总使用次数限制
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

优惠券也是一种促销的手段,可以管理各类平台投放的优惠券

2.13 优惠券使用记录表

CREATE TABLE CouponUsage (
usage_id INT PRIMARY KEY AUTO_INCREMENT,
coupon_id INT NOT NULL,
user_id INT NOT NULL,
order_id INT NOT NULL,
used_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (coupon_id) REFERENCES Coupons(coupon_id),
FOREIGN KEY (user_id) REFERENCES Users(user_id),
FOREIGN KEY (order_id) REFERENCES Orders(order_id)
);

详细记录优惠券的核销数据

2.14 活动表

CREATE TABLE Promotions (
promotion_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL, – 活动名称
description TEXT, – 活动描述
start_date TIMESTAMP NOT NULL, – 活动开始时间
end_date TIMESTAMP NOT NULL, – 活动结束时间
coupon_id INT, – 关联的优惠券(可选)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (coupon_id) REFERENCES Coupons(coupon_id)
);

管理日常餐厅的促销活动

总结

我们的第一篇是先分析一下具体想开发的功能,还要做好数据的准备,后续篇幅我们就介绍小程序和PC端如何进行开发。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com