# 数据管理界面 **本文档引用的文件** - [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) ## 目录 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) ## 架构概述 数据管理界面采用MVC(Model-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`来支持新的数据格式和导出功能,优化大数据量下的性能表现。