创建一个简单的外卖订餐系统

news2024/10/6 0:15:22

在今天的快节奏生活中,外卖订餐系统已经成为了人们日常生活中不可或缺的一部分。这些系统通过在线点餐和配送服务,为用户提供了便捷的用餐体验。在本文中,我们将创建一个简单的外卖订餐系统,使用Python和Flask框架构建后端,以及HTML、CSS和JavaScript构建前端。
外卖订餐系统

技术栈

我们将使用以下技术栈来构建这个外卖订餐系统:

后端:Python和Flask框架
前端:HTML、CSS和JavaScript
数据库:SQLite(轻量级数据库)

后端

首先,我们将创建后端部分,负责处理用户的订单和餐厅的菜单。我们将使用Flask框架来构建后端API。确保你已经安装了Python和Flask:

pip install Flask

接下来,创建一个名为app.py的Python文件,这将是我们的Flask应用程序的入口点:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 用于存储菜单数据的示例字典
menu = {
    1: {"name": "汉堡", "price": 5.99},
    2: {"name": "披萨", "price": 7.99},
    3: {"name": "三明治", "price": 4.99},
}

# 用于存储用户订单的示例列表
orders = []

# 获取菜单
@app.route("/menu", methods=["GET"])
def get_menu():
    return jsonify(menu)

# 下订单
@app.route("/order", methods=["POST"])
def place_order():
    data = request.get_json()
    item_id = data.get("item_id")
    if item_id in menu:
        orders.append(menu[item_id])
        return jsonify({"message": "订单已成功添加到购物车"})
    else:
        return jsonify({"message": "无效的菜单项"})

# 查看购物车
@app.route("/cart", methods=["GET"])
def view_cart():
    return jsonify({"cart": orders})

if __name__ == "__main__":
    app.run(debug=True)

在这个示例中,我们创建了一个简单的Flask应用程序,有一个用于获取菜单的路由/menu,一个用于下订单的路由/order,以及一个用于查看购物车的路由/cart。

前端

现在,让我们创建一个简单的前端界面,以便用户可以浏览菜单、下订单和查看购物车。我们将使用HTML、CSS和JavaScript来构建前端。

首先,创建一个名为index.html的HTML文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外卖订餐系统</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <h1>外卖订餐系统</h1>

    <div id="menu">
        <h2>菜单</h2>
        <ul id="menu-list"></ul>
    </div>

    <div id="order">
        <h2>下订单</h2>
        <select id="item-list"></select>
        <button id="order-button">下订单</button>
    </div>

    <div id="cart">
        <h2>购物车</h2>
        <ul id="cart-list"></ul>
    </div>

    <script src="app.js"></script>
</body>
</html>

外卖订餐系统

接下来,创建一个名为styles.css的CSS文件,来美化我们的界面:

body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 20px;
    text-align: center;
}

h1 {
    color: #333;
}

div {
    border: 1px solid #333;
    padding: 10px;
    margin: 10px;
}

select, button {
    margin: 5px;
}

现在,创建一个名为app.js的JavaScript文件,来处理前端逻辑:

document.addEventListener("DOMContentLoaded", () => {
    const menuList = document.getElementById("menu-list");
    const itemList = document.getElementById("item-list");
    const cartList = document.getElementById("cart-list");
    const orderButton = document.getElementById("order-button");

    // 获取菜单
    fetch("/menu")
        .then(response => response.json())
        .then(data => {
            for (const id in data) {
                const menuItem = data[id];
                menuList.innerHTML += `<li>${menuItem.name}: $${menuItem.price}</li>`;
                itemList.innerHTML += `<option value="${id}">${menuItem.name}</option>`;
            }
        });

    // 下订单
    orderButton.addEventListener("click", () => {
        const itemId = itemList.value;
        fetch("/order", {
            method: "POST",
            headers: {
                "Content-Type": "application/json"
            },
            body: JSON.stringify({ item_id: parseInt(itemId) })
        })
        .then(response => response.json())
        .then(data => {
            alert(data.message);
        });
    });

    // 查看购物车
    fetch("/cart")
        .then(response => response.json())
        .then(data => {
            data.cart.forEach(item => {
                cartList.innerHTML += `<li>${item.name}: $${item.price}</li>`;
            });
        });
});

