本系统是一个高度模块化、具备完整业务逻辑的《图书馆管理系统》。
系统采用 C++17 标准开发,基于 Qt 6.10 框架构建,实现了从读者管理、图书入库、馆藏实物追踪到借还事务处理及罚款缴纳的全流程管理。
采用了类似 Web 开发的前后端分离架构:
- 技术栈:Qt Widgets + QSS (Qt Style Sheets)
- 核心逻辑:仅负责 UI 渲染、用户交互、数据验证及调用后端接口。
- 技术栈:原生 C++ + Qt SQL 模块
- 核心逻辑:封装了所有的 SQL 数据库操作。后端通过 API 接口(如
borrowBook,getAllReaders)向前端提供服务。 - 稳定性:引入了数据库事务(Transaction)机制,确保在借还书等涉及多表联动的操作中,数据具备 ACID 特性(原子性、一致性、隔离性、持久性)。
对比了 MySQL 和 SQLite,最终决定在本项目中采用 SQLite。
理由如下:
- MySQL:需要安装数据库服务器、配置环境变量、管理用户权限,并确保后台服务始终运行。这给软件的部署和“跨电脑运行”带来了巨大的障碍。
- SQLite:它是自包含、无服务器的。数据库就是一个普通的
.db文件,随程序一起移动。
- MySQL:Qt 官方并不直接内置 MySQL 驱动(因版权协议),常会遇到
Driver not loaded的环境报错,调试极其耗时。 - SQLite:Qt 原生内置了 SQLite 驱动。这意味着程序在任何安装了 Qt 库的机器上都能 100% 成功连接数据库,不会出现驱动丢失问题。
对于图书馆管理系统,SQLite 的本地文件读写速度远超 MySQL 的网络连接通信,响应延迟几乎为零,完全满足本项目的业务需求。
为保证作业完整性,仍建立了 MySQL 的数据库并导出了 SQL 文件。
实际上,程序源代码中已编写了 数据库为空时自动初始化 的函数,确保首次运行即可使用。
配置好编译器和 Qt 环境后,执行以下命令:
PS E:\github\LibraryMS> cmake --build build PS E:\github\LibraryMS> .\build\frontend\LibraryApp.exe