GestioneParcoAuto.java
Created with JBuilder |
import javabook.*;
class GestioneParcoAuto {
// Attributi costanti
private static final String[] VOCE_MENU =
{ "Acquisto veicolo",
"Dismissione veicolo",
"Ricerca (per targa)",
"Elenco veicoli da revisionare",
"Termina" };
// Attributi variabili
private static ParcoAuto parcoAuto;
private static MainWindow finestra;
public static void main(String[] args) {
// Crea e visualizza la finestra dell'applicazione
finestra = new MainWindow("Gestione Parco Auto");
finestra.show();
// Inizializza il parco auto
InputBox richiediDati = new InputBox(finestra, "Inizializzazione");
int numeroMaxAutomezzi =
richiediDati.getInteger("Numero massimo di automezzi?");
parcoAuto = new ParcoAuto(numeroMaxAutomezzi);
// Ripeti fino a quando l'utente non desidera terminare
boolean ripeti = true;
while (ripeti) {
// Crea e visualizza il menu principale
ListBox menuPrincipale = new ListBox(finestra, "Menu Principale");
for (int i = 0; i < VOCE_MENU.length; ++i) {
menuPrincipale.addItem(VOCE_MENU[i]);
}
String scelta = menuPrincipale.getSelectedItem();
// Gestisce la scelta dell'utente
if (scelta != null) {
if (scelta.equals(VOCE_MENU[0])) {
aggiungiAutomezzo();
} else if (scelta.equals(VOCE_MENU[1])) {
eliminaAutomezzo();
} else if (scelta.equals(VOCE_MENU[2])) {
ricercaAutomezzoPerTarga();
} else if (scelta.equals(VOCE_MENU[3])) {
ricercaAutomezziDaRevisionare();
} else {
ripeti = false;
}
}
}
System.exit(0);
}
// Metodo per gestire IO di aggiunta automezzo
private static void aggiungiAutomezzo()
{
// Creazione della maschera di ingresso
String[] etichette =
{ "Marca", "Modello", "Targa", "Anno Immatricolazione" };
MultiInputBox richiediAutomezzo =
new MultiInputBox(finestra, etichette);
// Richiesta e gestione dati
String[] datiInseriti = richiediAutomezzo.getInputs();
int annoImmatricolazione =
Integer.parseInt(datiInseriti[3]);
// Creazione di una nuova auto e inserimento nel parco
Automezzo nuovaAuto =
new Automezzo(datiInseriti[0],
datiInseriti[1],
datiInseriti[2],
annoImmatricolazione,
annoImmatricolazione);
boolean ok = parcoAuto.aggiungi(nuovaAuto);
MessageBox mb = new MessageBox(finestra);
if (ok) {
mb.show("Inserimento effettuato!");
} else {
mb.show("Capacità del parco auto esaurita!");
}
}
// Metodo per gestire IO di cancellazione automezzo
private static void eliminaAutomezzo()
{
// Creazione della maschera di ingresso
InputBox richiediTarga =
new InputBox(finestra, "Eliminazione automezzo");
// Richiesta dati
String targa = richiediTarga.getString("Targa del mezzo?");
// Cancellazione dell'auto dal parco
boolean ok = parcoAuto.elimina(targa);
MessageBox mb = new MessageBox(finestra);
if (ok) {
mb.show("Cancellazione effettuata!");
} else {
mb.show("Il mezzo targato " + targa +
" non è presente nel parco automezzi!");
}
}
// Metodo per gestire IO di ricerca per targa
private static void ricercaAutomezzoPerTarga()
{
// Creazione della maschera di ingresso
InputBox richiediTarga =
new InputBox(finestra, "Ricerca automezzo");
// Richiesta dati
String targa = richiediTarga.getString("Targa del mezzo?");
// Ricerca dell'auto nel parco
Automezzo auto = parcoAuto.cercaPerTarga(targa);
OutputBox ob =
new OutputBox(finestra, "Risultato della ricerca");
if (auto != null) {
visualizzaDatiAuto(auto, ob);
}else {
ob.printLine("Il mezzo targato " + targa +
" non è presente nel parco automezzi!");
}
ob.show();
ob.waitUntilClose();
}
// Metodo per la ricerca di automezzi da revisionare
private static void ricercaAutomezziDaRevisionare()
{
// Creazione della maschera di ingresso
InputBox richiediAnno =
new InputBox(finestra, "Ricerca veicoli da revisionare");
// Richiesta dati
int anno = richiediAnno.getInteger("Anno corrente?");
// Estrazione delle auto da revisionare
ParcoAuto daRevisionare =
parcoAuto.cercaAutomezziDaRevisionare(anno);
// Creazione della maschera di uscita
OutputBox uscitaDati =
new OutputBox(finestra, "Veicoli da revisionare");
if (daRevisionare.restituisciNumeroAutomezzi() > 0) {
daRevisionare.iniziaScansione();
Automezzo auto = daRevisionare.prossimoAutomezzo();
while (auto != null) {
visualizzaDatiAuto(auto, uscitaDati);
auto = daRevisionare.prossimoAutomezzo();
}
} else {
uscitaDati.printLine("Non vi sono automezzi da revisionare");
}
uscitaDati.show();
uscitaDati.waitUntilClose();
}
// Metodo per visualizzare i dati di un automezzo
private static void visualizzaDatiAuto(
Automezzo auto,
OutputBox ob)
{
ob.printLine("Marca: " + auto.resituisciMarca());
ob.printLine("Modello: " + auto.restituisciModello());
ob.printLine("Targa: " + auto.restituisciTarga());
ob.printLine("Immatricolata nel: " +
auto.restituisciAnnoImmatricolazione());
ob.printLine("Revisionata nel: " +
auto.restituisciAnnoRevisione());
}
}
GestioneParcoAuto.java
Created with JBuilder |