用Python打造在线问卷调查系统

admin 2025-01-13 286 0

在这个数据驱动的时代,问卷调查成为了获取用户反馈、市场调研的重要工具。本文将带你一步步用Python语言构建一个简易的在线问卷调查系统,助你轻松收集和分析数据。

用Python打造在线问卷调查系统

项目背景

无论是企业产品调研,还是学术研究,问卷调查都是不可或缺的一环。然而,传统的纸质问卷不仅效率低下,数据整理也费时费力。借助Python的强大功能,我们可以快速搭建一个在线问卷调查系统,实现问卷的发布、填写、收集和分析一体化。

技术选型

为了简化开发流程,我们选择以下技术栈:

  • 后端:Python + Flask(轻量级Web框架)
  • 数据库:SQLite(轻量级数据库,适合小型项目)
    1. 前端:HTML + CSS + JavaScript(基础的前端技术)

步骤分解

1. 环境搭建

首先,确保你已经安装了Python和Flask。可以通过以下命令安装Flask:

pip install Flask

2. 后端实现

使用Flask框架创建一个简单的Web应用。以下是基本的后端代码:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 存储问卷数据
responses = []

@app.route('/submit', methods=['POST'])
def submit():
    data = request.json
    responses.append(data)
    return jsonify({"status": "success", "message": "Thank you for your response!"})

if __name__ == '__main__':
    app.run(debug=True)

3. 前端实现

创建一个简单的HTML表单,用于用户填写问卷:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>问卷调查</title>
</head>
<body>
    <h1>请填写问卷</h1>
    <form id="surveyForm">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name"><br><br>
        <label for="age">年龄:</label>
        <input type="number" id="age" name="age"><br><br>
        <input type="submit" value="提交">
    </form>

    <script>
        document.getElementById('surveyForm').addEventListener('submit', function(e) {
            e.preventDefault();
            const formData = {
                name: document.getElementById('name').value,
                age: document.getElementById('age').value
            };
            fetch('/submit', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(formData)
            })
            .then(response => response.json())
            .then(data => alert(data.message));
        });
    </script>
</body>
</html>

4. 数据存储与分析

后端接收到数据后,可以存储在SQLite数据库中,便于后续分析。以下是简单的数据库操作示例:

import sqlite3

def init_db():
    conn = sqlite3.connect('survey.db')
    c = conn.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS responses
                 (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
    conn.commit()
    conn.close()

def save_response(name, age):
    conn = sqlite3.connect('survey.db')
    c = conn.cursor()
    c.execute("INSERT INTO responses (name, age) VALUES (?, ?)", (name, age))
    conn.commit()
    conn.close()

@app.route('/submit', methods=['POST'])
def submit():
    data = request.json
    save_response(data['name'], data['age'])
    return jsonify({"status": "success", "message": "Thank you for your response!"})

if __name__ == '__main__':
    init_db()
    app.run(debug=True)

5. 总结

通过以上步骤,我们成功搭建了一个简易的在线问卷调查系统。用户可以通过网页填写问卷,后端接收并存储数据,便于后续分析。当然,这只是一个基础版本,实际应用中可以根据需求进行更多功能扩展,如增加更多问卷题目、数据可视化等。

希望这篇文章能为你提供一些灵感和帮助,动手试试吧!

评论(0)