Esercizi sui Database

 

1

Si progetti un sistema informativo per una società che gestisce appartamenti in multiproprietà.
Il sistema deve gestire il patrimonio immobiliare della società, la vendita dei pacchetti di multiproprietà ai clienti e le richieste di scambi fra proprietari.
Il patrimonio immobiliare consta di insiemi di appartamenti raggruppati in insediamenti turistici. Ogni appartamento è caratterizzato da un identificatore univoco, all'interno dell'insediamento, da un livello di qualità (lusso, medio, spartano) e dal numero di posti letto. Un insediamento turistico è caratterizzato dalla località, l'indirizzo, il numero di appartamenti, il periodo di apertura (tutto l'anno, oppure stagioni particolari) e una breve descrizione delle attrazioni - naturali e non - offerte.
La società offre ai clienti l'acquisto di settimane (una o più) di soggiorno presso un appartamento di una determinata località. Ogni settimana di soggiorno ha un prezzo proporzionale alla località ed al periodo scelto: l'alta stagione costa di più rispetto agli altri periodi dell'anno. Al fine di concludere un contratto d'acquisto, si deve verificare la disponibilità di un appartamento nell'insediamento turistico richiesto e nella settimana desiderata. Al contrario, quando un cliente decide di vendere la propria settimana di soggiorno, la società deve prendere atto della volontà di vendere e del prezzo chiesto, e deve aggiungere la settimana in vendita fra quelle da vendere, al prezzo richiesto e non a quello della società.
Un cliente, una volta acquisito il diritto di soggiorno in un appartamento per una determinata settimana, può inoltrare una richiesta per permutare la sua settimana con quella di un altro cliente, specificando l'insieme di località e di settimane di gradimento. Nel caso non si dovesse trovare nessuna "nuova settimana" in grado di soddisfare le richieste, l'offerta di scambio resta valida fino a trenta giorni prima dall'inizio del soggiorno effettivamente acquistato.
Un cliente può, anche, decidere di affittare la propria settimana, inoltrando richiesta e canone d'affitto. La società deve compilare una lista di settimane "affittabili" e renderla disponibile alla clientela.
E' richiesto il diagramma di contesto, un numero adeguato di diagrammi di flusso dei dati, per rappresentare il problema ad un livello d'astrazione adeguato, le viste e lo schema entità-relazione integrato.

 

2

Si progetti un sistema informativo per una società di autonoleggio.
Il sistema deve gestire le auto in possesso della società, e quindi affittabili dai clienti, la possibilità di fare prenotazioni telefoniche e la possibilità di "noleggi diretti", cioè clienti che si presentano direttamente nei terminali della società e richiedono il noleggio di un'auto.
Il patrimonio "auto" consta di un insieme di autoveicoli, caratterizzati dal numero di targa, il nome della vettura, la classe di appartenenza e gli optional disponibili (ad esempio, aria condizionata). Ogni macchina deve essere localizzabile in un particolare terminale della società. Questo per poter assegnare ad ogni cliente la macchina più vicina che soddisfa le richieste fatte.
I clienti possono prenotare l'auto telefonicamente, specificando il modello o la classe di vettura, gli optional richiesti e il periodo di noleggio. Si tenga conto del fatto che il periodo richiesto potrebbe variare rispetto a quello reale. Un cliente potrebbe presentarsi in ritardo o tenere la macchina per qualche giorno in più. Il numero effettivo di giorni di noleggio è l'informazione necessaria per poter emettere la fattura, una volta che la macchina è stata restituita.
Se, invece, un cliente si presenta direttamente ad un punto di noleggio, è costretto a scegliere fra le macchine a disposizione, senza poter fare richieste particolari. Anche in questo caso, il periodo di noleggio dichiarato potrebbe differire rispetto al periodo reale.
Il sistema deve, anche, periodicamente controllare le macchine noleggiate e inviare un messaggio di sollecito a tutti i clienti che sono in ritardo di più di una settimana nella riconsegna della macchina.
E' richiesto lo use case diagram, il class diagram e un insieme di iteraction diagram per spiegare le interazioni fra oggetti più complesse.
 

