Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 LibroNova - Library Management System

🧩 Proyecto de Desempeño - Java SE + JOptionPane + JDBC + Capas + Archivos + Excepciones + Pruebas


📝 Overview

LibroNova is a Java SE (17+) desktop application designed for the internal management of a library network.
It allows administrators and assistants to efficiently manage books, users, members, loans, returns, reports, and fines using a modal graphical interface with JOptionPane.

The system applies:

  • Layered architecture (controller, service, dao, model)
  • JDBC persistence (MySQL/MariaDB)
  • Custom exceptions and validations
  • CSV exportation and configuration via .properties files
  • JUnit 5 testing
  • Transaction control and logging

Steps to Open the Project in Visual Studio Code

🔹 1. Unzip the Project Folder

Locate the downloaded .zip file.

Right-click on it and select “Extract All” or “Unzip Here”.

A new folder with the project name will be created.

2. Open the Project in Visual Studio Code

Open Visual Studio Code.

Go to File → Open Folder...

Select the unzipped project folder and click Open.

Wait for Visual Studio Code to load all project files.

3. Run or Preview the Project (Optional)

If there’s an index.html file:

Right-click on it → “Open with Live Server” (if you have the extension installed). Or simply double-click the file to open it in your web browser.

src/main/java

┣ 📂 app # Main entry point of the application ┣ 📂 config # Database connection and configuration ┣ 📂 model # Domain entities (User, Book, Loan, Member, etc.) ┣ 📂 repository # DAO classes for database interaction ┣ 📂 service # Business logic and validations ┣ 📂 controller # User interaction and control logic ┗ 📂 util # Utilities and helper classes ┣ 📂 test # JUnit 5 unit tests

🎯 Objective

LibroNova seeks to resolve various operational problems such as:

  • Duplicate books caused by manual ISBN errors.
  • Inventory inconsistencies and book availability issues.
  • Lack of user and role management.
  • Incomplete loan/return records.
  • Data loss due to the use of non-synchronized spreadsheets and physical forms.

This system centralizes and automates all processes under a unified, reliable, and maintainable structure.


Component Version

  • Java SE / 17+
  • Maven / 3.6+
  • MySQL / MariaDB 8.0+
  • JUnit / 5.x
  • PlantUML / (for diagrams)
  • IDE / IntelliJ IDEA / with Java support

⚙️ Main Features

📗 1. Book Management / Gestión de Libros

  • Register new books with: isbn, titulo, autor, categoria, ejemplaresTotales, ejemplaresDisponibles, precioReferencia, isActivo, createdAt.
  • Validate unique ISBN before registration.
  • Edit, activate/deactivate, and filter books by category or author.
  • Display results in formatted text tables using JOptionPane.

👤 2. User Management & Authentication / Usuarios y Autenticación

  • Login with role validation (ADMIN / ASISTENTE).
  • CRUD operations for users.
  • Apply Decorator pattern to assign default properties: role: "ASISTENTE", estado: "ACTIVO", createdAt: now().
  • Log simulated HTTP requests (GET, POST, PATCH, DELETE) in console.

🪟 3. Interface (JOptionPane)

  • Modal menus:
    • Catalog
    • Members
    • Users
    • Loans
    • Exports
  • Clear dialogs for success/error.
  • Helpers for aligned tables and [ACTIVO]/[INACTIVO] tags.

💾 4. JDBC + CRUD + Transactions

  • DAO interfaces and JDBC implementations using PreparedStatement.
  • try-with-resources for automatic resource closure.
  • Transaction control:
    • Loan → setAutoCommit(false) → insert → update stock → commit() / rollback()
    • Return → update → calculate fine → restore stock → commit()
  • Full CRUD operations integrated with exception handling.

🗂️ 5. File Management

  • Configuration file config.properties:
    db.url= jdbc:mysql://168.119.183.3:3307/Andrew3
    db.username=root
    db.password=g0tIFJEQsKHm5$34Pxu1
    diasPrestamo=7
    multaPorDia=1500

📷 Capturas y Diagramas

Diagrama 1

Diagrama 1

Diagrama 2

Diagrama 2

Pantalla 1

Pantalla 1

Pantalla 2

Pantalla 2

Pantalla 3

Pantalla 3

Developed by: Andres Felipe Marin Patiño / Software Developer / Berneslee

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages