Corso di Informatica  - CdL in Matematica

A.A. 2011/2012

“Homework” per le vacanze di Natale

 

 

Esercizio 1. Esplorare JAVA API: http://download.oracle.com/javase/6/docs/api/index.html.

 

PROGETTO DIDATTICO: Il nostro amico Ciccio Pasticcio ha vinto l’appalto per la gestione del parcheggio a pagamento del piccolo aeroporto di Pasticciopoli. Dobbiamo progettare il sistema automatico di gestione degli accessi al parcheggio, secondo le specifiche descritte di seguito. Il progetto dovrà tradursi in un programma Java opportuno.

 

1.      All’arrivo, l’utente vede sullo schermo la domanda:

o   “ SI DESIDERA PARCHEGGIARE O RITIRARE LA PROPRIA VETTURA? (P/R) “

2.      Se la scelta è quella di parcheggiare, innanzitutto verrà chiesto all’utente di inserire il numero di targa del veicolo da parcheggiare:

o   “ PREGO INSERIRE NUMERO DI TARGA:“

3.      NOTA: Il numero di targa è un INTERO compreso tra 100001 e 999999.

4.      Il sistema dovrà quindi verificare se ci sono posti liberi nel parcheggio e, in caso affermativo, ne sceglierà uno e lo comunicherà all’utente, quindi tornerà alla schermata del punto 1.

o   “ACCESSO GARANTITO. ALLA VETTURA CON TARGA XXXXXXX È ASSEGNATO IL POSTO: X “

5.      Se l’utente richiede di parcheggiare, ma non vi sono posti liberi, il sistema dovrà comunicare all’utente l’impossibilità di accedere al servizio, quindi tornerà alla schermata del punto 1.

o   “ SPIACENTI: PARCHEGGIO PIENO. IMPOSSIBILE ACCEDERE “

6.      Se l’utente richiede di ritirare la vettura, il sistema chiederà all’utente di inserire il numero di targa della vettura desiderata:

o   “ PREGO INSERIRE NUMERO DI TARGA : “

7.      Dopo l’inserimento del numero di targa, il sistema verificherà se la vettura è effettivamente da qualche parte nel parcheggio. Se è così, fornirà all’utente la posizione della vettura e indicherà l’importo da pagare. Quindi, tornerà alla schermata del punto 1.

o   “ VETTURA TROVATA AL POSTO: X “

o   “ IMPORTO DA PAGARE PER IL RITIRO: XXX EURO “

8.      Se l’utente ha richiesto il ritiro di una vettura, ma il numero di targa inserito non risulta nel sistema, si dovrà avvertire l’utente con un messaggio opportuno. Quindi, tornerà alla schermata del punto 1.

o   “ SPIACENTI: LA VETTURA NON RISULTA PARCHEGGIATA NELLA STRUTTURA “

9.      Per semplicità, si può supporre che il parcheggio sia composto da una unica fila di 50 posti. Pertanto, ogni posto è identificato da un numero intero compreso tra 1 e 50. SUGGERIMENTO: per modellare il parcheggio, è possibile pensare ad un array di 50 interi, ciascuno dei quali è un numero di targa. Pertanto, se il posto [i] contenesse il numero “123456”, questo significherebbe che il posto è occupato dalla vettura con quella targa. Il posto vuoto è facilmente modellabile con il valore “0” (ZERO). Ovviamente, inizialmente il parcheggio sarà composto da tutti posti vuoti.

10.  Si noti che quando l’utente richiede di ritirare una vettura, sarà necessario effettuare una ricerca all’interno dell’array.

11.  Per calcolare l’importo da pagare, e da comunicare all’utente all’atto del ritiro, è necessario fare dei calcoli in base al tempo di stazionamento del mezzo e alle tariffe vigenti. Nella realtà, il sistema memorizzerebbe l’orario e la data di ingresso e quella del ritiro, calcolando automaticamente il periodo da fatturare. Per semplicità, in questo esercizio è possibile supporre che il tempo sia misurato semplicemente in giorni, e che una vettura può stazionare nel parcheggio per un periodo che va da 1 a 30 giorni. Il numero di giorni può essere estratto casualmente (“randomaticamente”) all’atto della richiesta del ritiro, quando la targa è stata trovata.

12.  Le tariffe del parcheggio sono via via più convenienti man mano che il periodo di stazionamento cresce. Nel dettaglio:

o   Giorni da 1 a 7:             5,00 Euro al giorno

o   Giorni da 8 a 15:           4,00 Euro al giorno

o   Giorni da 16 a 20:         3,00 Euro al giorno

o   Giorni da 21 a 30:         2,00 Euro al giorno

13.  Segue un esempio di calcolo dell’importo da pagare. L’utente richiede la vettura, immette il numero di targa, il sistema verifica che la stringa corrispondente alla targa immessa è presente nella matrice, stampa su video l’indice del posto corrispondente; quindi, estrae a caso un numero tra 1 e 30, rappresentante il periodo di stazionamento del mezzo nel parcheggio. Supponiamo che il numero sia 17. Il calcolo sarà quindi il seguente:

o   7 giorni (da 1 a 7) al costo di 5 Euro al giorno à 7x5=35 Euro

o   8 giorni (da 8 a 15) al costo di 4 Euro al giorno à 8x4=32 Euro

o   2 giorni (da 16 a 17) al costo di 3 Euro al giorno à 2x3=6 Euro

o   TOTALE: 35+32+6=73 EURO

14.  Si realizzi il progetto modularizzando opportunamente il programma in metodi.

 

PARTE OPZIONALE I: In aggiunta a quanto specificato nella prima parte, si provi a fare in modo che la scelta del posto da assegnare dopo una richiesta di parcheggio, nel caso in cui ci sia più di un posto libero, avvenga secondo il criterio descritto di seguito.

Si desidera lasciare libera il più possibile la parte iniziale del parcheggio, e quindi occupare preferibilmente la parte finale. Più formalmente, non si dovrebbe mai assegnare un posto con indice “i” se esiste un posto qualunque libero con indice “k” tale che k>i.

 

PARTE OPZIONALE II: In aggiunta a quanto specificato nei punti precedenti, si provi a realizzare una semplice interfaccia grafica per il programma.

 

NOTA: è possibile trovare le API di Java (quindi le specifiche delle classi per le interfacce grafiche - si parta dalle classi “SWING” - assieme a molto altro) all’indirizzo http://download.oracle.com/javase/6/docs/api/index.html.