SystemMonitor 是一款基于 Qt 框架开发的 Windows 系统监控工具,实时采集并可视化展示 CPU、内存、网络等关键系统指标数据。
✨ 核心功能
- CPU监控:实时显示CPU使用率,支持逻辑核心数显示
- 内存监控:实时显示内存使用率,展示总量/已用/可用详情
- 网络监控:实时显示上行/下行速度,累计流量统计,平均速度计算
- 历史曲线:60秒历史数据滚动展示,支持CPU/内存双曲线、网络双曲线
- 自适应Y轴:网络曲线根据实际速度自动调整刻度范围
- 分页显示:CPU/内存曲线与网络曲线分标签页展示,清晰明了
- 状态栏:显示运行时间、实时CPU/内存、错误计数
运行效果

项目整体架构
一、架构层次图
┌─────────────────────────────────────────────────────────────────┐
│ 用户界面层 (UI Layer) │
├─────────────────────────────────────────────────────────────────┤
│ MainWindow (主窗口) │
│ ├── 顶部信息面板 (CPU/内存/网络卡片) │
│ ├── QTabWidget (标签页) │
│ │ ├── Tab1: HistoryChartWidget (CPU/内存历史曲线) │
│ │ └── Tab2: NetworkChartWidget (网络历史曲线) │
│ └── QStatusBar (状态栏 - 运行信息/错误提示) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 业务逻辑层 (Logic Layer) │
├─────────────────────────────────────────────────────────────────┤
│ MainWindow::updateRealStats() │
│ ├── CPU使用率计算 (差值算法) │
│ ├── 内存使用率获取 │
│ ├── 网络速度计算 (差值算法 + 平均速度) │
│ └── UI更新调度 │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 数据访问层 (Data Layer) │
├─────────────────────────────────────────────────────────────────┤
│ systeminfo.cpp │
│ ├── queryCpuTimes() → GetSystemTimes() │
│ ├── queryMemoryStatus() → GlobalMemoryStatusEx() │
│ └── queryNetworkStats() → GetIfTable() │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 图表组件层 (Chart Layer) │
├─────────────────────────────────────────────────────────────────┤
│ HistoryChartWidget NetworkChartWidget │
│ ├── QChart (容器) ├── QChart (容器) │
│ ├── QLineSeries×2 ├── QLineSeries×2 │
│ ├── QValueAxis×2 ├── QValueAxis×2 │
│ └── 动态更新算法 └── Y轴自适应算法 │
└─────────────────────────────────────────────────────────────────┘
二、模块职责与依赖关系表
| 模块名称 |
文件 |
职责 |
依赖模块 |
被依赖模块 |
| 程序入口 |
main.cpp |
初始化QApplication、加载样式表、创建主窗口 |
MainWindow |
无 |
| 主窗口 |
mainwindow.h/cpp |
整体布局、定时调度、数据整合、UI更新 |
SystemInfo, ChartWidgets |
main.cpp |
| 系统信息 |
systeminfo.h/cpp |
封装Windows API、获取CPU/内存/网络数据 |
Windows API |
MainWindow |
| CPU/内存曲线 |
historychartwidget.h/cpp |
绘制历史曲线、数据滚动 |
Qt Charts |
MainWindow |
| 网络曲线 |
networkchartwidget.h/cpp |
绘制网络曲线、Y轴自适应 |
Qt Charts |
MainWindow |
| 资源文件 |
images.qrc |
管理样式表、图标 |
无 |
main.cpp |
你能学到什么?
一、Qt框架技能
| 技能分类 |
具体知识点 |
掌握程度 |
应用场景 |
| 项目配置 |
.pro文件编写、模块依赖管理、CONFIG配置 |
熟练 |
所有Qt项目基础 |
| 核心机制 |
信号与槽、事件循环、元对象系统 |
深入理解 |
对象间通信、异步处理 |
| 控件使用 |
QLabel、QProgressBar、QTimer、QStatusBar、QGroupBox |
熟练掌握 |
UI界面开发 |
| 布局管理 |
QVBoxLayout、QHBoxLayout、QFormLayout、QTabWidget |
熟练 |
复杂界面布局 |
| 图形视图 |
QChart、QLineSeries、QValueAxis、QChartView |
掌握 |
数据可视化 |
| 资源系统 |
.qrc文件、资源编译、图标加载 |
熟练掌握 |
资源打包 |
| 样式美化 |
QSS语法、选择器、渐变色、圆角边框 |
了解 |
界面美化 |
二、Windows系统编程技能
| 技能分类 |
具体知识点 |
掌握程度 |
应用场景 |
| CPU监控 |
GetSystemTimes API、FILETIME转换、CPU使用率算法 |
深入理解 |
系统监控软件 |
| 内存监控 |
GlobalMemoryStatusEx API、物理内存统计 |
熟练掌握 |
内存分析工具 |
| 网络监控 |
GetIfTable API、MIB_IFROW结构体、网络接口过滤 |
掌握 |
流量监控软件 |
| API调用 |
错误处理、缓冲区管理、两次调用模式 |
熟练 |
Windows编程 |
三、算法与数据处理技能
| 技能分类 |
具体知识点 |
掌握程度 |
应用场景 |
| 差值算法 |
CPU使用率计算、网络速度计算 |
深入理解 |
实时数据监控 |
| 数据滚动 |
环形缓冲区思想、队列操作 |
熟练掌握 |
历史数据显示 |
| 单位转换 |
字节→KB/MB/GB、刻度规整化 |
熟练掌握 |
数据显示格式化 |
| 动态范围 |
Y轴自适应算法、最大值检测 |
掌握 |
动态图表 |
四、软件工程技能
| 技能分类 |
具体知识点 |
掌握程度 |
应用场景 |
| 代码组织 |
模块化设计、头文件分离、职责划分 |
熟练 |
大型项目开发 |
| 错误处理 |
返回值检查、异常处理、用户反馈 |
熟练掌握 |
健壮性设计 |
| 性能优化 |
关闭动画、减少重绘、OpenGL加速 |
了解 |
高性能应用 |
| 发布部署 |
windeployqt使用、依赖分析、Release编译 |
熟练掌握 |
软件分发 |
7天学习计划汇总表
| 天数 |
学习主题 |
核心知识点 |
代码文件 |
运行效果 |
技术难度 |
| 第1天 |
Qt项目创建与基础UI |
项目结构、信号槽、布局管理器、QTimer、QLabel、QProgressBar |
main.cpp, mainwindow.h/cpp |
模拟数据显示CPU/内存进度条 |
⭐⭐ |
| 第2天 |
Windows API获取系统信息 |
GetSystemTimes、GlobalMemoryStatusEx、CPU使用率计算、内存状态获取 |
systeminfo.h/cpp, mainwindow.h/cpp |
真实显示CPU/内存使用率 |
⭐⭐⭐ |
| 第3天 |
Qt Charts绘制实时曲线 |
QChart、QLineSeries、QValueAxis、动态数据更新、曲线滚动 |
historychartwidget.h/cpp |
CPU/内存历史曲线(60秒) |
⭐⭐⭐⭐ |
| 第4天 |
Windows网络API |
GetIfTable、iphlpapi、网络速度计算、累计流量统计 |
networkchartwidget.h/cpp |
网络上下行速度显示 |
⭐⭐⭐⭐ |
| 第5天 |
网络曲线与动态Y轴 |
Y轴自适应算法、刻度规整化、图表性能优化 |
networkchartwidget.cpp(完善) |
网络速度历史曲线+自适应Y轴 |
⭐⭐⭐⭐⭐ |
| 第6天 |
界面美化与资源管理 |
QSS样式表、qrc资源文件、图标设置、布局优化 |
images.qrc, style.qss |
专业美观的界面外观 |
⭐⭐⭐ |
| 第7天 |
项目整合与发布 |
错误处理、状态栏、平均速度计算、windeployqt打包 |
全部文件整合 |
完整的系统监控工具 |
⭐⭐⭐⭐ |
每日学习成果验证表
| 天数 |
验证方法 |
预期结果 |
常见问题 |
| Day1 |
运行程序 |
模拟进度条每秒变化 |
忘记在.pro中添加widgets模块 |
| Day2 |
运行程序 |
显示真实CPU/内存百分比 |
需要管理员权限运行 |
| Day3 |
运行程序 |
曲线滚动显示历史数据 |
忘记包含charts模块 |
| Day4 |
运行程序 |
显示网络速度 |
需要link iphlpapi库 |
| Day5 |
运行程序 |
Y轴随速度自动调整 |
范围规整逻辑需测试 |
| Day6 |
运行程序 |
界面美观、有图标 |
资源路径需正确 |
| Day7 |
打包程序 |
可在其他电脑运行 |
使用windeployqt打包 |
性能指标表
| 指标项 |
目标值 |
实际表现 |
优化方法 |
| CPU占用率 |
<5% |
~2-3% |
关闭动画、减少重绘 |
| 内存占用 |
<50MB |
~35MB |
合理管理对象生命周期 |
| 响应延迟 |
<100ms |
~16ms(60FPS) |
OpenGL加速 |
| 数据刷新率 |
1Hz |
1Hz |
QTimer精确控制 |
| 历史数据点 |
60个/曲线 |
60个 |
环形队列思想 |
| 启动时间 |
<2秒 |
<1秒 |
Release优化 |
#简历中的项目经历要怎么写##一人推荐一个值得做的项目#