Paolo è un appassionato di fumetti ed ama farsi regalare dai suoi amici, in varie occasioni, vecchi albi di difficile reperibilità. Purtroppo, più volte è successo che amici diversi gli abbiano regalato lo stesso fumetto. Onde evitare questo problema, Paolo ha deciso di chiedere agli studenti del CLEI di sviluppare una applicazione via web che mostri l'elenco dei fumetti che gli mancano e che desidererebbe come regalo, ma congegnata in modo tale da aiutare i suoi amici a non regalare dei doppioni.
L'applicazione consta di due parti: una pubblica, accessibile a tutti, e una privata, accessibile solo previa conoscenza di una password, che in linea di massima dovrebbe conoscere solo Paolo. La password che ques'ultimo ha scelto è "Francesca".
Nella parte pubblica compare una lista di fumetti che a Paolo mancano. Quando uno dei suoi amici vuole fargli un regalo, clicca su uno dei fumetti in lista, che viene automaticamente "prenotato": da adesso in poi il fumetto non comparirà più nell'elenco degli albi mancanti, e non potrà più essere prenotato. Nel contempo, viene generata una password casuale che viene consegnata (visualizzata sul browser) a chi ha prenotato il fumetto. La password potrà essere utilizzata in due modi:
Nella parte privata, Paolo può eseguire varie operazioni quali:
Per ogni albo vanno memorizzate varie informazioni quali il nome, l'anno di pubblicazione, il numero (nel caso di serie), i nomi di tutti gli autori (disegnatori, sceneggiatori, inchiostratori, etc..), e la casa editrice. L'unico campo obbligatorio è il nome dell'albo, ma il sistema deve garantire la possibilità di inserire anche le altre informazioni.
Dovete sviluppare una applicazione web che risolva il problema di interesse di Paolo, rispettando tutte le sue richieste. In particolare, occorrerà produrre:
La relazione deve contenere tutto ciò che si ritiene necessario per comprendere il funzionamento dell'applicazione. In particolare, dovrà contenere come minimo:
La relazione può essere consegnata o sotto forma cartacea, o sotto forma elettronica. In quest'ultimo caso, deve essere in un formato non proprietario. In particolare:
Il database deve contenere tutte le tabelle individuate nella fase di progetto. Per poter controllare il buon funzionamento dell'applicazione, è necessario che ci sia già qualche dato inserito.
Il database va consegnato sotto forma di un unico file di testo contenente tutti i comandi SQL necessari per creare il database, le tabelle e inserire i dati in quste ultime. Si può assumere che tutti i comandi vengano eseguiti dall'utente root. In pratica, se consegnate il file db.sql, deve essere possibile con mysql -u root < db.sql eseguire lo script e ottenere, alla fine, il database perfettamente funzionante e pronto per essere utilizzato dall'applicazione web. Per creare il file richiesto si può usare il comando mysqldump nella forma:
mysqldump --databases <nomedb> > <nomefile>
Nomi di database, tabelle, campi, etc.. possono essere scelti a piacere.
L'applicazione consiste in una serie di script PHP e pagine HTML che implementano quanto richieto da Paolo. Alla fine, bisognerà consegnare tutti i file relativi all'applicazione in unico file compresso, nel formato che preferite: zip, rar, tgz, etc..
A parte le richieste di Paolo, questi sono ulteriori requisiti che deve soddisfare l'applicazione:
display_errors 1
output_buffering 0
Inoltre, a parte il fatto che l'applicazione funzioni, saranno tenuti in conto (positivamente) ai fini della valutazione i seguenti aspetti:
magic_quotes_gpc
;Per poter partecipare ad un appello, occorre consegnare il progetto nelle sue tre componenti (relazione, database e applicazione) entro e non oltre la data ufficiale dell'appello affissa in bacheca. In generale, la consegna avviene tramite posta elettronica, in quanto non è detto che i giorni previsti per la consegna mi troviate in dipartimento. Al momento della consegna ci si mette d'accordo su data e ora della prova orale.
Se avete bisogno di consigli o informazioni, non esitate a contattarmi per posta elettronica (amato@sci.unich.it
) o direttamente nel mio ufficio.