第一步:环境准备与依赖安装
在开始构建系统之前,必须确保本地开发环境已经配置妥当。本系统基于Python轻量级Web框架Flask开发,无需配置复杂的服务器环境,适合快速落地。请确保你的系统中已安装Python 3.8及以上版本。
打开终端(Windows下为CMD或PowerShell),执行以下命令创建项目目录并进入:
```bash
mkdir birth_cert_system
cd birth_cert_system
```
接下来,创建一个虚拟环境以隔离项目依赖,避免版本冲突。执行以下命令:
```bash
python -m venv venv
```
激活虚拟环境。Windows系统执行:
```bash
venv\Scripts\activate
``>
Linux或macOS系统执行:
```bash
source venv/bin/activate
```
安装核心依赖包Flask(Web框架)和Flask-SQLAlchemy(数据库ORM工具)。请直接复制以下命令执行:
```bash
pip install flask flask-sqlalchemy
```
第二步:数据库模型设计与配置
出生证明档案包含关键字段,必须确保数据结构严谨。我们将使用SQLite作为数据库,因为它无需安装数据库服务,以单个文件形式存储,非常适合中小规模档案管理。在项目根目录下创建app.py文件,并写入以下完整代码:
```python
import os
from flask import Flask, render_template, request, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
初始化应用
app = Flask(__name__)
app.config['SECRET_KEY'] = 'dev-secret-key-change-in-prod'
配置数据库路径,基于实例文件夹
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///birth_records.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
定义出生证明档案数据模型
class BirthRecord(db.Model):
id = db.Column(db.Integer, primary_key=True)
child_name = db.Column(db.String(50), nullable=False)
gender = db.Column(db.String(10), nullable=False)
birth_date = db.Column(db.Date, nullable=False)
birth_weight = db.Column(db.Float) 体重kg
mother_name = db.Column(db.String(50), nullable=False)
mother_id = db.Column(db.String(18), nullable=False) 身份证号
father_name = db.Column(db.String(50), nullable=False)
father_id = db.Column(db.String(18), nullable=False)
hospital_name = db.Column(db.String(100), nullable=False)
doctor_name = db.Column(db.String(50))
created_at = db.Column(db.DateTime, default=datetime.now)
def __repr__(self):
return f'
'
```
上述代码定义了BirthRecord类,映射到数据库中的birth_record表。其中包含了新生儿姓名、性别、出生日期、体重、父母信息及医院信息等核心字段。请确保app.py文件保存无误。
第三步:初始化数据库与路由逻辑实现
继续在app.py文件中追加以下代码,用于初始化数据库表、处理数据查询、新增和删除请求。这部分代码是系统的核心逻辑层:
```python
路由:首页,展示所有档案列表
@app.route('/')
def index():
按创建时间倒序排列查询所有记录
records = BirthRecord.query.order_by(BirthRecord.created_at.desc()).all()
return render_template('index.html', records=records)
路由:新增档案页面
@app.route('/add', methods=['GET', 'POST'])
def add_record():
if request.method == 'POST':
try:
获取表单数据并进行基础转换
birth_date_str = request.form['birth_date']
birth_date = datetime.strptime(birth_date_str, '%Y-%m-%d').date()
new_record = BirthRecord(
child_name=request.form['child_name'],
gender=request.form['gender'],
birth_date=birth_date,
birth_weight=float(request.form['birth_weight']) if request.form['birth_weight'] else None,
mother_name=request.form['mother_name'],
mother_id=request.form['mother_id'],
father_name=request.form['father_name'],
father_id=request.form['father_id'],
hospital_name=request.form['hospital_name'],
doctor_name=request.form['doctor_name']
)
db.session.add(new_record)
db.session.commit()
flash('档案录入成功!', 'success')
return redirect(url_for('index'))
except Exception as e:
db.session.rollback()
flash(f'录入失败,请检查数据格式。错误信息:{str(e)}', 'error')
return render_template('add.html')
路由:删除档案
@app.route('/delete/')
def delete_record(id):
record = BirthRecord.query.get_or_404(id)
db.session.delete(record)
db.session.commit()
flash('档案已删除。', 'info')
return redirect(url_for('index'))
if __name__ == '__main__':
确保在运行前创建所有表结构
with app.app_context():
db.create_all()
app.run(debug=True)
```

请注意,db.create_all()被放在了app_context中执行,这是Flask 2.3+版本的强制要求,用于确保数据库表在启动时自动创建。
第四步:前端页面模板开发
为了展示数据和录入表单,我们需要创建HTML模板。在项目根目录下创建一个名为templates的文件夹。Flask会自动在此目录下查找模板文件。
1. 创建基础布局模板
在templates文件夹下创建base.html,用于统一管理页面样式和导航栏:
```html
出生证明档案管理系统
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
{{ message }}
{% endfor %}
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
```
2. 创建列表展示页
在templates文件夹下创建index.html,用于展示所有已录入的出生证明档案:
```html
{% extends "base.html" %}
{% block content %}
档案列表
{% if records %}
| 新生儿姓名 |
| 出生日期 |
母亲姓名 |
父亲姓名 |
签发医院 |
操作 |
{% for record in records %}
| {{ record.child_name }} |
{{ record.gender }} |
{{ record.birth_date }} |
{{ record.mother_name }} |
{{ record.father_name }} |
{{ record.hospital_name }} |
删除
|
{% endfor %}
{% else %}
暂无档案数据,请点击上方“录入新档案”添加。
{% endif %}
{% endblock %}
```
3. 创建录入表单页
在templates文件夹下创建add.html,用于提供数据录入界面:
```html
{% extends "base.html" %}
{% block content %}
录入新档案
{% endblock %}
```
第五步:启动系统与功能验证
所有文件代码准备就绪后,即可启动系统。确保终端依然处于虚拟环境激活状态,且位于项目根目录下。执行以下命令启动Flask开发服务器:
```bash
python app.py
```
当终端显示Running on http://127.0.0.1:5000时,说明启动成功。打开浏览器,访问上述地址。
验证步骤如下:
- 初始化检查:首次访问时,系统会自动在项目目录下生成
instance文件夹,并在其中创建birth_records.db数据库文件。页面应显示“暂无档案数据”。
- 录入功能测试:点击导航栏“录入新档案”,填写表单信息。注意出生日期必须选择,父母姓名和身份证号为必填项。点击提交后,系统应跳转回首页并提示“档案录入成功”。
- 列表展示测试:首页表格应正确显示刚才录入的信息,包括姓名、性别、日期等,且格式整齐。
- 删除功能测试:点击列表右侧的“删除”按钮,确认弹窗后,该条记录应从页面和数据库中移除,并提示“档案已删除”。
至此,一个功能完整、数据持久化的出生证明档案管理系统已完全落地。该系统具备基础的增删查(CRUD)功能,且界面简洁,易于根据后续需求进行扩展,例如添加PDF文件上传或用户登录鉴权功能。