Progetto Gestione Libreria in Java
Codegrind Team•Jul 12 2024
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.