Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
import java.io.*;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Scanner;
class GestioneParcheggio {
static LinkedList<Piano> piano;
public GestioneParcheggio() {
piano = new LinkedList<>();
}
public static class Piano {
public int COD;
public ArrayList<Scontrino> scontrini;
public int ptot;
public int pdis;
public Piano(int COD, int ptot) {
this.COD = COD;
scontrini = new ArrayList<>();
this.ptot = ptot;
pdis = CalcoloPosti(ptot, scontrini);
}
public int CalcoloPosti(int ptot, ArrayList<Scontrino> s) {
int posti;
if (!(s.isEmpty())) {
posti = ptot - s.size();
} else posti = ptot;
return posti;
}
}
public static class Scontrino {
public int dest;
public int num;
public LocalDate date;
public LocalTime OraA;
public LocalTime OraU;
public int prezzo;
public Scontrino(int num,LocalDate date, LocalTime oraA, LocalTime oraU) {
dest = AssegnaPiano();
this.num = num;
this.date = date;
this.OraA = oraA;
this.OraU = oraU;
prezzo = CalcoloPrezzo(OraA, OraU);
}
public int AssegnaPiano() {
int codmax = 0;
int pmax = 0;
if (!(piano.isEmpty())) {
for (Piano p : piano) {
if (p.pdis > pmax || pmax == 0) {
codmax = p.COD;
pmax = p.pdis;
}
}
} else throw new RuntimeException("ERRORE, ZERO PIANI RILEVATI");
return codmax;
}
public int CalcoloPrezzo(LocalTime in, LocalTime out){
int prezzo;
if(in.getHour() > out.getHour()) prezzo = out.getHour() + 24-
in.getHour();
else prezzo = out.getHour() - in.getHour();
if(out.getMinute() > in.getMinute()) prezzo += 1;
return prezzo;
}
}
public void AddPiano(Piano p) {
piano.add(p);
}
public void AddScontrino(Scontrino s){
if(!(piano.isEmpty())){
for(Piano p : piano) {
if (s.dest == p.COD) {
p.scontrini.add(s);
p.pdis -= 1;
}
}
} else throw new RuntimeException("ERRORE, NESSUN PIANO IN CUI AGGIUNGERE,
INIZIALIZZARE PIANI");
}
public void RimuoviScontrino(Scontrino sctr, ArrayList<Scontrino> scontrini){
for(Piano p : piano){
for(Scontrino s : p.scontrini){
if(s.equals(sctr)){
p.scontrini.remove(s);
scontrini.remove(s);
p.pdis +=1;
System.out.println("SCONTRINO RIMOSSO");
}
}
}
}
public void RimuoviPiano(int num, ArrayList<Piano> piani) {
if(!(piano.isEmpty())){
for(Piano p : piano){
if(p.COD == num){
piano.remove(p);
piani.remove(p);
System.out.println("PIANO N* " +num+ " RIMOSSO CORRETTAMENTE");
}
}
} else throw new RuntimeException("ERRORE, NESSUN PIANO DA RIMUOVERE,
INIZIALIZZARE PIANI");
}
public void StampaPiani(){
for (Piano p : piano) {
System.out.println("COD: " + p.COD + " PTOT: " + p.ptot + " PDIS: "
+ p.pdis);
}
}
public void GetPosti() {
if(!(piano.isEmpty())) {
int tot = 0;
int i = 1;
for (Piano p : piano) {
System.out.println("IL PIANO N*: " +i+ " HA " +p.pdis+ "POSTI
DISPONIBILI");
tot += p.pdis;
i += 1;
}
System.out.println("PER UN TOTALE DI: " +tot);
} else throw new RuntimeException("ERRORE, PRIMA OCCORRE INIZIALIZZARE
PIANI");
}
public void StampaScontrini(){
if(!(piano.isEmpty())) {
for (Piano p : piano) {
if (!(p.scontrini.isEmpty())) {
for (Scontrino s : p.scontrini)
System.out.println("NUMERO SCONTRINO: " + s.num + " ORA
ARRIVO: " + s.OraA + " ORA USCITA: " + s.OraU + " PREZZO PAGATO: EURO " + s.prezzo
+ " PIANO N*: " + s.dest);
}
}
} else throw new RuntimeException("ERRORE, PRIMA OCCORRE INIZIALIZZARE
PIANI");
}
public void StampaPrezzo(){
Scanner sc = new Scanner(System.in);
if(!(piano.isEmpty())){
System.out.print("DIGITA IL NUMERO DI SCONTRINO ");
int num = sc.nextInt();
for(Piano p : piano){
if(!(p.scontrini.isEmpty())){
for(Scontrino s : p.scontrini){
if(s.num == num) System.out.println("LO SCONTRINO NUM*: "
+s.num+ " DALLE " +s.OraA+ " ALLE " +s.OraU+ " HA PREZZO: " +s.prezzo+ " EURO");
}
}
}
}
}
}