基于python Django 实现外卖点菜管理系统 计算机毕设

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 基于python Django 实现外卖点菜管理系统 计算机毕设

问题描述: 随着网络的迅速发展,越来越多的人开始接受甚至时依赖了网络营业的这种交易形式,传统的点菜模式不仅浪费时间,效率低下,而且特别耗费成本与人力,因此不少商家开始使用网上点菜系统。网上点菜系统是一种可以自主选择、个性化、便捷化、特色化的点餐模式,它的大力推广使用为餐厅节约了成本,同时也解决了消费者在传统点菜时存在的不少麻烦,这使得网上点菜系统迅速占领市场。


2、设计要求

该系统设计实现时主要从以下三个角色方面入手进行,每个角色具有不同功能:

  1. 用户端功能:
  • 顾客进入系统浏览整体菜单;
  • 顾客根据菜单进行选菜下单点菜;
  • 顾客通过核对订单进行结账。
  1. 后台管理功能:


  • 管理员可以进入后台系统;
  • 管理员可以查询系统内所有存在订单;
  • 管理员有权对所有在职员工信息进行操作。
  1. 后厨系统功能:
  • 订单保存在数据库中,并传入后厨系统;
  • 后厨界面同步显示所有正在进行的订单;
  • 后厨对订单具有查询,接单等操作功能。


三.课程设计说明书


1 需求分析

(1) 数据需求

点菜管理信息系统需要完成功能主要有:

餐厅基础信息:餐厅提供基本的菜谱等信息并且能对所有信息进行增、删、改、查等操作;


顾客点菜信息:用户登录系统后,在相应的页面浏览菜谱信息,根据自己的用餐需求下单,使得该信息显示在系统订单信息列表中,在结账时通过订单信息进行结账;


职工管理信息:管理员可以登录该系统对已经注册的职工个人信息进行增、删、改、查等操作;


(2) 事务需求

  1. 在餐厅基础信息部分,要求:
  • 展示整体菜谱,主要由菜品编号、菜名、数量、价格等组成;
  • 菜谱上所有信息管理员都有权进行更新修改。


  1. 在顾客点菜信息部分,要求:
  • 通过自主选择桌号进入点菜;
  • 浏览所有的菜谱信息;
  • 通过自主选择菜品,生成订单;
  • 核对订单信息及订单状态,完成结账。
  1. 在职工管理信息部分,要求:


  • 在职员工通过身份信息注册、登陆系统;
  • 职工有权对自己的职工信息进行增、删、改等操作;
  • 管理员可以对所有职工信息进行查询及操作。


(3) 关系模式


  1. 菜品类(菜品编号,菜品名称)
  2. 菜品(菜品编号,菜品种类编号,菜名,制作时间,数量,价格)
  3. 订单(订单编号,餐桌编号,菜品总数,消费金额,下单时间,备注信息,支付时间,负责职工编号,支付状态)
  1. 订单明细(编号,订单编号,菜品编号,菜品数量,消费金额,备注信息,订单状态,接单时间,完成时间)
  2. 职工(职工编号,个人 ID,姓名,性别,出生日期,联系方式,联系地址)
  3. 餐桌信息(餐桌编号,餐桌名字,负责职工编号)

(4) 数据字典


  1. 菜品类表


image.png


  1. 菜品表


image.png


  1. 订单表


image.png

  1. 订单明细表


image.png


  1. 职工表


image.png


  1. 餐桌信息表


image.png


2 概要设计

(1) 实体图及 E-R 图


19a64b6b04271070d2771767fc90e5b7.png

a7e41e63f75adaf4ab9aa5cd2a776bb2.png


(2) 数据流图

1c25fe1b9e54e8e130dd239256e8b27b.png


9e4ce8cdba3c3db650a96977e576f62c.png


3 逻辑设计


8dd60c9a077717724dfb6f67af6c6fd3.png


4 数据库建立

(1) 创建数据库

Django 中默认使用 SQLite 作为数据库,也可将其换为 MySQL、Oracle 等,仅需提供连接地址、用户名及密码。

ccf8db58d04b1f9c36ea2f0ce13435bc.png


(2) 菜品类表建立


CREATE TABLE OrderSystem_foodtype
(
  ID  INTEGER   NOT NULL  PRIMARY KEY AUTOINCREMENT,
  name VARCHAR (20) NOT NULL
);

(3) 菜品表建立

CREATE TABLE OrderSystem_food
(
    title       VARCHAR (20) NOT NULL,
    amount      INTEGER      NOT NULL,
    price       REAL         NOT NULL,
    ID          INTEGER      NOT NULL  PRIMARY KEY AUTOINCREMENT,
  foodType_id INTEGER      NOT NULL  REFERENCES 
    OrderSystem_foodtype (ID)  DEFERRABLE INITIALLY DEFERRED,
    cost_time   INTEGER      NOT NULL
);

