# 水库藻华智能管控一体化平台 V1.0
# 完整代码请下载后查看
import tkinter as tk
from tkinter import ttk, messagebox, simpledialog
import sqlite3
import datetime
import os
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# 数据库初始化
def init_database():
conn = sqlite3.connect('水库藻华管控系统.db')
cursor = conn.cursor()
# 创建监测数据表
cursor.execute('''
CREATE TABLE IF NOT EXISTS 监测数据 (
序号 INTEGER PRIMARY KEY AUTOINCREMENT,
采集时间 TEXT NOT NULL,
监测站点 TEXT NOT NULL,
水温 REAL,
pH值 REAL,
溶解氧 REAL,
总氮 REAL,
总磷 REAL,
叶绿素a REAL,
藻类密度 REAL
)
''')
# 创建风险预警记录表
cursor.execute('''
CREATE TABLE IF NOT EXISTS 风险预警记录 (
序号 INTEGER PRIMARY KEY AUTOINCREMENT,
预警时间 TEXT NOT NULL,
预警等级 TEXT NOT NULL,
爆发区域 TEXT NOT NULL,
风险指数 REAL,
处理状态 TEXT DEFAULT '未处理'
)
''')
# 创建防控方案记录表
cursor.execute('''
CREATE TABLE IF NOT EXISTS 防控方案记录 (
序号 INTEGER PRIMARY KEY AUTOINCREMENT,
生成时间 TEXT NOT NULL,
对应预警等级 TEXT NOT NULL,
对应爆发区域 TEXT NOT NULL,
方案内容 TEXT NOT NULL,
执行状态 TEXT DEFAULT '未执行'
)
''')
# 创建作业装备台账表
cursor.execute('''
CREATE TABLE IF NOT EXISTS 作业装备台账 (
序号 INTEGER PRIMARY KEY AUTOINCREMENT,
设备名称 TEXT NOT NULL,
设备类型 TEXT NOT NULL,
工作状态 TEXT NOT NULL,
投放区域 TEXT NOT NULL,
初始投放时间 TEXT NOT NULL,
最近检修时间 TEXT NOT NULL
)
''')
# 创建治理效果核算记录表
cursor.execute('''
CREATE TABLE IF NOT EXISTS 治理效果核算记录 (
序号 INTEGER PRIMARY KEY AUTOINCREMENT,
核算时间 TEXT NOT NULL,
核算周期 TEXT NOT NULL,
总氮削减率 REAL,
总磷削减率 REAL,
藻类清除率 REAL,
核算报告 TEXT NOT NULL
)
''')
conn.commit()
conn.close()
# 主应用类
class 水库藻华管控系统:
def __init__(self, 主窗口):
self.主窗口 = 主窗口
self.主窗口.title("水库藻华智能管控一体化平台 V1.0")
self.主窗口.geometry("1400x900")
self.主窗口.state('zoomed') # 最大化窗口
# 初始化数据库
init_database()
# 创建选项卡容器
self.选项卡容器 = ttk.Notebook(self.主窗口)
self.选项卡容器.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
# 创建各个模块
self.创建实时监测模块()
self.创建风险预警模块()
self.创建防控方案生成模块()
self.创建装备调度模块()
self.创建治理效果核算模块()
# 更多代码省略...
水文水动力耦合驱动的水库灌区藻华预测与防控系统 V1.0
# 水文水动力耦合驱动的水库灌区藻华预测与防控系统 - 最终兼容版
# 彻底解决pandas 3.0+ fillna方法参数错误和所有已知问题
import tkinter as tk
from tkinter import ttk, filedialog, messagebox
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import roc_curve, auc
from sklearn.model_selection import train_test_split
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
from tensorflow.keras.optimizers import Adam
import warnings
import sys
import traceback
# 配置警告和日志
warnings.filterwarnings('ignore')
sys.stderr = open('error_log.txt', 'w') # 将错误输出到日志文件
# 设置matplotlib后端和中文字体
plt.switch_backend('TkAgg') # 强制使用TkAgg后端
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
class AlgaePredictionSystem:
def __init__(self, root):
self.root = root
self.root.title("水库灌区藻华预测与防控系统 v1.0")
self.root.geometry("1400x900")
self.root.state('zoomed')
# 系统状态变量
self.data = None
self.scaler = MinMaxScaler(feature_range=(0, 1))
self.lstm_model = None
self.coupling_results = None
self.prediction_results = None
self.risk_level = None
# 初始化界面
try:
self.create_widgets()
messagebox.showinfo("成功", "系统初始化完成")
except Exception as e:
messagebox.showerror("初始化错误", f"界面创建失败: {str(e)}\n\n详细错误已保存到error_log.txt")
traceback.print_exc()
def create_widgets(self):
# 创建主标签页
self.notebook = ttk.Notebook(self.root)
self.notebook.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
# 标签页1: 数据管理
self.tab_data = ttk.Frame(self.notebook)
self.notebook.add(self.tab_data, text="数据管理")
self.create_data_tab()
# 标签页2: 耦合模型
self.tab_coupling = ttk.Frame(self.notebook)
self.notebook.add(self.tab_coupling, text="水文-水动力耦合模型")
self.create_coupling_tab()
# 标签页3: 藻华预测
self.tab_prediction = ttk.Frame(self.notebook)
self.notebook.add(self.tab_prediction, text="藻华风险预测")
self.create_prediction_tab()
# 标签页4: 预警与防控
self.tab_warning = ttk.Frame(self.notebook)
self.notebook.add(self.tab_warning, text="预警与防控方案")
self.create_warning_tab()
# 标签页5: 模型迭代
self.tab_iteration = ttk.Frame(self.notebook)
self.notebook.add(self.tab_iteration, text="模型迭代优化")
self.create_iteration_tab()
# 更多代码省略...
# 水域藻类爆发风险预判与防控方案生成系统 V1.0(源代码)
# 导入依赖库,增加异常捕获,友好提示缺失库
try:
import tkinter as tk
from tkinter import ttk, filedialog, messagebox
import numpy as np
import pandas as pd
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
from sklearn.cluster import KMeans
import os
except ImportError as e:
root = tk.Tk()
root.withdraw()
messagebox.showerror("依赖缺失", f"运行缺少必要的库:{str(e)}\n\n请先在CMD中执行安装命令:\npip install numpy pandas matplotlib scikit-learn openpyxl")
exit()
# 全局中文设置
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
# 核心系统类
class AlgaeRiskCore:
def __init__(self):
# 核心配置
self.必填特征列 = ['水温', 'pH值', '溶解氧', '总氮', '总磷']
self.必填坐标列 = ['X坐标', 'Y坐标']
self.标签列 = '风险等级'
self.历史数据 = None
self.实时数据 = None
self.预测结果 = None
self.防控区域 = None
self.装置方案 = None
self.模型 = None
self.聚类中心 = None
# 生成模拟演示数据
def 生成模拟数据(self, 样本数=200, 是历史数据=True):
np.random.seed(42)
数据 = {
'水温': np.random.uniform(10, 35, 样本数),
'pH值': np.random.uniform(6, 10, 样本数),
'溶解氧': np.random.uniform(0, 15, 样本数),
'总氮': np.random.uniform(0.1, 10, 样本数),
'总磷': np.random.uniform(0.01, 1, 样本数),
'X坐标': np.random.uniform(0, 100, 样本数),
'Y坐标': np.random.uniform(0, 100, 样本数)
}
df = pd.DataFrame(数据)
# 自动生成风险等级标签(富营养化核心逻辑)
风险评分 = (df['总氮'] * 2 + df['总磷'] * 20 + (df['水温'] - 25).abs() * -0.5)
df[self.标签列] = pd.cut(风险评分, bins=3, labels=[0, 1, 2]).astype(int)
if 是历史数据:
self.历史数据 = df
else:
self.实时数据 = df
return f"模拟数据生成成功,共{样本数}条记录"
# 更多代码省略...
# 水域藻类防控在线监测与数据管理系统 V1.0
import tkinter as tk
from tkinter import ttk, scrolledtext, messagebox
import sqlite3
import random
from datetime import datetime
# -------------------------- 数据库模块 --------------------------
class DatabaseManager:
def __init__(self):
self.conn = sqlite3.connect('algae_monitor.db', check_same_thread=False)
self.create_table()
def create_table(self):
cursor = self.conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS sensor_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
point_name TEXT NOT NULL,
timestamp TEXT NOT NULL,
water_temp REAL NOT NULL,
ph REAL NOT NULL,
do REAL NOT NULL,
algae REAL NOT NULL
)
''')
self.conn.commit()
def insert_data(self, point_name, t, temp, ph, do, algae):
cursor = self.conn.cursor()
cursor.execute('INSERT INTO sensor_data VALUES (NULL,?,?,?,?,?,?)',
(point_name, t, temp, ph, do, algae))
self.conn.commit()
def get_data_by_point(self, point_name):
cursor = self.conn.cursor()
cursor.execute('SELECT * FROM sensor_data WHERE point_name=? ORDER BY id ASC', (point_name,))
return cursor.fetchall()
# -------------------------- 数据采集与预警 --------------------------
class DataCollector:
@staticmethod
def collect():
return {
"time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"temp": round(25 + random.uniform(-2, 2), 2),
"ph": round(7.5 + random.uniform(-0.5, 0.5), 2),
"do": round(8 + random.uniform(-1, 1), 2),
"algae": round(500 + random.uniform(-200, 800), 2)
}
# 更多代码省略...
# 藻秸协同资源化产品溯源管理系统 V1.0(源代码)
import tkinter as tk
from tkinter import ttk, messagebox, filedialog
import sqlite3
from datetime import datetime
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
import os
# --- 数据库初始化 ---
def init_db():
conn = sqlite3.connect('traceability.db')
c = conn.cursor()
# 1. 原料登记表
c.execute('''CREATE TABLE IF NOT EXISTS raw_material
(id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL,
source TEXT NOT NULL,
quantity REAL NOT NULL,
registrant TEXT NOT NULL,
date TEXT NOT NULL)''')
# 2. 生产加工表
c.execute('''CREATE TABLE IF NOT EXISTS production
(id INTEGER PRIMARY KEY AUTOINCREMENT,
raw_material_id INTEGER NOT NULL,
used_quantity REAL NOT NULL,
product_type TEXT NOT NULL,
product_quantity REAL NOT NULL,
operator TEXT NOT NULL,
date TEXT NOT NULL)''')
# 3. 产品检测表
c.execute('''CREATE TABLE IF NOT EXISTS inspection
(id INTEGER PRIMARY KEY AUTOINCREMENT,
production_id INTEGER NOT NULL,
test_item TEXT NOT NULL,
result TEXT NOT NULL,
inspector TEXT NOT NULL,
date TEXT NOT NULL)''')
# 4. 销售流向表
c.execute('''CREATE TABLE IF NOT EXISTS sales
(id INTEGER PRIMARY KEY AUTOINCREMENT,
production_id INTEGER NOT NULL,
customer TEXT NOT NULL,
quantity REAL NOT NULL,
salesperson TEXT NOT NULL,
date TEXT NOT NULL)''')
conn.commit()
conn.close()
# --- 主应用类 ---
class TraceabilityApp:
def __init__(self, root):
self.root = root
self.root.title("藻秸协同资源化产品溯源管理系统 V1.0")
self.root.geometry("1200x750")
# 全局默认日期(当天)
self.today = datetime.now().strftime("%Y-%m-%d")
# 创建顶部全流程导出栏
self.create_top_export_bar()
# 创建标签页
self.tab_control = ttk.Notebook(root)
self.tab_raw = ttk.Frame(self.tab_control)
self.tab_prod = ttk.Frame(self.tab_control)
self.tab_test = ttk.Frame(self.tab_control)
self.tab_sale = ttk.Frame(self.tab_control)
self.tab_control.add(self.tab_raw, text='原料登记')
self.tab_control.add(self.tab_prod, text='生产加工')
self.tab_control.add(self.tab_test, text='产品检测')
self.tab_control.add(self.tab_sale, text='销售流向')
self.tab_control.pack(expand=1, fill="both", padx=10, pady=5)
# 初始化各页面
self.create_raw_tab()
self.create_prod_tab()
self.create_test_tab()
self.create_sale_tab()
# 初始刷新数据
self.refresh_all_data()
# 更多代码省略...
# 藻类防控装置智能浮力调节控制系统 V1.0
import tkinter as tk
from tkinter import ttk, Frame, Label, Button, Entry, messagebox, scrolledtext
import threading
import time
import random
import csv
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from matplotlib import rcParams
# 设置中文显示
rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei']
rcParams['axes.unicode_minus'] = False
# ====================== 系统核心配置(优化参数) ======================
class SystemConfig:
# 基础参数
TARGET_DEPTH_MIN = 1.0
TARGET_DEPTH_MAX = 2.5
MAX_AIR_VOLUME = 100.0
MIN_AIR_VOLUME = 0.0
PUMP_RATE = 5.0
# PID控制参数(优化后,调节更精准)
KP = 1.2
KI = 0.05
KD = 0.8
# 传感器参数
DEPTH_SENSOR_ACCURACY = 0.05
WATER_LEVEL_SENSOR_ACCURACY = 0.02
# 存储配置
DATA_LOG_PATH = "浮力控制日志.csv"
# 异常阈值(放宽合理范围,避免误报警)
MAX_DEPTH_ERROR = 0.2 # 从0.4改为0.2,精度更高;若仍报警可改0.3
MAX_PUMP_DURATION = 25
# ====================== 传感器模拟模块 ======================
class SensorSimulator:
def __init__(self):
self.current_depth = 2.0 # 初始深度改为目标值,减少初始偏差
self.water_level = 5.0 # 初始水位
self.pressure = 101.3 # 气压
def read_depth(self):
"""读取深度(含传感器噪声)"""
noise = random.uniform(-SystemConfig.DEPTH_SENSOR_ACCURACY,
SystemConfig.DEPTH_SENSOR_ACCURACY)
return max(0, self.current_depth + noise)
# 更多代码省略...
# 秸秆基抑藻材料改性生产智能控制系统 V1.0
import matplotlib
matplotlib.use('TkAgg') # 强制绑定tkinter兼容的GUI后端,解决不渲染问题
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'PingFang SC', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示异常
import tkinter as tk
from tkinter import ttk, messagebox
import sqlite3
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import threading
import time
import random
from datetime import datetime
from collections import defaultdict
# ====================== 数据库初始化模块 ======================
def init_db():
"""初始化数据库表结构"""
conn = sqlite3.connect('straw_algicide_control.db')
c = conn.cursor()
# 工艺参数表
c.execute('''CREATE TABLE IF NOT EXISTS process_params
(id INTEGER PRIMARY KEY AUTOINCREMENT,
process_type TEXT NOT NULL,
temperature REAL NOT NULL,
feed_amount REAL NOT NULL,
duration INTEGER NOT NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP)''')
# 生产记录表
c.execute('''CREATE TABLE IF NOT EXISTS production_records
(id INTEGER PRIMARY KEY AUTOINCREMENT,
process_type TEXT NOT NULL,
start_time TIMESTAMP NOT NULL,
end_time TIMESTAMP,
temperature_log TEXT,
feed_status TEXT,
duration_actual INTEGER,
yield_rate REAL,
status TEXT NOT NULL)''')
# 良品率统计表
c.execute('''CREATE TABLE IF NOT EXISTS yield_stats
(id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
process_type TEXT NOT NULL,
total_count INTEGER DEFAULT 0,
good_count INTEGER DEFAULT 0,
yield_rate REAL DEFAULT 0)''')
conn.commit()
conn.close()
# 更多代码省略...