3

Si progetti un sistema informativo per gestire gli obiettori di coscienza in servizio presso un ente convenzionato con il Ministero della Difesa.
Il sistema deve gestire l'anagrafica degli obiettori (nome, cognome, data di nascita e indirizzo), il loro titolo di studio, le esperienze lavorative pregresse e la loro posizione: domanda presentata, domanda accettata, in attesa di servizio, in servizio e servizio completato.
Il sistema gestisce anche le diverse attività svolte dall'ente. Combinando le attività "scoperte" con le capacità degli obiettori in servizio, ci si propone di ottimizzare l'assegnazione degli obiettori alle diverse mansioni e, quindi, di migliorare la qualità dei servizi offerti.
L'ente in questione mette a disposizione degli appartamenti per fornire vitto e alloggio durante l'obiezione. Il sistema, quindi, deve tenere traccia degli appartamenti disponibili, della disposizione deglio obiettori nei diversi appartamenti e di eventuali posti liberi.
Per gli obiettori in servizio, il sistema deve gestire anche le licenze (supponiamo per un totale di 20 giorni) e i permessi (al massimo 10).
Ogni mese, il sistema deve:

  • calcolare automaticamente gli stipendi, in base ai giorni di servizio effettivo (giorni del mese meno licenze e permessi);

  • definire i rimborsi per il vitto e alloggio, in base alle informazioni relative ai diversi appartamenti;

  • produrre la documentazione riassuntiva da inviare al distretto.

Il sistema deve anche fornire la lista degli obiettori in servizio e la lista degli obiettori in attesa (sia tutti quelli in attesa, che solamente quelli che hanno fatto domanda in un mese preciso).
Lo studente rappresenti il sistema con le notazioni che ritiene più opportune e, in base alla notazione scelta, fornisca un numero di modelli sufficienti per definire le diverse attività.
 

4

Si progetti un sistema informativo per la gestione di un supermercato.
Il sistema deve gestire il magazzino. Questo significa tenere traccia della merce effettivamente in magazzino e di quella sugli scaffali. Quando il quantitativo di un determinato prodotto diventa minore di una certa soglia, si deve prevedere un meccanismo di approvvigionamento semiautomatico. Il sistema deve segnalare i prodotti che sono in via di esaurimento e suggerire, secondo politiche predefinite, la quantità da acquistare.
Il sistema deve gestire anche le casse. Attraverso lettori di codici a barre, deve riconoscere la merce in uscita. Questa ovviamente è una condizione necessaria per poter completare il passo precedente. Il sistema deve registrare tutti gli acquisti effettuati, al fine di riconoscere profili utente specifici, ed essere in grado di fare promozioni mirate alle diverse classi d'utenti. Tutte le promozioni devono essere registrate dal sistema.
Oltre al normale scontrino, il supermercato emette anche tessere a punti. Un punto corrisponde a 5,16 Euro (10.000 lire) di spesa. Il sistema deve gestire e registrare tutte le tessere emesse. Quando un cliente si presenta alla cassa e presenta la tessera, il sistema deve aggiornare la situazione e registrarla sia sulla tessera del cliente, che nel sistema centrale. Il sistema deve, anche, avvisare il cliente che si presenta alla cassa se i punti totalizzati fino a quel momento gli danno diritto a premi o sconti particolari.
Il candidato modelli il sistema con la notazione che ritiene più opportuna (analisi strutturata e schemi entità relazione, oppure UML). Scelta la notazione, il candidato fornisca un numero di diagrammi che ritiene sufficiente per descrivere il problema.
 

5

