# 代码重构和模块化改造计划 ## 问题分析 ### 1. 业务领域不匹配问题 从"同地协同伤员搜救系统"转换为"战场探索系统",需要清理以下内容: #### 发现的injury相关文件: **源代码文件**: - `src/InjuryAnalysisUI.cpp` - 伤员分析界面 - `src/InjuryDatabase.cpp` - 伤员数据库 - `src/injurydisiplayui.cpp` - 伤员显示界面 - `src/moc_InjuryAnalysisUI.cpp` - 自动生成文件 - `src/moc_injurydisiplayui.cpp` - 自动生成文件 **头文件**: - `include/InjuryAnalysisUI.h` - `include/InjuryDatabase.h` - `include/injurydisiplayui.h` **UI文件**: - `ui/InjuryAnalysisUI.ui` - `ui/injurydisiplayui.ui` ### 2. 目录结构混乱问题 - `src/` 目录:14个文件平铺,缺乏模块分类 - `ui/` 目录:4个UI文件平铺,没有按功能分组 - 缺乏清晰的架构层次 ## 重构策略 ### Phase 1: 目录结构重组 🏗️ #### 新的目录结构设计: ``` src/ ├── core/ # 核心业务逻辑 │ ├── database/ # 数据库相关 │ │ ├── DeviceDatabase.cpp (重命名自UAVDatabase+DogDatabase) │ │ └── ConnectionManager.cpp (新建) │ ├── services/ # 业务服务 │ │ ├── DeviceService.cpp (新建) │ │ └── ExplorationService.cpp (新建) │ └── models/ # 数据模型 │ ├── Device.cpp (新建) │ └── ExplorationTask.cpp (新建) ├── ui/ # 用户界面 │ ├── main/ # 主界面 │ │ └── MainWindow.cpp (重命名自guidingui.cpp) │ ├── components/ # 可复用组件 │ │ ├── DeviceCard.cpp (新建) │ │ ├── DeviceListWidget.cpp (新建) │ │ └── StatusPanel.cpp (新建) │ ├── dialogs/ # 对话框 │ │ └── DeviceDialog.cpp (重命名自robotlistdialog.cpp) │ └── exploration/ # 探索相关界面 │ ├── ExplorationDashboard.cpp (替代InjuryAnalysisUI) │ └── MapExplorer.cpp (替代injurydisiplayui) ├── utils/ # 工具类 │ ├── Logger.cpp (新建) │ └── ConfigManager.cpp (新建) └── main.cpp forms/ # UI表单文件 ├── main/ │ └── MainWindow.ui (重命名自guidingui.ui) ├── components/ │ ├── DeviceCard.ui (新建) │ └── StatusPanel.ui (新建) ├── dialogs/ │ └── DeviceDialog.ui (重命名自robotlistdialog.ui) └── exploration/ ├── ExplorationDashboard.ui (替代InjuryAnalysisUI.ui) └── MapExplorer.ui (替代injurydisiplayui.ui) ``` ### Phase 2: 业务重构计划 🎯 #### 文件重命名和功能转换: | 原文件 | 新文件 | 功能转换 | |--------|--------|----------| | `InjuryAnalysisUI.*` | `ExplorationDashboard.*` | 伤员分析 → 探索数据分析面板 | | `injurydisiplayui.*` | `MapExplorer.*` | 伤员地理显示 → 探索区域地图显示 | | `InjuryDatabase.*` | `ExplorationDatabase.*` | 伤员数据管理 → 探索任务数据管理 | | `guidingui.*` | `MainWindow.*` | 引导界面 → 主控制台界面 | | `robotlistdialog.*` | `DeviceDialog.*` | 机器人列表 → 设备管理对话框 | #### 类和变量重命名: **类名转换**: ```cpp // 原来的类名 → 新的类名 InjuryAnalysisUI → ExplorationDashboard InjuryDisplayUI → MapExplorer InjuryDatabase → ExplorationDatabase GuidingUI → MainWindow ``` **变量和方法名转换**: ```cpp // injury相关 → exploration相关 injuryData → explorationData addInjury() → addExplorationPoint() getInjuryList() → getExplorationTasks() injuryCount → explorationPointCount // 其他改进 robotList → deviceList UAVList → droneList ``` ### Phase 3: 代码内容重构 📝 #### 1. ExplorationDashboard (原InjuryAnalysisUI) **原功能**: 伤员数据统计和图表分析 **新功能**: 探索任务统计和数据分析 - 探索区域覆盖率统计 - 设备工作时长统计 - 探索效率分析图表 - 实时任务进度监控 #### 2. MapExplorer (原injurydisiplayui) **原功能**: 在地图上显示伤员位置 **新功能**: 在地图上显示探索信息 - 显示设备当前位置和轨迹 - 标记已探索区域 - 显示兴趣点和目标 - 实时更新探索进度 #### 3. ExplorationDatabase (原InjuryDatabase) **原功能**: 管理伤员记录 **新功能**: 管理探索任务和数据 - 探索任务CRUD操作 - 探索点位数据管理 - 探索历史记录 - 统计分析支持 #### 4. MainWindow (原GuidingUI) **原功能**: 机器人控制和引导 **新功能**: 战场探索系统主控制台 - 统一设备管理界面 - 探索任务调度 - 实时状态监控 - 系统配置管理 ## 实施步骤 ### Step 1: 备份和准备 🛡️ ```bash # 1. 创建备份 cp -r src src_backup cp -r ui ui_backup cp -r include include_backup # 2. 创建新的目录结构 mkdir -p src/{core/{database,services,models},ui/{main,components,dialogs,exploration},utils} mkdir -p forms/{main,components,dialogs,exploration} ``` ### Step 2: 文件移动和重命名 📁 ```bash # 移动核心文件 mv src/UAVDatabase.cpp src/core/database/ mv src/DogDatabase.cpp src/core/database/ mv src/guidingui.cpp src/ui/main/MainWindow.cpp mv src/robotlistdialog.cpp src/ui/dialogs/DeviceDialog.cpp # 移动UI文件 mv ui/guidingui.ui forms/main/MainWindow.ui mv ui/robotlistdialog.ui forms/dialogs/DeviceDialog.ui # 删除injury相关文件 rm src/Injury*.cpp src/injury*.cpp src/moc_Injury*.cpp src/moc_injury*.cpp rm ui/Injury*.ui ui/injury*.ui rm include/Injury*.h include/injury*.h ``` ### Step 3: 创建新组件 🔧 ```bash # 创建新的核心组件 touch src/core/database/{DeviceDatabase,ConnectionManager}.cpp touch src/core/services/{DeviceService,ExplorationService}.cpp touch src/core/models/{Device,ExplorationTask}.cpp touch src/ui/components/{DeviceCard,DeviceListWidget,StatusPanel}.cpp touch src/ui/exploration/{ExplorationDashboard,MapExplorer}.cpp touch src/utils/{Logger,ConfigManager}.cpp ``` ### Step 4: 更新构建配置 ⚙️ 更新 `CasualtySightPlus.pro`: ```pro # 新的源文件组织 SOURCES += \ src/main.cpp \ src/core/database/DeviceDatabase.cpp \ src/core/database/ConnectionManager.cpp \ src/core/services/DeviceService.cpp \ src/core/services/ExplorationService.cpp \ src/core/models/Device.cpp \ src/core/models/ExplorationTask.cpp \ src/ui/main/MainWindow.cpp \ src/ui/components/DeviceCard.cpp \ src/ui/components/DeviceListWidget.cpp \ src/ui/components/StatusPanel.cpp \ src/ui/dialogs/DeviceDialog.cpp \ src/ui/exploration/ExplorationDashboard.cpp \ src/ui/exploration/MapExplorer.cpp \ src/utils/Logger.cpp \ src/utils/ConfigManager.cpp HEADERS += \ include/core/database/DeviceDatabase.h \ include/core/database/ConnectionManager.h \ # ... 其他头文件 FORMS += \ forms/main/MainWindow.ui \ forms/components/DeviceCard.ui \ forms/components/StatusPanel.ui \ forms/dialogs/DeviceDialog.ui \ forms/exploration/ExplorationDashboard.ui \ forms/exploration/MapExplorer.ui ``` ### Step 5: 代码内容重构 💻 1. **更新头文件包含路径** 2. **重命名所有类和方法** 3. **替换injury相关的业务逻辑** 4. **实现新的探索功能** ## 风险控制 ### 1. 分阶段实施 - 每个步骤完成后进行编译测试 - 确保每个阶段都有可工作的版本 - 问题出现时可以快速回退 ### 2. 保持向后兼容 - 暂时保留原有的数据库视图 - 重要配置保持兼容性 - 用户数据不受影响 ### 3. 充分测试 - 每个重构步骤后进行功能测试 - 重点测试设备管理功能 - 验证地图显示正常 ## 预期收益 ### 1. 业务对齐 - ✅ 完全符合"战场探索系统"定位 - ✅ 功能和命名语义化清晰 - ✅ 用户理解成本降低 ### 2. 代码质量 - ✅ 模块化架构,职责清晰 - ✅ 便于维护和扩展 - ✅ 新功能开发效率提升 ### 3. 项目价值 - ✅ 体现系统重构能力 - ✅ 展示架构设计思维 - ✅ 增强学术项目完整性 这个重构计划将彻底解决业务不匹配问题,同时建立清晰的模块化架构,为后续开发奠定良好基础。