RuoYi-Cpp:客户端使用Qt,后端使用libhv实现
发布时间:2026/7/31 2:03:28
分类:文化教育
浏览:1234

Zc管理系统一个基于 C 技术栈的企业级管理系统模仿了前端框架若依RuoYi管理系统的架构设计采用客户端-服务器分离的架构模式。目录zcmaye/zc-manager: 一个基于 C 技术栈的企业级管理系统模仿了前端框架若依RuoYi管理系统的架构设计采用客户端-服务器分离的架构模式。https://github.com/zcmaye/zc-manager项目简介技术栈功能模块待开发功能项目结构快速开始数据库配置构建说明使用说明API 接口代码规范常见问题贡献指南许可证项目简介Zc管理系统是一个完全基于 C 技术栈开发的企业级管理系统主要特点包括架构设计参考若依RuoYi管理系统采用前后端分离架构技术选型Qt6 客户端 libhv 高性能服务器功能完整包含用户、角色、菜单、部门、岗位等完整的权限管理功能跨平台支持 Windows、Linux 等多平台部署技术栈客户端ZcManager-client技术版本说明Qt6.10UI 框架用于构建桌面应用C20编程语言QXlsx-Excel 文件读写库CMake3.16构建工具服务器ZcManager-server技术版本说明libhv-高性能 HTTP 服务器库MySQL8.0关系型数据库Redis6.0缓存数据库可选OpenSSL3.0加密库用于 TLS/SSL 支持nlohmann-json3.12JSON 处理库mysql-connector-c9.2MySQL C 连接器hiredis / redis-Redis 连接器SqlBuilder-SQL 语句生成器C20编程语言CMake3.16构建工具功能模块1. 用户管理用户列表查询用户新增/编辑/删除用户状态管理用户导入/导出Excel用户密码重置2. 角色管理角色列表查询角色新增/编辑/删除角色菜单权限分配角色用户分配3. 菜单管理菜单列表查询树形结构菜单新增/编辑/删除菜单权限配置4. 部门管理部门列表查询树形结构部门新增/编辑/删除5. 岗位管理岗位列表查询岗位新增/编辑/删除6. 个人信息昵称修改密码修改头像上传/修改7. 系统功能用户登录/退出验证码验证路由权限控制Token 认证待开发功能以下功能正在规划或开发中欢迎贡献代码1. 在线用户列表实时显示当前在线用户用户登录/登出记录强制下线功能在线时长统计2. 日志管理登录日志登录时间记录登录IP地址登录状态成功/失败设备信息记录操作日志操作时间记录操作类型新增/修改/删除/查询操作模块操作人信息操作结果3. 字典管理字典类型管理字典数据管理字典缓存机制字典导入/导出4. 参数设置系统参数配置参数分组管理参数校验规则参数值加密存储5. 通知公告公告发布/编辑/删除公告分类管理公告阅读状态公告推送通知项目结构ZcManager-Qt/ ├── ZcManager-client/ # 客户端代码 │ ├── common/ # 公共模块 │ │ ├── base/ # 基础类单例、事件、信号中心 │ │ ├── config/ # 配置管理 │ │ ├── constants/ # 常量定义 │ │ ├── delegate/ # 委托类按钮、复选框等 │ │ ├── json/ # JSON 处理 │ │ ├── network/ # 网络请求管理 │ │ ├── notify/ # 通知提示框 │ │ ├── utils/ # 工具类验证码、Excel、字符串等 │ │ └── widgets/ # 自定义控件 │ ├── domain/ # 领域模型 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 实体类 │ │ └── vo/ # 视图对象 │ ├── modules/ # 功能模块 │ │ ├── login/ # 登录模块 │ │ ├── home/ # 首页模块 │ │ ├── user/ # 用户管理 │ │ ├── role/ # 角色管理 │ │ ├── menu/ # 菜单管理 │ │ ├── dept/ # 部门管理 │ │ ├── post/ # 岗位管理 │ │ └── personal-info/ # 个人信息 │ ├── Resource/ # 资源文件图标、图片、样式 │ ├── thrid-party/ # 第三方库QXlsx │ ├── sql/ # SQL 脚本 │ ├── CMakeLists.txt # CMake 配置 │ ├── main.cpp # 入口文件 │ ├── MainWindow.cpp # 主窗口 │ └── ContextHolder.h # 全局上下文 │ ├── ZcManager-server/ # 服务器代码 │ ├── zc-admin/ # 应用入口 │ │ ├── web/controller/ # HTTP 控制器 │ │ └── resource/ # 配置文件 │ ├── zc-system/ # 业务逻辑层 │ │ ├── system/dao/ # 数据访问层 │ │ ├── system/service/ # 业务服务层 │ │ └── system/domain/ # 领域模型 │ ├── zc-framework/ # 框架层 │ │ ├── framework/config/ # 配置管理 │ │ ├── framework/context/# 请求上下文 │ │ ├── framework/handler/# 中间件 │ │ ├── framework/server/ # HTTP 路由 │ │ └── framework/service/# 基础服务 │ ├── zc-common/ # 公共模块 │ │ ├── common/base/ # 基础类 │ │ ├── common/cache/ # 缓存管理 │ │ ├── common/domain/ # 领域模型 │ │ ├── common/exception/ # 异常处理 │ │ ├── common/sql/ # 数据库连接池 │ │ └── common/utils/ # 工具类 │ ├── third-party/ # 第三方库 │ │ ├── SqlBuilder/ # SQL 构建器 │ │ ├── json-3.12.0/ # JSON 库 │ │ ├── hv/ # libhv 库 │ │ └── hiredis/ # Redis 客户端 │ ├── sql/ # SQL 脚本 │ └── CMakeLists.txt # CMake 配置 │ ├── CODE_ISSUES.md # 代码问题清单 └── README.md # 项目说明文档快速开始环境要求操作系统Windows 10 / LinuxQt 版本6.10 及以上客户端编译器MSVC 2019 / GCC 11CMake3.16MySQL8.0服务器Redis6.0可选服务器OpenSSL3.0服务器必需步骤 1克隆项目git clone repository-url cd ZcManager-Qt步骤 2解压第三方库由于服务器端的third-party目录包含大量预编译库文件MySQL Connector/C、libhv、hiredis、redis 等为了减小仓库体积该目录已被打包为third-party.7z文件。在构建服务器之前需要先解压此压缩包Windows 环境使用 7-Zip 解压工具右键点击ZcManager-server/third-party.7z选择解压到当前目录。Linux 环境cd ZcManager-server 7z x third-party.7z第三方库兼容性说明压缩包中包含的预编译库仅适用于Windows x64平台库名称类型跨平台兼容性SqlBuilder/源代码✅ 所有平台通用CMake 构建json-3.12.0/源代码头文件✅ 所有平台通用mysql-connector-c-9.2.0-winx64/Windows 预编译❌ Linux 需重新编译hv/Windows 预编译❌ Linux 需重新编译hiredis/Windows 预编译❌ Linux 需重新编译redis/Windows 预编译❌ Linux 需重新编译注意如果需要在 Linux 或其他平台运行服务器需要自行编译以下库并替换third-party目录中的对应文件MySQL Connector/Clibhvhiredisredis步骤 3数据库初始化# 创建数据库 mysql -u root -p CREATE DATABASE zc-manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 导入 SQL 脚本服务器端 mysql -u root -p zc-manager ZcManager-server/sql/zc-manager.sql # 导入 SQL 脚本客户端示例数据 mysql -u root -p zc-manager ZcManager-client/sql/hdy_manager_system.sql步骤 4配置服务器编辑ZcManager-server/zc-admin/resource/application.ini[app] nameZc-Manager port8080 [mysql] host127.0.0.1 port3306 userroot passwordyour_password dbzc-manager max-size5 [redis] host127.0.0.1 port6379 passwordyour_redis_password db0步骤 5构建服务器cd ZcManager-server mkdir -p out/build/x64-debug cd out/build/x64-debug cmake -DCMAKE_BUILD_TYPEDebug .. cmake --build . --config Debug步骤 6构建客户端cd ZcManager-client mkdir -p out/build/debug cd out/build/debug cmake -DCMAKE_BUILD_TYPEDebug .. cmake --build . --config Debug步骤 7运行# 启动服务器 ZcManager-server/out/build/x64-debug/zc-admin/Zc-Manager-server.exe # 启动客户端 ZcManager-client/out/build/debug/Zc-Manager-client.exe数据库配置MySQL 配置服务器使用 MySQL 8.0 作为主数据库数据库名称默认为zc-manager。表结构表名说明sys_user用户表sys_role角色表sys_menu菜单表sys_dept部门表sys_post岗位表sys_user_role用户角色关联表sys_user_post用户岗位关联表sys_role_menu角色菜单关联表Redis 配置可选服务器支持使用 Redis 作为缓存通过 CMake 选项启用cmake -DUSE_REDIS_CACHEON ..OpenSSL 配置必需服务器依赖 OpenSSL 进行加密操作需要确保 OpenSSL 已正确安装并配置。Windows 环境下载 OpenSSL 安装包https://slproweb.com/products/Win32OpenSSL.html安装时选择 Copy OpenSSL DLLs to the Windows system directory 或记住安装路径如果安装到非默认路径需要设置环境变量经过测试会自动设置set OPENSSL_ROOT_DIRF:\Tools\OpenSSL-Win64 set OPENSSL_INCLUDE_DIRF:\Tools\OpenSSL-Win64\include set OPENSSL_LIB_DIRF:\Tools\OpenSSL-Win64\lib\VC\x64\MDLinux 环境# Ubuntu/Debian sudo apt-get install libssl-dev # CentOS/RHEL sudo yum install openssl-devel # Fedora sudo dnf install openssl-devel构建说明客户端构建WindowsMSVCcd ZcManager-client cmake -B build -DCMAKE_BUILD_TYPERelease cmake --build build --config ReleaseLinuxGCCcd ZcManager-client cmake -B build -DCMAKE_BUILD_TYPERelease make -j$(nproc)服务器构建WindowsMSVCcd ZcManager-server cmake -B build -DCMAKE_BUILD_TYPERelease cmake --build build --config ReleaseLinuxGCC注意在 Linux 环境下构建服务器前需要先编译第三方库详见下方Linux 第三方库编译章节。cd ZcManager-server cmake -B build -DCMAKE_BUILD_TYPERelease make -j$(nproc)Linux 第三方库编译由于压缩包中仅包含 Windows 预编译库在 Linux 环境下需要手动编译以下库1. MySQL Connector/C# 安装依赖 sudo apt-get install libssl-dev libncurses5-dev # 下载源码 git clone https://github.com/mysql/mysql-connector-cpp.git cd mysql-connector-cpp mkdir build cd build # 编译安装 cmake -DCMAKE_BUILD_TYPERelease -DWITH_JDBCON .. make -j$(nproc) sudo make install # 复制到 third-party 目录 cp -r /usr/local/mysql-connector-c/ ${PROJECT_DIR}/ZcManager-server/third-party/mysql-connector-c-linux2. libhv# 下载源码 git clone https://github.com/ithewei/libhv.git cd libhv mkdir build cd build # 编译安装 cmake -DCMAKE_BUILD_TYPERelease .. make -j$(nproc) sudo make install # 复制到 third-party 目录 cp -r /usr/local/lib/hv/ ${PROJECT_DIR}/ZcManager-server/third-party/hv cp /usr/local/include/hv/ ${PROJECT_DIR}/ZcManager-server/third-party/hv/include -r3. hiredis# 下载源码 git clone https://github.com/redis/hiredis.git cd hiredis mkdir build cd build # 编译安装 cmake -DCMAKE_BUILD_TYPERelease .. make -j$(nproc) sudo make install # 复制到 third-party 目录 cp /usr/local/lib/libhiredis.so* ${PROJECT_DIR}/ZcManager-server/third-party/hiredis/lib/ cp -r /usr/local/include/hiredis/ ${PROJECT_DIR}/ZcManager-server/third-party/hiredis/include/4. redis# 下载源码 git clone https://github.com/sewenew/redis-plus-plus.git cd redis-plus-plus mkdir build cd build # 编译安装需要先安装 hiredis cmake -DCMAKE_BUILD_TYPERelease .. make -j$(nproc) sudo make install # 复制到 third-party 目录 cp /usr/local/lib/libredis.so* ${PROJECT_DIR}/ZcManager-server/third-party/redis/lib/ cp -r /usr/local/include/sw/ ${PROJECT_DIR}/ZcManager-server/third-party/redis/include/5. 更新 CMake 路径可选如果将库安装到了非标准路径需要在构建服务器时指定cd ZcManager-server cmake -B build \ -DCMAKE_BUILD_TYPERelease \ -DMySQLConnectorCPP_DIR/path/to/mysql-connector-c \ -Dlibhv_DIR/path/to/hv \ -Dhiredis_DIR/path/to/hiredis \ -Dredis_DIR/path/to/redis \ ..CMake 选项选项默认值说明USE_REDIS_CACHEOFF是否启用 Redis 缓存CMAKE_BUILD_TYPEDebug构建类型Debug/Release使用说明登录启动服务器和客户端在登录页面输入用户名和密码默认管理员账号admin/123456输入验证码点击登录用户管理登录系统后点击左侧菜单系统管理 - 用户管理在用户管理页面可以查看、新增、编辑、删除用户支持导入/导出用户数据Excel 格式角色管理点击左侧菜单系统管理 - 角色管理在角色管理页面可以管理角色信息点击权限设置可以分配角色的菜单权限点击分配用户可以为角色分配用户菜单管理点击左侧菜单系统管理 - 菜单管理在菜单管理页面可以管理系统菜单支持树形结构显示个人信息点击右上角用户头像选择个人信息在个人信息页面可以修改昵称、密码、头像API 接口认证接口方法路径说明POST/login用户登录GET/logout用户退出GET/getInfo获取用户信息GET/getRouters获取路由信息用户接口方法路径说明GET/system/user/list用户列表POST/system/user新增用户PUT/system/user修改用户DELETE/system/user/{userId}删除用户角色接口方法路径说明GET/system/role/list角色列表POST/system/role新增角色PUT/system/role修改角色DELETE/system/role/{roleId}删除角色菜单接口方法路径说明GET/system/menu/list菜单列表POST/system/menu新增菜单PUT/system/menu修改菜单DELETE/system/menu/{menuId}删除菜单部门接口方法路径说明GET/system/dept/list部门列表POST/system/dept新增部门PUT/system/dept修改部门DELETE/system/dept/{deptId}删除部门岗位接口方法路径说明GET/system/post/list岗位列表POST/system/post新增岗位PUT/system/post修改岗位DELETE/system/post/{postId}删除岗位个人信息接口方法路径说明GET/profile/avatar获取头像POST/profile/avatar更新头像PUT/profile/password修改密码代码规范命名规范类名大驼峰命名PascalCase如MainWindow函数名小驼峰命名camelCase如getUserList变量名小驼峰命名camelCase如userName常量名全大写下划线分隔如MAX_SIZE文件命名与类名一致如MainWindow.cpp代码风格使用 4 空格缩进花括号{独占一行行尾不保留空格中文注释使用//英文注释使用//或/* */异常处理使用try-catch块捕获异常自定义异常类继承std::exception异常信息使用英文描述内存管理使用智能指针std::unique_ptr和std::shared_ptr避免手动new/delete使用 RAII 模式管理资源常见问题Q1编译时找不到 Qt 头文件解决方案确保 Qt 环境变量已正确配置或在 CMake 中指定 Qt 路径cmake -DCMAKE_PREFIX_PATH/path/to/qt ..Q2数据库连接失败解决方案检查 MySQL 服务是否启动检查application.ini中的数据库配置确保数据库用户有权限访问zc-manager数据库Q3Redis 连接失败解决方案检查 Redis 服务是否启动检查application.ini中的 Redis 配置如果不需要 Redis在 CMake 中禁用-DUSE_REDIS_CACHEOFFQ4客户端无法连接服务器解决方案检查服务器是否启动检查服务器端口是否正确默认 8080检查防火墙设置确保端口开放贡献指南提交代码Fork 项目创建功能分支git checkout -b feature/xxx提交代码git commit -m feat: xxx推送到远程git push origin feature/xxx创建 Pull Request代码审查确保代码符合项目规范添加必要的注释和文档编写单元测试确保所有测试通过许可证本项目采用 MIT 许可证详见 LICENSE 文件。致谢RuoYi - 若依管理系统提供了优秀的架构设计参考libhv - 高性能 HTTP 服务器库Qt - 优秀的跨平台 UI 框架nlohmann-json - 现代 C JSON 库