Si progetti un sistema informativo per la gestione di un "negozio virtuale" di libri.
Il sistema deve gestire i clienti. Attenzione che le informazioni richieste riguardano solamente i clienti che richiedono l'acquisto di un libro, non si deve gestire l'anagrafica di qualsiasi persona che acceda al sito del negozio solamente per consultazione. Oltre ai dati anagrafici veri e propri, si devono richiedere le modalità di pagamento.
Ovviamente deve essere noto il magazzino libri, cioè tutti i titoli a disposizione, le diverse edizioni (ad esempio, copertina rigida o molle), il prezzo, lo sconto e la disponibilità, sia in termini di numero di copie, che di giorni richiesti per la consegna al cliente.
Il sistema deve gestire le transazioni degli utenti. Queste possono essere suddivise in due categorie: ricerche e/o acquisti. La ricerca di un libro deve essere facilitata fornendo i soli ausili alla ricerca: ricerca per parole singole e parziali, ricerca per parole simili, ecc. La procedura d'acquisto deve offrire un "carrello della spesa" virtuale e gestirlo in maniera opportuna. Se l'utente decide di acquistare la merce nel carrello, il sistema deve provvedere alla compilazione sia delle fattura (ricevuta) per il cliente, che del modulo da inoltrare al magazzino per la consegna dell'ordine.
Il candidato modelli il sistema con la notazione che ritiene più opportuna (analisi strutturata e schemi entità relazione, oppure UML). Scelta la notazione, il candidato fornisca un numero di diagrammi che ritiene sufficiente per descrivere il problema.
 

6

Si progetti un sistema informativo per la gestione di una agenzia di viaggi.
L'agenzia fornisce sia servizi tradizionali, che servizi innovativi. Tradizionalmente, un'agenzia deve vendere:

  • settimane di villeggiatura scelte da appositi cataloghi;

  • biglietti aerei, ferroviari e per traghetti;

  • soggiorni in alberghi particolari.

Per i servizi innovativi, l'agenzia deve offrire la possibilità di:

  • cercare il volo più economico per una determinata località;

  • cercare il soggiorno più esclusivo, più economico, oppure più caratteristico;

  • confrontare le diverse offerte per la medesima località turistica;

  • scegliere fra rinunce e offerte della settimana, che devono essere vendute a prezzi scontati.

L'agenzia deve tener traccia anche del fatturato accumulato da ogni cliente e del volume d'affari con ogni catalogo trattato. Nel primo caso, le informazioni raccolte potrebbero essere utilizzate per definire offerte o sconti particolari. Nel secondo caso, le informazioni potrebbero servire per spuntare prezzi d'acquisto (per l'agenzia) migliori.
Il candidato modelli il sistema utilizzando UML. Si definiscano, almeno, uno use case diagram, un class diagram e due diagrammi, scelti fra interaction diagram, activity diagram o statecharts diagram, per formalizzare due attività particolari.
 

7

Si progetti un sistema informativo per la gestione e la consultazione della programmazione delle sale cinematografiche della provincia (regione).
L'applicazione deve gestire le informazioni relative ai film in programmazione nei diversi cinema della regione. Nel caso di cinema multisala, si deve poter consultare la programmazione relativa ad ogni singola sala. In particolare si è interessati a conoscere l'ubicazione (indirizzo) del cinema, gli orari e il costo del biglietto. La disponibilità di tariffe agevolate in giorni particolari della settimana, oppure per categorie specifiche (anziani, militari, ecc.), deve essere opportunamente segnalata. Per quanto riguarda le pellicole in programmazione, deve essere disponibile il titolo del film, l'anno e la nazione di provenienza, il genere, il regista, la casa di produzione, gli attori principali, la trama e eventuali giudizi critici. Per ogni attore (attrice), deve essere disponibile la scheda anagrafica e la filmografia, cioè l'insieme dei film in cui ha recitato.
L'applicazione in questione prevede due possibili figure di utenti: il gestore ed il cliente. Il gestore deve essere in grado di modificare ed aggiungere informazioni. Il cliente, invece, può solamente consultare le informazioni disponibili.
Devono essere possibili ricerche per città (ad esempio, i film in programmazione a Cremona), sala cinematografica ( ad esempio, i(l) film in programmazione al cinema Odeon), genere (ad esempio, tutti i film comici in programmazione), attore (ad esempio, tutti film in programmazione in cui recita Sandra Bullock) o regista (ad esempio, tutti i film in programmazione il cui regista è Woody Allen) diversamente combinate fra loro.
Il candidato modelli il sistema con la notazione che ritiene più opportuna (analisi strutturata e schemi entità relazione, oppure UML). Scelta la notazione, il candidato fornisca un numero di diagrammi che ritiene sufficiente per descrivere il problema.
 

