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

零基础搭建畜牧部门档案管理系统的实操教程

发布时间:2026年08月21日 00:15:27 浏览量:0

技术选型与环境准备

为了确保开发过程零门槛且系统运行稳定,本指南采用 Python 作为开发语言,配合 Streamlit 框架进行快速 Web 开发,并使用 SQLite 作为本地数据库。这种组合无需配置复杂的服务器环境,安装 Python 后即可直接运行,非常适合部门内部档案管理。

步骤一:安装 Python 环境

如果你的电脑尚未安装 Python,请访问 Python 官网下载安装包。建议下载 3.9 或 3.10 版本(稳定且兼容性好)。下载地址如下:

https://www.python.org/downloads/

安装时,务必勾选 "Add Python to PATH" 选项,这将允许我们在命令行中直接使用 Python 命令。

步骤二:安装必要依赖库

打开命令行工具(Windows 按 Win+R 输入 cmd 回车),依次执行以下命令安装 Streamlit 和 Pandas(用于数据处理):

pip install streamlit pandas

安装完成后,输入 streamlit hello,如果浏览器自动弹出页面,说明环境配置成功。

项目目录结构创建

在 D 盘或任意位置新建一个文件夹,命名为 livestock_system。进入该文件夹,新建一个空白的文本文件,并将其重命名为 app.py。这个文件将包含我们所有的后端逻辑和前端页面代码。

数据库初始化逻辑编写

我们使用 SQLite 内置数据库,无需额外安装软件。在 app.py 文件的开头,我们需要编写代码来自动创建数据库表结构。这个表将存储牲畜的核心档案信息。

请将以下代码完整复制到 app.py 文件中:

```python

import streamlit as st

import sqlite3

import pandas as pd

import os

数据库文件名

DB_FILE = "livestock_data.db"

初始化数据库连接

def get_connection():

conn = sqlite3.connect(DB_FILE)

return conn

初始化表结构

def init_db():

conn = get_connection()

cursor = conn.cursor()

cursor.execute('''

CREATE TABLE IF NOT EXISTS livestock (

id INTEGER PRIMARY KEY AUTOINCREMENT,

ear_tag TEXT NOT NULL UNIQUE,

breed TEXT NOT NULL,

gender TEXT NOT NULL,

birth_date DATE,

entry_date DATE,

health_status TEXT,

location TEXT

)

''')

conn.commit()

conn.close()

```

这段代码定义了一个名为 livestock 的表,包含耳标号(唯一标识)、品种、性别、出生日期、入栏日期、健康状态和所在栏位等关键字段。

档案录入功能实现

接下来实现档案录入界面。Streamlit 提供了表单组件,非常适合数据录入。我们在 app.py 中继续添加如下代码,构建录入页面和数据处理逻辑:

```python

添加档案函数

def add_record(data):

conn = get_connection()

cursor = conn.cursor()

try:

cursor.execute('''

INSERT INTO livestock (ear_tag, breed, gender, birth_date, entry_date, health_status, location)

VALUES (?, ?, ?, ?, ?, ?, ?)

''', (data['ear_tag'], data['breed'], data['gender'], data['birth_date'], data['entry_date'], data['health_status'], data['location']))

conn.commit()

return True

except sqlite3.IntegrityError:

return False

finally:

conn.close()

页面配置

st.set_page_config(page_title="畜牧部门档案管理系统", layout="wide")

init_db()

侧边栏导航

st.sidebar.title("功能导航")

page = st.sidebar.radio("选择操作", ["档案录入", "档案查询与管理", "数据导出"])

if page == "档案录入":

st.header("新增牲畜档案")

with st.form("entry_form"):

col1, col2 = st.columns(2)

with col1:

ear_tag = st.text_input("耳标号 (唯一标识)", max_chars=20)

breed = st.text_input("品种 (如: 杜洛克)", max_chars=20)

gender = st.selectbox("性别", ["公", "母"])

birth_date = st.date_input("出生日期")

with col2:

零基础搭建畜牧部门档案管理系统的实操教程

entry_date = st.date_input("入栏日期")

health_status = st.selectbox("健康状态", ["健康", "观察中", "患病", "隔离"])

location = st.text_input("所在栏位 (如: 1号舍-A区)", max_chars=20)

submitted = st.form_submit_button("保存档案")

if submitted:

if not ear_tag or not breed:

st.error("耳标号和品种为必填项!")

else:

record_data = {

'ear_tag': ear_tag, 'breed': breed, 'gender': gender,

'birth_date': str(birth_date), 'entry_date': str(entry_date),

'health_status': health_status, 'location': location

}

if add_record(record_data):

st.success("档案录入成功!")

else:

st.error("录入失败:该耳标号已存在!")

```

