From 1008ae50d3cc5e325528b17ba6bb96bd4c7f8c96 Mon Sep 17 00:00:00 2001 From: halliday Date: Sat, 11 Oct 2025 16:09:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E6=88=90=E5=89=8D=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mvcar/backend/app.py | 53 +++++++++++++++++++++++++++++ mvcar/backend/init_db.py | 38 +++++++++++++++++++++ mvcar/backend/requirements.txt | 2 ++ mvcar/{ => frontend}/css/result.css | 0 mvcar/{ => frontend}/css/style.css | 0 mvcar/{ => frontend}/index.html | 0 mvcar/{ => frontend}/js/cars.json | 0 mvcar/{ => frontend}/js/result.js | 0 mvcar/{ => frontend}/js/script.js | 0 mvcar/{ => frontend}/result.html | 0 mvcar/readme.md | 13 +++++++ 11 files changed, 106 insertions(+) create mode 100644 mvcar/backend/app.py create mode 100644 mvcar/backend/init_db.py create mode 100644 mvcar/backend/requirements.txt rename mvcar/{ => frontend}/css/result.css (100%) rename mvcar/{ => frontend}/css/style.css (100%) rename mvcar/{ => frontend}/index.html (100%) rename mvcar/{ => frontend}/js/cars.json (100%) rename mvcar/{ => frontend}/js/result.js (100%) rename mvcar/{ => frontend}/js/script.js (100%) rename mvcar/{ => frontend}/result.html (100%) create mode 100644 mvcar/readme.md diff --git a/mvcar/backend/app.py b/mvcar/backend/app.py new file mode 100644 index 0000000..cee2dfb --- /dev/null +++ b/mvcar/backend/app.py @@ -0,0 +1,53 @@ +from flask import Flask, jsonify, request +from flask_cors import CORS +import sqlite3 +import os + +# 获取当前文件所在目录 +basedir = os.path.abspath(os.path.dirname(__file__)) +db_path = os.path.join(basedir, '..', 'data', 'cars.db') + +app = Flask(__name__) +CORS(app) + +def get_db_connection(): + conn = sqlite3.connect(db_path) + conn.row_factory = sqlite3.Row + return conn + +@app.route('/api/cars', methods=['GET']) +def get_all_cars(): + conn = get_db_connection() + cars = conn.execute('SELECT * FROM cars').fetchall() + conn.close() + + cars_list = [dict(car) for car in cars] + return jsonify(cars_list) + +@app.route('/api/cars/search', methods=['GET']) +def search_car(): + plate = request.args.get('plate', '') + + if not plate: + return jsonify({'error': '请输入车牌号码'}), 400 + + conn = get_db_connection() + cars = conn.execute('SELECT * FROM cars WHERE plate LIKE ?', (f'%{plate}%',)).fetchall() + conn.close() + + cars_list = [dict(car) for car in cars] + return jsonify(cars_list) + +@app.route('/api/cars/', methods=['GET']) +def get_car_by_plate(plate): + conn = get_db_connection() + car = conn.execute('SELECT * FROM cars WHERE plate = ?', (plate,)).fetchone() + conn.close() + + if car is None: + return jsonify({'error': '未找到该车牌号码对应的车主信息'}), 404 + + return jsonify(dict(car)) + +if __name__ == '__main__': + app.run(debug=True, host='0.0.0.0', port=5000) \ No newline at end of file diff --git a/mvcar/backend/init_db.py b/mvcar/backend/init_db.py new file mode 100644 index 0000000..7c73b0e --- /dev/null +++ b/mvcar/backend/init_db.py @@ -0,0 +1,38 @@ +import sqlite3 +import os + +# 获取当前文件所在目录 +basedir = os.path.abspath(os.path.dirname(__file__)) +db_path = os.path.join(basedir, '..', 'data', 'cars.db') + +# 创建数据目录(如果不存在) +os.makedirs(os.path.dirname(db_path), exist_ok=True) + +# 创建数据库连接 +conn = sqlite3.connect(db_path) +cursor = conn.cursor() + +# 创建车辆表 +cursor.execute(''' +CREATE TABLE IF NOT EXISTS cars ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + plate TEXT UNIQUE NOT NULL, + phone TEXT NOT NULL, + brand TEXT NOT NULL +) +''') + +# 插入示例数据 +sample_cars = [ + ("京B67890", "131-2222-2222", "本田雅阁"), + ("沪C11111", "132-3333-3333", "大众帕萨特"), + ("浙D22222", "133-4444-4444", "奔驰E级") +] + +cursor.executemany('INSERT OR IGNORE INTO cars (plate, phone, brand) VALUES (?, ?, ?)', sample_cars) + +# 提交更改并关闭连接 +conn.commit() +conn.close() + +print("数据库初始化完成") \ No newline at end of file diff --git a/mvcar/backend/requirements.txt b/mvcar/backend/requirements.txt new file mode 100644 index 0000000..ef25c27 --- /dev/null +++ b/mvcar/backend/requirements.txt @@ -0,0 +1,2 @@ +Flask==2.3.2 +flask-cors==4.0.0 \ No newline at end of file diff --git a/mvcar/css/result.css b/mvcar/frontend/css/result.css similarity index 100% rename from mvcar/css/result.css rename to mvcar/frontend/css/result.css diff --git a/mvcar/css/style.css b/mvcar/frontend/css/style.css similarity index 100% rename from mvcar/css/style.css rename to mvcar/frontend/css/style.css diff --git a/mvcar/index.html b/mvcar/frontend/index.html similarity index 100% rename from mvcar/index.html rename to mvcar/frontend/index.html diff --git a/mvcar/js/cars.json b/mvcar/frontend/js/cars.json similarity index 100% rename from mvcar/js/cars.json rename to mvcar/frontend/js/cars.json diff --git a/mvcar/js/result.js b/mvcar/frontend/js/result.js similarity index 100% rename from mvcar/js/result.js rename to mvcar/frontend/js/result.js diff --git a/mvcar/js/script.js b/mvcar/frontend/js/script.js similarity index 100% rename from mvcar/js/script.js rename to mvcar/frontend/js/script.js diff --git a/mvcar/result.html b/mvcar/frontend/result.html similarity index 100% rename from mvcar/result.html rename to mvcar/frontend/result.html diff --git a/mvcar/readme.md b/mvcar/readme.md new file mode 100644 index 0000000..b64ecf5 --- /dev/null +++ b/mvcar/readme.md @@ -0,0 +1,13 @@ +# 挪车电话查询系统 + +这是一个前后端分离的挪车电话查询系统,使用Python Flask作为后端,SQLite作为数据库,HTML/CSS/JavaScript作为前端。 + +## 项目结构 + +- `backend/`: 后端代码(Python Flask) +- `frontend/`: 前端代码(HTML/CSS/JavaScript) +- `data/`: 数据库存放目录 + +## 安装与运行 + +1. 安装Python依赖: \ No newline at end of file