如何利用MySQL和Python开发一个简单的在线订餐系统

如何利用MySQL和Python开发一个简单的在线订餐系统

如何利用MySQL和Python开发一个简单的在线订餐系统

随着互联网的快速发展,越来越多的人选择在线订餐来解决日常的饮食需求。为了满足用户的需求,许多公司开发了各式各样的在线订餐系统。本文将介绍如何使用MySQL和Python来开发一个简单的在线订餐系统,并提供具体的代码示例。

首先,我们需要创建一个MySQL数据库来存储菜单信息、用户信息以及订单信息。可以使用以下SQL语句创建相应的表:

CREATE TABLE IF NOT EXISTS `menu` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100) NOT NULL,
`price` DECIMAL(10,2) NOT NULL
);
CREATE TABLE IF NOT EXISTS `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(100) NOT NULL,
`password` VARCHAR(100) NOT NULL
);
CREATE TABLE IF NOT EXISTS `orders` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT NOT NULL,
`menu_id` INT NOT NULL,
`quantity` INT NOT NULL,
`date` DATE NOT NULL
);

接下来,我们使用Python和MySQL连接库来实现数据库的连接和操作。以下是MySQL连接的代码示例:

import mysql.connector
# 连接MySQL数据库
def connect_db():
conn = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
return conn
# 查询菜单
def get_menu():
conn = connect_db()
cursor = conn.cursor()
cursor.execute("SELECT * FROM menu")
menu = cursor.fetchall()
cursor.close()
conn.close()
return menu
# 用户注册
def register(username, password):
conn = connect_db()
cursor = conn.cursor()
cursor.execute("INSERT INTO users (username, password) VALUES (%s, %s)", (username, password))
conn.commit()
cursor.close()
conn.close()
# 用户登录
def login(username, password):
conn = connect_db()
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))
user = cursor.fetchone()
cursor.close()
conn.close()
return user
# 下订单
def place_order(user_id, menu_id, quantity, date):
conn = connect_db()
cursor = conn.cursor()
cursor.execute("INSERT INTO orders (user_id, menu_id, quantity, date) VALUES (%s, %s, %s, %s)", (user_id, menu_id, quantity, date))
conn.commit()
cursor.close()
conn.close()

现在我们已经可以从数据库中查询菜单、实现用户注册和登录以及下订单了。

为了让用户能够使用在线订餐系统,我们需要一个简单的用户界面。以下是使用Python的Flask库来实现一个简单的网页界面的代码示例:

from flask import Flask, render_template, request
app = Flask(__name__)
# 用户界面
@app.route("/")
def index():
menu = get_menu()
return render_template("index.html", menu=menu)
# 用户注册
@app.route("/register", methods=["GET", "POST"])
def register_page():
if request.method == "POST":
username = request.form["username"]
password = request.form["password"]
register(username, password)
return render_template("success.html")
return render_template("register.html")
# 用户登录
@app.route("/login", methods=["GET", "POST"])
def login_page():
if request.method == "POST":
username = request.form["username"]
password = request.form["password"]
user = login(username, password)
if user:
return render_template("success.html")
else:
return render_template("login.html", error="Invalid username or password.")
return render_template("login.html")
# 下订单
@app.route("/place_order", methods=["POST"])
def place_order_page():
user_id = request.form["user_id"]
menu_id = request.form["menu_id"]
quantity = request.form["quantity"]
date = request.form["date"]
place_order(user_id, menu_id, quantity, date)
return render_template("success.html")
if __name__ == "__main__":
app.run()

上述代码创建了一个基于Flask的简易网页界面,包括主页、用户注册页、用户登录页和下订单页。

最后,我们需要创建相应的html模板文件来呈现网页界面。以下是一个简单的示例:

index.html:

<!DOCTYPE html>
<html>
<head>
<title>Online Ordering System</title>
</head>
<body>
{% for item in menu %}
<h3>{{ item[1] }}</h3>
<p>Price: {{ item[2] }}</p>
<form action="/place_order" method="post">
<input type="hidden" name="user_id" value="1">
<input type="hidden" name="menu_id" value="{{ item[0] }}">
<input type="number" name="quantity" min="1" max="10" placeholder="Quantity" required>
<input type="date" name="date" required>
<button type="submit">Order</button>
</form>
<hr>
{% endfor %}
</body>
</html>

register.html:

<!DOCTYPE html>
<html>
<head>
<title>User Registration</title>
</head>
<body>
<h2>User Registration</h2>
<form action="/register" method="post">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Register</button>
</form>
</body>
</html>

login.html:

<!DOCTYPE html>
<html>
<head>
<title>User Login</title>
</head>
<body>
<h2>User Login</h2>
{% if error %}
<p style="color:red;">{{ error }}</p>
{% end %}
<form action="/login" method="post">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Login</button>
</form>
</body>
</html>

success.html:

<!DOCTYPE html>
<html>
<head>
<title>Success</title>
</head>
<body>
<h2>Success</h2>
<p>Your order has been placed successfully.</p>
</body>
</html>
原文来自:www.php.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容