这部分代码利用双列布局优化了页面空间,并对必填项进行了校验。特别是耳标号,我们设置了数据库层面的唯一约束,防止重复录入。

档案查询与管理功能实现

档案管理不仅需要录入,还需要查询和删除。我们在 app.py 中继续追加“档案查询与管理”页面的代码:

```python

elif page == "档案查询与管理":

st.header("档案查询与管理")

搜索框

search_term = st.text_input("输入耳标号或品种进行搜索", "")

conn = get_connection()

查询逻辑

if search_term:

query = "SELECT FROM livestock WHERE ear_tag LIKE ? OR breed LIKE ?"

df = pd.read_sql(query, conn, params=(f'%{search_term}%', f'%{search_term}%'))

else:

query = "SELECT FROM livestock ORDER BY id DESC"

df = pd.read_sql(query, conn)

conn.close()

if not df.empty:

st.dataframe(df, use_container_width=True)

删除功能区域

st.subheader("档案删除操作")

with st.expander("点击展开删除功能"):

del_id = st.number_input("输入要删除的档案 ID (见上方表格第一列)", min_value=1, step=1)

if st.button("确认删除", type="primary"):

conn = get_connection()

cursor = conn.cursor()

cursor.execute("DELETE FROM livestock WHERE id = ?", (del_id,))

conn.commit()

conn.close()

st.warning(f"ID 为 {del_id} 的档案已删除,请刷新页面查看。")

st.rerun()

else:

st.info("未找到相关档案记录。")

```

这里使用了 Pandas 的 read_sql 功能直接将查询结果转换为 DataFrame 并在网页上渲染为表格。删除功能被折叠在“展开删除功能”区域中,以防止误操作。

数据导出功能实现

为了方便部门进行报表汇总,我们添加一个将数据导出为 CSV 文件的功能。继续在 app.py 追加代码:

```python

elif page == "数据导出":

st.header("数据导出")

conn = get_connection()

df = pd.read_sql("SELECT FROM livestock ORDER BY id DESC", conn)

conn.close()

if not df.empty:

csv = df.to_csv(index=False).encode('utf-8-sig')

st.download_button(

label="下载完整档案 CSV",

data=csv,

file_name='livestock_records.csv',

mime='text/csv',

)

st.info("点击上方按钮即可下载当前所有档案数据。")

else:

st.warning("数据库暂无数据可导出。")

```

此功能利用 to_csv 生成数据流,并通过 Streamlit 的下载组件触发浏览器下载,生成的 CSV 文件可直接用 Excel 打开。

系统启动与运行

代码编写完毕后,保存 app.py 文件。回到命令行工具,进入项目所在目录,执行以下启动命令:

streamlit run app.py

命令执行后,系统会自动启动本地 Web 服务,并默认使用浏览器打开 http://localhost:8501

操作要点:

至此,一个包含增删改查(CRUD)核心功能的畜牧部门档案管理系统已完全落地。所有数据均保存在项目目录下的 livestock_data.db 文件中,备份时只需复制该文件即可。

松原档案管理软件,选对系统让工作轻松一半
松原档案管理软件,选对系统让工作轻松一半
说实话,很多单位搞档案管理,那叫一个头疼。纸质文件堆成山,找个去年的合同得翻半天,领导急着要的时候,恨不得把办公室给拆了。这事儿吧,真不是人不够勤快,是方法太原始了。你有没有发现,一旦上了合适的档案管...
2026年08月21日 00:15:27
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818