Progetto Gestione Libreria in Java

Edoardo Midali
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:
javac src/Main.java src/Libreria.java src/DatabaseConnection.java -d out -
Eseguire l’Applicazione:
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.