Gestione dell’Inventario di una Libreria in Java

Introduzione

La gestione dell’inventario è un problema comune in molti contesti, dalle librerie ai negozi di elettronica. In questo articolo, esploreremo come progettare un’applicazione Java per gestire l’inventario di una libreria. Questo esercizio è particolarmente utile per chi sta imparando la programmazione orientata agli oggetti (OOP) in Java, poiché combina concetti fondamentali come classi, oggetti, array e metodi.

L’applicazione che andremo a creare permetterà di gestire un elenco di libri, con funzionalità come l’aggiunta, la modifica, la ricerca e la rimozione di libri, oltre a funzioni più avanzate come il conteggio dei libri per genere o la visualizzazione di libri pubblicati in un determinato anno. Questo progetto è un ottimo punto di partenza per chi vuole imparare a gestire dati strutturati in Java.

Definizione della Classe Libro

La prima cosa di cui abbiamo bisogno è una classe che rappresenti un singolo libro. Questa classe avrà attributi come titolo, autore, genere, anno di pubblicazione, ISBN, prezzo e quantità disponibile in magazzino.

public class Libro { private String titolo; private String autore; private String genere; private int annoPubblicazione; private String isbn; private double prezzo; private int quantita; public Libro(String titolo, String autore, String genere, int annoPubblicazione, String isbn, double prezzo, int quantita) { this.titolo = titolo; this.autore = autore; this.genere = genere; this.annoPubblicazione = annoPubblicazione; this.isbn = isbn; this.prezzo = prezzo; this.quantita = quantita; } // Metodi getter e setter public String getTitolo() { return titolo; } public void setTitolo(String titolo) { this.titolo = titolo; } public String getAutore() { return autore; } public void setAutore(String autore) { this.autore = autore; } public String getGenere() { return genere; } public void setGenere(String genere) { this.genere = genere; } public int getAnnoPubblicazione() { return annoPubblicazione; } public void setAnnoPubblicazione(int annoPubblicazione) { this.annoPubblicazione = annoPubblicazione; } public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public double getPrezzo() { return prezzo; } public void setPrezzo(double prezzo) { this.prezzo = prezzo; } public int getQuantita() { return quantita; } public void setQuantita(int quantita) { this.quantita = quantita; } @Override public String toString() { return "Libro{" + "titolo='" + titolo + '\'' + ", autore='" + autore + '\'' + ", genere='" + genere + '\'' + ", annoPubblicazione=" + annoPubblicazione + ", isbn='" + isbn + '\'' + ", prezzo=" + prezzo + ", quantita=" + quantita + '}'; } }
Definizione della Classe GestioneInventario

La classe GestioneInventario sarà responsabile della gestione di una lista di libri. Utilizzeremo un ArrayList per memorizzare i libri e implementeremo vari metodi per gestire l’inventario.

import java.util.ArrayList; public class GestioneInventario { private ArrayList<Libro> inventario; public GestioneInventario() { inventario = new ArrayList<>(); } public void aggiungiLibro(Libro libro) { inventario.add(libro); } public void modificaLibro(String isbn, String titolo, String autore, String genere, int annoPubblicazione, double prezzo, int quantita) { for (Libro libro : inventario) { if (libro.getIsbn().equals(isbn)) { libro.setTitolo(titolo); libro.setAutore(autore); libro.setGenere(genere); libro.setAnnoPubblicazione(annoPubblicazione); libro.setPrezzo(prezzo); libro.setQuantita(quantita); break; } } } public Libro cercaLibro(String chiave) { for (Libro libro : inventario) { if (libro.getTitolo().equals(chiave) || libro.getAutore().equals(chiave) || libro.getIsbn().equals(chiave)) { return libro; } } return null; } public void visualizzaLibro(String isbn) { Libro libro = cercaLibro(isbn); if (libro != null) { System.out.println(libro); } else { System.out.println("Libro non trovato."); } } public void visualizzaInventario() { for (Libro libro : inventario) { System.out.println(libro); } } public void rimuoviLibro(String isbn) { inventario.removeIf(libro -> libro.getIsbn().equals(isbn)); } public int contaLibriPerGenere(String genere) { int count = 0; for (Libro libro : inventario) { if (libro.getGenere().equals(genere)) { count++; } } return count; } public void visualizzaLibriPerAnno(int anno) { for (Libro libro : inventario) { if (libro.getAnnoPubblicazione() == anno) { System.out.println(libro); } } } public void visualizzaLibriPerPrezzo(double soglia) { for (Libro libro : inventario) { if (libro.getPrezzo() < soglia) { System.out.println(libro); } } } }
Classe Test per Verificare le Funzionalità

Infine, creiamo una classe Test per verificare tutte le funzionalità implementate.

public class Test { public static void main(String[] args) { GestioneInventario inventario = new GestioneInventario(); inventario.aggiungiLibro(new Libro("Il Signore degli Anelli", "J.R.R. Tolkien", "Fantasy", 1954, "9788845204044", 25.99, 10)); inventario.aggiungiLibro(new Libro("1984", "George Orwell", "Distopia", 1949, "9788807888521", 15.99, 5)); inventario.aggiungiLibro(new Libro("Il Grande Gatsby", "F. Scott Fitzgerald", "Romanzo", 1925, "9788845292614", 12.99, 8)); System.out.println("Inventario completo:"); inventario.visualizzaInventario(); inventario.modificaLibro("9788845204044", "Il Signore degli Anelli", "J.R.R. Tolkien", "Fantasy", 1954, "9788845204044", 29.99, 15); System.out.println("\nInformazioni del libro con ISBN 9788845204044:"); inventario.visualizzaLibro("9788845204044"); inventario.rimuoviLibro("9788807888521"); System.out.println("\nInventario dopo la rimozione del libro con ISBN 9788807888521:"); inventario.visualizzaInventario(); System.out.println("\nNumero di libri di genere Fantasy: " + inventario.contaLibriPerGenere("Fantasy")); System.out.println("\nLibri pubblicati nel 1925:"); inventario.visualizzaLibriPerAnno(1925); System.out.println("\nLibri con prezzo inferiore a 20.00:"); inventario.visualizzaLibriPerPrezzo(20.00); } }

Sezione FAQ

1. Come posso aggiungere più librerie all’applicazione?
Puoi creare più istanze della classe GestioneInventario, ognuna delle quali rappresenterà una libreria diversa.

2. È possibile ordinare i libri per prezzo o anno di pubblicazione?
Sì, puoi utilizzare il metodo Collections.sort() insieme a un comparatore personalizzato per ordinare i libri in base al prezzo o all’anno di pubblicazione.

3. Come posso salvare l’inventario su file?
Puoi utilizzare la serializzazione in Java per salvare l’oggetto GestioneInventario su file e ricaricarlo in un secondo momento.

Conclusione

In questo articolo, abbiamo esplorato come progettare un’applicazione Java per gestire l’inventario di una libreria. Abbiamo definito una classe Libro per rappresentare i singoli libri e una classe GestioneInventario per gestire una lista di libri. Abbiamo anche creato una classe Test per verificare le funzionalità dell’applicazione.

Questo progetto è un ottimo punto di partenza per chi vuole imparare a gestire dati strutturati in Java e applicare i concetti di programmazione orientata agli oggetti. Ora che hai le basi, puoi espandere l’applicazione aggiungendo nuove funzionalità, come l’ordinamento dei libri o la gestione di più librerie. Buon coding!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Translate »
Torna in alto