22,297
社区成员




单车监控中剩余两个模块的代码编写
根据搜索结果,我们可以为单车监控系统中的“单车信息模块”和“单车租借模块”编写示例代码。以下是一个基于 Python Flask 框架和 SQLite 数据库的简单实现。
app = Flask(name)
def get_db_connection():
conn = sqlite3.connect('bicycle.db')
conn.row_factory = sqlite3.Row
return conn
@app.route('/bicycles', methods=['GET'])
def get_bicycles():
conn = get_db_connection()
bicycles = conn.execute('SELECT * FROM bicycles').fetchall()
conn.close()
return jsonify([dict(bicycle) for bicycle in bicycles])
@app.route('/bicycles', methods=['POST'])
def add_bicycle():
data = request.get_json()
conn = get_db_connection()
conn.execute('INSERT INTO bicycles (id, model, manufacturer, status, location) VALUES (?, ?, ?, ?, ?)',
(data['id'], data['model'], data['manufacturer'], data['status'], data['location']))
conn.commit()
conn.close()
return jsonify(data), 201
@app.route('/bicycles/int:bicycle_id', methods=['PUT'])
def update_bicycle(bicycle_id):
data = request.get_json()
conn = get_db_connection()
conn.execute('UPDATE bicycles SET model = ?, manufacturer = ?, status = ?, location = ? WHERE id = ?',
(data['model'], data['manufacturer'], data['status'], data['location'], bicycle_id))
conn.commit()
conn.close()
return jsonify(data)
@app.route('/bicycles/int:bicycle_id', methods=['DELETE'])
def delete_bicycle(bicycle_id):
conn = get_db_connection()
conn.execute('DELETE FROM bicycles WHERE id = ?', (bicycle_id,))
conn.commit()
conn.close()
return jsonify({'message': 'Bicycle deleted successfully'})
if name == 'main':
app.run(debug=True)
1.2 单车状态监控
Python
复制
@app.route('/bicycles/status', methods=['GET'])
def get_bicycle_status():
conn = get_db_connection()
bicycles = conn.execute('SELECT id, status, location FROM bicycles').fetchall()
conn.close()
return jsonify([dict(bicycle) for bicycle in bicycles])
2. 单车租借模块
2.1 租借流程设计
Python
复制
@app.route('/rent', methods=['POST'])
def rent_bicycle():
data = request.get_json()
user_id = data['user_id']
bicycle_id = data['bicycle_id']
conn = get_db_connection()
bicycle = conn.execute('SELECT * FROM bicycles WHERE id = ?', (bicycle_id,)).fetchone()
if not bicycle or bicycle['status'] != 'available':
return jsonify({'message': 'Bicycle not available'}), 400
conn.execute('UPDATE bicycles SET status = ? WHERE id = ?', ('rented', bicycle_id))
conn.execute('INSERT INTO rentals (user_id, bicycle_id, start_time) VALUES (?, ?, ?)',
(user_id, bicycle_id, datetime.now()))
conn.commit()
conn.close()
return jsonify({'message': 'Bicycle rented successfully'})
@app.route('/return', methods=['POST'])
def return_bicycle():
data = request.get_json()
user_id = data['user_id']
bicycle_id = data['bicycle_id']
conn = get_db_connection()
rental = conn.execute('SELECT * FROM rentals WHERE user_id = ? AND bicycle_id = ? AND end_time IS NULL',
(user_id, bicycle_id)).fetchone()
if not rental:
return jsonify({'message': 'No active rental found'}), 400
conn.execute('UPDATE bicycles SET status = ? WHERE id = ?', ('available', bicycle_id))
conn.execute('UPDATE rentals SET end_time = ? WHERE user_id = ? AND bicycle_id = ? AND end_time IS NULL',
(datetime.now(), user_id, bicycle_id))
conn.commit()
conn.close()
return jsonify({'message': 'Bicycle returned successfully'})
结论
以上代码示例展示了如何使用 Python Flask 框架和 SQLite 数据库实现单车监控系统中的“单车信息模块”和“单车租借模块”。这些模块包括单车的基本信息