229 lines
8.2 KiB
Java
229 lines
8.2 KiB
Java
/*
|
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
|
*/
|
|
package garage;
|
|
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Date;
|
|
import java.util.InputMismatchException;
|
|
import java.util.Scanner;
|
|
|
|
import veicoli.Automobile;
|
|
import veicoli.Furgone;
|
|
import veicoli.Motocicletta;
|
|
import veicoli.VeicoloAMotore;
|
|
|
|
/**
|
|
*
|
|
* @author Verde
|
|
*/
|
|
public class MainGarage {
|
|
|
|
static Scanner sc = new Scanner(System.in);
|
|
static Garage garage = new Garage();
|
|
|
|
public static void main() {
|
|
int scelta = -1;
|
|
|
|
do {
|
|
System.out.println("Scegliere un'opzione:");
|
|
System.out.println("1. Immettere nuovo veicolo");
|
|
System.out.println("2. Estrazione veicolo");
|
|
System.out.println("3. Stampa situazione");
|
|
System.out.println("0. Esci");
|
|
System.out.print("Opzione: ");
|
|
|
|
try {
|
|
scelta = sc.nextInt();
|
|
sc.nextLine();
|
|
|
|
switch (scelta) {
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
immettiNuovoVeicolo();
|
|
pausa();
|
|
break;
|
|
case 2:
|
|
|
|
pausa();
|
|
break;
|
|
case 3:
|
|
|
|
pausa();
|
|
break;
|
|
default:
|
|
System.out.println("Opzione non valida.");
|
|
pausa();
|
|
break;
|
|
}
|
|
} catch (InputMismatchException _) {
|
|
System.out.println("Errore: scelta non valida.");
|
|
pausa();
|
|
}
|
|
} while (scelta != 0);
|
|
}
|
|
|
|
public static void pausa() {
|
|
System.out.println("Premere un tasto per continuare. . .");
|
|
sc.nextLine();
|
|
}
|
|
|
|
static void immettiNuovoVeicolo() {
|
|
int annoImmatricolazione = 0;
|
|
String marca;
|
|
String tipoAlimentazione;
|
|
int cilindrata = 0;
|
|
int capacitaCarico = 0;
|
|
int numPorte = 0;
|
|
String tipologia;
|
|
int numTempiMotore = 0;
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
|
|
Date annoImmatricolazioneDate;
|
|
boolean error;
|
|
Date now = new Date();
|
|
String scelta;
|
|
VeicoloAMotore veicolo = null;
|
|
|
|
System.out.print("Inserisci la marca: ");
|
|
marca = sc.nextLine().trim();
|
|
|
|
do {
|
|
error = false;
|
|
try {
|
|
System.out.print("Inserisci l'anno di immatricolazione: ");
|
|
annoImmatricolazioneDate = sdf.parse(sc.nextLine());
|
|
|
|
if (annoImmatricolazioneDate.after(now)) {
|
|
System.out.println("Errore: il veicolo non può esser stato immatricolato nel futuro.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
annoImmatricolazione = Integer.parseInt(annoImmatricolazioneDate.toString());
|
|
} catch (ParseException _) {
|
|
System.out.println("Errore nella lettura della data.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
} while (error);
|
|
|
|
System.out.print("Inserisci il tipo di alimentazione: ");
|
|
tipoAlimentazione = sc.nextLine().trim();
|
|
// TODO: controlli sull'alimentazione (niente veicoli alimentati a scoregge)
|
|
|
|
do {
|
|
error = false;
|
|
try {
|
|
System.out.print("Inserire la cilindrata: ");
|
|
cilindrata = sc.nextInt();
|
|
|
|
if (cilindrata <= 0) {
|
|
System.out.println("Errore: la cilindrata deve essere un numero positivo.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
} catch (InputMismatchException _) {
|
|
System.out.println("Errore nella lettura della cilindrata.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
} while (error);
|
|
|
|
do {
|
|
error = false;
|
|
System.out.println("Opzioni possibili:");
|
|
System.out.println("Furgone");
|
|
System.out.println("Automobile");
|
|
System.out.println("Motocicletta");
|
|
System.out.print("Inserire la tipologia di veicolo: ");
|
|
scelta = sc.nextLine().trim().toLowerCase();
|
|
|
|
switch (scelta) {
|
|
case "furgone":
|
|
do {
|
|
error = false;
|
|
try {
|
|
System.out.print("Inserire la capacità di carico: ");
|
|
capacitaCarico = sc.nextInt();
|
|
|
|
if (capacitaCarico <= 0) {
|
|
System.out.println("Errore: la capacità di carico deve essere un numero positivo.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
} catch (InputMismatchException _) {
|
|
System.out.println("Errore nella lettura della capacità di carico.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
} while (error);
|
|
veicolo = new Furgone(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, capacitaCarico);
|
|
break;
|
|
case "automobile":
|
|
do {
|
|
error = false;
|
|
try {
|
|
System.out.print("Inserire il numero di porte: ");
|
|
numPorte = sc.nextInt();
|
|
|
|
if (numPorte <= 2) {
|
|
System.out.println("Errore: il numero di porte deve essere un numero positivo e non può essere inferiore a 2.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
} catch (InputMismatchException _) {
|
|
System.out.println("Errore nella lettura del numero di porte.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
} while (error);
|
|
veicolo = new Automobile(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, numPorte);
|
|
break;
|
|
case "motocicletta":
|
|
System.out.print("Inserire la tipologia della motocicletta: ");
|
|
tipologia = sc.nextLine();
|
|
|
|
do {
|
|
error = false;
|
|
|
|
try {
|
|
System.out.println("Opzioni possibli");
|
|
System.out.println("2");
|
|
System.out.println("4");
|
|
System.out.print("Inserisci il numero di tempi del motore: ");
|
|
numTempiMotore = sc.nextInt();
|
|
|
|
switch (numTempiMotore) {
|
|
case 2,4:
|
|
break;
|
|
default:
|
|
System.out.println("Errore: opzione non valida.");
|
|
pausa();
|
|
error = true;
|
|
break;
|
|
}
|
|
} catch (InputMismatchException _) {
|
|
System.out.println("Errore nella lettura del numero di tempi del motore.");
|
|
pausa();
|
|
error = true;
|
|
}
|
|
} while (error);
|
|
|
|
veicolo = new Motocicletta(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, tipologia, numTempiMotore);
|
|
break;
|
|
default:
|
|
System.out.println("Opzione non valida.");
|
|
pausa();
|
|
error = true;
|
|
break;
|
|
}
|
|
} while (error);
|
|
|
|
garage.immettiNuovoVeicolo(veicolo);
|
|
System.out.println("Veicolo inserito con successo.");
|
|
}
|
|
}
|