Attachment '2011-12-Progetto-per-le-vacanze-di-Natale.html'
DownloadCorso 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 lappalto 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. Allarrivo, lutente 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 allutente 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à allutente, quindi tornerà alla schermata del punto 1.
o ACCESSO GARANTITO. ALLA VETTURA CON TARGA XXXXXXX È ASSEGNATO IL POSTO: X
5. Se lutente richiede di parcheggiare, ma non vi sono posti liberi, il sistema dovrà comunicare allutente limpossibilità di accedere al servizio, quindi tornerà alla schermata del punto 1.
o SPIACENTI: PARCHEGGIO PIENO. IMPOSSIBILE ACCEDERE
6. Se lutente richiede di ritirare la vettura, il sistema chiederà allutente di inserire il numero di targa della vettura desiderata:
o PREGO INSERIRE NUMERO DI TARGA :
7. Dopo linserimento del numero di targa, il sistema verificherà se la vettura è effettivamente da qualche parte nel parcheggio. Se è così, fornirà allutente la posizione della vettura e indicherà limporto 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 lutente ha richiesto il ritiro di una vettura, ma il numero di targa inserito non risulta nel sistema, si dovrà avvertire lutente 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 lutente richiede di ritirare una vettura, sarà necessario effettuare una ricerca allinterno dellarray.
11. Per calcolare limporto da pagare, e da comunicare allutente allatto del ritiro, è necessario fare dei calcoli in base al tempo di stazionamento del mezzo e alle tariffe vigenti. Nella realtà, il sistema memorizzerebbe lorario 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) allatto 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 dellimporto da pagare. Lutente richiede la vettura, immette il numero di targa, il sistema verifica che la stringa corrispondente alla targa immessa è presente nella matrice, stampa su video lindice 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) allindirizzo http://download.oracle.com/javase/6/docs/api/index.html.
Attached Files
You are not allowed to attach a file to this page.