Progetto Gestione Libreria in Java
Descrizione del Progetto
In questo progetto, creerai un semplice sistema di gestione di una libreria utilizzando la linea di comando in Java e MySQL per la gestione dei dati. Il sistema permetterĂ di aggiungere libri, visualizzare i libri disponibili e cercare libri per titolo.
Requisiti
- Librerie Java: Utilizzare le librerie standard di Java e il connettore MySQL.
- Database: Utilizzare MySQL per la gestione dei dati.
- Input e Output: Utilizzare la riga di comando per l’input e l’output.
- FunzionalitĂ della Libreria:
- Aggiungere nuovi libri.
- Visualizzare tutti i libri.
- Cercare libri per titolo.
- Gestione degli Errori: Gestire input non validi e operazioni non valide.
Struttura del Progetto
libreria/├── src/│ ├── Main.java│ ├── Libreria.java│ └── DatabaseConnection.java└── README.md
Configurazione del Database
Eseguire i seguenti comandi SQL per creare il database e la tabella necessaria:
CREATE DATABASE libreria_db;
USE libreria_db;
CREATE TABLE libri ( id INT AUTO_INCREMENT PRIMARY KEY, titolo VARCHAR(255) NOT NULL, autore VARCHAR(255) NOT NULL, anno INT NOT NULL);
Codice di Esempio
Main.java: Questo file contiene il punto di ingresso dell’applicazione.
import java.util.Scanner;
public class Main { public static void main(String[] args) { Libreria libreria = new Libreria(); Scanner scanner = new Scanner(System.in);
while (true) { System.out.println("1. Aggiungi un nuovo libro"); System.out.println("2. Visualizza tutti i libri"); System.out.println("3. Cerca un libro per titolo"); System.out.println("4. Esci");
int scelta = scanner.nextInt(); scanner.nextLine(); // Consuma il newline
switch (scelta) { case 1: System.out.print("Inserisci il titolo del libro: "); String titolo = scanner.nextLine(); System.out.print("Inserisci l'autore del libro: "); String autore = scanner.nextLine(); System.out.print("Inserisci l'anno di pubblicazione: "); int anno = scanner.nextInt(); libreria.aggiungiLibro(titolo, autore, anno); break; case 2: libreria.visualizzaLibri(); break; case 3: System.out.print("Inserisci il titolo del libro: "); String titoloRicerca = scanner.nextLine(); libreria.cercaLibroPerTitolo(titoloRicerca); break; case 4: System.out.println("Uscita in corso..."); scanner.close(); return; default: System.out.println("Scelta non valida."); } } }}
Libreria.java: Questo file contiene l’implementazione delle operazioni della libreria.
import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;
public class Libreria { private Connection connection;
public Libreria() { connection = DatabaseConnection.getConnection(); }
public void aggiungiLibro(String titolo, String autore, int anno) { String query = "INSERT INTO libri (titolo, autore, anno) VALUES (?, ?, ?)"; try (PreparedStatement stmt = connection.prepareStatement(query)) { stmt.setString(1, titolo); stmt.setString(2, autore); stmt.setInt(3, anno); stmt.executeUpdate(); System.out.println("Libro aggiunto con successo."); } catch (SQLException e) { e.printStackTrace(); } }
public void visualizzaLibri() { String query = "SELECT * FROM libri"; try (PreparedStatement stmt = connection.prepareStatement(query); ResultSet rs = stmt.executeQuery()) { while (rs.next()) { int id = rs.getInt("id"); String titolo = rs.getString("titolo"); String autore = rs.getString("autore"); int anno = rs.getInt("anno"); System.out.printf("ID: %d, Titolo: %s, Autore: %s, Anno: %d%n", id, titolo, autore, anno); } } catch (SQLException e) { e.printStackTrace(); } }
public void cercaLibroPerTitolo(String titolo) { String query = "SELECT * FROM libri WHERE titolo LIKE ?"; try (PreparedStatement stmt = connection.prepareStatement(query)) { stmt.setString(1, "%" + titolo + "%"); try (ResultSet rs = stmt.executeQuery()) { while (rs.next()) { int id = rs.getInt("id"); String risultatoTitolo = rs.getString("titolo"); String autore = rs.getString("autore"); int anno = rs.getInt("anno"); System.out.printf("ID: %d, Titolo: %s, Autore: %s, Anno: %d%n", id, risultatoTitolo, autore, anno); } } } catch (SQLException e) { e.printStackTrace(); } }}
DatabaseConnection.java: Questo file contiene la gestione della connessione al database.
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
public class DatabaseConnection { private static final String URL = "jdbc:mysql://localhost:3306/libreria_db"; private static final String USER = "root"; private static final String PASSWORD = "password";
private static Connection connection = null;
static { try { connection = DriverManager.getConnection(URL, USER, PASSWORD); } catch (SQLException e) { e.printStackTrace(); } }
public static Connection getConnection() { return connection; }}
Istruzioni per l’Esecuzione
-
Compilare il Progetto:
Terminal window javac src/Main.java src/Libreria.java src/DatabaseConnection.java -d out -
Eseguire l’Applicazione:
Terminal window java -cp out Main
Estensioni Possibili
- Funzionalità Avanzate: Aggiungere funzionalità come l’eliminazione di libri, l’aggiornamento delle informazioni sui libri, ecc.
- Interfaccia Grafica: Integrare un’interfaccia grafica utilizzando Swing o JavaFX.
- Gestione Utenti: Implementare un sistema di gestione degli utenti con autenticazione e autorizzazione.