Cara menggunakan MySQL dan Python untuk membangunkan sistem aduan dan cadangan dalam talian yang mudah
Pengenalan:
Dengan perkembangan Internet, semakin ramai orang telah mula memilih untuk menghantar aduan dan cadangan dalam talian, yang menyediakan perusahaan dan institusi yang lebih memahami keperluan pengguna dan meningkatkan peluang perkhidmatan. Artikel ini akan memperkenalkan cara menggunakan MySQL dan Python untuk membangunkan sistem cadangan aduan dalam talian yang mudah dan menyediakan contoh kod yang sepadan.
1. Analisis keperluan sistem
Sebelum memulakan pembangunan, kami perlu menjelaskan keperluan sistem. Sistem aduan dan cadangan dalam talian yang mudah harus mempunyai fungsi berikut:
CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL );
CREATE TABLE complaints ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, content TEXT NOT NULL, submit_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, status VARCHAR(50) );
CREATE TABLE replies ( id INT PRIMARY KEY AUTO_INCREMENT, complaint_id INT, content TEXT NOT NULL, reply_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
pip install flask pip install flask-mysql
from flask import Flask, request, jsonify from flask_mysqldb import MySQL app = Flask(__name__) app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_USER'] = 'root' app.config['MYSQL_PASSWORD'] = 'password' app.config['MYSQL_DB'] = 'complaint_system' mysql = MySQL(app)
Seterusnya, tentukan penghalaan dan fungsi pemprosesan yang sepadan untuk melaksanakan pelbagai fungsi sistem:
@app.route('/register', methods=['POST']) def register(): username = request.form['username'] password = request.form['password'] cur = mysql.connection.cursor() cur.execute("INSERT INTO users (username, password) VALUES (%s, %s)", (username, password)) mysql.connection.commit() cur.close() return jsonify({'message': 'Registration success'}) @app.route('/login', methods=['POST']) def login(): username = request.form['username'] password = request.form['password'] cur = mysql.connection.cursor() cur.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password)) user = cur.fetchone() cur.close() if user: return jsonify({'message': 'Login success'}) else: return jsonify({'message': 'Invalid username or password'})
@app.route('/complaints', methods=['POST']) def submit_complaint(): user_id = request.form['user_id'] content = request.form['content'] cur = mysql.connection.cursor() cur.execute("INSERT INTO complaints (user_id, content, status) VALUES (%s, %s, %s)", (user_id, content, 'Pending')) mysql.connection.commit() cur.close() return jsonify({'message': 'Complaint submitted'}) @app.route('/complaints/<complaint_id>', methods=['PUT']) def update_complaint(complaint_id): status = request.form['status'] cur = mysql.connection.cursor() cur.execute("UPDATE complaints SET status = %s WHERE id = %s", (status, complaint_id)) mysql.connection.commit() cur.close() return jsonify({'message': 'Complaint updated'})
@app.route('/complaints', methods=['GET']) def get_complaints(): cur = mysql.connection.cursor() cur.execute("SELECT * FROM complaints") complaints = cur.fetchall() cur.close() return jsonify({'complaints': complaints}) @app.route('/complaints/<complaint_id>/reply', methods=['POST']) def reply_complaint(complaint_id): content = request.form['content'] cur = mysql.connection.cursor() cur.execute("INSERT INTO replies (complaint_id, content) VALUES (%s, %s)", (complaint_id, content)) mysql.connection.commit() cur.close() return jsonify({'message': 'Reply submitted'})
if __name__ == '__main__': app.run()
<!DOCTYPE html> <html> <head> <title>Complaint System</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <h1>Complaint System</h1> <form id="register_form"> <h2>Register</h2> <div class="form-group"> <input type="text" class="form-control" name="username" placeholder="Username"> </div> <div class="form-group"> <input type="password" class="form-control" name="password" placeholder="Password"> </div> <button type="submit" class="btn btn-primary">Register</button> </form> <form id="login_form"> <h2>Login</h2> <div class="form-group"> <input type="text" class="form-control" name="username" placeholder="Username"> </div> <div class="form-group"> <input type="password" class="form-control" name="password" placeholder="Password"> </div> <button type="submit" class="btn btn-primary">Login</button> </form> <!-- 其他功能界面 --> </div> <script> // 注册事件 $("#register_form").submit(function(event) { event.preventDefault(); var url = "/register"; var data = $(this).serialize(); $.post(url, data, function(response) { alert(response.message); }); }); // 登录事件 $("#login_form").submit(function(event) { event.preventDefault(); var url = "/login"; var data = $(this).serialize(); $.post(url, data, function(response) { alert(response.message); }); }); // 其他事件.... </script> </body> </html>
Kesimpulan:
Atas ialah kandungan terperinci Bagaimana untuk membangunkan sistem cadangan aduan dalam talian yang mudah menggunakan MySQL dan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!