Sistemi Web per il turismo - lezione 9 -

Sistemi Web
per il turismo
- lezione 9 Esercizio
•  Costruire un modello dei dati per la
gestione delle prenotazioni delle stanze in
un albergo
•  Il primo passo è individuare l’insieme di
aspetti della realtà da modellare, per poi
organizzarli come attributi di una o più
tabelle di un database
Tabella “prenotazioni” # stanza (po stanza # persone cognome nome (tolare (tolare colazione data (Y/N) check-­‐in # no; Quando si costruisce una tabella bisogna sempre chiedersi se esista un a4ributo che possa fungere da indice, ovvero che perme4a di individuare una singola en8tà in maniera univoca. In questo caso ci chiediamo se nella tabella “prenotazioni” esista un a4ributo che individui univocamente una singola prenotazione. Il numero della stanza non può essere tale indice, per almeno due mo8vi. Innanzitu4o, una stanza può essere coinvolta in più prenotazioni (su date diverse, naturalmente). Inoltre, una prenotazione può coinvolgere più di una stanza. È vero che il numero di una stanza è un indice per le stanze: di fa4o lo possiamo considerare come una codifica di una stanza, che la individua univocamente. Tabella “prenotazioni” codice # (po prenotazione stanza stanza # persone cognome nome (tolare (tolare colazione data (Y/N) check in Se si desidera un indice che individui le prenotazioni, potrebbe essere u8le cara4erizzare ogni prenotazione con un codice univoco. Occorre naturalmente anche concepire un algoritmo che assegni una codice univoco a ciascuna prenotazione. Se è possibile prenotare più stanze con un’unica prenotazione, ci potranno comunque essere più righe nella tabella corrisponden8 alla stessa prenotazione (le righe si dis8ngueranno le une dalle altre per mezzo del valore del numero della stanza coinvolta). Se il valore della colonna “# stanza” può contenere un ve4ore di numeri di stanze, allora a ogni codice prenotazione corrisponderà una singola riga, contenente eventualmente un ve4ore di numeri di stanze. Naturalmente, le colonne che riportano le cara4eris8che legate alla stanza (come ad esempio il 8po, o il numero di persone occupan8 la stanza) dovranno contenere ve4ori di valori coeren8 con il numero di stanze presen8 nella prenotazione). Tabella “prenotazioni” # stanza (po stanza # persone cognome nome (tolare (tolare Ogni volta che si introduce un a4ributo di un’en8tà, bisogna stabilire l’insieme di valori che tale a4ributo può assumere. Tale insieme può essere numerico (ad es. prezzo di una stanza) oppure un insieme finito di valori discre8, come nel caso del 8po (ad es.: “singola”, “doppia”, “matrimoniale”, “tripla”, “quadrupla”). Sarà cura del personale che riempie le tabelle di da8 di rispe4are queste restrizioni, per evitare il rischio di blocchi o errori nel sistema informa8co che ges8sce tali tabelle. colazione data (Y/N) check-­‐in # no; A volte la scelta dei valori di un a4ributo è de4ata da ques8oni pra8che. Si potrebbe personalizzare la scelta di fare colazione o meno sulla base dei desideri di ciascun occupante di una stanza, ma il controllo della fruizione del servizio in sala risulterebbe complicato, mentre molto più semplice è associare la presenza di colazione o meno all’intera stanza. Tabella “prenotazioni” # stanza (po stanza # persone cognome nome (tolare (tolare colazione data (Y/N) check-­‐in La scelta degli a4ribu8 di una tabella a volte determina le operazioni che il sistema informa8co deve eseguire. Nel caso della durata del soggiorno, se si sceglie di indicare la data di check-­‐in e anche quella di check-­‐out, servirà fare un conteggio delle noR per il calcolo del conto, mentre se, come nel caso mostrato in figura, gli a4ribu8 sono la data di check-­‐in e il numero di noR, deve essere computata la data di check-­‐out per capire in quale giorno la stanza fa liberata e il conto saldato. # no; Algoritmi sulle date
•  Qualunque programma che gestisca dati
relativi alle date del calendario include le
relative funzionalità di calcolo.
•  Esercizio: disegnare il diagramma di flusso
di un algoritmo che, dato un numero di
anno aaaa in input, dica in output se esso
è bisestile o meno
Soluzione
bises8le aaaa no divisibile per 4? sì divisibile per 100? sì no non bises8le no divisibile per 400? sì bises8le Esercizi
•  Disegnare il diagramma di flusso di un
algoritmo che, data una data gg/mm/aaaa
in input, dica in output se essa è una data
valida oppure no
•  Disegnare il diagramma di flusso di un
algoritmo che, data una data gg/mm/aaaa
e un numero n di giorni (n al max. vale
14), dia in output la data che si ottiene
sommando gli n giorni alla data in input