网站首页/ 信息中心/ 档案百科/

档案面授培训管理系统全流程搭建实操指南

发布时间:2026年06月30日 16:55:03 浏览量:0

一、技术选型与环境准备

为了实现零门槛快速落地,本指南采用 Python 的 Flask 框架作为后端,SQLite 作为数据库。Flask 轻量且易于上手,SQLite 无需安装额外的数据库服务,文件即数据库,非常适合快速构建中小规模的档案面授培训管理系统。

1. 安装 Python 环境

确保你的系统已安装 Python 3.8 或更高版本。打开终端(Windows 下为 CMD 或 PowerShell,Mac 为 Terminal),输入以下命令检查版本:

```bash python --version ```

如果未安装,请前往 Python 官网下载对应系统的安装包并安装,安装时务必勾选 "Add Python to PATH"

2. 安装 Flask 依赖

在终端中执行以下命令,安装 Flask 及相关依赖:

```bash pip install flask ```

3. 创建项目目录

在任意位置创建一个名为 archive_training 的文件夹,并在其中创建以下文件结构,保持目录整洁:

```text archive_training/ ├── app.py 主程序入口 ├── init_db.py 数据库初始化脚本 ├── templates/ 存放HTML模板的文件夹 │ ├── base.html 基础布局模板 │ ├── index.html 首页:课程列表 │ ├── add_course.html 添加课程页面 │ └── attendance.html 考勤管理页面 └── training.db 数据库文件(运行后自动生成) ```

二、数据库设计与初始化

我们需要设计三张核心表来支撑业务:courses(培训课程)、students(学员档案)、attendance(考勤记录)。请创建 init_db.py 文件,并写入以下完整代码:

```python import sqlite3 def init_db(): conn = sqlite3.connect('training.db') cursor = conn.cursor() 创建课程表 cursor.execute(''' CREATE TABLE IF NOT EXISTS courses ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, instructor TEXT NOT NULL, date TEXT NOT NULL, location TEXT NOT NULL ) ''') 创建学员表 cursor.execute(''' CREATE TABLE IF NOT EXISTS students ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, department TEXT NOT NULL, employee_id TEXT UNIQUE NOT NULL ) ''') 创建考勤表 cursor.execute(''' CREATE TABLE IF NOT EXISTS attendance ( id INTEGER PRIMARY KEY AUTOINCREMENT, course_id INTEGER NOT NULL, student_id INTEGER NOT NULL, status TEXT NOT NULL, FOREIGN KEY (course_id) REFERENCES courses (id), FOREIGN KEY (student_id) REFERENCES students (id) ) ''') conn.commit() conn.close() print("数据库初始化完成,数据库文件已生成:training.db") if __name__ == '__main__': init_db() ```

在终端运行 python init_db.py。如果看到“数据库初始化完成”的提示,说明数据库表结构已建立。此时目录下会出现 training.db 文件。

三、后端核心逻辑开发

接下来编写 app.py,实现路由控制、数据增删改查及页面渲染。这是系统的核心大脑,包含课程展示、添加、考勤录入等所有逻辑。

```python import sqlite3 from flask import Flask, render_template, request, redirect, url_for, flash app = Flask(__name__) app.secret_key = 'dev_secret_key_for_flash_messages' 用于Flash消息提示 数据库连接辅助函数 def get_db_connection(): conn = sqlite3.connect('training.db') conn.row_factory = sqlite3.Row 允许通过列名访问数据 return conn 首页:展示所有课程 @app.route('/') def index(): conn = get_db_connection() courses = conn.execute('SELECT FROM courses ORDER BY date DESC').fetchall() conn.close() return render_template('index.html', courses=courses) 添加新课程 @app.route('/add_course', methods=('GET', 'POST')) def add_course(): if request.method == 'POST': title = request.form['title'] instructor = request.form['instructor'] date = request.form['date'] location = request.form['location'] if not title: flash('课程标题不能为空!') else: conn = get_db_connection() conn.execute('INSERT INTO courses (title, instructor, date, location) VALUES (?, ?, ?, ?)', (title, instructor, date, location)) conn.commit() conn.close() return redirect(url_for('index')) return render_template('add_course.html') 考勤管理页面 @app.route('/attendance/') def attendance(course_id): conn = get_db_connection() 获取课程信息 course = conn.execute('SELECT FROM courses WHERE id = ?', (course_id,)).fetchone() 获取所有学员列表 students = conn.execute('SELECT FROM students').fetchall() 获取当前课程已有的考勤记录 records = conn.execute('SELECT FROM attendance WHERE course_id = ?', (course_id,)).fetchall() conn.close() 将已考勤的学员ID存入集合,方便前端判断 attended_ids = {record['student_id'] for record in records} return render_template('attendance.html', course=course, students=students, attended_ids=attended_ids) 提交考勤 @app.route('/submit_attendance/', methods=['POST']) def submit_attendance(course_id): student_ids = request.form.getlist('student_ids') 获取选中的学员ID列表 conn = get_db_connection() 先清除该课程旧的考勤记录(简化逻辑,实际可做增量更新) conn.execute('DELETE FROM attendance WHERE course_id = ?', (course_id,)) 插入新的考勤记录 for sid in student_ids: conn.execute('INSERT INTO attendance (course_id, student_id, status) VALUES (?, ?, ?)', (course_id, int(sid), 'Present')) conn.commit() conn.close() flash('考勤数据已保存!') return redirect(url_for('index')) 快速添加学员(后台接口,用于演示数据填充) @app.route('/add_student', methods=['POST']) def add_student(): name = request.form['name'] department = request.form['department'] employee_id = request.form['employee_id'] conn = get_db_connection() try: conn.execute('INSERT INTO students (name, department, employee_id) VALUES (?, ?, ?)', (name, department, employee_id)) conn.commit() except sqlite3.IntegrityError: flash('工号已存在,添加失败') finally: conn.close() return redirect(request.referrer or url_for('index')) if __name__ == '__main__': app.run(debug=True, port=5000) ```

