Paola Magillo, Univestita' di Genova, Corso di Programmazione II per SMID, a.a. 2007-2008.

Laboratorio 07:

ESERCIZI SUL CASO DI STUDIO GESTIONE BIBLIOTECA

E' necessario il codice del caso di studio trattato nelle lezioni 12 e 13 cioe' i file:

Oppure tutti i file java insieme nel file tutti.zip.

Questi esercizi sono simili a quelli che potrebbero essere chiesti all'esame.
NOTA: alcuni sono brevi, e in un esame sarebbero messi insieme ad altri.

I vari esercizi si possono svolgere in qualsiasi ordine.

Esercizio 1 (breve)

Fare in modo che le voci di menu' "non valide" in questo momento (cioe' "presta", "restituisci", "salva", "dismetti" in caso di biblioteca vuota) restino disabilitate.

Suggerimenti

Usare la funzione setEnabled(true/false) per abilitare/disabilitare una voce.

Alla partenza del programma, le voci suddette vanno disabilitate se sussiste una di queste condizioni:
-- non ci sono argomenti sulla command-line
-- ci sono argomenti sulla command-line, ma risulta che abbiamo letto zero libri dal file (controllare valore di ritorno di read)

Non dimenticare di riabilitare tutte le voci non appena la biblioteca acquisisce un nuovo libro. E ri-disabilitarle se viene dismesso dalla biblioteca l'ultimo libro.

Esercizio 2 (breve)

Fare si' che la finestra di dialogo per la restituzione mostri solo i libri che hanno qualche copia prestata.

Suggerimenti

Nella callback del bottone di avanzamento controllare se il prossimo libro ha copie prestate. Se ne ha, comportarsi some al solito. Se non ne ha, passare al libro ancora successivo, se si arriva in fondo allora significa che il libro da cui siamo partiti e' l'ultimo di quelli prestati (percio' non andiamo avanti).

Esercizio 3 (breve)

Fare si' che non sia possibile prestare l'ultima copia di un libro (cioe' quando numero di copie prestate == numero di copie totali - 1).

Suggerimenti

Mettere in EseguiPrestito un controllo se resta una sola copia. Se una sola, manda messaggio di errore e non fa nulla. Se piu' di una, esegue il prestito normalmente.

Esercizio 4 (breve)

Scrivere in rosso i dati dei libri non prestabili nella finestra per il prestito e in verde i dati dei libri non restituibili nella finestra per la restituzione.

Esercizio 5

Aggiungere alla finestra Dialog3 in alto (nello stesso pannello dei bottoni) un bottone "cerca" e un campo di testo in cui l'utente puo' digitare la stringa con cui deve iniziare il titolo del libro.
Aggiungere la callback del bottone "cerca" che

Esercizio 6

Aggiungere al menu' generale una voce "salva con nome". Associare a questa voce una callback (event listener) che fa apparire una finestra di dialogo che chiede un nome di file.

Suggerimenti

Bisogna definire un'altra sotto-classe di dialog1 (chiamiamola Dialog5) che contiene nella parte centrale un pannello con una label "nome file:" e un campo di testo (scegliete voi il layout). La finestra per chiedere il nome file sara' istanza di questa classe.
Associare al bottone Ok di detta finestra una callback (event listener) che preleva il nome file dal campo di testo e lo usa per salvarci la biblioteca.