8

Si progetti un sistema informativo per la gestione della manutenzione delle strade del vostro comune.
Il comune "identifica" un insieme di interventi che, per semplicità, possono essere: asfaltatura, messa in opera di nuove tubature e/o cavi, oppure semplice manutenzione ordinaria. Per la manutenzione straordinaria (asfaltatura e messa in opera), il comune indice una gara d'appalto, identificando la tipologia dell'intervento, i vincoli temporali e il tetto massimo di spesa. Chi partecipa alla gara deve presentare la propria offerta, specificando il periodo proposto e il preventivo di spesa. Il comune deve essere in grado di selezionare l'offerta migliore sia in termini temporali (la data proposta per l'inizio dei lavori e` la piu` vicina a quella richiesta), che in termini economici (il preventivo di spesa piu' basso, oppure inferiore di una certa percentuale rispetto alla spesa massima). Per la manutenzione ordinaria, invece, il comune si rivolge sempre e solo a ditte convenzionate.
Appena prima che comincino i lavori, il comune deve essere in grado di identificare le strade coinvolte. Questo significa identificare anche gli incroci, che richiedono personale per il controllo del traffico (banalmente, gli incroci collegati dalle strade coinvolte), e le strade che diventerebbero inutilizzabili a fronte delle vie chiuse per lavori e dei sensi unici esistenti. Per semplicita`, il nome di una via identifica una strada che connette esattamente due incroci. Un incrocio puo' connettere un numero illimitato di strade.
Si progetti il diagramma delle classi usando UML e si emplifichi il funzionamento del sistema definendo almeno due sequence diagram (interaction diagram oppure cooperation diagram) che rappresentano gli scenari seguenti:

  • Via Mazzini deve essere riasfaltata. Il comune indice una gara per l'assegnazione dei lavori, da svolgersi durante la prima settimana di ottobre e per un ammontare massimo di 10.000.000. Tra le proposte, il comune sceglie la ditta Rossi perche' propone uno sconto del 20% rispetto alla cifra prevista.

  • Si determinino quali saranno gli incroci coinvolti e le strade "isolate" il giorno in cui inizieranno i lavori in via Mazzini.

9

Si progetti un sistema informativo per la gestione "evoluta" di una farmacia.
La farmacia deve conoscere tutti i medicinali prescrivibili. Per ogni prodotto, deve tener traccia del prezzo di vendita, dei vincoli imposti per legge alla vendita (ad esempio, solo su presentazione di ricetta medica) e di eventuali effetti collaterali. Il farmacista dovrebbe essere in grado di consigliare oppure sconsigliare il cliente se il prodotto richiesto dovesse presentare effetti collaterali "troppo" nocivi, oppure fosse sconsigliato in presenza di patologie o disturbi particolari. Ovviamente, ogni farmaco ha una casa produttrice che deve essere contatta nel momento in cui le scorte del prodotto dovessero andare sotto il livello di guardia. La farmacia registra anche ogni cliente, sia per fornire un servizio migliore, cioè per tener traccia di allergie, patologie, oppure problemi che potrebbero sconsigliare l'assunzione di un particolare prodotto, sia per produrre statistiche d'uso dei diversi farmaci per l'ASL. A questo proposito la farmacia registra anche i medici che hanno proposto le diverse prescrizioni. Ancora la finalità è duplice: instaurare un rapporto di collaborazione con il medico e produrre le statistiche per l'ASL. A richiesta la farmacia deve anche saper ricostruire lo storico (l'ultimo anno, ad esempio) del singolo cliente, oppure del singolo medico.
Si progetti il sistema utilizzando UML, oppure DFD e schemi ER. Si esemplifichi anche il comportamento de sistema nei due casi seguenti:

  • Il cliente Giuseppe Rossi si rivolge alla farmacia per comprare una scatola di aspirine. A fronte della vendita del prodotto, il sistema deve segnalare la necessità di riordinare il prodotto per mantere inalterate le scorte.

  • L'ASL richiede i dati relativi al consumo di antidepressivi per l'anno 1999.

 

10

Si progetti un sistema informativo per la classificazione dei ristoranti italiani.
I ristoranti devono essere organizzabili sia in ordine alfabetico che per città. Ogni ristorante può segnalarsi per le sue specialità, il prezzo e la citazione in una o più guide gastronomiche (Michelin, Veronelli, Gambero Rosso, ecc.). Se un ristorante viene citato in una particolare guida, oltre al nome della guida, deve essere disponibile l'intera valutazione (voto, note di merito e di demerito). Si consideri che l'utente potrebbe essere interessato anche a consultare la lista di ristoranti in base alla guida di suo gradimento. Ad esempio, si potrebbe essere interessati ai primi cinque ristoranti della guida Michelin 2000. Inoltre, si potrebbe voler definire una graduatoria comparata dei migliori ristoranti interpolando i risultati delle diverse guide.
Si progetti il sistema iniziando con uno use-case UML, oppure con un DFD di primo livello (non di contesto) . Si definisca il class diagram UML per gli oggetti (elementi) necessari. Si esemplifichi poi il comportamento del sistema nei due casi seguenti (interaction diagram):

  • Il cliente Giuseppe Rossi vuole ottenere il miglior ristorante di Milano secondo tutte le guide note (quelle prese in considerazione dal sistema informativo).

  • Il cliente Giuseppe Rossi vuole ottenere il miglior ristorante in provincia di Lecco, per mangiare pesce, e vuole che non sia citato in alcuna guida nota.

 

11

Si progetti un sistema informativo per la gestione di un’impresa edile.
Il sistema deve gestire i cantieri, i dipendenti e il magazzino centrale.
Ogni cantiere, oltre alla propria posizione, descrizione, data di inizio lavori e data di fine prevista, deve conoscere i dipendenti (muratori, carpentieri, autisti, geometri, ecc.) assegnati. Si noti che un dipendente potrebbe lavorare in più cantieri. Per ogni dipendente, oltre ai dati anagrafici, si deve conoscere la qualifica, la fascia di stipendio e eventuali richieste e/o capacità particolari.
L'impresa ha un magazzino centrale e un "piccolo magazzino" per ogni cantiere aperto. Ogni magazzino registra i prodotti per costruzione (mattoni, tegole, cemento, ecc.) , gli strumenti e i mezzi disponibili in ogni magazzino. Il magazzino centrale deve essere in grado di assegnare il materiale (strumento o mezzo) richiesto ad ogni cantiere cercando di minimizzare i tempi e le distanze. Ad esempio, deve essere possibile localizzare il carico di mattoni più vicino al cantiere che l'ha richiesto e deve essere possible "spostarlo" da un magazzino ad un altro.
A richiesta il cantiere deve anche saper calcolare il costo "corrente" di un cantiere. Deve anche saper ricostruire lo storico (l'ultimo anno, ad esempio) del singolo cantiere, del singolo dipendente, oppure del singolo mezzo.
Si progetti il sistema utilizzando UML, oppure DFD e schemi ER. Si esemplifichi anche il comportamento del sistema in due casi che si ritengono significativi.
 

12

Si progetti un sistema informativo per la gestione della coppa del mondo di sci.
Il sistema deve gestire l'archivio storico delle diverse edizioni della coppa del mondo. Ogni anno, la coppa viene assegnata considerando i risultati ottenuti in un certo numero di gare. Ad ogni gara (slalom speciale, slalom gigante, super gigante e discesa libera) partecipano un certo numero di atleti. Ogni gara "produce" una classifica; ogni atleta è caratterizzato dalla nazione di nascita, dalla nazione per la quale gareggia, dai risultati ottenuti in cariera e dai materiali che usa. Ogni atleta deve usare almeno un paio di sci, un paio di scarponi e un paio di attacchi. Il sistema deve gestire anche le ditte produttrici dei diversi materiali, a prescindere dal fatto che vengano effettivamente usati dai diversi atleti. Il sistema deve però controllare che non ci siano ditte che non forniscono atleti da più di due anni; in caso contrario il sistema dovrebbe informare le diverse aziende e invitarle a sponsorizzare alcuni atleti partecipanti alla coppa.
Il sistema deve anche occuparsi di gestire i contratti pubblicitari che di riferiscono alla coppa del mondo. Sono ammessi quanti contratti si vuole, ma le aziende interessate devono appartenere a settori merceologici diversi.
Dopo aver modellato il sistema usando UML, oppure l'analisi strutturata e gli schemi ER, si semplifichi il comportamento del sistema nei due casi seguenti:

  • Il sistema deve calcolare la media punti di Cristian Ghedina nelle ultime 3 edizioni della coppa del mondo.

  • Il sistema vuole calcolare quante e quali gare sono state annullate per mancanza di neve nelle ultime 5 stagioni.

 

13

Si progetti un sistema informativo per la gestione di una società di autobus.
Il sistema deve gestire le linee servite dalla società. Ogni linea ha una stazione di testa e una stazione di coda e gli autobus la possono percorrere nelle due direzioni (dalla testa alla coda, oppure viceversa). Si noti che le fermate nelle due direzioni protrebbero essere diverse (ad esempio, una strada potrebbe essere a senso unico). Ogni linea è coperta da un certo numero di corse giornaliere: si supponga che la cadenza e l'orario di inizio e di fine delle corse dipendano dal giorno della settimana e/o da particolari giorni di festa (giorni lavorativi, sabato, domenica e festività). Una corsa però non deve necessariamente coprire l'intera tratta, ma potrebbe anche essere limitata ad un sottoinsieme delle fermate previste dalla linea.
Il sistema deve stampare anche l'orario stagionale e deve gestire gli autisti e gli autobus. Solitamente un mezzo è assegnato a una particolare linea (corsa) e un autista è assegnato a un particolare mezzo. Il sistema deve controllare che ogni autista non lavori mai per più di 7 ore al giorno, quindi il numero di corse effettuabili da ogni autista e il numero di autisti necessari per coprire una singola linea devono essere calcolati in base ai tempi di percorrenza.
Dopo aver modellato il sistema usando UML, oppure l'analisi strutturata e gli schemi ER, si esemplifichi il comportamento del sistema nei due casi seguenti:

  • Il sistema deve calcolare il numero di autisti necessario per coprire la linea Topolinia-Paperopoli, sapendo che la tratta completa consta di 12 fermate e che il tempo medio da una fermata alla successiva è di 10 minuti.

  • Il sistema vuole calcolare il numero di mezzi necessari per coprire tutte le corse individuate.

 

14

Si progetti il sistema informativo (semplificato) della motorizzazione civile.
Il sistema deve gestire sia le immatricolazioni dei mezzi di trasporto, sia l'emissione delle patenti. I mezzi di trasporto sono suddivisi in motociclette, automobili, pullman e camion.
La motorizzazione vuole tenere traccia sia dei modelli, che dei singoli autoveicoli. I modelli possono essere modelli standard (identificati da nome del modello, codice e data di omologazione), oppure prototipi (identificati da nome del prototipo, codice, data di immatricolazione e persona che ha presentato la richiesta di immatricolazione).
Ogni mezzo di trasporto è identificato da numero di telaio, modello, data di immatricolazione, targa e proprietario. I proprietari possono essere persone fisiche, oppure società. Ad ogni persona fisica può essere associata una patente; non è ovviamente possibile associare patenti a società. Le persone e le società sono identificate attraverso i soliti attributi, Le patenti devono avere un proprietario, una data di rilascio, eventuali note specifiche e eventuali rinnovi.
Si modelli il sistema utilizzando le notazioni che si ritengono più opportune. Si descriva anche, il comportamento del sistema nei seguenti casi:

  • Il sistema (l'utente) vuole immatricolare una nuova macchina: Fiat Punto blu, data immatricolazione 20/06/2000, telaio # 123AS34, targa FS 904 LB, proprietario Antonio Rossi.

  • Il sistema (l'utente) vuole identificare il proprietario della Alfa Romeo 156 targata FR 374 CB, telaio # 453HH92.

 

15

Si progetti un sistema informativo per la gestione del programma fedeltà della compagnia aerea MyAir.
La premessa, magari non nota a tutti, è che chi si iscrive al programma, ogni volta in cui vola con MyAir, accumula punti (miglia) che danno diritto a premi. Ad esempio, bisogna volare per almeno 25.000 miglia per avere diritto a un volo gratuito in Europa; ci vogliono 65.000 miglia per un volo negli Stati Uniti; bastano 5.000 per un buono acquisto in un negozio convenzionato.
Il sistema deve gestire i clienti della compagnia che partecipano al programma. I partecipanti sono organizzati in tre fasce di merito in funzione delle miglia volate durante un anno solare: tutti appartengono al primo livello. Se si volano 35.000 miglia si passa al secondo livello; si accede al terzo livello con 100.000 miglia volate in un anno. I tre livelli danno diritto a facilitazioni e premi differenziati.
Oltre ai clienti, il sistema deve gestire i premi, ovvero la tipologia di premio (volo gratuito, soggiorno gratuito, buono sconto), il numero di miglia richieste per ogni premio particolare (un volo gratuito a New York richiede più miglia di un volo per Roma) e lo storico dei clienti: quanti voli ha effettuato ogni cliente, quante miglia ha guadagnato, quali premi ha già riscosso e quante miglia gli restano da "spendere". Si fa notare che le miglia scadono dopo 5 anni dal momento in cui sono state acquisite, cioè dalla data del volo.
Il sistema deve essere in grado di aggiornare la posizione di ogni cliente in funzione di ogni volo effettuato e di ogni premi richiesto. Deve anche gestire l'effettiva disponibilità dei premi. Ad esempio, un volo gratuito potrebbe non essere soddisfacibile se il volo richiesto fosse già pieno.
Si progetti il sistema definendo il diagramma delle classi UML e si esemplifichi il comportamento del sistema nei due casi seguenti:

  • Il signor Rossi chiede un volo premio per Nairobi. Il sistema deve verificare le miglia in possesso del signor Rossi, confrontarle con quelle richieste per un volo per Nairobi e ricordare al signor Rossi che non ha miglia sufficienti.

  • Il signor Bianchi ha effettuato il decimo volo del 2000 e questo significa che la classe di merito cambia da quella base al secondo livello. Il sistema deve modificare l'immagine del signor Bianchi (cioè i dati memorizzati) e deve predisporre l'invio della nuova tessera di fideizzazione.

 

16

Si progetti un sistema informativo per la gestione di un oratorio.
Il sistema deve gestire tutte le attività svolte in oratorio (catechismo, corsi di informatica, corsi di ballo, vacanze estive, ecc.). Ogni attività ha un responsabile, un insieme di persone di riferimento, che coadiuva il responsabile, e gruppo di ragazzi (persone) che seguono (svolgono) l'attività in questione. Il catechismo è rivolto solamente a ragazzi in età scolare, mentre ad esempio i corsi sono rivolti a tutti. Le attività non sono fisse e predefinite, ma possono cambiare nel corso dell'anno. Le attività con un numero elevato di partecipanti sono organizzate in classi. Ogni attività ha anche un bilancio: le entrate sono le sovvenzioni del comune, della parrocchia, di qualche ente benefico, oppure le quote di iscrizione richieste ai partecipanti; le uscite sono ovviamente le spese vive più qualche compenso proforma ai responsabili. L'obiettivo è di mantenere ogni attività in attivo o in pareggio. Eventuali "utili" servirebbero per finanziare altre attività.
Il sistema deve essere in grado di elaborare anche il bilancio complessivo dell'oratorio sia mese per mese, che alla fine di ogni anno.
Si progetti il sistema definendo il diagramma delle classi UML e si esemplifichi il suo comportamento nei due casi seguenti:

  • L'oratorio organizza un corso di balli latino-americani riscotendo un notevole successo. Si calcoli il bilancio del corso sapendo che: non è stata concessa alcuna sovvenzione, ma i 30 partecipanti hanno pagato 50.000 lire di quota d'iscrizione, e si è deciso di dare 500.000 lire ad ognuno dei due maestri.

  • Il signor Bianchi vuole iscrivere il figlio Francesco al corso di free-climbing. Il signor Bianchi deve pagare la quota

 

17

Si progetti un sistema informativo per la gestione di un'azienda dolciaria.
Il sistema deve classificare e gestire tutti i prodotti dell'azienda. Ogni prodotto richiede una ricetta e un certo numero di materie prime. Il sistema deve poter controllare la ricetta scelta e decidere se esistono scorte sufficienti per preparare il prodotto nella quantità stabilita. Se non ci fossero materie prime sufficienti, il sistema dovrebbe provvedere all'espletamento delle pratiche per il riordino: la modalità può essere sia automatica, che manuale. Nel primo caso, è il sistema che fa tutto; nel secondo caso, il sistema segnala solamente le materie prime mancanti e lascia la decisione finale all'operatore.
L'azienda dispone, anche, di un proprio sito Internet con il quale presenta e vende i prodotti. La presentazione è attraverso particolari "tour per golosi"; la vendita è una classica vendita via Inter-net: i clienti scelgono cosa comprare e decidono modalità di spedizione e tempi di consegna. Chiaramente tempi di consegna e modalità diverse hanno prezzi diversi.
Gli utenti del sistema possono caratterizzare i loro profili, specificando i gusti (ad esempio, prodotti alla panna, oppure torte con la glassa) e richieste (ad esempio, consegna sempre tramite fattorino). Le preferenze devono essere usate dal sistema per organizzare i "tour per golosi", privilegiando quelli che corrispondono ai gusti dichiarati. Ad esempio, i fanatici del cioccolato dovranno avere tutti i tour con prodotti al cioccolato, come prima scelta, e poi via via gli altri. I tour de-vono anche presentare l'equivalente calorico di ogni prodotto, giusto per infierire sul cliente.
Si progetti il sistema definendo il diagramma delle classi UML e si esemplifichi il suo comporta-mento (interaction o activity diagram) nei due casi seguenti:

  • Si deve produrre la torta della nonna e si scopre che mancano alcuni ingredienti (ad esempio, uova e pinoli). Il sistema, in modalità automatica, deve provvedere all'emissione degli ordini d'acquisto.

  • L'utente Rosso Rossi richiede la consegna di una bavarese alla fragola per corriere espresso entro 12 ore. Supponendo che la cosa sia possibile, il sistema deve calcolare il costo dell'operazione (spedizione più involucro protettivo) e deve emettere la fattu-ra virtuale al cliente.