python外卖数据库管理系统
时间: 2023-11-02 17:59:53 浏览: 84
好的,你需要一个 Python 外卖数据库管理系统,可以让用户浏览菜单、下订单、管理订单和管理用户信息。下面是一个简单的实现方案:
1. 数据库设计
首先需要设计一个数据库来存储菜单、订单和用户信息。可以使用 MySQL 或者 SQLite。
设计菜单表:
```
CREATE TABLE menu (
id INTEGER PRIMARY KEY,
name TEXT,
price FLOAT
);
```
设计订单表:
```
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER,
menu_id INTEGER,
quantity INTEGER,
status TEXT,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (menu_id) REFERENCES menu(id)
);
```
设计用户表:
```
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
phone_number TEXT,
address TEXT
);
```
2. 编写 Python 代码
接下来需要编写 Python 代码来连接数据库、进行查询和更新操作。
首先需要安装 Python 的 MySQL 或者 SQLite 模块,例如:
```
pip install pymysql
```
或者
```
pip install sqlite3
```
然后,连接数据库:
```
import pymysql
# connect to MySQL database
db = pymysql.connect("hostname", "username", "password", "databasename")
# connect to SQLite database
import sqlite3
db = sqlite3.connect("databasename.db")
```
然后,查询菜单:
```
def get_menu(db):
cursor = db.cursor()
cursor.execute("SELECT * FROM menu")
rows = cursor.fetchall()
menu = {}
for row in rows:
menu[row[0]] = {"name": row[1], "price": row[2]}
return menu
```
然后,查询订单:
```
def get_orders(db):
cursor = db.cursor()
cursor.execute("SELECT * FROM orders")
rows = cursor.fetchall()
orders = {}
for row in rows:
orders[row[0]] = {"user_id": row[1], "menu_id": row[2], "quantity": row[3], "status": row[4]}
return orders
```
然后,查询用户:
```
def get_users(db):
cursor = db.cursor()
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
users = {}
for row in rows:
users[row[0]] = {"name": row[1], "phone_number": row[2], "address": row[3]}
return users
```
然后,更新订单状态:
```
def update_order_status(db, order_id, status):
cursor = db.cursor()
cursor.execute("UPDATE orders SET status=%s WHERE id=%s", (status, order_id))
db.commit()
```
最后,关闭数据库连接:
```
db.close()
```
3. 实现用户界面
可以使用 Python 的 Flask 框架来实现用户界面。可以使用 HTML、CSS 和 JavaScript 来设计和实现界面。
例如,可以使用 Flask 来实现一个简单的菜单页面:
```
from flask import Flask, render_template
import pymysql
app = Flask(__name__)
# connect to MySQL database
db = pymysql.connect("hostname", "username", "password", "databasename")
@app.route("/")
def menu():
menu = get_menu(db)
return render_template("menu.html", menu=menu)
if __name__ == "__main__":
app.run()
```
然后,可以在 HTML 文件中使用 Jinja2 模板来渲染菜单:
```
<!DOCTYPE html>
<html>
<head>
<title>Menu</title>
</head>
<body>
<h1>Menu</h1>
<ul>
{% for id, item in menu.items() %}
<li>{{ item.name }}: {{ item.price }}</li>
{% endfor %}
</ul>
</body>
</html>
```
4. 实现订单管理界面和用户管理界面
可以使用类似的方式来实现订单管理界面和用户管理界面。可以使用 Flask 和 HTML、CSS 和 JavaScript 来设计和实现界面。可以在管理界面中调用 Python 的函数来查询和更新数据库。
例如,可以使用 Flask 来实现一个简单的订单管理页面:
```
from flask import Flask, render_template, request
import pymysql
app = Flask(__name__)
# connect to MySQL database
db = pymysql.connect("hostname", "username", "password", "databasename")
@app.route("/orders")
def orders():
orders = get_orders(db)
return render_template("orders.html", orders=orders)
@app.route("/update_order", methods=["POST"])
def update_order():
order_id = request.form["order_id"]
status = request.form["status"]
update_order_status(db, order_id, status)
return redirect("/orders")
if __name__ == "__main__":
app.run()
```
然后,在 HTML 文件中使用 Jinja2 模板来渲染订单表格,并在表格中添加按钮来更新订单状态:
```
<!DOCTYPE html>
<html>
<head>
<title>Orders</title>
</head>
<body>
<h1>Orders</h1>
<table>
<tr>
<th>ID</th>
<th>User ID</th>
<th>Menu ID</th>
<th>Quantity</th>
<th>Status</th>
<th>Update Status</th>
</tr>
{% for id, item in orders.items() %}
<tr>
<td>{{ id }}</td>
<td>{{ item.user_id }}</td>
<td>{{ item.menu_id }}</td>
<td>{{ item.quantity }}</td>
<td>{{ item.status }}</td>
<td>
<form action="/update_order" method="post">
<input type="hidden" name="order_id" value="{{ id }}">
<select name="status">
<option value="new">New</option>
<option value="processing">Processing</option>
<option value="complete">Complete</option>
</select>
<button type="submit">Update</button>
</form>
</td>
</tr>
{% endfor %}
</table>
</body>
</html>
```
类似地,可以使用类似的方式来实现用户管理界面。
阅读全文