Python实现在线活动报名系统

在这个数字化时代,线上活动的组织和报名变得越来越普遍。作为一名开发者,利用Python语言编写一个在线活动报名系统,不仅能够提升我们的编程技能,还能为活动组织者提供便捷的工具。本文将带你一步步实现一个简单的在线活动报名系统。

Python实现在线活动报名系统

项目背景

无论是公司年会、技术沙龙还是社区活动,活动报名都是不可或缺的一环。传统的报名方式往往繁琐且容易出错,而一个自动化的在线报名系统则能大大提高效率和用户体验。

技术选型

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

  • Python:作为主要的编程语言,Python简洁易读,适合快速开发。
  • Flask:一个轻量级的Web框架,适合小型项目。
  • SQLite:轻量级数据库,无需额外配置,适合存储报名信息。

系统设计

功能模块

  1. 用户注册与登录:用户可以通过注册账号来报名活动。
  2. 活动列表展示:展示当前可报名的活动列表。
  3. 活动报名:用户选择活动并填写相关信息进行报名。
  4. 报名信息管理:管理员可以查看和管理报名信息。

数据库设计

我们使用SQLite数据库,设计以下表结构:

  • users:存储用户信息(id, username, password)
  • events:存储活动信息(id, name, date, description)
  • registrations:存储报名信息(id, user_id, event_id, timestamp)

代码实现

1. 环境搭建

首先,安装Flask和SQLite库:

pip install Flask

2. 初始化项目

创建项目目录,并添加以下文件:

  • app.py:主程序文件
  • templates/:存放HTML模板
  • static/:存放静态文件(如CSS、JS)

3. 编写代码

app.py

from flask import Flask, render_template, request, redirect, url_for
import sqlite3

app = Flask(__name__)

def init_db():
    conn = sqlite3.connect('database.db')
    c = conn.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, username TEXT, password TEXT)''')
    c.execute('''CREATE TABLE IF NOT EXISTS events (id INTEGER PRIMARY KEY, name TEXT, date TEXT, description TEXT)''')
    c.execute('''CREATE TABLE IF NOT EXISTS registrations (id INTEGER PRIMARY KEY, user_id INTEGER, event_id INTEGER, timestamp TEXT)''')
    conn.commit()
    conn.close()

@app.route('/')
def index():
    conn = sqlite3.connect('database.db')
    c = conn.cursor()
    events = c.execute('SELECT * FROM events').fetchall()
    conn.close()
    return render_template('index.html', events=events)

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        conn = sqlite3.connect('database.db')
        c = conn.cursor()
        c.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, password))
        conn.commit()
        conn.close()
        return redirect(url_for('index'))
    return render_template('register.html')

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        conn = sqlite3.connect('database.db')
        c = conn.cursor()
        user = c.execute('SELECT * FROM users WHERE username=? AND password=?', (username, password)).fetchone()
        conn.close()
        if user:
            return redirect(url_for('index'))
        else:
            return 'Login Failed'
    return render_template('login.html')

@app.route('/event/<int:event_id>/register', methods=['POST'])
def event_register(event_id):
    user_id = 1  # 假设已登录用户ID为1
    conn = sqlite3.connect('database.db')
    c = conn.cursor()
    c.execute('INSERT INTO registrations (user_id, event_id, timestamp) VALUES (?, ?, datetime("now"))', (user_id, event_id))
    conn.commit()
    conn.close()
    return redirect(url_for('index'))

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

templates/index.html


<!DOCTYPE html>
<html>
<head>
    <title>活动报名系统</title>
</head>
<body>
    <h1>活动列表</h1>
    <ul>
        {% for event in events %}
        <li>{{ event[1] }} - {{ event[2] }}
            <form action="{{ url_for('event_register', event_id=event[0

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读