本指南使用Python+Flask+SQLite,无需复杂服务器、数据库环境,Windows/Mac/Linux通用。
在桌面新建文件夹命名为「infection_archive_system」,内部严格按以下结构创建文件/文件夹:
打开任意纯文本编辑器(Windows记事本/VS Code,Mac TextEdit切换到「制作纯文本」模式),复制以下代码到app.py并保存:
``` from flask import Flask, render_template, request, redirect, url_for import sqlite3 app = Flask(__name__) 配置数据库路径 DATABASE = 'database.db' 初始化数据库(自动建表) def init_db(): conn = sqlite3.connect(DATABASE) cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS archives ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, id_card TEXT NOT NULL UNIQUE, infection_type TEXT NOT NULL, diagnosis_date TEXT NOT NULL, status TEXT NOT NULL, remark TEXT ) ''') conn.commit() conn.close() 获取数据库连接 def get_db_connection(): conn = sqlite3.connect(DATABASE) conn.row_factory = sqlite3.Row return conn 首页:展示所有档案 @app.route('/') def index(): conn = get_db_connection() archives = conn.execute('SELECT FROM archives ORDER BY diagnosis_date DESC').fetchall() conn.close() return render_template('index.html', archives=archives) 新增档案页 @app.route('/add', methods=('GET', 'POST')) def add(): if request.method == 'POST': name = request.form['name'] id_card = request.form['id_card'] infection_type = request.form['infection_type'] diagnosis_date = request.form['diagnosis_date'] status = request.form['status'] remark = request.form['remark'] conn = get_db_connection() try: conn.execute(''' INSERT INTO archives (name, id_card, infection_type, diagnosis_date, status, remark) VALUES (?, ?, ?, ?, ?, ?) ''', (name, id_card, infection_type, diagnosis_date, status, remark)) conn.commit() conn.close() return redirect(url_for('index')) except sqlite3.IntegrityError: conn.close() return render_template('add.html', error='身份证号已存在!') return render_template('add.html') 删除档案 @app.route('/delete/
统一导航栏和页面样式,复制以下代码到templates/base.html:
```继承base.html,展示所有数据并提供新增/删除按钮,复制以下代码:
``` {% extends "base.html" %} {% block title %}档案列表{% endblock %} {% block content %} 传染病防治档案列表 新增档案 {% if archives %}| 序号 | 姓名 | 身份证号 | 传染病类型 | 诊断日期 | 当前状态 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ loop.index }} | {{ archive['name'] }} | {{ archive['id_card'] }} | {{ archive['infection_type'] }} | {{ archive['diagnosis_date'] }} | {{ archive['status'] }} | {{ archive['remark'] or '无' }} |
暂无档案数据
{% endif %} {% endblock %} ```继承base.html,提供表单并校验身份证唯一性,复制以下代码:
``` {% extends "base.html" %} {% block title %}新增档案{% endblock %} {% block content %} 新增传染病防治档案 {% if error %}直接复制「infection_archive_system」文件夹里的「database.db」文件到U盘/网盘即可,恢复时替换原文件夹的同名文件重启服务。