Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk membangunkan sistem cadangan aduan dalam talian yang mudah menggunakan MySQL dan Python

Bagaimana untuk membangunkan sistem cadangan aduan dalam talian yang mudah menggunakan MySQL dan Python

WBOY
WBOYasal
2023-09-21 08:01:571331semak imbas

Bagaimana untuk membangunkan sistem cadangan aduan dalam talian yang mudah menggunakan MySQL dan Python

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:

  • Pendaftaran dan log masuk pengguna
  • Pengemukaan dan pengurusan aduan dan cadangan
  • Pertanyaan dan balas aduan dan cadangan
  • Fungsi pengurusan sistem
  • .2
Dalam MySQL Cipta pangkalan data bernama "complaint_system" dan cipta jadual berikut:


    jadual pengguna: digunakan untuk menyimpan maklumat pengguna, termasuk ID pengguna, nama pengguna, kata laluan dan medan lain.
  • CREATE TABLE users (
      id INT PRIMARY KEY AUTO_INCREMENT,
      username VARCHAR(50) NOT NULL,
      password VARCHAR(50) NOT NULL
    );

  • jadual aduan: digunakan untuk menyimpan maklumat cadangan aduan, termasuk ID aduan, kandungan aduan, masa penyerahan, status pemprosesan dan medan lain.
  • 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)
    );

  • jadual balasan: digunakan untuk menyimpan maklumat balasan, termasuk ID balasan, kandungan balasan, masa balasan dan medan lain.
  • CREATE TABLE replies (
      id INT PRIMARY KEY AUTO_INCREMENT,
      complaint_id INT,
      content TEXT NOT NULL,
      reply_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );

  • 3. Pembangunan Bahagian Belakang
Kami menggunakan rangka kerja Flask Python untuk membangunkan antara muka bahagian belakang. Mula-mula, pasang perpustakaan sambungan Flask dan MySQL:

pip install flask
pip install flask-mysql

Kemudian, tulis fail Python bernama "app.py" sebagai fail masukan untuk bahagian belakang. Perkenalkan perpustakaan yang sepadan ke dalam fail dan konfigurasikan sambungan pangkalan data:

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:

    Pendaftaran dan log masuk pengguna:
  • @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'})

  • pengiriman aduan dan penyerahan cadangan Dan pengurusan:
  • @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'})

  • Aduan dan pertanyaan cadangan dan jawapan:
  • @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'})

    Fungsi pengurusan sistem:
  • (diabaikan, bangunkan penghalaan dan fungsi pemprosesan yang sepadan mengikut keperluan sebenar)

  • secara Flax, jalankan aplikasi
    if __name__ == '__main__':
        app.run()
  • 4. Pembangunan bahagian hadapan
Pembangunan antara muka hadapan boleh dijalankan menggunakan teknologi bahagian hadapan seperti HTML, CSS dan JavaScript. Demi kesederhanaan di sini, kami menggunakan Bootstrap sebagai rangka kerja bahagian hadapan dan jQuery untuk permintaan AJAX dan paparan dinamik. Berikut ialah contoh bahagian hadapan yang mudah:

<!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>

Kini anda boleh membuka fail HTML dalam penyemak imbas anda untuk menguji kefungsian sistem.


Kesimpulan:

Artikel ini memperkenalkan cara menggunakan MySQL dan Python untuk membangunkan sistem cadangan aduan dalam talian yang mudah. Melalui reka bentuk pangkalan data dan pembangunan antara muka belakang, fungsi seperti pendaftaran dan log masuk pengguna, penyerahan dan pengurusan aduan dan cadangan, pertanyaan dan jawapan kepada aduan dan cadangan, dan pengurusan sistem direalisasikan. Bahagian hadapan menggunakan Bootstrap dan jQuery untuk pembangunan antara muka dan pemprosesan acara. Melalui sistem ini, perusahaan dan institusi boleh mengumpul maklum balas pengguna dengan lebih baik dan meningkatkan kualiti perkhidmatan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn