# withstars/books-management-system architecture

> Architecture diagram of the GitHub repository withstars/books-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/withstars/books-management-system
- Repository: https://github.com/withstars/books-management-system

## Overview

This is a Spring MVC library-management web application. Readers and administrators sign in, then use role-specific screens to search and maintain books and reader records, manage borrowing and returns, and view lending history. Controllers invoke service-layer operations, which use JDBC DAOs to access MySQL; JSPs render the resulting pages. The README also documents password changes, lost-card handling, and overdue reminders. Those latter capabilities are represented at the service-subsystem level because their specific implementation paths and wiring were not established by the sampled source.

Main entry points: [`src/main/java/com/book/web/LendController.java`](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/LendController.java) (Lending controller), [`src/main/java/com/book/web/ReaderController.java`](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/ReaderController.java) (Reader controller), [`src/main/java/com/book/web/LoginController.java`](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/LoginController.java) (Login controller), [`src/main/java/com/book/web/BookController.java`](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/BookController.java) (Book controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_login_controller["Login controller"]
  node_book_controller["Book controller"]
  node_reader_controller["Reader controller"]
  node_lend_controller["Lending controller"]
end

subgraph group_business["Business services"]
  node_login_service["Login service<br/>[LoginService.java]"]
  node_book_service["Book service<br/>[BookService.java]"]
  node_reader_info_service["Reader service"]
  node_reader_card_service["Card service"]
  node_lend_service["Lending service<br/>[LendService.java]"]
  node_documented_ops["Lost-card and overdue operations"]
end

subgraph group_data["Persistence and domain"]
  node_book_dao["Book DAO<br/>[BookDao.java]"]
  node_reader_dao["Reader and card DAOs"]
  node_lend_dao["Lending DAO<br/>[LendDao.java]"]
  node_admin_dao["Admin DAO<br/>[AdminDao.java]"]
  node_domain["Domain records"]
end

subgraph group_runtime["Runtime views"]
  node_jsp["JSP pages"]
end

node_reader(("Reader"))
node_admin(("Administrator"))
node_mysql[("MySQL database")]

node_reader -->|"submits login"| node_login_controller
node_admin -->|"submits login"| node_login_controller
node_reader -->|"searches books"| node_book_controller
node_admin -->|"manages books"| node_book_controller
node_admin -->|"manages readers"| node_reader_controller
node_admin -->|"lends or returns"| node_lend_controller
node_reader -->|"views loans"| node_lend_controller
node_login_controller -->|"authenticates"| node_login_service
node_book_controller -->|"manages books"| node_book_service
node_reader_controller -->|"manages reader info"| node_reader_info_service
node_reader_controller -->|"updates card"| node_reader_card_service
node_lend_controller -->|"manages loans"| node_lend_service
node_lend_controller -->|"loads book"| node_book_service
node_login_service -->|"checks reader"| node_reader_dao
node_login_service -->|"checks admin"| node_admin_dao
node_book_service -->|"queries and updates"| node_book_dao
node_reader_info_service -->|"queries and updates"| node_reader_dao
node_reader_card_service -->|"updates card"| node_reader_dao
node_lend_service -->|"records loan changes"| node_lend_dao
node_book_dao -->|"reads and writes"| node_mysql
node_reader_dao -->|"reads and writes"| node_mysql
node_lend_dao -->|"reads and writes"| node_mysql
node_admin_dao -->|"reads and writes"| node_mysql
node_login_controller -->|"renders login pages"| node_jsp
node_book_controller -->|"renders book pages"| node_jsp
node_reader_controller -->|"renders reader pages"| node_jsp
node_lend_controller -->|"renders lending pages"| node_jsp

click node_login_controller "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/LoginController.java"
click node_book_controller "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/BookController.java"
click node_reader_controller "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/ReaderController.java"
click node_lend_controller "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/LendController.java"
click node_login_service "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/LoginService.java"
click node_book_service "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/BookService.java"
click node_reader_info_service "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/ReaderInfoService.java"
click node_reader_card_service "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/ReaderCardService.java"
click node_lend_service "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/LendService.java"
click node_documented_ops "https://github.com/withstars/books-management-system/tree/master/src/main/java/com/book/service"
click node_book_dao "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/dao/BookDao.java"
click node_reader_dao "https://github.com/withstars/books-management-system/tree/master/src/main/java/com/book/dao"
click node_lend_dao "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/dao/LendDao.java"
click node_admin_dao "https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/dao/AdminDao.java"
click node_domain "https://github.com/withstars/books-management-system/tree/master/src/main/java/com/book/domain"
click node_jsp "https://github.com/withstars/books-management-system/tree/master/src/main/webapp/WEB-INF/jsp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_login_controller,node_book_controller,node_reader_controller,node_lend_controller toneBlue
class node_login_service,node_book_service,node_reader_info_service,node_reader_card_service,node_lend_service,node_documented_ops,node_mysql toneAmber
class node_book_dao,node_reader_dao,node_lend_dao,node_admin_dao,node_domain toneMint
class node_jsp toneRose
class node_reader,node_admin toneIndigo
```

## Components

### Web interface

- [Login controller](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/LoginController.java): `src/main/java/com/book/web/LoginController.java`
- [Book controller](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/BookController.java): `src/main/java/com/book/web/BookController.java`
- [Reader controller](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/ReaderController.java): `src/main/java/com/book/web/ReaderController.java`
- [Lending controller](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/web/LendController.java): `src/main/java/com/book/web/LendController.java`

### Business services

- [Login service](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/LoginService.java): `src/main/java/com/book/service/LoginService.java`
- [Book service](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/BookService.java): `src/main/java/com/book/service/BookService.java`
- [Reader service](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/ReaderInfoService.java): `src/main/java/com/book/service/ReaderInfoService.java`
- [Card service](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/ReaderCardService.java): `src/main/java/com/book/service/ReaderCardService.java`
- [Lending service](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/service/LendService.java): `src/main/java/com/book/service/LendService.java`
- [Lost-card and overdue operations](https://github.com/withstars/books-management-system/tree/master/src/main/java/com/book/service): `src/main/java/com/book/service`

### Persistence and domain

- [Book DAO](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/dao/BookDao.java): `src/main/java/com/book/dao/BookDao.java`
- [Reader and card DAOs](https://github.com/withstars/books-management-system/tree/master/src/main/java/com/book/dao): `src/main/java/com/book/dao`
- [Lending DAO](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/dao/LendDao.java): `src/main/java/com/book/dao/LendDao.java`
- [Admin DAO](https://github.com/withstars/books-management-system/blob/master/src/main/java/com/book/dao/AdminDao.java): `src/main/java/com/book/dao/AdminDao.java`
- [Domain records](https://github.com/withstars/books-management-system/tree/master/src/main/java/com/book/domain): `src/main/java/com/book/domain`

### Runtime views

- [JSP pages](https://github.com/withstars/books-management-system/tree/master/src/main/webapp/WEB-INF/jsp): `src/main/webapp/WEB-INF/jsp`

### Other components

- **Reader**
- **Administrator**
- **MySQL database**

## Connections

- Reader → Login controller: submits login
- Administrator → Login controller: submits login
- Reader → Book controller: searches books
- Administrator → Book controller: manages books
- Administrator → Reader controller: manages readers
- Administrator → Lending controller: lends or returns
- Reader → Lending controller: views loans
- Login controller → Login service: authenticates
- Book controller → Book service: manages books
- Reader controller → Reader service: manages reader info
- Reader controller → Card service: updates card
- Lending controller → Lending service: manages loans
- Lending controller → Book service: loads book
- Login service → Reader and card DAOs: checks reader
- Login service → Admin DAO: checks admin
- Book service → Book DAO: queries and updates
- Reader service → Reader and card DAOs: queries and updates
- Card service → Reader and card DAOs: updates card
- Lending service → Lending DAO: records loan changes
- Book DAO → MySQL database: reads and writes
- Reader and card DAOs → MySQL database: reads and writes
- Lending DAO → MySQL database: reads and writes
- Admin DAO → MySQL database: reads and writes
- Login controller → JSP pages: renders login pages
- Book controller → JSP pages: renders book pages
- Reader controller → JSP pages: renders reader pages
- Lending controller → JSP pages: renders lending pages
