Progetto di Programmazione Internet A.A. 2002/03 riservato agli studenti
in debito.
Versione preliminare
Il presente progetto può essere consegnato solo dagli studenti
in debito che non abbiano consegnato entro il termine previsto il progetto
2002/03. Data la sua relativa facilità la massima valutazione prevista è di
26/30.
Descrizione del progetto
Il progetto consiste nell'implementazione di una
semplice agenda testuale degli appuntamenti.
Il programma permette di operare sull'agenda come segue:
- aggiungere un appuntamento
specificando
la date e l'ora di inizio, la durata, e la priorità;
- rimuovere
un appuntamento;
- conoscere la lista degli appuntamenti in uno specificato
periodo di tempo ordinandoli
o per data o per priorità.
Tutte le funzionalità sopra
indicate vanno attivate dall'utente
attraverso l'immissione di appositi comandi. I comandi vanno digitati
dall'utente e devono aderire
alla seguente sintassi:
- appuntamento <descrizione> <data> <ora> <durata> <priorità>
- cancella <data> <ora>
- lista <periodo> [<ordinamento>]
- esci
Dettaglio dei comandi
- inserisce nell'agenda un nuovo appuntamento. <descrizione> è una
sequenza di testo delimitata dal carattere "; <data> è espressa
nel formato gg/mm/aaaa; <ora> è espressa nel formato hh:mm; <durata> è espressa
in minuti; <priorità> è un valore numerico compreso fra
1 (bassa) e
10 (alta).
La data e l'ora di inizio devono essere ammissibili e se precedono il
momento attuale il programma non deve accettare l'appuntamento e visualizzare
un messaggio di errore per l'utente.
Esempio:
appuntamento "correzione progetti" 1/4/2004 10:30 60
5
- cancella tutti gli appuntamenti (se ne esistono) che hanno inizio
alla data e all'ora specificata.
Esempio:
cancella 1/4/2004 10:30
- visualizza la lista degli appuntamenti per il periodo specificato.
Il periodo può essere: oggi, settimana, mese, tutti. Se non
diversamente specificato (senza cioè il campo <ordinamento>)
gli appuntamenti visualizzati vengono ordinati per data; se il
campo ordinamento è impostato
a "per priorità" gli appuntamenti vengono ordinati per priorità.
Esempi:
lista oggi
lista settimana per priorità
- esce dal programma dopo avere salvato su file i dati degli appuntamenti.
Tali dati dovranno essere ricaricati automaticamente alla
successiva esecuzione del programma.
In fase di lancio il programma deve verificare se esistono precedenti dati
salvati ed eventualmente caricarli. Nel caso dovrà poi verificare se
esistono appuntamenti scaduti. Gli appuntamenti scaduti vengono visualizzati
e automaticamente cancellati dall'agenda.
Note sull'implementazione.
Il programma non dovrà fare uso di classi che non siano parte del programma
stesso o che non siano parte della libreria di classi standard di Java
2, Standard Edition versione 1.4.
Tempi di consegna
Chi intende sostenere lo scritto a febbraio (non la prova in itinere, ma lo
scritto per gli studenti in debito di esame) dovrà consegnare il presente
progetto entro le ore 9 del giorno 10 Febbraio 2004; chi invece
intende sostenere lo scritto in date successive, dovrà consegnare il
presente progetto entro le ore 9 del giorno 1 Giugno 2004.
Nota bene: chi tra gli studenti in debito non intende sostenere lo scritto
di febbraio potrà scegliere se conseganre il presente progetto oppure
se consegnare quello previsto per l'A.A. 2003/04 (progetto le cui specifiche
verranno pubblicate non prima di Pasqua) e poter ambire al voto pieno.
Modalità di consegna
Occorre consegnare in formato digitale (mail a turrini@cs.unibo.it) un file
in formato jar (per info sul formato jar fare riferimento a:
http://developer.java.sun.com/developer/Books/JAR/basics/index.html)
contenente le seguenti directory:
- src
contiente i sorgenti del progetto. Si ricorda che i sorgenti devono essere
scritti seguendo opportune regole di coding style
(http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html),
devono essere commentati
in maniera chiara e non banale.
Es. di commento banale:
i++; // incremento della variabile
Es. di commento appropriato:
// ricerca della prima posizione libera
while ((tree[firstFreePosition] != null) && (i < size)) {
firstFreePosition = (firstFreePosition + 1) % size;
i++;
}
if (tree[firstFreePosition] != null){
firstFreePosition = -1;
}
- classes
contenente i file .class con il bytecode risultante dalla
compilazione dei sorgenti
- doc
contente la documentazione che deve essere scritta e
quindi generata automaticamente utilizzando javadoc.
Inoltre occorre aggiungere un documento project.html
in formato HTML dove vengono descritte le scelte progettuali
effettuate (per esempio: uso di una certa struttura dati piuttosto
che un'altra, descrizione per sommi capi della struttura
del progetto e del codice
sorgente dei metodi piu' importanti)
- dist
contenente il file jar da installare. Tale file deve
contenere i .class e il file manifest nel quale
e' indicato l'entry point.
In sostanza lanciando java -jar nome.jar deve essere mandato
in esecuzione il programma consegnato.
La mail deve avere subjet "consegna progetto <nomeGruppo>" e
in attachment il file <nomeGruppo.jar>.
Il nome gruppo deve essere di al massimo 6 digit (lettere o numeri) (può
essere formato con le sillabe iniziali dei cognomi) e deve contenere
solo lettere e numeri; all'interno del messaggio vanno specificati i nomi
degli appartenenti al gruppo.
La documentazione deve essere consegnata anche in formato cartaceo lasciandola
nella casella di posta dei dottorandi (che si trova al primo piano
del dipartimento di informatica) indirizzata alla dott. Turrini.
Vanno consegnati in forma cartacea il file project.html e
tutti i file sorgenti stampati in orizzontale (sotto linux si puo'
usare enscript -r nomefile). Ogni stampa deve essere graffettata nell'angolo
in alto a sinistra.
I tempi per la consegna della documentazione cartacea sono gli stessi della
consegna del progetto.