(4) 订单表建立


CREATE TABLE OrderSystem_order(
    ID          INTEGER  NOT NULL  PRIMARY KEY AUTOINCREMENT,
    table_id    INTEGER  NOT NULL,
    food_amount INTEGER  NOT NULL,
    total_price REAL     NOT NULL,
    staff_id    INTEGER  NOT NULL  REFERENCES
    OrderSystem_staff (ID) DEFERRABLE INITIALLY DEFERRED,
    is_pay      BOOL     NOT NULL,
    create_time DATETIME NOT NULL,
  pay_time    DATETIME,
  comment     VARCHAR (50) NOT NULL
);


(5) 订单明细表建立

CREATE TABLE OrderSystem_orderitem 
(
    id              INTEGER      NOT NULL  PRIMARY KEY AUTOINCREMENT,
    amount          INTEGER      NOT NULL,
    sum_price       REAL         NOT NULL,
    orderID_id      INTEGER      NOT NULL  REFERENCES
    OrderSystem_order (ID) DEFERRABLE INITIALLY DEFERRED,
    end_cook_time   TIME,
    start_cook_time TIME,
    status          INTEGER      NOT NULL,
    comment         VARCHAR (50) NOT NULL,
  foodID_id       INTEGER      REFERENCES 
  OrderSystem_food (ID) DEFERRABLE INITIALLY DEFERRED
);


(6) 职工信息表建立

CREATE TABLE OrderSystem_staff 
(
    ID        INTEGER      NOT NULL  PRIMARY KEY AUTOINCREMENT,
    citizenID VARCHAR (20) NOT NULL,
    name      VARCHAR (10) NOT NULL,
    gender    VARCHAR (5)  NOT NULL,
    born_date DATE,
    phone     VARCHAR (11) NOT NULL,
    address   VARCHAR (50) NOT NULL
);


(7) 餐桌信息表建立


CREATE TABLE OrderSystem_staff_table 
(
  ID    INTEGER   NOT NULL PRIMARY KEY,
  name   VARCHAR (20) NOT NULL,
  staff_id INTEGER   NOT NULL  REFERENCES
    OrderSystem_staff (ID) DEFERRABLE INITIALLY DEFERRED
);


5 系统实现

(1)系统功能模块图


c915a3b6071ab0db2fcb26a675f4fdce.png

(2)前台开发平台的选择

  • Web 前端使用 jQuery、Bootstrap4 等进行实现;
  • 使用 Python + Django 作为后端实现;
  • 使用 SQLite 进行数据库实现。


(3)设计与实现

  1. 展示所有菜品类及菜品,顾客可以自主选择餐桌及菜品来进行下单


4997732e9d35de4e3fc3e358022ee4cf.png


  1. 生成订单明细,顾客可以对自己的订单进行查询核对


48d99232e00eaa31dcd2eafcb94db459.png


  1. 管理员及职工注册,然后通过登陆进入后台管理系统
  2. 后台管理系统同步显示订单及当前订单所有状态,后厨完成订单时选择上菜,管理界面自动刷新提示服务员进行上菜服务,餐桌负责人后台可自行切换


147fae0f4a21893637861d4a4c5c5708.png

  1. 点击结账时可以先核对订单,然后再进行对订单的批量支付或者全部支付


31251c460f24676959cbed45e45c73e2.png


  1. 后台管理系统显示所有订单以及订单支付状态,红色为未支付订单,绿色为已支付订单,点击订单号可进入对应订单的详情页


06bab15beb877b980a4f1cc9562516f6.png


  1. 管理员对菜品类、菜品、餐桌信息、员工信息等进行更新操作,即增、删、改等


dc03bb11d7c6ee69569d10b4113b245e.png


  1. 进如后厨系统,后厨对订单信息进行选择接单,完成后通知上菜等操作,订单明细显示 4 种状态(等待后厨接单,后厨已接单,等待上菜,上菜完成)



230fc8c2eb9a0c10e3f2ff08703f96f9.png


6 编程与调试总结


在前端遇到的最多的问题就是对齐,在 JavaScript 以及 jQuery 的操作中,经常会发生无法绑定的情况,后来知道是因为我们的页面是动态加载,一次绑定无法将新的 HTML 元素也进行绑定,最后统一将绑定的操作放在了动态加载之后,而管理和后厨页面中的一些元素需要隔 10 秒、30 秒刷新餐桌信息和上菜信息的就需要在刷新的函数后面再进行绑定。


