完成管理端代码

This commit is contained in:
2024-06-14 17:51:13 +08:00
parent cfbaf585a7
commit 963a80a670
18 changed files with 384 additions and 233 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -1,8 +1,8 @@
db = {
'host':'localhost',
'user':'kejingfan',
'password':'KJF2811879',
'database':'TESTDB'
'user':'managerAgent',
'password':'password123',
'database':'ServiceDatabase'
}
SECRET_KEY = 'ILOVEDATABASETECH'

View File

@@ -1,6 +1,8 @@
from flask import render_template, request, g, redirect, url_for, session
from flask import render_template, request, g, redirect, url_for, session, jsonify
from .config import db
import pymysql
import csv
import io
def index():
if request.method == 'GET':
@@ -8,25 +10,132 @@ def index():
return redirect(url_for("login"))
flightID = request.args.get('flightID')
conn = pymysql.connect(**db)
cursor = conn.cursor(pymysql.cursors.DictCursor)
search_sql = """ """
cursor.execute(search_sql, (flightID, ))
flights = cursor.fetchall()
cursor.close()
conn.close()
return render_template(
'search.html',
flights=flights,
username=g.user
)
def logout():
session.clear()
session.pop('user_id', None)
return redirect(url_for('login'))
if flightID:
conn = pymysql.connect(**db)
cursor = conn.cursor(pymysql.cursors.DictCursor)
search_sql = """SELECT * FROM Flights WHERE ID = %s"""
cursor.execute(search_sql, (flightID, ))
flight = cursor.fetchone()
cursor.close()
conn.close()
return render_template(
'index.html',
flight=flight,
username=g.user
)
else:
return render_template('index.html', username=g.user)
def modify():
pass
if request.method == 'POST':
flight_id = request.form.get('flightID')
first_class_change = int(request.form.get('first_class_change', 0))
business_class_change = int(request.form.get('business_class_change', 0))
economy_class_change = int(request.form.get('economy_class_change', 0))
first_class_price = float(request.form.get('first_class_price', 0))
business_class_price = float(request.form.get('business_class_price', 0))
economy_class_price = float(request.form.get('economy_class_price', 0))
status = request.form.get('status', '未知')
conn = pymysql.connect(**db)
cursor = conn.cursor(pymysql.cursors.DictCursor)
try:
# 查询当前座位数
cursor.execute("SELECT First_class_seats_remaining, Business_class_seats_remaining, Economy_class_seats_remaining FROM Flights WHERE ID = %s", (flight_id,))
current_seats = cursor.fetchone()
new_first_class_seats = current_seats['First_class_seats_remaining'] + first_class_change
new_business_class_seats = current_seats['Business_class_seats_remaining'] + business_class_change
new_economy_class_seats = current_seats['Economy_class_seats_remaining'] + economy_class_change
# 检查余座数是否为负值
if new_first_class_seats < 0 or new_business_class_seats < 0 or new_economy_class_seats < 0:
return jsonify({'message': '座位变化后余座数不能为负值'}), 400
# 更新座位数和价格
update_sql = """
UPDATE Flights
SET First_class_seats_remaining = %s, Business_class_seats_remaining = %s, Economy_class_seats_remaining = %s,
First_class_price = %s, Business_class_price = %s, Economy_class_price = %s, Status = %s
WHERE ID = %s
"""
cursor.execute(update_sql, (new_first_class_seats, new_business_class_seats, new_economy_class_seats,
first_class_price, business_class_price, economy_class_price, status, flight_id))
conn.commit()
except Exception as e:
print(e)
conn.rollback()
return jsonify({'message': '数据库错误,请稍后再试'}), 500
finally:
cursor.close()
conn.close()
return jsonify({'message': '座位数、价格和状态更新成功'}), 200
def delete_flight():
if request.method == 'DELETE':
flight_id = request.args.get('flightID')
conn = pymysql.connect(**db)
cursor = conn.cursor()
try:
delete_sql = "DELETE FROM Flights WHERE ID = %s"
cursor.execute(delete_sql, (flight_id,))
conn.commit()
except Exception as e:
print(e)
conn.rollback()
return jsonify({'message': '数据库错误,请稍后再试', 'success': False}), 500
finally:
cursor.close()
conn.close()
return jsonify({'message': '航班删除成功', 'success': True}), 200
from flask import flash, redirect, url_for, jsonify, request
import pymysql
import csv
import io
from .config import db
def upload_csv():
if request.method == 'POST':
file = request.files['file']
if not file:
flash('没有文件上传', 'error')
return redirect(url_for('index'))
conn = pymysql.connect(**db)
cursor = conn.cursor()
try:
stream = io.StringIO(file.stream.read().decode("UTF8"), newline=None)
csv_input = csv.reader(stream)
next(csv_input) # 跳过表头
for row in csv_input:
cursor.execute("""
INSERT INTO Flights (ID, Airline, Departure_airport, Arrival_airport, Departure_time, Arrival_time,
First_class_seats_remaining, Business_class_seats_remaining, Economy_class_seats_remaining,
First_class_price, Business_class_price, Economy_class_price, Status)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
""", row)
conn.commit()
flash('航班批量添加成功', 'success')
except Exception as e:
print(e)
conn.rollback()
flash(f'文件处理错误:{e}', 'error')
finally:
cursor.close()
conn.close()
return redirect(url_for('index'))

View File

@@ -1,4 +1,4 @@
from flask import request, jsonify, session, url_for, render_template
from flask import request, jsonify, session, url_for, render_template, redirect
from .config import db
import pymysql
@@ -31,4 +31,9 @@ def login():
return jsonify({'redirect': url_for('index')})
except Exception as e:
print(e)
return jsonify({'message': '数据库错误,请稍后再试'}), 500
return jsonify({'message': '数据库错误,请稍后再试'}), 500
def logout():
session.clear()
session.pop('user_id', None)
return redirect(url_for('login'))