# ian-arica/sistema_gestion_biblioteca architecture

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

- Interactive diagram: https://gitdiagram.com/ian-arica/sistema_gestion_biblioteca
- Repository: https://github.com/ian-arica/sistema_gestion_biblioteca

## Overview

This is a small Java console library manager. A library user chooses menu operations in `Main`, which holds the catalog, users, and loans in arrays and handles listing, searching, circulation, and statistics. Loan registration creates active loans and updates book availability and user counts; returns update those counts and mark loans returned. The README documents the menu capabilities; the sampled `Main` excerpt is partial, so operation-specific wiring beyond the visible loan, return, and search logic is based on that documentation.

Main entry points: [`src/main/java/biblioteca/Main.java`](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java) (Menu and operations), [`src/main/java/biblioteca/Prestamo.java`](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Prestamo.java) (Loan record), [`src/main/java/biblioteca/Libro.java`](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Libro.java) (Book), [`src/main/java/biblioteca/Usuario.java`](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Usuario.java) (Library member)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Console workflow"]
  node_main["Menu and operations<br/>[Main.java]"]
  node_arrays["In-memory arrays<br/>[Main.java]"]
  node_stats["Library statistics<br/>[Main.java]"]
end

subgraph group_catalog["Catalog and members"]
  node_catalog_ops["Catalog listing and search<br/>[Main.java]"]
  node_member_ops["User listing<br/>[Main.java]"]
  node_book["Book<br/>[Libro.java]"]
  node_member["Library member<br/>[Usuario.java]"]
end

subgraph group_circulation["Loan circulation"]
  node_loan_ops["Register loans<br/>[Main.java]"]
  node_return_ops["Register returns<br/>[Main.java]"]
  node_active_ops["Active loans<br/>[Main.java]"]
  node_loan["Loan record<br/>[Prestamo.java]"]
end

node_patron(("Library user"))

node_patron -->|"chooses options"| node_main
node_main -->|"shows results"| node_patron
node_main -->|"reads and updates"| node_arrays
node_main -->|"dispatches"| node_catalog_ops
node_main -->|"dispatches"| node_member_ops
node_main -->|"dispatches"| node_loan_ops
node_main -->|"dispatches"| node_return_ops
node_main -->|"dispatches"| node_active_ops
node_main -->|"dispatches"| node_stats
node_catalog_ops -->|"displays details"| node_book
node_member_ops -->|"displays members"| node_member
node_loan_ops -->|"creates active loan"| node_loan
node_loan_ops -->|"decrements availability"| node_book
node_loan_ops -->|"increments loan count"| node_member
node_return_ops -->|"returns active loan"| node_loan
node_loan -->|"restores availability"| node_book
node_loan -->|"decrements loan count"| node_member
node_active_ops -->|"lists active loans"| node_loan

click node_main "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java"
click node_arrays "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java"
click node_catalog_ops "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java"
click node_member_ops "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java"
click node_stats "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java"
click node_book "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Libro.java"
click node_member "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Usuario.java"
click node_loan_ops "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java"
click node_return_ops "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java"
click node_active_ops "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java"
click node_loan "https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Prestamo.java"

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_main,node_arrays,node_stats,node_patron toneBlue
class node_catalog_ops,node_member_ops,node_book,node_member toneAmber
class node_loan_ops,node_return_ops,node_active_ops,node_loan toneMint
```

## Components

### Console workflow

- [Menu and operations](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java): `src/main/java/biblioteca/Main.java`
- [In-memory arrays](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java): `src/main/java/biblioteca/Main.java`
- [Library statistics](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java): `src/main/java/biblioteca/Main.java`

### Catalog and members

- [Catalog listing and search](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java): `src/main/java/biblioteca/Main.java`
- [User listing](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java): `src/main/java/biblioteca/Main.java`
- [Book](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Libro.java): `src/main/java/biblioteca/Libro.java`
- [Library member](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Usuario.java): `src/main/java/biblioteca/Usuario.java`

### Loan circulation

- [Register loans](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java): `src/main/java/biblioteca/Main.java`
- [Register returns](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java): `src/main/java/biblioteca/Main.java`
- [Active loans](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Main.java): `src/main/java/biblioteca/Main.java`
- [Loan record](https://github.com/ian-arica/sistema_gestion_biblioteca/blob/main/src/main/java/biblioteca/Prestamo.java): `src/main/java/biblioteca/Prestamo.java`

### Other components

- **Library user**

## Connections

- Library user → Menu and operations: chooses options
- Menu and operations → Library user: shows results
- Menu and operations → In-memory arrays: reads and updates
- Menu and operations → Catalog listing and search: dispatches
- Menu and operations → User listing: dispatches
- Menu and operations → Register loans: dispatches
- Menu and operations → Register returns: dispatches
- Menu and operations → Active loans: dispatches
- Menu and operations → Library statistics: dispatches
- Catalog listing and search → Book: displays details
- User listing → Library member: displays members
- Register loans → Loan record: creates active loan
- Register loans → Book: decrements availability
- Register loans → Library member: increments loan count
- Register returns → Loan record: returns active loan
- Loan record → Book: restores availability
- Loan record → Library member: decrements loan count
- Active loans → Loan record: lists active loans
