Java – Autonoleggio
Classe Veicolo:
//import java.io.Serializable;
public class Veicolo /*implements Serializable*/{
private String targa;
private String marca;
private String modello;
private int n_posti;
public Veicolo(String targa, String marca, String modello, int n_posti){
this.targa=targa;
this.marca=marca;
this.modello=modello;
this.n_posti=n_posti;
}
public Veicolo(Veicolo veicolo){
this.targa=veicolo.getTarga();
this.marca=veicolo.getMarca();
this.modello=veicolo.getModello();
this.n_posti=veicolo.getN_posti();
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getModello() {
return modello;
}
public void setModello(String modello) {
this.modello = modello;
}
public int getN_posti() {
return n_posti;
}
public void setN_posti(int n_posti) {
this.n_posti = n_posti;
}
public String getTarga() {
return targa;
}
public void setTarga(String targa) {
this.targa = targa;
}
public String toString(){
return "Targa: "+getTarga()+" Marca: "+getMarca()+" Modello: "+getModello()+" Posti: "+n_posti;
}
}
Classe ParcoVeicoli:
import java.io.*;
public class ParcoVeicoli {
// Attributi
private static final int MAX_NUM_VEICOLI=1000;
private int codice=-1;
private Veicolo mezzi[];
public ParcoVeicoli() {
mezzi=new Veicolo[MAX_NUM_VEICOLI];
}
// Metodi
public int setVeicolo(Veicolo veicolo) {
try { codice++;
// inserimento copia di Veicolo in posizione relativa al codice
mezzi[codice]=new Veicolo(veicolo);
return codice; // restituisce la posizione di inserimento
}
catch (ArrayIndexOutOfBoundsException exception) {
return -1; // posizione non valida
}
}
public Veicolo getVeicolo(int codice) {
try {
// restituisce una copia del Veicolo in posizione
return new Veicolo(mezzi[codice]);
}
catch (ArrayIndexOutOfBoundsException exception) {
return null; // posizione non valida: nessun Veicolo restituito
}
catch (NullPointerException exception) {
return null; // posizione vuota: nessun Veicolo restituito
}
}
public Veicolo getVeicolo(String targa) {
int i;
for (i=0;i&ltMAX_NUM_VEICOLI;i++)
if (mezzi[i]!=null)
if(mezzi[i].getTarga().equals(targa)) // restituisce una copia del Veicolo trovato
return new Veicolo(mezzi[i]);
return null; //veicolo non trovato
}
public int rimuoviVeicolo(int codice) {
try {
mezzi[codice]=null; // rimozione Veicolo in posizione
return codice; // restituisce la posizione liberata
}
catch (ArrayIndexOutOfBoundsException exception) {
return -1; // posizione non valida
}
}
public int rimuoviVeicolo(String targa) {
int i;
for (i=0;i&ltMAX_NUM_VEICOLI;i++)
if (mezzi[i]!=null)
if(mezzi[i].getTarga().equals(targa)){
mezzi[i]=null; // rimozione Veicolo in posizione
return i; // restituisce la posizione liberata
}
return -1; // veicolo non trovato
}
public int getNumMaxmezzi() {
return MAX_NUM_VEICOLI;
}
public int getNumMezzi() {
int posizione, n=0;
for (posizione=0; posizione&ltMAX_NUM_VEICOLI; posizione++)
if (mezzi[posizione]!=null)
n++;
return n;
}
public void salvaParcoVeicoli() throws java.io.IOException {
ObjectOutputStream stream =new ObjectOutputStream(new FileOutputStream("mezzi.bin"));
stream.writeObject(this.mezzi);
stream.close();
}
public void caricaParcoVeicoli() throws java.io.IOException {
ObjectInputStream stream = new ObjectInputStream(new FileInputStream("mezzi.bin"));
try {
this.mezzi = (Veicolo[])stream.readObject();
}
catch (ClassNotFoundException exception) {
}
stream.close();
}
public String[] inventarioVeicoliPosti(int posti){
int i,j=0;
String inventario[]=new String[MAX_NUM_VEICOLI];
for (i=0;i&ltMAX_NUM_VEICOLI;i++)
if (mezzi[i]!=null)
if(mezzi[i].getN_posti()==posti) {
//System.out.println("Codice: "+i+" -&gt "+mezzi[i].toString());
inventario[j]="Codice: "+i+" -&gt "+mezzi[i].toString();
j++;
}
return inventario;
}
public String[] inventarioVeicoliMarca(){
int i,j;
String inventario[]=new String[MAX_NUM_VEICOLI];
String marca[]=new String[MAX_NUM_VEICOLI];
int veicoli[]=new int[MAX_NUM_VEICOLI];
for (i=0;i&ltMAX_NUM_VEICOLI;i++)
if (mezzi[i]!=null){
for (j=0;j&lt500;j++)
if (marca[j]==null){
marca[j]=new String(mezzi[i].getMarca());
veicoli[j]=1;
break;
}
else {
if (marca[j].equals(mezzi[i].getMarca())){
veicoli[j]++;
break;
}
}
}
for(j=0;marca[j]!=null;j++)
inventario[j]= marca[j]+" --&gt "+veicoli[j];
return inventario;
}
public static void main (String[] args) throws java.io.IOException {
/*File f = new File(".");
System.out.println(f.getAbsolutePath());
String inventario[];*/
int i;
ParcoVeicoli parco1 = new ParcoVeicoli();
Veicolo v1 = new Veicolo("AF631EG","Fiat","Ducato",8);
Veicolo v2 = new Veicolo("EA436JB","Renault","Transporter",8);
Veicolo v3 = new Veicolo("DC225AM","Fiat","Fiorino",4);
System.out.println("Numero mezzi: "+parco1.getNumMezzi());
// inserimento mezzi
parco1.setVeicolo(v1);
parco1.setVeicolo(v2);
parco1.setVeicolo(v3);
System.out.println("\nNumero mezzi parco veicoli 1: "+parco1.getNumMezzi());
// visualizzazione elenco mezzi
for ( int posizione=0; posizione&ltparco1.getNumMaxmezzi(); posizione++) {
Veicolo Veicolo = parco1.getVeicolo(posizione);
if (Veicolo != null)
System.out.println( "Codice: "+posizione+" -&gt "+Veicolo.toString());
}
System.out.println("\nInventario parco veicoli 1 per marca: ");
inventario=parco1.inventarioVeicoliMarca();
for (i=0;i&ltMAX_NUM_VEICOLI;i++){
if (inventario[i]==null) break;
System.out.println(inventario[i]);
}
System.out.println("\nNumero mezzi parco veicoli 1 con 8 posti: ");
inventario=parco1.inventarioVeicoliPosti(8);
for (i=0;i&ltMAX_NUM_VEICOLI;i++){
if (inventario[i]==null) break;
System.out.println(inventario[i]);
}
// salvataggio mezzi su file
parco1.salvaParcoVeicoli();
// creazione nuova ParcoVeicoli vuota
ParcoVeicoli parco2 = new ParcoVeicoli();
System.out.println("\nNumero mezzi parco veicoli 2: "+parco2.getNumMezzi());
// caricamento mezzi da file
System.out.println("\nCaricamento da file dati parco veicoli 2: ");
parco2.caricaParcoVeicoli();
System.out.println("\nNumero mezzi parco veicoli 2: "+parco2.getNumMezzi());
//elimina veicolo per targa
if (parco2.rimuoviVeicolo("EA436JB")&gt=0)
System.out.println("\nVeicolo con targae EA436JB eliminato ");
else
System.out.println("\nImpossibile eliminare veicolo con targae EA436JB (inesistente) ");
// visualizzazione elenco mezzi
System.out.println("\nElenco veicoli rimanenti parco veicoli 2");
for ( int posizione=0; posizione&ltparco2.getNumMaxmezzi();posizione++) {
Veicolo v4 = parco2.getVeicolo(posizione);
if (v4 != null)
System.out.println( "Posizione: "+posizione+" -&gt "+v4.toString());
}
}
}