Skip to content

Ljk2006/SEproject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

图书馆管理系统

项目简介

这是一个基于Java和MySQL的图书馆管理系统,采用四层架构设计(Model、DAO、Service、UI),实现了图书管理、读者管理、借阅管理、罚款管理等核心功能。

技术栈

  • Java 21
  • MySQL 8.0+
  • Spring Boot 3.2.0
  • JDBC
  • Maven
  • HTML/CSS/JavaScript (前端)

项目结构

本项目采用经典的四层架构设计,代码结构清晰,职责分明,便于维护和扩展。

SEproject/
│
├── src/main/java/org/example/
│   │
│   ├── 📦 model/                    # 实体类层(Model Layer)
│   │   │   └── 职责:定义数据实体,对应数据库表结构
│   │   ├── Admin.java              # 管理员实体
│   │   ├── Book.java               # 图书实体
│   │   ├── BookCategory.java       # 图书类别实体
│   │   ├── BorrowRecord.java       # 借阅记录实体
│   │   ├── PenaltyRecord.java      # 罚款记录实体
│   │   └── Reader.java             # 读者实体
│   │
│   ├── 🗄️ dao/                      # 数据访问层(Data Access Object Layer)
│   │   │   └── 职责:封装数据库操作,提供CRUD方法
│   │   ├── AdminDAO.java           # 管理员数据访问
│   │   ├── BookDAO.java            # 图书数据访问
│   │   ├── BookCategoryDAO.java    # 图书类别数据访问
│   │   ├── BorrowRecordDAO.java    # 借阅记录数据访问
│   │   ├── PenaltyRecordDAO.java   # 罚款记录数据访问
│   │   └── ReaderDAO.java          # 读者数据访问
│   │
│   ├── ⚙️ service/                   # 业务逻辑层(Service Layer)
│   │   │   └── 职责:实现核心业务逻辑,处理业务规则
│   │   ├── AdminService.java       # 管理员业务逻辑
│   │   ├── BookService.java         # 图书业务逻辑
│   │   ├── BookCategoryService.java # 图书类别业务逻辑
│   │   ├── BorrowService.java      # 借阅业务逻辑(核心)
│   │   ├── PenaltyService.java     # 罚款业务逻辑
│   │   └── ReaderService.java      # 读者业务逻辑
│   │
│   ├── 🌐 controller/               # Web控制器层(Controller Layer)
│   │   │   └── 职责:处理HTTP请求,返回JSON响应
│   │   ├── AdminController.java    # 管理员功能接口
│   │   ├── AuthController.java     # 认证接口(登录/注册/登出)
│   │   ├── PageController.java     # 页面路由控制器
│   │   └── ReaderController.java   # 读者功能接口
│   │
│   ├── 🛠️ util/                     # 工具类层(Utility Layer)
│   │   │   └── 职责:提供通用工具方法
│   │   └── DBUtil.java             # 数据库连接工具类
│   │
│   ├── 🚀 LibraryApplication.java   # Spring Boot启动类(Web版本,当前使用)
│   │
│   ├── 📝 Main.java                 # 控制台版本入口
│   └── 🖥️ ui/                        # 控制台UI界面
│       ├── AdminUI.java            # 管理员控制台界面
│       ├── LoginUI.java            # 登录控制台界面
│       └── ReaderUI.java           # 读者控制台界面
│   │
│   └── src/main/resources/
│       ├── application.properties   # 应用配置文件
│       ├── init_database.sql        # 数据库初始化脚本
│       ├── static/                  # 静态资源
│       │   ├── css/                 # 样式文件
│       │   └── js/                  # JavaScript文件
│       └── templates/               # HTML模板
│           ├── admin.html           # 管理员界面
│           ├── login.html          # 登录界面
│           ├── reader.html         # 读者界面
│           └── register.html      # 注册界面
│
└── pom.xml                          # Maven项目配置文件

架构说明

