H大学图书馆信息管理系统是一个基于C++面向对象设计的文字交互式管理系统。本项目实现了图书馆的基本管理功能,包括用户注册登录、图书浏览、借阅归还等核心功能,并使用外部文件进行数据持久化存储。
- ✅ 基本功能:用户注册/登录、图书浏览、借阅归还
- ✅ 面向对象设计:采用面向对象编程思想
- ✅ 数据持久化:外部文件存储(书籍信息、馆藏记录、借阅记录、用户信息)
- ✅ 参考数据:已提供基础书籍清单
├── src/ # 源代码目录
├── H大学....... # 学校要求文档
├── CMakeLists.txt # CMake构建配置
└── README.md # 项目说明文档
src/
├── Controller/ # 控制层 - 页面控制和参数获取
│ ├── (各种类的,这里可能有点不一样)Controller.h
│ └── (同上)Controller.cpp
├── Service/ # 业务层 - 逻辑处理和验证
│ ├── (各种类的)Service.h
│ └── (同上)Service.cpp
├── Dao/ # 数据访问层 - 文件读写操作
│ ├── (各种类的)Dao.h
│ ├── (各种类的)Dao.cpp
| └── readfromtxt和writetotxt.h/.cpp
├── pojo/ # 实体类定义
│ ├── User.h/.cpp # 用户类
│ ├── Book.h/.cpp # 图书类
│ └── BorrowRecord.h/.cpp # 借阅记录类
└── Data/ # 数据文件(模拟数据库)
├── books.txt # 图书信息
├── users.txt # 用户信息
└── borrowRecords.txt # 借阅记录
本项目采用类似SpringBoot的三层架构设计:
- Controller层:负责界面交互和参数传递
- Service层:负责业务逻辑处理和验证
- Dao层:负责数据持久化操作
- 开发工具:VSCode(已安装C++扩展)
- 编译器:MinGW(已添加至系统环境变量)
- 构建工具:CMake(≥3.10版本)
- VSCode插件:CMake Tools
# 检查CMake版本
cmake --version
# 检查MinGW版本
g++ --version在PowerShell中执行:
[Console]::InputEncoding = [System.Text.Encoding]::UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8- 使用VSCode打开项目根目录
- 按下
F1→ 输入CMake: Select a Kit→ 选择MinGW - 按下
F1→ 输入CMake: Select Variant→ 选择Release或Debug - 按下
F1→ 输入CMake: Build构建项目 - 在
bin/目录找到生成的可执行文件运行
# 在项目根目录执行
mkdir build && cd build
cmake .. -G "MinGW Makefiles"
cmake --build .
# 运行程序
cd ../bin
./LibraryManagementSystem.exe- 将所有源文件复制到同一目录
- 修改代码中的文件路径引用
- 新建项目并添加所有文件
- 编译运行
⚠️ 注意:若使用Dev-C++需要手动修改文件路径配置与项目结构,本人没尝试过这么做,欢迎指导
通过完成本项目,您将掌握以下技能:
- STL容器:
vector、string、map的熟练运用 - 文件操作:
fstream库函数的实际应用 - 编码规范:小驼峰命名法实践
- 面向对象设计:类与对象、继承、封装、多态
- 三层架构:Controller-Service-Dao分层设计
- 代码组织:模块化、高内聚低耦合
- CMake:项目构建与配置
- 版本管理:代码组织与维护
- 调试技巧:问题定位与解决
- 指针与引用:内存管理的深入理解
- 迭代器:容器遍历的高级用法
- 代码阅读:理解他人代码的能力
A:确保已设置UTF-8编码,并检查源文件编码格式是否为UTF-8。
A:检查CMakeLists.txt中的include目录配置,确保路径正确。
A:检查Data目录下的文件是否存在,并确认程序运行时的当前工作目录。
A:按照三层架构模式,分别在对应的层添加代码:
- pojo层:定义新的实体类
- Dao层:添加数据访问方法
- Service层:实现业务逻辑
- Controller层:添加用户界面
- 学长QQ:3635668126
- 支持范围:代码理解、环境配置、功能扩展、上至天文下至地理(bushi)
- 先理解整体架构,再深入细节
- 遇到问题先查看相关文档和注释
- 善用调试工具,逐步跟踪程序执行
- 尝试修改和扩展功能,加深理解
- 若发现问题欢迎通过QQ等方式批评指正
这是24级学长在期末期间,怀着对编程的热情和对当年遗憾的弥补,从零开始重构的图书馆管理系统。当年面对同样的课程项目,由于技术局限和经验不足,曾经历过不少挫折。
24级学长在期末周不复习数概与大物,在期末考试前闲出屁的操作成果,menu当中的ascii画是灵机一闪自创的人物
在面对程序设计期末大作业的时候,连vector都不会用的人面对这样一个大作业基本是两眼抓瞎,把问题丢给ai都只是获得一堆看也看不懂的内容,翻遍了整个github发现最基本的都用到了sql(虽然我现在会,但是在当时是听都没听说过的东西),好不容易找到了一个符合条件的,但是跑出来的却是乱码,也解决不了,在下定决心想要好好把代码死啃,写出一两个能用的方法的时候,无奈不知为何发起了40度的高烧。没办法只能够把别人的拿过来借鉴。最不幸的是在同一批验收的时候在我之前的人拿到借鉴的内容跟我是一样的,于是假称电脑没电没带充电器仓皇逃回宿舍临时修改代码以尝试让助教看不出来。最后验收时磕磕绊绊,磕磕巴巴,问什么都回答不太清楚,什么stl容器、什么实现方法、什么如何修改......都回答不上。我并不清楚当时助教到底有没有看出来这个同学到底明不明白所谓的“他写的代码”(估计是看出来了),也不清楚最后自己到底这一模块拿了多少分。我只记得当时我发誓,如果以后我变强了会写更多的代码了,我一定要再把这个东西重新、从零开始、明明白白的自己写一遍
这一次也算是补回了当时自己的遗憾吧。
如果说现在的你什么也不会,就连cpp的几个库函数都搞不明白,没有关系,不要灰心,只要你对计算机有着不灭的热情,想要学习,那一定会有蜕变成长的一天。
即使是从零开始。
- 开发时间:2026年1月
- 技术栈:C++17、CMake、STL
- 代码风格:面向对象、三层架构、小驼峰命名
- 适用对象:C++初学者、课程项目参考、自学者
- 感谢湖南大学程序设计课程的老师们
- 感谢所有提供帮助和指导的学长学姐和社团的同学
- 感谢deepseek和豆包大人提供的支持
- 感谢坚持不放弃的自己
愿这个项目能帮助你更好地学习C++和软件设计! 🚀
写下于 2026年1月18日,研究生楼B203
To Be Continued~