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

文摘   2024-08-18 11:54   内蒙古  

民以食为天,日常不管是工作餐,商务宴请,聚会,活动,都离不开和餐厅打交道。现在其实餐厅的信息化已经走的比较靠前了,有的提供机器人负责制作和服务。我们本次实战教程,就是结合这种日常的生活场景,结合微搭低代码工具,从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端如何进行开发。



低代码布道师
分享微搭低代码使用教程,提问交流+知识星球50556232
 最新文章