一个图书馆管理系统(C++ + SQLite3(后续可能迁移至MySQL))
本项目依赖以下第三方库。请在编译前,将对应文件下载并放置到项目的 external/include 目录(需要自己创建)下:
- httplib.h[[https://github.com/yhirose/cpp-httplib/blob/master/httplib.h]]
- json.hpp
- sqlite3.h [[https://www.sqlite.org/2026/sqlite-amalgamation-3510200.zip]]
出现以下报错可以通过在main.cpp中添加以下代码到文件开头来解决
#error "cpp-httplib doesn't support Windows 8 or lower. Please use Windows 10 or later."
#define _WIN32_WINNT 0x0A00
#define WINVER 0x0A00
角色说明:user 表中 role 取值为 student(读者)、admin(管理员)、super_admin(超级管理员)。首次启动应用且数据库中尚不存在
super_admin 时,会自动创建默认超级管理员账号:用户 ID 000000000001,默认密码 123456
,登录后请尽快通过「个人信息 / 修改密码」更换密码。普通读者通过注册页面自助注册;管理员由超级管理员在「超级管理员控制台」将读者提拔产生。用户
ID 000000000001 已在注册接口中保留,不可被他人占用。
- 作用:指定日志根目录;建议使用绝对路径。设置后,访问 / 业务 / 错误日志分别写入该目录下的
access、business、error子目录,文件按日期命名(如2026-04-22.log)。 - 未设置时:默认写入 CMake 配置时的项目源码根目录下的
logs目录(同样包含上述子目录)。 - 部署注意:若将可执行文件拷贝到其他机器、或构建机路径在目标环境无效,请设置
LIBRARY_LOG_DIR指向目标机上可写目录(例如 Linux 下的/var/log/<应用名>)。
Windows(PowerShell)示例
$env:LIBRARY_LOG_DIR = "D:\logs\library-system"
.\Library_Management_System.exeLinux / macOS 示例
export LIBRARY_LOG_DIR=/var/log/library-system
./Library_Management_System- 查找图书(支持作者,书名,类别模糊查询,isbn精确查询)
- 借阅图书
- 查看借阅记录和状态
- 查看个人信息
- 修改密码
- 借阅统计(在个人信息界面和主页面显示当前借阅数量,历史借阅数量,超期图书数量,即将到期图书数量)
- 归还图书
- 续借申请(提交后由管理员审核通过后延期)
- 用户注册
- 图书管理(添加,编辑(字段可以选择,bookId不可修改),删除图书(删除所有副本);添加副本,删除副本)
- 冻结/解冻账户
- 查看读者详细信息
- 搜索用户
- 人工借书
- 人工还书
- 提交书籍异常处理报告
- 统计图书总数,读者总数,当前借阅,超期图书
- 文件上传(支持txt文件批量添加,批量添加过程中如果有错误,会生成并自动下载错误报告)
- 处理书籍异常处理报告
- 读者续借申请的审批
- 独立控制台页面(
super-admin.html):登录后超级管理员进入该页,可跳转至图书管理后台(admin.html) - 查看管理员与超级管理员账号列表
- 将读者(student)提拔为管理员
- 撤销管理员身份,恢复为读者(不可撤销超级管理员)
- 删除管理员
- 添加管理员
- 密码加密
- 黑名单
- 日志(文件分流、按日切分;路径见上文「环境变量」)
- 用户登录和修改密码时boby中的密码未加密就传到了后端,应该在前端加密后传到后端
- 导出书籍异常处理报告为excel
- 对超期图书进行操作
- 后台应有对距离当天多久为新书的设置
- 支持批量导入读者信息
- 密码找回功能
- 数据库备份功能
- 逾期提醒功能,弹窗提醒,并显示超期天数和书本基本信息
推荐系统的仓库地址[[https://github.com/huyunke/Book_Recommendation_System]]
- 基于自身借阅内容的推荐
- 基于相似读者的推荐
- 基于热门度 / 趋势的推荐
- 基于类别平衡 / 多样性的推荐
- 基于新书 / 时间因素的推荐
- 混合推荐
- 多线程
- 从SQLite迁移到MySQL