案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)

简介: 案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)

需求

  1.创建原始数据项目,项目下可以创建产品,产品自动创建四个阶段,阶段可以导入各自数据格式的原始文件;

  2.创建原始数据项目和产品的时候,参数配置文件、成功配置文件、成功数据也会创建对应的项目和产品;

  3.树形图,支持创建项目、修改项目、删除项目;

  4.树形图,项目下,支持创建产品、修改产品删除产品;

  5.树形图,产品下,自动产生四个阶段,支持创建新的阶段,修改原有阶段,删除某个阶段;

  6.大批量导出单个项目产品阶段的文件,并动态显示导入过程;’

  7.可对原始数据进行二维图的数据分布分析,并可动态调整文件和文件对应的参数;

  8.可对成功数据进行多文件综合分析,包含各文件和各文件下的解析格式,生成对应的关联关系;

  9.在使用二维图、散点图、正态分布图进行分析时,支持区域缩放,支持显示隐藏,支持截图保存,支持导出当前正在显示的二维图原始数据(隐藏的点和行数据不导出)

  10.使用sqlite3数据库;

  11.支持各windows版本和国产银河麒麟系统;

  12.其他复杂数据处理逻辑、小功能;


Demo

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  


头文件源码

#ifndef DATAANALYSISWIDGET_H
#define DATAANALYSISWIDGET_H
#include <QWidget>
#include <QButtonGroup>
#include <QFileDialog>
#include <QTreeWidgetItem>
#include <QStringListModel>
#include "DatabaseManager.h"
#include "TreeWidget.h"
#include "MyMessageBox.h"
#include "TreeWidgetDialog.h"
#include "PreDataDialog.h"
#include <QPoint>
class MainWindow;
namespace Ui {
class DataAnalysisWidget;
}
class DataAnalysisWidget : public QWidget
{
    Q_OBJECT
public:
    explicit DataAnalysisWidget(QWidget *parent = 0);
    ~DataAnalysisWidget();
public:
    void setMainWindow(MainWindow *pMainWindow);
protected:
    void initData();                                                            // 初始化数据
    void loadConfig();                                                          // 加载配置文件
    void saveConfig();                                                          // 存储配置文件
protected slots:    // 按钮选择槽函数
    void slot_buttonHeaderToggled(QAbstractButton *pAbstractButton, bool pressed);                  // 顶部按键
    void slot_buttonToggled(QAbstractButton *pAbstractButton, bool pressed);                        // 右侧按键:数据类型
protected slots:    // 项目管理树视图
    void slot_contextMenu_trigger(QString text, QTreeWidgetItem *pTreeWidgetItem,  QString path);   // 树状视图选择
    void slot_itemClicked(QTreeWidgetItem *pTreeWidgetItem, int count, QString path);               // 树状视图点击
protected slots:    // 原始数据树选择视图
    void slot_itemCheckedClicked(QTreeWidgetItem *pTreeWidgetItem, int count, QString path);        // 原始数据选择视图
protected slots:    // 表视图
    void slot_deleteFile(QStringList strList);                                  // 删除文件表
    void slot_exportFile(QString file);                                         // 导出文件
    void slot_exportFile(QStringList fileList);                                 // 导出所有文件
    void slot_preData();                                                        // 数据预处理
    void slot_packageAnalysis();                                                // 包络数据分析
protected slots:    // 成功数据,散点图和正态分布图
    void slot_chartTypeChanged(QString text);                                   // 包络数据分析:切换散点图/正态分布图
    void slot_listViewItemClicked(QModelIndex modelIndex);                      // 包络数据分析:点击选择列
protected:
    void createProject(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 创建项目
    void modifyProject(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 修改项目
    void deleteProject(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 删除项目
    void createProduct(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 创建产品
    void modifyProduct(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 修改产品
    void deleteProduct(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 删除产品
    void createStage(QString text, QTreeWidgetItem *pTreeWidgetItem);           // 创建阶段
    void modifyStage(QString text, QTreeWidgetItem *pTreeWidgetItem);           // 修改阶段
    void deleteStage(QString text, QTreeWidgetItem *pTreeWidgetItem);           // 删除阶段
    void deleteFile(QString text, QTreeWidgetItem *pTreeWidgetItem);            // 删除文件
    void importOriginData(QString text, QTreeWidgetItem *pTreeWidgetItem);      // 导入原始数据(其他几个数据也同用此函数)
    void exportOriginData(QString text, QString file);                          // 导出原始数据(其他几个数据也同用此函数)
    void exportOriginData(QString text, QStringList fileList);                  // 导出原始数据(其他几个数据也同用此函数),右键表导出所有
    void updatePieChartFiles(QTreeWidgetItem *pTreeWidgetItem, int count);      // 更新饼图
    void updateTableAutoColumnContent(QTreeWidgetItem *pTreeWidgetItem);        // 更新自动列的table
protected:
    void intoPreData(QStringList strList = QStringList());                      // 切换至预处理
    void updatePreData(QString project, QString product, QString stage, QString file);
    bool intoAnalysisData();                                                    // 切换至包络数据分析
    bool updateAnalysisData(QString project, QString product, QString stage);   // 更新分析数据
protected:
    void loadProject();                                                         // 加载项目(根据选择的按钮判断)
    void loadProject(int index);                                                // 加载指定项目(0,1,2,3)
    void updateTree();                                                          // 更新树视图
    void updateTable();                                                         // 更新表格
    void updatePieChart();                                                      // 更新饼图
    void updateTableAutoColumn();                                               // 更新表格动态列
protected:
    void debugProject();                                                        // 调试工程
protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);
private slots:
    void on_pushButton_export_clicked();                                        // 导入按钮
    void on_pushButton_import_clicked();                                        // 导出按钮
    void on_checkBox_firstAsAixsX_clicked(bool checked);                        // 第一列是否作为X轴
    void on_pushButton_succeeDataPath_clicked();                                // 成功数据路径切换按钮
    void on_pushButton_preDealPath_clicked();                                   //
private slots:
    void on_pushButton_exit_clicked();          // 退出
    void on_pushButton_hide_clicked();          // 隐藏
    void on_pushButton_min_clicked();           // 最小化按钮
    void on_pushButton_max_clicked();           // 最大化按钮
    void on_pushButton_search_clicked();        // 搜索按钮
    void on_pushButton_clear_clicked();         // 清空按钮
private:
    Ui::DataAnalysisWidget *ui;
    QButtonGroup _buttonGroup;
    QButtonGroup _buttonGroupHeader;
    DatabaseManager _databaseManager;           // 数据库管理类
    QList<Project> _listProject;                // 项目信息数据结构
    QList<FileInfo> _listFileInfo;              // 文件信息数据结构
    QList<FilePieChart> _listFilePieChart;      // 饼图数据结构
    QString _content;                           // 辅助变量
    TreeWidget *_pTreeWidget;                   // 树状空间
    QDialog *_pDialog;                          // 树状对话框
    QPoint _originPoint;                        // 辅助变量
    QPoint _lastPoint;                          // 辅助变量
    bool _leftButtonPressed;                    // 辅助变量
    QString _lastDir;                           // 记录最后一次打开目录
    int _msgWidth;                              // 消息对话框宽度
    int _msgHeight;                             // 消息对话框高度
    MyMessageBox *_pMyMessageBox;               // 全局消息对话框(用于加载数据)
    QString _cfgFile;                           // 配置文件路径
    MainWindow *_pMainWindow;                   // MainWindow窗口指针
};
#endif // DATAANALYSISWIDGET_H


相关文章
|
12天前
|
监控 数据挖掘 BI
探索项目管理系统:解析五大功能,洞悉项目成功的关键
项目新手常忽视管理系统的价值,而高手已借助系统实现规划清晰。优秀的项目管理系统必备五大功能:项目WBS分解、图表报表、工时管理、团队协作和任务自动化。WBS能将复杂项目拆分成可管理任务,明确责任,评估时间和资源需求,便于跟踪进度。Zoho Projects作为示例,支持创建任务层级,利用甘特图和资源利用图监控进度和资源分配,工时管理则帮助控制项目时间和成本。同时,系统促进团队协作,如通过即时通讯和知识库增强团队凝聚力,而任务自动化则减少错误,提升效率。
18 1
|
1月前
|
存储 缓存 NoSQL
深入解析Redis:一种快速、高效的键值存储系统
**Redis** 是一款高性能的键值存储系统,以其内存数据、高效数据结构、持久化机制和丰富的功能在现代应用中占有一席之地。支持字符串、哈希、列表、集合和有序集合等多种数据结构,适用于缓存、计数、分布式锁和消息队列等场景。安装Redis涉及下载、编译和配置`redis.conf`。基本操作包括键值对的设置与获取,以及哈希、列表、集合和有序集合的操作。高级特性涵盖发布/订阅、事务处理和Lua脚本。优化策略包括选择合适数据结构、配置缓存和使用Pipeline。注意安全、监控和备份策略,以确保系统稳定和数据安全。
308 1
|
1月前
|
传感器 存储 数据采集
04 深度解析物联网架构与技术应用于农业大棚系统
本文将深入探讨物联网架构在农业大棚系统中的应用,从设备接入、边缘网关、数据传输到云平台和应用平台,逐层解析其技术应用与通信协议,为读者全面呈现物联网在农业领域的实际运用场景。
|
1月前
|
存储 缓存 固态存储
深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!
深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!
|
1天前
|
监控 供应链 数据可视化
深度解析BPM系统:优化业务流程,提升组织效率
本文探讨了业务流程管理系统(BPM)的核心价值和功能,以及低代码如何优化流程管理。BPM通过自动化和标准化流程,提高效率,降低技术复杂性,促进协作和监控。低代码平台加速了开发进程,增强了流程自动化,使得非专业开发者也能构建应用程序。结合低代码,企业能更轻松地适应市场变化,实现流程简化和业务增长。
7 1
|
2天前
|
存储 SQL 自然语言处理
RAG技术全解析:打造下一代智能问答系统
一、RAG简介 大型语言模型(LLM)已经取得了显著的成功,尽管它们仍然面临重大的限制,特别是在特定领域或知识密集型任务中,尤其是在处理超出其训练数据或需要当前信息的查询时,常会产生“幻觉”现象。为了克服这些挑战,检索增强生成(RAG)通过从外部知识库检索相关文档chunk并进行语义相似度计算,增强了LLM的功能。通过引用外部知识,RAG有效地减少了生成事实不正确内容的问题。RAG目前是基于LLM系统中最受欢迎的架构,有许多产品基于RAG构建,使RAG成为推动聊天机器人发展和增强LLM在现实世界应用适用性的关键技术。 二、RAG架构 2.1 RAG实现过程 RAG在问答系统中的一个典型
34 2
|
2天前
|
供应链 监控 安全
全面剖析:新页ERP系统不为人知的一面,以及系统的工作流程解析!
全面剖析:新页ERP系统不为人知的一面,以及系统的工作流程解析!
|
2天前
|
新零售 供应链 搜索推荐
多人拼团新零售分销模式系统开发(解析)
新零售模式的推广和应用,必将对传统零售业产生深远影响
|
4天前
|
Linux 网络安全 数据库
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
|
4天前
|
Linux 开发工具 Android开发
移动应用与系统:开发与操作系统的深度解析
【5月更文挑战第6天】 在数字化时代,移动应用和操作系统是信息技术的核心组成部分。本文深入探讨了移动应用的开发过程、关键技术以及移动操作系统的架构和功能。通过对这些技术的详细分析,我们可以更好地理解移动应用和系统的工作原理,以及它们如何影响我们的生活和工作。

推荐镜像

更多