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

2023-09-15 14:02:17

在今天的快节奏生活中,外卖订餐系统已经成为了人们日常生活中不可或缺的一部分。这些系统通过在线点餐和配送服务,为用户提供了便捷的用餐体验。在本文中,我们将创建一个简单的外卖订餐系统,使用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 即可查看你的外卖订餐系统的界面。用户可以浏览菜单、下订单,订单将会显示在购物车中。

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

更多推荐

Spring的 webFlux 和 webMVC

看到一个测评文章,并发在300的时候webMVC和webFlux的处理能力不相上下,当并发达到3000的时候,webFlux明显优于webMVC,有图有真相,我信了.webMVC是one-request-onethread堵塞模式,flux是非阻塞模式,是spring家族系列产品发展的两个方向.参考文档:https:/

SSM整合01

SSM01搭建SSM项目1.创建maven的web工程1.1pom.xml配置<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=

【Linux】基础IO

文章目录一.C语言文件IO1.C语言文件接口汇总2.什么是当前路径?2.默认打开的三个流二.系统文件I/O1.open(1)open的第一个参数(2)open的第二个参数(3)open的第三个参数(4)open的返回值2.close3.write4.read三.文件描述符fd四.文件描述符的分配规则五.重定向1.重定向

哪些企业需要数字化转型?

数字化转型是一个广泛且持续的过程,可以使各行业的公司受益。虽然数字化转型的具体需求和目标可能因企业而异,但这通常是保持竞争力和相关性的必要条件。以下是一些可能需要数字化转型的公司和行业的一些示例:1.传统零售商:零售商需要适应电子商务和全渠道客户体验,以与亚马逊等在线巨头竞争。2.金融机构:银行和金融机构需要采用数字技

通用商城项目(下)之——Nginx的安装及使用

(作为通用商城项目的一个部分,单独抽离了出来。查看完整见父页面:)加入Nginx-完成反向代理、负载均衡和动静分离1.配置SSH-使用账号密码,远程登录Linux1.1配置实现1、配置sshd1)sudovi/etc/ssh/sshd_config2)将PasswordAuthentication的no改成yes3)重

WebDAV之π-Disk派盘 + BubbleUPnP

BubbleUPnP是一款功能强大的Android播放器,支持UPnP/DLNA多屏互动。它可以将手机内容投屏到电视大屏上,与家人和朋友一起共享。此外,BubbleUPnP还提供了丰富的音乐和影视资源,您可以在线搜索并播放喜欢的内容。以下是BubbleUPnP的一些主要特点:1.支持Chromecast和转码:Bubb

conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles took xxxx ms.)

文章目录一、问题描述二、问题溯源三、解决方案3.1测试3.2方案一:不在powershell中使用conda3.2方案二:需要时再在powershell中使用conda(推荐)四、powershell7特点一、问题描述powershell启动缓慢:每次启动都会加载很久的配置文件:Loadingpersonalandsy

【Python】conda虚拟环境下使用pyinstaller打包程序为exe

文章目录一、为什么要用conda虚拟环境二、pyinstaller用法2.1安装PyInstaller2.2基本用法打包一个Python脚本2.21打包一个Python项目2.22打包选项2.3打包依赖项2.31导出依赖项列表2.32配置依赖项2.4自定义打包选项2.5打包完成后的文件2.6注意事项三、打包示例一、为什

uni-app tree(树状) 组件

先看效果:组件代码:<template><viewclass="next-tree"><viewclass="next-tree-mask":class="{'show':showTree}"@tap="_cancel"></view><viewclass="next-tree-cnt":class="{'show':

QT-day1

实现华清远见登陆界面#include"mywnd.h"#include<iostream>#include<QDebug>#include<QPushButton>#include<QLineEdit>#include<QLabel>MyWnd::MyWnd(QWidget*parent):QWidget(parent

C#+sqlserver+asp.net婚纱影楼管理系统

一、源码描述这是一款简洁十分美观的ASP.NET+sqlserver源码,界面十分美观,功能也比较全面,比较适合作为毕业设计、课程设计、使用,感兴趣的朋友可以下载看看哦二、功能介绍该源码功能十分的全面,具体介绍如下:婚纱影楼管理系统实现了以下功能1:套系管理,影楼的管理人员可以管理自己所提供的套系信息2:员工管理,影楼

热文推荐