四、前端模板页面开发

templates 文件夹下创建以下 HTML 文件。我们将使用原生 HTML 结合简单的 Bootstrap 风格(内联 CSS)以保证界面整洁且无需额外下载 CSS 文件。

1. 基础模板 base.html

档案面授培训管理系统全流程搭建实操指南

定义页面的通用头部和底部:

```html 档案面授培训管理系统
档案面授培训管理系统
{% with messages = get_flashed_messages() %} {% if messages %} {% for message in messages %}
{{ message }}
{% endfor %} {% endif %} {% endwith %} {% block content %}{% endblock %}
```

2. 首页 index.html

展示课程列表,并提供进入考勤页面的入口:

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

培训课程列表

{% if courses %} {% for course in courses %} {% endfor %}
课程名称 讲师 时间 地点 操作
{{ course['title'] }} {{ course['instructor'] }} {{ course['date'] }} {{ course['location'] }} 管理考勤
{% else %}

暂无课程,请点击右上角发布。

{% endif %} {% endblock %} ```

3. 添加课程 add_course.html

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

发布新课程

{% endblock %} ```

4. 考勤管理 attendance.html

这是最关键的页面,展示学员列表并提供复选框进行签到操作。为了方便演示,页面底部也加了一个简单的“添加学员”表单:

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

{{ course['title'] }} - 考勤管理

讲师:{{ course['instructor'] }} | 时间:{{ course['date'] }}

{% for student in students %} {% else %} {% endfor %}
是否出席 姓名 部门 工号
{{ student['name'] }} {{ student['department'] }} {{ student['employee_id'] }}
暂无学员档案,请在下方添加。


快速添加学员档案

{% endblock %} ```

五、系统运行与实操验证

所有代码已准备就绪,现在启动系统并进行完整的业务流程测试。

1. 启动服务

在终端确保位于项目根目录,执行:

```bash python app.py ```

终端会显示 Running on http://127.0.0.1:5000,表明服务已启动。

2. 测试流程

  1. 访问首页:打开浏览器,访问 http://127.0.0.1:5000。此时页面应显示“暂无课程”。
  2. 创建课程:点击右上角“发布新课程”,填写标题(如“档案数字化实操培训”)、讲师、日期和地点,点击提交。系统自动跳转回首页,列表中显示新课程。
  3. 准备学员数据:点击课程列表右侧的“管理考勤”。进入考勤页,此时列表为空。在页面下方的“快速添加学员档案”栏,输入姓名(张三)、部门(档案部)、工号(1001),点击添加。重复此步骤添加李四(工号1002)。
  4. 录入考勤:添加完学员后,在表格中勾选张三的复选框(表示张三出席,李四缺勤),点击“保存考勤结果”。页面提示“考勤数据已保存”。
  5. 数据持久化验证:刷新浏览器页面,确认张三的复选框依然处于勾选状态,证明数据已成功写入 SQLite 数据库。

至此,一个具备课程发布、学员管理及现场考勤功能的档案面授培训管理系统已完全落地。整个系统无需配置复杂的服务器环境,所有数据均存储在本地 training.db 文件中,非常适合部门内部使用或作为技术演示的原型。

微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818