在这个JavaScript文件中,我们使用了fetch来与后端API进行通信,并动态更新前端界面。

运行应用程序

现在,你可以在终端中运行你的应用程序:

python app.py

访问 http://localhost:5000 即可查看你的外卖订餐系统的界面。用户可以浏览菜单、下订单,订单将会显示在购物车中。

这只是一个简单的示例,你可以根据自己的需求扩展功能,例如用户登录、支付集成、订单管理等等。希望这个示例有助于你入门外卖订餐系统的开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1012448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析安防监控系统/AI视频智能分析算法:河道水文水位超标算法应用

传统的水位水尺刻度尺位监测中&#xff0c;所采用的人工读数方式&#xff0c;效率较为低下且 人工成本较高&#xff0c;不利于作业流程的数字化。尽管感应器检测会自动对水位的模拟输入进行筛选&#xff0c;但是由于成本、使用场景要求高、后续日常维护复杂等多种因素&#xff…

电脑文件找回怎么做?文件恢复,就用这3招!

“着急&#xff01;大家伙有什么比较简单的电脑文件找回方法吗&#xff1f;我对电脑不太熟悉&#xff0c;在操作的时候有些文件不知道是被删除了还是丢失了&#xff0c;现在非常需要找回这些丢失的文件&#xff01;” 其实&#xff0c;在使用电脑的过程中&#xff0c;很多电脑用…

学Python的漫画漫步进阶 -- 第十二步

学Python的漫画漫步进阶 -- 第十二步 十二、文件读写12.1 打开文件12.2 关闭文件12.2.1 在finally代码块中关闭文件12.2.2 在with as代码块中关闭文件 12.3 读写文本文件12.4 动动手——复制文本文件12.5 读写二进制文件12.6 动动手——复制二进制文件12.7 练一练12.8 文件读写…

万物目标识别——Detic使用图像级别的监督信号来进行目标检测模型推理(C++/Python)

一、目标识别 1.1 传统目标识别算法 传统目标检测通常将分类&#xff08;确定物体属于哪个类别&#xff09;和定位&#xff08;确定物体的位置&#xff0c;通常使用边界框bbox表示&#xff09;任务耦合在一起。这要求训练数据集中包含每个物体的类别标签以及其对应的bbox位置…

【Proteus仿真】【STM32单片机】智能手环

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 系统运行后&#xff0c;OLED显示温度、心率、加速度极其阈值&#xff1b; 可按下K3键进入阈值设置模式&#xff0c;K1和K2调节对应阈值&#xff0c;K4确定&#xff1b;当检测体温、心率、加速度超出阈值范…

通讯协议介绍CoAP 协议解析

目录 1 通讯协议 2 TCP/IP 网络模型 2.1 TCP协议 2.1.1 TCP 连接过程 2.1.2 TCP 断开连接 2.1.3 TCP协议特点 2.2 UDP协议 2.2.1 UDP 协议特点 3 应用层协议简介 3.1 HTTP 协议 3.2 CoAP 协议 3.3 MQTT 协议 4 CoAP 协议详解 4.1 REST 风格 4.2 CoAP 首部分析 4…

网店怎么进行有效推广?可以试试软文推广

商家在为自己的网店制定推广方案时&#xff0c;不管是从渠道、手段、客户群体哪个方面出发都会面临挑战。传统推广方式成本过高&#xff0c;而宣传效果不一定明显&#xff0c;我们可以试试利用软文推广&#xff0c;成本较低而且推广效果明显。接下来媒介盒子就告诉大家&#xf…

四川玖璨电子商务有限公司:短视频运营理解

短视频运营是一种通过策划、执行和管理短视频内容以达到品牌目标的一项工作。在如今面临信息爆炸的时代&#xff0c;短视频已经成为了吸引用户注意力的一种重要方式。作为一种新兴媒体形式&#xff0c;短视频拥有跨时空、生动有趣、内容丰富的特点&#xff0c;因此得到了越来越…

智能遥测终端机RTU的好处介绍

智能遥测终端机RTU是一种具有高度智能化复合功能的遥测装置&#xff0c;它通过数据采集、通信传输和自动控制等技术&#xff0c;实现对被监测系统的远程监控、数据分析、故障诊断和远程控制。它在工业自动化领域的广泛应用&#xff0c;给自动化程度的提高、成本的下降和生产效率…