层级 职责 主要功能
Model 数据模型 定义实体类,映射数据库表结构
DAO 数据访问 封装SQL操作,提供数据持久化接口
Service 业务逻辑 实现业务规则,处理复杂业务逻辑
Controller 请求处理 接收HTTP请求,调用Service,返回JSON响应
Util 工具支持 提供数据库连接等通用工具方法

数据流向

前端请求 → Controller → Service → DAO → Database
                ↓         ↓        ↓
              JSON响应 ← 业务逻辑 ← 数据操作

数据库配置

1. 创建数据库

执行 src/main/resources/init_database.sql 脚本创建数据库和表结构,并初始化测试数据。

2. 修改数据库连接配置

编辑 src/main/resources/application.properties,修改以下配置:

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/library?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true
spring.datasource.username=root        # 修改为你的MySQL用户名
spring.datasource.password=your_password  # 修改为你的MySQL密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

注意allowPublicKeyRetrieval=true 参数用于解决MySQL 8.0+版本的连接问题。

功能说明

📚 管理员功能

  • 图书管理:添加、修改、删除、查询图书信息
  • 读者管理:添加、修改、删除、查询读者信息,重置读者密码
  • 借阅管理:查询读者借阅记录,查看逾期信息
  • 个人信息:查看和修改个人信息及密码

👤 读者功能

  • 借还书:借阅图书(系统自动检查罚款和逾期),归还图书(自动计算逾期罚款)
  • 图书查询:查看所有图书,按书名或类别搜索
  • 借阅查询:查看当前借阅和历史借阅记录
  • 罚款管理:查询罚款记录,缴纳罚款
  • 个人信息:查看和修改个人信息及密码

业务规则

借书规则

  1. 检查读者是否有未支付的罚款,如有则不允许借书
  2. 检查读者是否有逾期未还的图书,如有则不允许借书
  3. 检查图书库存是否大于0
  4. 借阅期限为30天
  5. 借书成功后,图书库存自动减1

还书规则

  1. 如果逾期,系统自动生成罚款记录
  2. 每日罚款金额:0.5元
  3. 还书成功后,图书库存自动加1
  4. 逾期图书必须先缴纳罚款才能继续借书

测试账号

管理员账号

  • ID: ADMIN001
  • 密码: admin123

读者账号

  • ID: READER001
  • 密码: reader123
  • ID: READER002
  • 密码: reader123

运行说明

Web版本(推荐)

  1. 确保MySQL服务已启动
  2. 执行数据库初始化脚本 src/main/resources/init_database.sql
  3. 修改数据库连接配置:编辑 src/main/resources/application.properties,修改数据库用户名和密码
  4. 下载Maven依赖:在IDEA中右键点击 pom.xml -> Maven -> Reload Project,或者运行命令:
    mvn clean install
  5. 启动Web应用:运行 src/main/java/org/example/LibraryApplication.java
  6. 访问系统:在浏览器中打开 http://localhost:8080
  7. 使用测试账号登录系统

控制台版本(已废弃,不推荐使用)

说明:系统最初开发了控制台版本(命令行界面),后来升级为Web版本(浏览器界面)。控制台版本的代码(Main.javaui/ 目录)已不再维护和更新,但保留在项目中仅作参考。强烈建议使用Web版本,功能更完善,界面更友好。

如果确实需要使用控制台版本,可以运行 src/main/java/org/example/Main.java,但请注意:

  • 控制台版本功能可能不完整
  • 不再提供技术支持和更新
  • Web版本是当前主要维护的版本

注意事项

  1. 请确保MySQL版本为8.0或以上
  2. 确保MySQL中已创建对应的数据库用户和权限
  3. 首次运行前请先执行数据库初始化脚本
  4. 数据库连接配置需要根据实际情况修改

开发说明

本项目采用标准的四层架构设计:

  • Model层: 实体类,对应数据库表结构
  • DAO层: 数据访问层,封装所有数据库操作
  • Service层: 业务逻辑层,实现核心业务规则
  • UI层: 用户界面层,负责与用户交互
  • Util层: 工具类层,提供数据库连接等工具方法

这种分层设计使得代码结构清晰,易于维护和扩展。

About

Library management system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors