Skip to content

moran1024a/WaterQualitySystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WaterQualitySystem(海水养殖水质数据分析系统)

本项目为 C11 多文件工程,实现海水养殖水质数据的读取、清洗、查询、统计、预警、预测、报告输出、登录权限控制和备份恢复。

编译与运行

make gcc
./WaterQualitySystem

清理编译产物:

make clean

默认账户

角色 用户名 密码 权限
管理员 admin 123456 全部功能
访客 guest guest 仅查看数据概览和统计分析报告

系统支持管理员创建扩展用户。扩展用户保存到 data/auth/users.dat,默认账户不写入该文件。管理员可导出用户列表到 output/users_export.csv

目录结构

WaterQualitySystem/
├── include/          # 头文件、结构体、枚举、函数声明
├── src/              # 各功能模块实现
├── data/             # 默认CSV数据与用户数据目录
├── output/
│   ├── clean/        # 清洗后的CSV与二进制数据
│   └── reports/      # 数据概览、统计、预警、预测报告
├── backups/          # 数据备份文件
├── Makefile
└── README.md

默认路径

类型 路径
原始数据 data/data_modify.csv
清洗CSV output/clean/clean_data.csv
清洗二进制 output/clean/clean_data.bin
数据概览报告 output/reports/overview.txt
统计分析报告 output/reports/statistics.txt
预警报告 output/reports/warning.txt
预测报告 output/reports/prediction.txt
备份目录 backups/

功能模块

1. 数据基础操作

  • 动态数组存储水质时间序列数据。
  • CSV读取自动跳过表头,支持缺失值识别、格式错误处理和内存失败处理。
  • 支持清洗数据保存为CSV和二进制文件。
  • 支持二进制顺序读取、随机读取和CSV/二进制存储性能对比。
  • 支持分页浏览,每页15条,并可下一页、上一页、跳转页。
  • 支持按任意参数范围筛选。
  • 支持按任意参数升序或降序排序。
  • 支持单条修改,修改前校验合理范围,修改前自动备份,修改后可选择保存。
  • 支持单条删除和按范围批量删除,删除前显示影响数量、确认并自动备份。

2. 数据预处理

  • 异常值检测范围:水温、盐度、pH、DO、降水量、气温均按任务书规定上下限判断。
  • 单条记录异常字段数大于等于3个时删除整条记录。
  • 单条记录异常字段数小于3个时将异常值转为缺失值,再用均值逼近法填充。
  • 缺失值支持空字段、NaN/nan-999-9999
  • 均值逼近法默认取前10个和后10个有效值;边界不足时使用单侧有效均值,两侧均无有效值时使用全集均值。
  • 对 Temp、DO、pH、Salinity 执行移动平均滤波。
  • 报告中输出窗口3、5、7、9、11的滤波前后标准差变化,并给出最佳窗口建议。
  • 默认清洗输出使用窗口5。

3. 统计分析与预警

  • 计算6个参数的均值、最大值、最小值、标准差。
  • 计算完整6×6 Pearson相关系数矩阵。
  • 输出最强正相关、最强负相关,以及 Temp-DO、pH-DO、Temp-Air_temp、Temp-Salinity 的重点相关性。
  • 按时间序列规则从 2025-01-01 12:00 起,每5分钟推算记录时间。
  • 凌晨缺氧预警:每天03:00至05:00统计DO均值,低于4.0触发亚缺氧预警,低于3.0触发严重缺氧预警。
  • 盐度突变预警:检测1小时下降超过2 PSU、24小时累计下降超过5 PSU。
  • 预警报告包含预警时间、类型、说明和处理建议。

4. 预测分析

  • 使用单因素线性回归建立 y = a*x + b 模型。
  • 默认重点模型为 Air_temp -> DO
  • 使用决定系数 R² 评估拟合效果。
  • 使用留出法:前80%为训练集,后20%为测试集,计算RMSE。
  • 支持比较 Air_temp -> DOTemp -> DOpH -> DOSalinity -> DO 的R²和RMSE。
  • 预测报告包含模型参数、R²、RMSE、最佳单因子和线性回归局限性分析。

5. 登录、权限与菜单

  • 程序启动后先登录,最多允许3次失败尝试。
  • 管理员可访问全部功能。
  • 访客仅能查看数据概览和统计分析报告。
  • 主菜单和业务执行层均进行权限校验。
  • 菜单支持循环执行,子菜单可返回主菜单,退出时需要确认。
  • 未加载数据时访问依赖数据的功能会提示错误。

6. 备份与恢复

  • 支持手动备份和修改、删除、恢复前自动备份。
  • 备份文件名包含日期、时间和序号,避免覆盖旧备份。
  • 恢复时会列出可用备份,恢复前需要确认。
  • 恢复前自动备份当前内存数据。
  • 恢复文件会校验CSV表头和列数,恢复失败时当前数据保持不变。

存储格式说明

  • CSV文本格式:便于人工查看、调试和跨软件交换,但体积较大,读写需要文本解析。
  • 二进制格式:适合程序内部快速加载、随机读取和批量处理,但不可直接人工阅读。
  • 数据概览报告会输出CSV与二进制文件大小、写入时间、读取时间和是否人类可读。

工程说明

  • 使用 .h.c 分离的多文件组织。
  • 头文件均使用条件编译防止重复包含。
  • 数据集使用动态数组,容量不足时自动扩容。
  • 所有主要文件操作、内存分配和菜单输入均包含错误处理。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors