Esame di Programmazione C#
Durata: 3 ore
Titolo: ZooManager
L'applicazione "ZooManager" è un gestore che consente di gestire un database di animali e gabbie di uno zoo. L'applicazione ZooManager dovrà consentire agli utenti di gestire animali e gabbie di uno zoo, aggiungendo, cancellando e modificando le informazioni nel database. Inoltre, permetterà di registrare i pasti dati agli animali. L'applicazione salverà e caricherà lo stato del database da un file json per preservare i dati tra le diverse esecuzioni.
L'applicazione dovrà includere le seguenti classi:
-
"Animal": rappresenta un animale nello zoo e ha le seguenti proprietà: "Id" (identificativo dell'animale), "Name" (nome dell'animale), "Kind" (specie animale) e "Food" (tipologia di cibo mangiato).
-
"Cage": rappresenta una gabbia nello zoo e ha le seguenti proprietà: "Id" (identificativo della gabbia), "Name" (nome della gabbia) e "Animals" (lista degli identificativi degli animali presenti nella gabbia).
-
"FoodLog": rappresenta un registro dei pasti dati agli animali e ha le seguenti proprietà: "AnimalId" (identificativo dell'animale), "Food" (tipo di cibo dato) e "Timestamp" (data e ora del pasto).
-
"Database": rappresenta il database dello zoo e ha le seguenti liste: "Animals" (lista degli animali presenti nello zoo), "Cages" (lista delle gabbie presenti nello zoo) e "Meals" (registro dei pasti degli animali).
-
"ZooManager": rappresenta il gestore dell'applicazione.
Ha un percorso del file per il database come costante, un oggetto di tipo Database come variabile privata e include i seguenti metodi:
- "Load": carica lo stato del database dal file in formato JSON.
- "Start": avvia l'applicazione e richiede all'utente di inserire i comandi per interagire con il database.
- "Summary": mostra un riassunto della situazione attuale del database, incluso il numero di animali, il numero di gabbie, la gabbia con il maggior numero di animali e il numero di pasti registrati.
- "GetCommand": chiede all'utente di inserire un comando specifico.
- "SetCommand": invoca i metodi appropriati in base al comando scelto dall'utente.
- "AddAnimal": aggiunge un nuovo animale al database, richiedendo all'utente di inserire il nome dell'animale, il tipo di cibo e la specie animale.
- "DeleteAnimal": cancella un animale dal database, richiedendo all'utente di inserire il nome dell'animale da cancellare.
- "AddCage": aggiunge una nuova gabbia al database, richiedendo all'utente di inserire il nome della gabbia.
- "DeleteCage": cancella una gabbia dal database, richiedendo all'utente di inserire il nome della gabbia da cancellare.
- "AddAnimalToCage": aggiunge un animale a una gabbia, richiedendo all'utente di inserire il nome dell'animale da aggiungere e il nome della gabbia in cui aggiungerlo.
- "RemoveAnimalFromCage": rimuove un animale da una gabbia, richiedendo all'utente di inserire il nome dell'animale da rimuovere e il nome della gabbia in cui si trova.
- "FeedAnimal": registra un pasto dato a un animale, richiedendo all'utente di inserire il nome dell'animale da sfamare.
- "Save": salva lo stato attuale del database su un file in formato JSON.
Buon lavoro!
Il codice deve rappresentare un'applicazione per la gestione di uno zoo.
L'enum FoodType
rappresenta le possibili tipologie di cibo che un animale può mangiare: Onnivoro, Carnivoro, Erbivoro.
La classe Animal
rappresenta un animale nello zoo e contiene le seguenti proprietà:
Id
: l'identificativo dell'animaleName
: il nome dell'animaleKind
: la specie dell'animaleFood
: il tipo di cibo mangiato dall'animale (enumFoodType
)
La classe Cage
rappresenta una gabbia nello zoo e contiene le seguenti proprietà:
Id
: l'identificativo della gabbiaName
: il nome della gabbiaAnimals
: una lista degli identificativi degli animali che vivono nella gabbia
La classe FoodLog
rappresenta un registro dei pasti degli animali e contiene le seguenti proprietà:
AnimalId
: l'identificativo dell'animaleFood
: il tipo di cibo dato all'animaleTimestamp
: la data e l'ora in cui è stato dato il pasto
La classe Database
rappresenta un database contenente le liste degli animali, delle gabbie e dei pasti.
La classe ZooManager
rappresenta il gestore dell'applicazione e contiene i metodi per gestire le operazioni nello zoo. Alcuni dei metodi principali sono:
Load()
: carica lo stato del database da un file JSONStart()
: avvia l'applicazioneSummary()
: mostra un riepilogo della situazione attuale del databaseGetCommand()
: chiede all'utente di inserire un comando e restituisce il numero corrispondenteSetCommand(int command)
: invoca il comando corrispondente al numero passato come parametroAddAnimal()
: aggiunge un nuovo animale al databaseDeleteAnimal()
: rimuove un animale dal databaseAddCage()
: aggiunge una nuova gabbia al databaseDeleteCage()
: rimuove una gabbia dal databaseAddAnimalToCage()
: aggiunge un animale a una gabbia esistenteRemoveAnimalFromCage()
: rimuove un animale da una gabbiaFeedAnimal()
: registra il pasto di un animaleSave()
: salva lo stato del database su un file JSON
L'applicazione sarà richiata tramite l'unico metodo pubblico Start()
del gestore ZooManager
.
Il numero di animali è: 0
Il numero di gabbie è: 0
Non ci sono animali in gabbia
Il numero di pasti è: 0
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
1
Il nome dell'animale è:
Fabio
Cosa mangia? 0 per onnivoro, 1 per carnivoro, e 2 per erbivoro.
0
La specie è:
Orso
Il numero di animali è: 1
Il numero di gabbie è: 0
Non ci sono animali in gabbia
Il numero di pasti è: 0
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
2
Inserisci il nome dell'animale da cancellare.
Fabio
Il numero di animali è: 0
Il numero di gabbie è: 0
Non ci sono animali in gabbia
Il numero di pasti è: 0
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
3
Il nome della gabbia è:
Folklore
Il numero di animali è: 0
Il numero di gabbie è: 1
Non ci sono animali in gabbia
Il numero di pasti è: 0
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
4
Inserisci il nome della gabbia da cancellare.
Folklore
Il numero di animali è: 0
Il numero di gabbie è: 0
Non ci sono animali in gabbia
Il numero di pasti è: 0
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
5
Inserisci il nome dell'animale da aggiungere.
Fabio
Inserisci il nome della gabbia dove aggiungerlo.
Folklore
Il numero di animali è: 1
Il numero di gabbie è: 1
La gabbia con più animali è: Folklore
Il numero di pasti è: 0
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
6
Inserisci il nome dell'animale da cancellare.
Fabio
Inserisci il nome della gabbia da cancellare.
Folklore
Il numero di animali è: 1
Il numero di gabbie è: 1
Non ci sono animali in gabbia
Il numero di pasti è: 0
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
7
Inserisci il nome dell'animale da sfamare.
Fabio
Fabio sta mangiando cibo Omnivorous.
Il numero di animali è: 1
Il numero di gabbie è: 1
La gabbia con più animali è: Folklore
Il numero di pasti è: 1
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
90
Salvataggio effettuato con successo.
Il numero di animali è: 1
Il numero di gabbie è: 1
La gabbia con più animali è: Folklore
Il numero di pasti è: 0
Salve zoo di Wano. Cosa vuoi fare?
Aggiungere un animale con 1.
Cancellare un animale con 2.
Aggiungere una gabbia con 3.
Cancellare una gabbia con 4.
Aggiungere un animale ad una gabbia con 5.
Rimuovere un animale da una gabbia con 6.
Dare da mangiare ad un animale con 7.
Salvare la situazione con 90.
Uscire con 100.
100
Chiusura dell'applicazione
- Divisione della soluzione in due progetti, un progetto libreria ed un progetto applicazione, creazione ed allaccio +2
- Commenti, aggiunta commenti con triplo slash su ogni classe e su ogni metodo +2
- Ogni classe ha il suo file +2
- Creazione classe animale +1
- Creazione classe gabbia +1
- Creazione enumerato tipologia animale +1
- Creazione classe per salvare ciò che hanno mangiato e quando +1
- Creazione classe manager per la gestione dell'applicazione +0
- Aggiungere un animale con 1. +1
- Cancellare un animale con 2. +1
- Aggiungere una gabbia con 3. +1
- Cancellare una gabbia con 4. +1
- Aggiungere un animale ad una gabbia con 5. +1
- Rimuovere un animale da una gabbia con 6. +1
- Dare da mangiare ad un animale con 7. +1
- Salvare la situazione con 90. +2
- Uscire con 100. +1