Linux 内存泄漏检测的基本原理

一、mtrace分析内存泄露 mtrace&#xff08;memory trace&#xff09;&#xff0c;是 GNU Glibc 自带的内存问题检测工具&#xff0c;它可以用来协助定位内存泄露问题。 它的实现源码在glibc源码的malloc目录下&#xff0c;其基本设计原理为设计一个函数 void mtrace ()&…

开学季ipad手写笔哪款好?平价电容笔牌子排行

随着新学期的临近&#xff0c;随着Apple Pencil的火爆&#xff0c;出现了很多新款的平板电脑的电容笔&#xff0c;也开始在国内上市&#xff0c;有些是品质很高&#xff0c;有些是价位很实惠&#xff0c;而且大部分人都能接受。但是&#xff0c;也存在不少性价比很低的产品。本…

uniapp-video自定义视频封面

uniapp官方文档&#xff1a;video | uni-app官网uni-app,uniCloud,serverlesshttps://uniapp.dcloud.net.cn/uni-app-x/component/video.html#video 主要使用到的是poster属性&#xff0c;详细属性可点击上方api进行查看 <video id"myVideo" class"xwlogo&q…

Go基础语法:概述

概述 1 背景 产生原因 Go是Google开发的一种静态、强类型、编译型、并发型&#xff0c;并具有垃圾回收功能的类C编程语言。2009以开源项目的形式发布&#xff0c;2012年发布1.0稳定版本&#xff0c;距今已经十年了。 Go语言之父Pike提到&#xff1a;Go语言是以C为原型&…

Kubernetes源码阅读环境搭建

参考博文&#xff1a;Kubernetes 源码剖析-环境准备 安装Go语言 wget https://studygolang.com/dl/golang/go1.14.10.linux-amd64.tar.gz下载源代码 mkdir /goinstall创建一个存放go语言的编译器等组件存放的目录。 tar -zxf go1.14.10.linux-amd64.tar.gz -C /goinstall…

Vulhub靶场环境搭建

在Ubantu系统上搭建靶场环境 一、ubantu系统准备 1.更新安装列表 sudo apt-get update 2.安装docker.io sudo apt install docker.io 查看是否安装成功 docker -v 3.安装pip 检查pip是否安装 pip -V 安装pip apt install python3-pip 或者 apt install pip 再次检查pip…

Arcgis提取点数据经纬度

Arcgis提取点数据经纬度 现已打开tiff影像和采样点的shape文件。目标是提取采样点的经纬度信息然后导出。 打开数据管理工具-要素-添加XY坐标 在点的图层上右击打开属性表时&#xff0c;经纬度信息已经添加到属性表中。 在属性表的左上角中点击导出&#xff0c;导出为文本文…

SpringMVC之自定义注解

目录 一.什么是Java注解 1.简介 2.注解的分类 3.JDK元注解 二.自定义注解 1.自定义注解的分类 1.1.标记Annotation: 1.2.元数据Annotation: 2.如何使用自定义注解 3.案例演示 3.1 获取类、方法及属性上的注解值 3.2Inherited 的使用 3.3获取类属性上的注解属性值 3.…

模电课设:用Multisim设计和分析差分放大电路

1 课设内容 1&#xff09;设计一个差分放大器电路&#xff1b; 2&#xff09;用电流源替换发射极电阻&#xff0c;看看会发生什么&#xff1f; 3&#xff09;差分放大器电路特性之差模传输特性。 2 模型搭建 1&#xff09;设计一个差分放大器电路。 差分放大器电路是由对称…

day4_C++

day4_C 思维导图重载 思维导图 重载 #include <iostream> #include <cstring> using namespace std;class MyString { private:char *str;int size; public:MyString():size(10){str new char[size];strcpy(str,"");}MyString(const char *s){size st…

【案例】光电兼修的Alpha Cen,如何应对上升期的甜蜜烦恼?

Alpha Cen&#xff08;比邻星光&#xff09;是一家挺酷的公司&#xff0c;专注于超表面技术芯片研发。 所谓超表面芯片&#xff0c;就是通过控制类似下图的一个个独立纳米级别单元实现光操控。用微纳光学超表面技术能够平面化集成唯一还不在wafer上的光学器件&#xff0c;这意…