一、环境准备与工具安装
在开始构建档案信息化培训报名系统之前,我们需要准备好开发环境。本系统采用 Python 语言编写,利用 Flask 轻量级框架作为后端,SQLite 作为数据库,无需配置复杂的服务器环境,适合快速落地。
1. 安装 Python
请确保你的电脑上安装了 Python 3.8 或更高版本。如果尚未安装,请访问 Python 官网下载对应操作系统的安装包:
下载地址:https://www.python.org/downloads/
安装时,务必勾选 "Add Python to PATH" 选项,以便在命令行中直接使用 Python 命令。
2. 安装 Flask 框架
打开终端(Windows 下为 CMD 或 PowerShell,Mac 下为 Terminal),输入以下命令安装 Flask 及其依赖:
```bash
pip install flask
```
安装完成后,可以通过命令 python -m flask --version 验证是否安装成功。
二、项目目录结构设计
为了保持代码的清晰与可维护性,请在本地创建一个名为 archive_training_system 的文件夹,并在其中按照以下结构创建文件和目录:
```text
archive_training_system/
│
├── app.py 后端核心逻辑文件
├── init_db.py 数据库初始化脚本
└── templates/ 前端模板文件夹(必须命名为 templates)
├── index.html 学员报名页面
└── admin.html 管理员查看数据页面
```
三、数据库设计与初始化
档案信息化培训报名需要收集学员的关键信息。我们将使用 SQLite 数据库,创建一个名为 training.db 的数据文件,其中包含一张 registrations 表。
1. 创建初始化脚本 init_db.py
在项目根目录下创建 init_db.py 文件,并写入以下代码。该脚本将自动生成数据库表结构,包含学员姓名、单位、身份证号、联系电话、培训课程及报名时间。
```python
import sqlite3
def init_db():
连接到 SQLite 数据库文件(如果不存在会自动创建)
conn = sqlite3.connect('training.db')
cursor = conn.cursor()
创建报名表
cursor.execute('''
CREATE TABLE IF NOT EXISTS registrations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
unit TEXT NOT NULL,
id_card TEXT NOT NULL,
phone TEXT NOT NULL,
course_type TEXT NOT NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
提交事务并关闭连接
conn.commit()
conn.close()
print("数据库初始化完成,数据库文件为 training.db")
if __name__ == '__main__':
init_db()
```
2. 执行初始化
在终端中进入项目目录,执行以下命令生成数据库:
```bash
python init_db.py
```
执行成功后,目录下会出现一个 training.db 文件。
四、后端核心逻辑开发
后端负责处理前端的请求,包括展示页面、接收报名数据以及将数据写入数据库。我们将所有逻辑封装在 app.py 中。
编写 app.py 文件
请将以下完整代码复制到 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消息提示
数据库连接配置
DATABASE = 'training.db'
def get_db_connection():
conn = sqlite3.connect(DATABASE)
conn.row_factory = sqlite3.Row 允许通过列名访问数据
return conn
首页:展示报名表单
@app.route('/')
def index():
定义可选的培训课程列表
courses = ["档案数字化基础实操", "电子档案管理规范", "档案信息安全保密", "档案管理系统高级应用"]
return render_template('index.html', courses=courses)
处理报名提交
@app.route('/submit', methods=['POST'])
def submit():
name = request.form.get('name')
unit = request.form.get('unit')
id_card = request.form.get('id_card')
phone = request.form.get('phone')
course_type = request.form.get('course_type')
基础数据校验
if not all([name, unit, id_card, phone, course_type]):
flash('所有字段均为必填项,请完整填写信息。', 'error')
return redirect(url_for('index'))
简单的身份证号长度校验(示例)
if len(id_card) != 18:
flash('身份证号格式不正确,请输入18位身份证号。', 'error')
return redirect(url_for('index'))
try:
conn = get_db_connection()
cursor = conn.cursor()
cursor.execute('INSERT INTO registrations (name, unit, id_card, phone, course_type) VALUES (?, ?, ?, ?, ?)',
(name, unit, id_card, phone, course_type))
conn.commit()
conn.close()
flash('报名成功!请等待审核。', 'success')
except Exception as e:
flash(f'报名失败,系统错误:{str(e)}', 'error')
return redirect(url_for('index'))
管理员页面:查看报名列表
@app.route('/admin')
def admin():
conn = get_db_connection()
按时间倒序查询所有报名数据
registrations = conn.execute('SELECT FROM registrations ORDER BY create_time DESC').fetchall()
conn.close()
return render_template('admin.html', registrations=registrations)
if __name__ == '__main__':
启动服务,开启调试模式方便开发
app.run(debug=True, port=5000)
```
五、前端页面开发
前端部分包含两个 HTML 文件。我们将使用 Bootstrap 5(通过 CDN 引入)来快速构建美观、响应式的界面,无需编写复杂的 CSS。
1. 学员报名页面
在 templates 文件夹下创建 index.html。该页面包含一个用于输入信息的表单,并使用 Flask 模板引擎渲染后端传递的错误或成功提示。
```html
档案信息化培训报名
档案信息化培训在线报名
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
{{ message }}
{% endfor %}
{% endif %}
{% endwith %}
```
2. 管理员列表页面
在 templates 文件夹下创建 admin.html。该页面以表格形式展示所有提交的报名数据。
```html
报名管理后台
档案信息化培训报名名单
ID
姓名
工作单位
身份证号
联系电话
培训课程
报名时间
{% if registrations %}
{% for reg in registrations %}
{{ reg.id }}
{{ reg.name }}
{{ reg.unit }}
{{ reg.id_card }}
{{ reg.phone }}
{{ reg.course_type }}
{{ reg.create_time }}
{% endfor %}
{% else %}
暂无报名数据
{% endif %}
返回报名首页
```
六、系统运行与测试
至此,所有代码已编写完成。现在启动系统并进行实际操作测试。
1. 启动服务
在终端确保当前目录为项目根目录,执行以下命令启动 Flask 服务器:
```bash
python app.py
```
当终端显示 Running on http://127.0.0.1:5000 时,说明启动成功。
2. 学员报名测试
打开浏览器,访问 http://127.0.0.1:5000 。你将看到报名表单。
输入测试数据:姓名“张三”,单位“某某档案馆”,身份证号“110101199001011234”,电话“13800138000”,课程选择“档案数字化基础实操”。
点击提交报名 。
页面应刷新并显示绿色的“报名成功!请等待审核。” 提示。
3. 管理员数据查看测试
在浏览器地址栏输入 http://127.0.0.1:5000/admin 。
你将看到一个包含刚才提交数据的表格。
检查姓名、身份证号、课程等信息是否准确无误。
检查报名时间是否自动生成。
4. 异常情况测试
回到首页,尝试不填写 某些必填项直接提交,应出现红色错误提示。
尝试输入非18位身份证号,系统应拦截并提示格式错误。
通过以上步骤,你已经成功搭建了一个功能完整、包含数据校验和管理后台的档案信息化培训报名系统。该系统可以直接部署在内网环境中供单位内部使用,或通过 PythonAnywhere 等平台部署到公网。