松原市网站建设_网站建设公司_无障碍设计_seo优化
2026/3/2 3:37:05 网站建设 项目流程

设计一个 基于 Python 的个人疫苗接种记录管理与提醒系统,满足你的要求,并特别考虑老人和小孩的疫苗管理需求。

1. 实际应用场景描述

场景:

家庭中有老人、小孩和成人,需要管理多种疫苗的接种记录,包括:

- 新冠疫苗(多针次,有加强针)

- 儿童免疫规划疫苗(如百白破、麻腮风等)

- 流感疫苗(每年接种)

- 老人肺炎疫苗、带状疱疹疫苗等

痛点:

- 疫苗种类多,容易混淆

- 接种时间记录分散,容易遗忘

- 加强针时间需要精确计算

- 老人和小孩的疫苗计划不同,管理复杂

- 错过接种时间可能影响健康

解决方案:

开发一个 疫苗接种记录与提醒工具,支持:

- 录入接种记录(疫苗种类、接种时间、剂次)

- 自动识别疫苗类型

- 计算并提醒后续接种时间

- 按人群(老人/小孩/成人)分类管理

- 生成接种计划表

2. 核心逻辑讲解

1. 数据录入

- 姓名、年龄、关系(老人/小孩/成人)

- 疫苗名称、接种日期、剂次

2. 疫苗种类自动识别

- 通过关键词匹配(如“新冠”、“百白破”、“流感”)

3. 接种计划计算

- 根据疫苗类型和剂次,计算下一针时间

- 加强针根据上次接种时间 + 间隔天数

4. 提醒功能

- 列出近期需要接种的疫苗

5. 分类管理

- 按人群分组显示记录

6. 数据存储

- SQLite 本地数据库

7. 输出计划

- 打印接种计划表

3. 代码模块化实现

目录结构

vaccine_manager/

├── main.py

├── database.py

├── vaccine_classifier.py

├── reminder.py

└── README.md

"database.py" - 数据库操作

import sqlite3

from datetime import datetime

DB_NAME = "vaccine_records.db"

def init_db():

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute('''CREATE TABLE IF NOT EXISTS records

(id INTEGER PRIMARY KEY AUTOINCREMENT,

name TEXT,

age INTEGER,

relation TEXT, -- 老人/小孩/成人

vaccine_name TEXT,

dose_number INTEGER,

date TEXT)''')

conn.commit()

conn.close()

def add_record(name, age, relation, vaccine_name, dose_number, date):

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute("INSERT INTO records (name, age, relation, vaccine_name, dose_number, date) VALUES (?, ?, ?, ?, ?, ?)",

(name, age, relation, vaccine_name, dose_number, date))

conn.commit()

conn.close()

def get_all_records():

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute("SELECT * FROM records")

rows = c.fetchall()

conn.close()

return rows

"vaccine_classifier.py" - 疫苗分类与计划计算

from datetime import datetime, timedelta

VACCINE_RULES = {

"新冠疫苗": {"interval_days": 180, "max_dose": 3},

"百白破": {"interval_days": 60, "max_dose": 4},

"麻腮风": {"interval_days": 90, "max_dose": 2},

"流感": {"interval_days": 365, "max_dose": 1},

"肺炎": {"interval_days": 365*5, "max_dose": 1},

"带状疱疹": {"interval_days": 365*10, "max_dose": 1}

}

def classify_vaccine(name):

for key in VACCINE_RULES:

if key in name:

return key

return "其他"

def next_due_date(last_date_str, vaccine_type, current_dose):

rules = VACCINE_RULES.get(vaccine_type, {"interval_days": 365, "max_dose": 1})

if current_dose >= rules["max_dose"]:

return None

last_date = datetime.strptime(last_date_str, "%Y-%m-%d")

return (last_date + timedelta(days=rules["interval_days"])).strftime("%Y-%m-%d")

"reminder.py" - 提醒功能

from datetime import datetime

def check_upcoming_vaccines(records):

today = datetime.today()

upcoming = []

for r in records:

vaccine_type = classify_vaccine(r[4])

next_date = next_due_date(r[6], vaccine_type, r[5])

if next_date:

next_dt = datetime.strptime(next_date, "%Y-%m-%d")

if 0 <= (next_dt - today).days <= 30:

upcoming.append({

"name": r[1],

"relation": r[3],

"vaccine": r[4],

"next_date": next_date

})

return upcoming

"main.py" - 主程序

from database import init_db, add_record, get_all_records

from vaccine_classifier import classify_vaccine, next_due_date

from reminder import check_upcoming_vaccines

def main():

init_db()

while True:

print("\n1. 添加接种记录\n2. 查看所有记录\n3. 查看近期需接种\n4. 退出")

choice = input("选择操作: ")

if choice == "1":

name = input("姓名: ")

age = int(input("年龄: "))

relation = input("关系(老人/小孩/成人): ")

vaccine = input("疫苗名称: ")

dose = int(input("剂次: "))

date = input("接种日期(YYYY-MM-DD): ")

add_record(name, age, relation, vaccine, dose, date)

print("记录已添加")

elif choice == "2":

records = get_all_records()

for r in records:

print(f"{r[1]}({r[3]}) - {r[4]} 第{r[5]}针 {r[6]}")

elif choice == "3":

records = get_all_records()

upcoming = check_upcoming_vaccines(records)

if not upcoming:

print("近期无需接种")

else:

print("近期需接种:")

for u in upcoming:

print(f"{u['name']}({u['relation']}) - {u['vaccine']} 预计 {u['next_date']}")

elif choice == "4":

break

else:

print("无效选择")

if __name__ == "__main__":

main()

4. README.md

# 疫苗接种记录与提醒系统 Vaccine Manager

一个基于 Python 的工具,录入个人疫苗接种记录,自动标注疫苗种类,计算并提醒后续接种时间,适配老人、小孩和成人。

## 功能

- 录入接种记录

- 自动识别疫苗类型

- 计算下一针时间

- 提醒近期需接种的疫苗

- 按人群分类管理

## 使用方法

bash

python main.py

## 数据表结构

- name: 姓名

- age: 年龄

- relation: 关系(老人/小孩/成人)

- vaccine_name: 疫苗名称

- dose_number: 剂次

- date: 接种日期

5. 使用说明

1. 运行

"main.py"

2. 选择

"1" 添加接种记录

3. 选择

"2" 查看所有记录

4. 选择

"3" 查看近期需接种的疫苗

5. 数据保存在

"vaccine_records.db" 中

6. 核心知识点卡片

知识点 说明

SQLite 轻量级数据库,适合本地存储

日期计算

"datetime" 与

"timedelta" 计算间隔

关键词匹配 识别疫苗类型

模块化设计 分离数据库、逻辑、提醒功能

用户分类 按老人/小孩/成人管理

7. 总结

本项目通过 记录录入 → 疫苗分类 → 时间计算 → 提醒 的流程,实现了家庭疫苗管理的自动化,特别适合:

- 老人:长期疫苗计划(肺炎、带状疱疹)

- 小孩:免疫规划疫苗多剂次管理

- 成人:新冠、流感等年度疫苗

后续可扩展:

- 增加图形界面(Tkinter/PyQt)

- 接入短信/邮件提醒

- 支持多用户家庭管理

- 导出接种证明 PDF

如果你需要,还可以增加图形界面版本,让老人和小孩也能轻松使用,并支持日历视图显示接种计划。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询