用 Django 写后端还是比较容易的,但是因为不是很熟悉这个框架,所以在 url 的路由设置上没有很清晰的分界,将管理与顾客点菜子系统放在了同一个 app 中,虽然便于处理数据,但是导致一个 app 的内容很多,不便于调试时查找,使得代码可读性变低,但好在 Django 框架将后端分为了页面视图 views、页面模板 templates 和数据关系模型 models 等,代码的耦合度不至于很高。


在做管理页面时遇到了数据库关系表中的外键在被参照表中数据被删除时参照表需不需要级联删除的问题,因为一开始将其设计成了 SET_NULL,但是实际调试时发现数据库报错,将 SQL 语句放在数据库中执行发现无法将其设为 NULL,最后查阅了相关问题的资料后将其设计成可以为空。


7 课程设计心得体会

这次的数据库课程设计只有一个星期的时间,而我们需要将在数据库课堂上和实验中学习到的知识运用到实际的管理系统中,还需要设计相应的界面,这着实不是一件容易的事情。


确定选择“点菜管理系统”这个题目后,我们通过查找相关资料以及自己对点菜系统的理解确定了需要做的几个主要功能:点菜、结账、查账等,然后一点一点拓展到现在的所有功能。功能的完善大多是在开发过程中因为实际需要而发现问题并解决的,还有的是为了更人性化更适合用户角度使用而添加的,相应的数据库表单也是在开发过程中逐步完善。


但是这样的开发是有问题的,比如订单的几个数据项前前后后改了很多次,因为生成订单需要前后端沟通,每次修改也就会耗费许多时间来进行调试,而如果一开始就能详细地对订单表进行描述,在后期不需要添加新的主属性,那么一定会减少很多可压缩的调试时间。


在开发技术方面,这次尝试了 Python 的 Web 框架 Django 作为后端的 Web 应用,后端的数据库使用了 Django 推荐的 SQLite ,虽然不适合实际生产环境,但是便于上手,也使得我们能够在系统的其他地方进行一点点细节上的打磨,前端使用了 Bootstrap4 + jQuery 来开发。


在开发前期,许多时间用在了前端的细节优化上,通过 Bootstrap 将界面统一风格,也因此将管理页面中订单和上菜提醒直观表现出来,不需要进入二级菜单就能将上菜信息传达上来。在后期逐渐将数据存储所需的约束与触发操作完善,使得各个关系合理存在。


这次数据库课设对我们来说是一个综合能力的考验,也是将数据库系统与所学知识的结合,通过这次课设,我对数据库设计能力有了很大提高,也学会了在应用中引入数据库、维护数据库,不过所体现的问题也是以后需要不断学习、实践的地方。


8 参考文献

[1] 范长青. 智能点菜系统设计开发与引用[J].微型电脑应用. 2019-06-14 [2] 石爱好. 基于 SQL Server 2012 数据库的应用及研究[J].电脑迷. 2017(03) [3] 单立娟. 数据库技术在移动点菜系统上的应用[J].数字技术与应用. 2016-08-15 [4] 于卓立,刘沙沙,苏家鹏,宋文苑,邹晓琳. 智能餐桌系统设计与实现[J].电脑编程技术与维护. 2014-12-18 [5] 李源. 餐厅点菜系统的设计与实现[J].电子技术与软件工程. 2015-10-16 [6] 王欣. 智能电子点菜系统的研究[J].北京交通大学. 2017-06-01 [7] 尹亮. 餐厅点菜及后厨系统的设计与实现[J].电子科技大学. 2015-03-15


界面截图

主界面


c100f497b1f7a3f3f0c7bf090854dfc1.png

点菜界面


后厨界面


d767ae3a167f905c7f6c7332afb03c97.png


管理界面

餐桌负责状态表中绿色表示有订单,红色表示后厨已经做好了菜,处于等待上菜阶段。

餐桌和上菜信息每 30 秒和每 10 秒动态刷新,仅刷新指定区域。

点击负责人可切换该桌负责人。

943060ea2ac3ab468dc11af41a56bd5d.png


订单管理界面

点击订单号进入订单详情,绿色代表已支付订单,红色代表未支付订单。


2f1540de55577df764e026e7b1744563.png


订单详情界面


29525f59ac0dede74c3088c3692b56cf.png


批量结账界面

点击单条订单可进入相应订单详情页。


b79aefd479739a022e3b8310f84ba608.png


菜品管理界面


c50d5ffc395388987f2bd1cd2ace1785.png



使用


1. cd FoodOrder
2. python manage.py runserver


完整代码:https://download.csdn.net/download/qq_38735017/87415895

相关文章
|
9月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
9月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
10月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
基于python的餐厅点餐系统
本课题研究开发餐厅点餐系统,旨在提升餐厅信息处理效率与管理水平。通过计算机技术规范点餐流程,加快信息处理速度,助力管理人员高效运作。系统包含功能结构图与具体实现模块,全面展示系统设计与运行逻辑。

推荐镜像

更多