手把手教你搭建体育部门档案管理系统实战教程

一、环境准备与依赖安装

在开始编写代码之前,我们需要配置好Python开发环境。本系统基于轻量级Web框架Flask开发,无需配置复杂的服务器环境,适合快速落地。

请确保你的系统中已安装Python 3.8及以上版本。打开终端或命令提示符,输入以下命令检查Python版本:

python --version

为了保持项目环境的独立性,我们需要创建一个虚拟环境。在项目目录下执行以下命令:

python -m venv venv

激活虚拟环境:

  • Windows用户:venv\Scripts\activate
  • Mac/Linux用户:source venv/bin/activate

激活成功后,安装本系统所需的核心依赖包Flask:

pip install flask

至此,基础环境搭建完成。接下来我们将进入核心代码的编写阶段。

二、项目目录结构设计

为了保证代码的可维护性,我们需要建立一个清晰的目录结构。请在你的工作区下创建一个名为的文件夹,并按照以下结构创建子文件夹和文件:

  • sport_system/ (项目根目录)
    • static/ (存放CSS、JS等静态文件,本例主要使用CDN,此文件夹暂留空)
    • templates/ (存放HTML模板文件)
      • base.html (基础模板)
      • index.html (列表展示页)
      • create.html (新增档案页)
      • edit.html (编辑档案页)
    • app.py (后端核心逻辑文件)
    • init_db.py (数据库初始化脚本)
    • sport.db (SQLite数据库文件,运行后自动生成)

三、数据库设计与初始化

体育部门档案管理系统的核心数据包括人员姓名、所属运动队、职位、入队时间以及联系电话。我们将使用SQLite数据库,因为它无需单独安装数据库服务,零配置即可使用。

创建init_db.py文件,并写入以下代码。这段脚本将负责连接数据库并创建名为athletes的数据表:

```python import sqlite3 def init_db(): 连接到SQLite数据库文件,如果不存在会自动创建 conn = sqlite3.connect('sport.db') cursor = conn.cursor() 创建athletes表 cursor.execute(''' CREATE TABLE IF NOT EXISTS athletes ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, team TEXT NOT NULL, role TEXT NOT NULL, join_date TEXT NOT NULL, phone TEXT ) ''') 提交事务并关闭连接 conn.commit() conn.close() print("数据库初始化完成,数据表athletes已创建。") if __name__ == '__main__': init_db() ```

保存文件后,在终端中运行以下命令执行初始化:

手把手教你搭建体育部门档案管理系统实战教程

python init_db.py

执行成功后,项目目录下将生成sport.db文件。

四、后端核心逻辑实现

后端采用Flask框架,主要负责处理HTTP请求、与数据库交互以及渲染HTML页面。打开app.py文件,编写完整的业务逻辑代码:

```python from flask import Flask, render_template, request, redirect, url_for, flash import sqlite3 app = Flask(__name__) app.secret_key = 'dev_secret_key_for_flash_messages' 用于Flash消息的密钥 数据库连接辅助函数 def get_db_connection(): conn = sqlite3.connect('sport.db') conn.row_factory = sqlite3.Row 允许通过列名访问数据 return conn 首页:展示所有档案列表 @app.route('/') def index(): conn = get_db_connection() 按ID降序查询,最新的显示在最前面 cursor = conn.execute('SELECT FROM athletes ORDER BY id DESC') athletes = cursor.fetchall() conn.close() return render_template('index.html', athletes=athletes) 新增档案页面 @app.route('/create', methods=('GET', 'POST')) def create(): if request.method == 'POST': name = request.form['name'] team = request.form['team'] role = request.form['role'] join_date = request.form['join_date'] phone = request.form['phone'] if not name: flash('姓名是必填项!') else: conn = get_db_connection() conn.execute('INSERT INTO athletes (name, team, role, join_date, phone) VALUES (?, ?, ?, ?, ?)', (name, team, role, join_date, phone)) conn.commit() conn.close() return redirect(url_for('index')) return render_template('create.html') 编辑档案页面 @app.route('//edit', methods=('GET', 'POST')) def edit(id): conn = get_db_connection() athlete = conn.execute('SELECT FROM athletes WHERE id = ?', (id,)).fetchone() conn.close() if request.method == 'POST': name = request.form['name'] team = request.form['team'] role = request.form['role'] join_date = request.form['join_date'] phone = request.form['phone'] if not name: flash('姓名是必填项!') else: conn = get_db_connection() conn.execute('UPDATE athletes SET name = ?, team = ?, role = ?, join_date = ?, phone = ? WHERE id = ?', (name, team, role, join_date, phone, id)) conn.commit() conn.close() return redirect(url_for('index')) return render_template('edit.html', athlete=athlete) 删除档案功能 @app.route('//delete', methods=('POST',)) def delete(id): conn = get_db_connection() conn.execute('DELETE FROM athletes WHERE id = ?', (id,)) conn.commit() conn.close() return redirect(url_for('index')) if __name__ == '__main__': app.run(debug=True) ```

五、前端页面构建

为了确保系统界面整洁且具备响应式布局,我们将使用Bootstrap 5框架。首先创建基础模板templates/base.html,其他页面将继承此模板以保持导航栏一致:

```html 体育部门档案管理系统
{% with messages = get_flashed_messages() %} {% if messages %}
{{ messages[0] }}
{% endif %} {% endwith %} {% block content %}{% endblock %}
```

接下来编写列表展示页templates/index.html,用于展示所有运动员和教练的档案:

```html {% extends 'base.html' %} {% block content %}

档案列表

新增档案

{% for athlete in athletes %} {% else %} {% endfor %}
ID 姓名 所属队伍 职位 入队时间 联系电话 操作
{{ athlete['id'] }} {{ athlete['name'] }} {{ athlete['team'] }} {{ athlete['role'] }} {{ athlete['join_date'] }} {{ athlete['phone'] }} 编辑
暂无档案数据,请点击上方按钮新增。
{% endblock %} ```

编写新增页面templates/create.html,包含一个用于输入信息的表单:

```html {% extends 'base.html' %} {% block content %}

新增体育档案

返回列表
{% endblock %} ```

编写编辑页面templates/edit.html,其结构与新增页面类似,但需要预填充现有数据:

```html {% extends 'base.html' %} {% block content %}

编辑档案 (ID: {{ athlete['id'] }})

取消
{% endblock %} ```

六、系统启动与功能验证

所有代码文件已准备就绪,现在启动系统进行测试。确保终端仍处于虚拟环境激活状态,并在项目根目录下执行:

python app.py

当终端显示Running on http://127.0.0.1:5000时,说明服务已成功启动。打开浏览器访问上述地址。

验证步骤如下:

  1. 新增数据:点击页面右上角的“新增档案”按钮,填写姓名(如:张三)、队伍(如:游泳队)、职位、入队时间及电话,点击提交。系统应自动跳转回首页,并显示新添加的数据。
  2. 查看数据:在首页列表中检查刚才录入的信息是否准确显示,表格应具有斑马纹样式。
  3. 编辑数据:点击列表中某条数据的“编辑”按钮,修改姓名或电话号码,点击“更新保存”。确认列表中的数据已实时更新。
  4. 删除数据:点击“删除”按钮,浏览器会弹出确认框。确认后,该条数据应从列表中移除。

至此,一个具备完整增删改查(CRUD)功能的体育部门档案管理系统已成功部署。该系统可以直接用于管理小规模的团队信息,且代码结构清晰,便于后续扩展如用户登录、权限管理或数据导出功能。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统