This commit is contained in:
coco
2026-07-03 16:05:30 +08:00
commit df489d5640
1101 changed files with 779140 additions and 0 deletions
@@ -0,0 +1,250 @@
# 数据管理界面
<cite>
**本文档引用的文件**
- [datamngframe.cpp](file://cpp/Views/datamngframe.cpp)
- [datamngframe.h](file://h/datamngframe.h)
- [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp)
- [appdatatdlistview.h](file://h/appdatatdlistview.h)
- [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp)
- [appdatatdgrlistview.h](file://h/appdatatdgrlistview.h)
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
- [DataOperator.h](file://h/DataOperator.h)
- [navdataview.cpp](file://cpp/Views/navdataview.cpp)
- [navdataview.h](file://h/navdataview.h)
- [excel.cpp](file://cpp/Tools/excel.cpp)
- [excel.h](file://h/excel.h)
</cite>
## 目录
1. [引言](#引言)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构概述](#架构概述)
5. [详细组件分析](#详细组件分析)
6. [依赖分析](#依赖分析)
7. [性能考虑](#性能考虑)
8. [故障排除指南](#故障排除指南)
9. [结论](#结论)
## 引言
数据管理界面是Geomative Studio软件的核心功能模块,负责测量数据的浏览、实时监控、数据导出与导入等关键任务。该界面通过`datamngframe`框架集成多种数据视图,如`appdatatdlistview``appdatatdgrlistview`,实现数据列表、图形化展示与详细信息面板的联动。用户可以通过该界面执行数据查询、筛选、导出(支持Excel、CSV、TXT、URF格式)和诊断报告生成等操作。开发者可以扩展数据导出格式、集成新的数据可视化组件或优化大数据量下的界面响应性能。
## 项目结构
数据管理界面的代码主要分布在`cpp/Views``h`目录下,核心文件包括`datamngframe.cpp``appdatatdlistview.cpp``appdatatdgrlistview.cpp``DataOperator.cpp`。这些文件共同构成了数据管理的框架和视图组件。
```mermaid
graph TD
subgraph "数据管理界面"
datamngframe[datamngframe.cpp]
appdatatdlistview[appdatatdlistview.cpp]
appdatatdgrlistview[appdatatdgrlistview.cpp]
DataOperator[DataOperator.cpp]
navdataview[navdataview.cpp]
end
datamngframe --> DataOperator
appdatatdlistview --> DataOperator
appdatatdgrlistview --> DataOperator
navdataview --> DataOperator
```
**Diagram sources**
- [datamngframe.cpp](file://cpp/Views/datamngframe.cpp)
- [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp)
- [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp)
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
- [navdataview.cpp](file://cpp/Views/navdataview.cpp)
**Section sources**
- [datamngframe.cpp](file://cpp/Views/datamngframe.cpp)
- [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp)
- [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp)
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
- [navdataview.cpp](file://cpp/Views/navdataview.cpp)
## 核心组件
数据管理界面的核心组件包括`CDataMngFrame``CAppDataTdListView``CAppDataTdGrListView``CDataOperator``CDataMngFrame`作为主框架,管理界面的布局和视图切换。`CAppDataTdListView``CAppDataTdGrListView`分别负责数据列表和图形化数据的展示。`CDataOperator`作为数据操作器,处理数据的加载、导出和删除等操作。
**Section sources**
- [datamngframe.cpp](file://cpp/Views/datamngframe.cpp)
- [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp)
- [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp)
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
## 架构概述
数据管理界面采用MVCModel-View-Controller)架构,`CDataOperator`作为模型层,负责数据的存取和业务逻辑。`CDataMngFrame`作为控制器,管理视图的创建和切换。`CAppDataTdListView``CAppDataTdGrListView`作为视图层,负责数据的展示。
```mermaid
classDiagram
class CDataMngFrame {
+CView* m_pAppDataView
+CView* m_pNavDataView
+bool ShowAppView(DWORD dwHandle, UINT uState)
+bool ShowContentListByPageView(DWORD dwHandle, UINT uState, UINT uPage)
}
class CDataOperator {
+_ConnectionPtr m_pConnection
+CStateProcessor m_stateProcessor
+CHandleProcessor m_handleProcessor
+bool InitialNavDataView(CNavDataView* pNavDataView)
+void ShowRsp2DTdInfo(DWORD dwTdHandle, CView* pAppDataView)
+void ShowRspCETdInfo(DWORD dwTdHandle, CView* pAppDataView)
+UINT ExportRsp2DTdToExcel(CNavDataView* pNavDataView, CString f_szFileName)
}
class CAppDataTdListView {
+CMDIChildWnd* m_pMngFrm
+void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
+void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
+void OnBatchexport()
+void OnBatchDelData()
}
class CAppDataTdGrListView {
+CMDIChildWnd* m_pMngFrm
+void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
+void OnCustomDrawList(NMHDR* pNMHDR, LRESULT* pResult)
}
class CNavDataView {
+CTreeCtrl m_dataTree
+void Schedule()
+void LoadByPageShedule()
+void OnRclickNavDataTree(NMHDR* pNMHDR, LRESULT* pResult)
+void OnSelchangedNavDataTree(NMHDR* pNMHDR, LRESULT* pResult)
}
CDataMngFrame --> CDataOperator : "uses"
CDataMngFrame --> CAppDataTdListView : "creates"
CDataMngFrame --> CAppDataTdGrListView : "creates"
CDataOperator --> CNavDataView : "manages"
CAppDataTdListView --> CDataOperator : "delegates"
CAppDataTdGrListView --> CDataOperator : "delegates"
```
**Diagram sources**
- [datamngframe.cpp](file://cpp/Views/datamngframe.cpp)
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
- [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp)
- [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp)
- [navdataview.cpp](file://cpp/Views/navdataview.cpp)
## 详细组件分析
### 数据管理框架分析
`CDataMngFrame`是数据管理界面的主框架,继承自`CMDIChildWnd`,负责管理界面的布局和视图切换。它通过`CSplitterWnd`将界面分为导航视图和应用视图两部分。
#### 数据管理框架类图
```mermaid
classDiagram
class CDataMngFrame {
+CView* m_pAppDataView
+CView* m_pNavDataView
+CSplitterWnd m_splitter
+CDataOperator* m_pDataOperator
+bool ShowAppView(DWORD dwHandle, UINT uState)
+bool ShowContentListByPageView(DWORD dwHandle, UINT uState, UINT uPage)
}
CDataMngFrame --> CDataOperator : "owns"
CDataMngFrame --> CView : "contains"
```
**Diagram sources**
- [datamngframe.cpp](file://cpp/Views/datamngframe.cpp)
- [datamngframe.h](file://h/datamngframe.h)
### 数据列表视图分析
`CAppDataTdListView`负责展示测量数据的列表,支持列排序、双击跳转和批量导出/删除操作。
#### 数据列表视图类图
```mermaid
classDiagram
class CAppDataTdListView {
+CMDIChildWnd* m_pMngFrm
+void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
+void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
+void OnBatchexport()
+void OnBatchDelData()
}
CAppDataTdListView --> CDataMngFrame : "belongs to"
```
**Diagram sources**
- [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp)
- [appdatatdlistview.h](file://h/appdatatdlistview.h)
### 图形化数据视图分析
`CAppDataTdGrListView`负责展示电极的图形化数据,支持自定义绘制,根据电极状态显示不同颜色。
#### 图形化数据视图类图
```mermaid
classDiagram
class CAppDataTdGrListView {
+CMDIChildWnd* m_pMngFrm
+void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
+void OnCustomDrawList(NMHDR* pNMHDR, LRESULT* pResult)
}
CAppDataTdGrListView --> CDataMngFrame : "belongs to"
```
**Diagram sources**
- [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp)
- [appdatatdgrlistview.h](file://h/appdatatdgrlistview.h)
### 数据操作器分析
`CDataOperator`是数据管理的核心,负责与数据库交互,加载和导出数据。
#### 数据操作器类图
```mermaid
classDiagram
class CDataOperator {
+_ConnectionPtr m_pConnection
+CStateProcessor m_stateProcessor
+CHandleProcessor m_handleProcessor
+bool InitialNavDataView(CNavDataView* pNavDataView)
+void ShowRsp2DTdInfo(DWORD dwTdHandle, CView* pAppDataView)
+void ShowRspCETdInfo(DWORD dwTdHandle, CView* pAppDataView)
+UINT ExportRsp2DTdToExcel(CNavDataView* pNavDataView, CString f_szFileName)
}
CDataOperator --> _ConnectionPtr : "uses"
CDataOperator --> CStateProcessor : "uses"
CDataOperator --> CHandleProcessor : "uses"
```
**Diagram sources**
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
- [DataOperator.h](file://h/DataOperator.h)
**Section sources**
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
- [DataOperator.h](file://h/DataOperator.h)
## 依赖分析
数据管理界面依赖于`CDataOperator`进行数据操作,`CDataOperator`又依赖于数据库连接和状态处理器。
```mermaid
graph TD
CDataMngFrame --> CDataOperator
CDataOperator --> _ConnectionPtr
CDataOperator --> CStateProcessor
CDataOperator --> CHandleProcessor
CAppDataTdListView --> CDataOperator
CAppDataTdGrListView --> CDataOperator
```
**Diagram sources**
- [datamngframe.cpp](file://cpp/Views/datamngframe.cpp)
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
- [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp)
- [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp)
## 性能考虑
在处理大数据量时,应优化数据加载和渲染性能。建议使用分页加载和虚拟列表技术,避免一次性加载所有数据。
## 故障排除指南
- **数据无法加载**:检查数据库连接是否正常,确认`CDataOperator``m_pConnection`是否有效。
- **导出失败**:检查文件路径和权限,确保Excel组件正确安装。
- **界面卡顿**:减少一次性加载的数据量,使用分页或虚拟列表。
**Section sources**
- [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)
- [excel.cpp](file://cpp/Tools/excel.cpp)
## 结论
数据管理界面通过`datamngframe`框架和`DataOperator`组件,实现了测量数据的高效管理和可视化。开发者可以通过扩展`CDataOperator`来支持新的数据格式和导出功能,优化大数据量下的性能表现。