📢 Nuovo Corso Laravel API disponibile!

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

  1. Librerie Java: Utilizzare le librerie standard di Java e il connettore MySQL.
  2. Database: Utilizzare MySQL per la gestione dei dati.
  3. Input e Output: Utilizzare la riga di comando per l’input e l’output.
  4. FunzionalitĂ  della Libreria:
    • Aggiungere nuovi libri.
    • Visualizzare tutti i libri.
    • Cercare libri per titolo.
  5. 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

  1. Compilare il Progetto:

    Terminal window
    javac src/Main.java src/Libreria.java src/DatabaseConnection.java -d out
  2. Eseguire l’Applicazione:

    Terminal window
    java -cp out Main

Estensioni Possibili

  1. Funzionalità Avanzate: Aggiungere funzionalità come l’eliminazione di libri, l’aggiornamento delle informazioni sui libri, ecc.
  2. Interfaccia Grafica: Integrare un’interfaccia grafica utilizzando Swing o JavaFX.
  3. Gestione Utenti: Implementare un sistema di gestione degli utenti con autenticazione e autorizzazione.