写出一个用python和html以及mysql的运输管理系统,其中包括登录页面和订单管理和车辆调度和车辆跟踪四个页面,并且每个页面可以更改,查询,增加,删除数据库中的信息,并且操作后,信息可以显示在该页面上
时间: 2023-11-24 14:06:31 浏览: 182
基于python实现的车票订单管理系统-源码
这是一个比较复杂的项目,需要涉及到多个技术和工具。我可以给你提供一个简单的框架,你可以根据自己的需求和技能进行修改和完善。
首先,我们需要安装必要的库和软件。在python中,我们需要安装flask和mysql-connector库。在MySQL数据库中,我们需要创建一个名为"transport"的数据库,并且创建四个表格:users、orders、vehicles、tracks。
接下来,我们可以开始编写代码。我们先写登录页面。
```python
from flask import Flask, render_template, request, session, redirect
import mysql.connector
app = Flask(__name__)
app.secret_key = "secret"
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="transport"
)
@app.route("/")
def index():
return render_template("login.html")
@app.route("/login", methods=["POST"])
def login():
username = request.form["username"]
password = request.form["password"]
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM users WHERE username=%s AND password=%s", (username, password))
user = mycursor.fetchone()
if user is not None:
session["user_id"] = user[0]
session["username"] = user[1]
return redirect("/orders")
else:
return render_template("login.html", message="Invalid username or password")
if __name__ == "__main__":
app.run()
```
在这段代码中,我们创建了一个Flask应用程序,并且设置了一个secret_key用于session。我们连接了MySQL数据库,并且定义了一个index路由,用于渲染登录页面。
当用户提交登录表单时,我们检查用户名和密码是否与数据库中的记录匹配。如果匹配成功,我们将用户ID和用户名存储在session中,并且重定向到订单管理页面。否则,我们返回登录页面并且显示一个错误消息。
接下来,我们可以编写订单管理页面。
```python
@app.route("/orders")
def orders():
if "user_id" in session:
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM orders")
orders = mycursor.fetchall()
return render_template("orders.html", orders=orders)
else:
return redirect("/")
@app.route("/add_order", methods=["POST"])
def add_order():
if "user_id" in session:
destination = request.form["destination"]
weight = request.form["weight"]
mycursor = mydb.cursor()
sql = "INSERT INTO orders (destination, weight) VALUES (%s, %s)"
val = (destination, weight)
mycursor.execute(sql, val)
mydb.commit()
return redirect("/orders")
else:
return redirect("/")
@app.route("/edit_order", methods=["POST"])
def edit_order():
if "user_id" in session:
order_id = request.form["order_id"]
destination = request.form["destination"]
weight = request.form["weight"]
mycursor = mydb.cursor()
sql = "UPDATE orders SET destination=%s, weight=%s WHERE id=%s"
val = (destination, weight, order_id)
mycursor.execute(sql, val)
mydb.commit()
return redirect("/orders")
else:
return redirect("/")
@app.route("/delete_order", methods=["POST"])
def delete_order():
if "user_id" in session:
order_id = request.form["order_id"]
mycursor = mydb.cursor()
sql = "DELETE FROM orders WHERE id=%s"
val = (order_id,)
mycursor.execute(sql, val)
mydb.commit()
return redirect("/orders")
else:
return redirect("/")
```
在这段代码中,我们定义了四个路由。orders路由用于渲染订单管理页面,并且从数据库中获取所有的订单记录。add_order路由用于将新的订单添加到数据库中。edit_order路由用于修改已有的订单记录。delete_order路由用于删除订单记录。
在每个路由中,我们都需要检查用户是否已经登录。如果没有登录,我们将用户重定向到登录页面。否则,我们执行相应的操作,并且重定向到订单管理页面。
以上是订单管理页面的代码,你可以根据自己的需求和设计进行修改和完善。下面是车辆调度页面的代码。
```python
@app.route("/vehicles")
def vehicles():
if "user_id" in session:
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM vehicles")
vehicles = mycursor.fetchall()
return render_template("vehicles.html", vehicles=vehicles)
else:
return redirect("/")
@app.route("/add_vehicle", methods=["POST"])
def add_vehicle():
if "user_id" in session:
license_plate = request.form["license_plate"]
capacity = request.form["capacity"]
mycursor = mydb.cursor()
sql = "INSERT INTO vehicles (license_plate, capacity) VALUES (%s, %s)"
val = (license_plate, capacity)
mycursor.execute(sql, val)
mydb.commit()
return redirect("/vehicles")
else:
return redirect("/")
@app.route("/edit_vehicle", methods=["POST"])
def edit_vehicle():
if "user_id" in session:
vehicle_id = request.form["vehicle_id"]
license_plate = request.form["license_plate"]
capacity = request.form["capacity"]
mycursor = mydb.cursor()
sql = "UPDATE vehicles SET license_plate=%s, capacity=%s WHERE id=%s"
val = (license_plate, capacity, vehicle_id)
mycursor.execute(sql, val)
mydb.commit()
return redirect("/vehicles")
else:
return redirect("/")
@app.route("/delete_vehicle", methods=["POST"])
def delete_vehicle():
if "user_id" in session:
vehicle_id = request.form["vehicle_id"]
mycursor = mydb.cursor()
sql = "DELETE FROM vehicles WHERE id=%s"
val = (vehicle_id,)
mycursor.execute(sql, val)
mydb.commit()
return redirect("/vehicles")
else:
return redirect("/")
```
这段代码与订单管理页面的代码类似,我们定义了三个路由:vehicles、add_vehicle、edit_vehicle和delete_vehicle。vehicles路由用于渲染车辆调度页面,并且从数据库中获取所有的车辆记录。add_vehicle路由用于将新的车辆添加到数据库中。edit_vehicle路由用于修改已有的车辆记录。delete_vehicle路由用于删除车辆记录。
最后,我们来编写车辆跟踪页面的代码。由于车辆跟踪页面需要实时更新车辆的位置,我们需要使用JavaScript和AJAX来实现。
```html
<!DOCTYPE html>
<html>
<head>
<title>Vehicle Tracking</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
setInterval(function(){
$.ajax({
url: "/get_tracks",
type: "GET",
success: function(data){
$("#tracks").html(data);
}
});
}, 5000);
});
</script>
</head>
<body>
<h1>Vehicle Tracking</h1>
<table>
<thead>
<tr>
<th>Vehicle</th>
<th>Location</th>
</tr>
</thead>
<tbody id="tracks">
</tbody>
</table>
</body>
</html>
```
在这段代码中,我们定义了一个html页面,并且引入了jQuery库。在JavaScript中,我们使用setInterval函数每隔5秒钟向服务器发送一次请求,并且将响应数据更新到页面中。
接下来,我们来编写服务器端的代码。
```python
@app.route("/tracks")
def tracks():
if "user_id" in session:
return render_template("tracks.html")
else:
return redirect("/")
@app.route("/get_tracks")
def get_tracks():
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM tracks")
tracks = mycursor.fetchall()
html = ""
for track in tracks:
html += "<tr>"
html += "<td>" + track[1] + "</td>"
html += "<td>" + track[2] + "</td>"
html += "</tr>"
return html
```
在这段代码中,我们定义了两个路由:tracks和get_tracks。tracks路由用于渲染车辆跟踪页面。get_tracks路由用于返回所有的车辆位置记录,并且将记录格式化成html代码。
以上就是一个简单的运输管理系统的代码。你可以根据自己的需求和设计进行修改和完善。注意,这个系统仅仅是一个示例,可能存在漏洞和不足,需要进行进一步的测试和改进。
阅读全文