Esercizio - Aggiungere la ricerca di un cane
In questo esercizio si aggiunge la funzionalità "Visualizzare tutti i cani con una caratteristica specificata" (voce di menu n. 2) all'applicazione. L'esercizio usa il progetto di soluzione dell'esercizio precedente che ha aggiunto suggestedDonation dati.
Annotazioni
Questo progetto è una funzionalità MVP (Minimal Viable Product). Le funzionalità MVP sono concepite per essere un prototipo funzionante di base di una funzionalità che consente la distribuzione rapida e semplice. Un MVP in genere non è un prodotto finale, il suo scopo è quello di aiutare a lavorare attraverso un'idea, testarla e raccogliere ulteriori requisiti.
La funzionalità di ricerca richiede all'utente un singolo termine di input di ricerca (o frase) che descrive una caratteristica desiderata in un animale domestico da adottare. Le descrizioni dei cani adottabili vengono quindi esaminate per trovare corrispondenze esatte con l'input dell'utente. Informazioni sui cani che corrispondono vengono mostrate nella console. Se non vengono identificate corrispondenze, viene visualizzato un messaggio "Nessuno dei nostri cani è una corrispondenza" insieme al termine di ricerca usato.
Le attività completate durante questo esercizio sono:
- Raccogliere l'input dell'utente per il termine di ricerca caratteristica animale domestico
- Attraversa la matrice di animali e identifica i "cani"
- Cerca nella descrizione di ogni cane una corrispondenza di termine
- Visualizzare i cani che hanno una corrispondenza con il termine
In Visual Studio Code aprire il file di Project.cs completato dell'esercizio precedente che ha aggiunto le informazioni sulla donazione per iniziare.
Raccogliere l'input dell'utente per la ricerca delle caratteristiche degli animali domestici
Esaminare l'istruzione switch del menu dopo il commento 5 nel codice Project.cs. Si individua il codice che visualizza il messaggio "UNDER CONSTRUCTION".
Eliminare il codice
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");tracase "2":e l'istruzioneConsole.WriteLine("Press the Enter key to continue.");in modo che il codice corrisponda all'esempio seguente:case "2": // Display all dogs with a specified characteristic Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Aggiungere il codice per raccogliere l'input dell'utente per la
dogCharacteristicstringa. Raccogliere l'input richiede un ciclowhileche continua a sollecitare l'utente finché non fornisce un input. Il ciclo indica all'utente diEnter one desired dog characteristic to search for. Se si immette una stringa vuota, il ciclo viene ripetuto. Inserire il codicecase "2:seguente subito prima dell'istruzionebreak;come illustrato:case "2": // Display all dogs with a specified characteristic string dogCharacteristic = ""; while (dogCharacteristic == "") { // have the user enter physical characteristics to search for Console.WriteLine($"\nEnter one desired dog characteristics to search for"); readResult = Console.ReadLine(); if (readResult != null) { dogCharacteristic = readResult.ToLower().Trim(); } } Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Esaminare il codice aggiunto. Le funzionalità principali del
case "2":codice includono:- Il codice inizia con una dichiarazione di stringa
string dogCharacteristic = "";con ambito acase "2":. Non è possibile usaredogCharacteristicin nessun luogo al di fuori del codice della dichiarazione caso. - Dopo che
Console.ReadLine()ha raccolto l'inputdogCharacteristicdell'utente, si assicura che il valore non sia nullo, imposta la stringa in minuscolo e elimina gli spazi circostanti. - Se
dogCharacteristicha un valore Null, il ciclo ripete la raccolta dell'input.
- Il codice inizia con una dichiarazione di stringa
Salvare il codice, quindi compilarlo usando
dotnet buildin TERMINALE (è possibile fare riferimento ai passaggi dell'esercizio precedente) e correggere eventuali errori.Eseguire il codice usando
dotnet run.Per testare la funzionalità di input del termine di ricerca dell'app, immettere
2e selezionare l'Opzione di menu2per la ricerca.Premere "INVIO" senza immettere i dati al prompt "Immettere una caratteristica del cane desiderato per la ricerca". Il programma deve tornare al
Enter one desired dog characteristics to search forprompt.Il programma dovrebbe tornare al prompt finché non vengono inseriti dei caratteri.
Alla richiesta, esegui un test della voce del termine di ricerca con
goldencome voce. Il programma deve tornare al menu senza errori.Nel menu digitare "Esci" per uscire dal programma.
Identificare quali animali sono cani
Ora aggiungi una funzionalità per cercare utilizzando l'input dell'utente dogCharacteristic all'interno delle descrizioni del cane seguendo il codice precedente in case "2". Ma prima è necessario identificare i cani.
Alla fine del
case "2"codice, subito prima del codiceConsole.WriteLine("\n\rPress the Enter key to continue");, che precedebreak;, aggiungere il codice seguente:// #6 loop through the ourAnimals array to search for matching animals for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 1].Contains("dog")) { // #7 Search combined descriptions and report results } }Prendi un minuto per esaminare il ciclo aggiunto alla fine del codice
case "2":.Il codice filtra i "cani" usando
ourAnimals[i,1], doveanimalSpeciesvengono archiviati i dati. SeanimalSpeciesarchivia "dog" come valore, il codice si sposta tra parentesi quadre dell'istruzione if in cui può verificarsi la ricerca delle descrizioni combinate.Compilare il codice usando
dotnet builde correggere eventuali errori.
Cercare le informazioni di descrizione combinate dei cani
Il codice precedente garantisce di cercare solo descrizioni di cani. Ora è necessario cercare le descrizioni dei cani e restituire informazioni sulle corrispondenze.
Rendendosi conto delle descrizioni, si capisce che ci sono due descrizioni animalPhysicalDescription e animalPersonalityDescription;. Il team illustra le funzionalità e decide che una descrizione combinata è appropriata per la ricerca.
Annotazioni
Alcuni sviluppatori si riferiscono all'aggiunta di requisiti durante lo sviluppo come "crescita incontrollata delle richieste." Anche se la combinazione delle descrizioni non richiede molto lavoro, aggiunge comunque tempo e complessità. Per questo motivo, è necessario informare il team che i requisiti aggiunti spesso ritardano il completamento del progetto.
Combinare le descrizioni dei cani per semplificare la ricerca
È necessario dichiarare una stringa, dogDescription, per contenere i dati combinati originati da animalPhysicalDescription e animalPersonalityDescription;.
Dichiarare
dogDescriptionsubito prima del commento 6 con il codice seguente:string dogDescription = "";Usare ora la stringa dichiarata
dogDescriptionin precedenza e popolarla con le descrizioni fisiche e di personalità per ogni animalePopolare la
dogDescriptionvariabile con i valori peranimalPhysicalDescriptioneanimalPersonalityDescription;.Aggiungere il codice seguente dopo il commento n. 7:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
Cercare le descrizioni combinate dei cani e visualizzare
Ora aggiungi la ricerca dogCharacteristic nei dati combinati di dogDescription. È necessario aggiungere un'istruzione if per determinare se si dispone di una corrispondenza per la ricerca di ogni cane.
Aggiornare il codice seguente commento n. 7, dopo
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];con il codice :if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); }Esamina l'esempio di codice precedente; quando l'istruzione
iftrova una corrispondenza perdogCharacteristicindogDescription, un messaggio riguardante la corrispondenza con il cane e la descrizione viene visualizzato sulla console. È comunque necessario tenere conto del messaggio "Nessuna corrispondenza trovata".Aggiungere il codice
noMatchesDog = true:Aggiungere il codice seguente subito prima del commento n. 6:
bool noMatchesDog = true;È ora possibile tenere traccia di quando non vengono trovate corrispondenze con questa variabile di rilevamento. Quando il valore predefinito è impostato su
truequesto significa "è vero che nessun cane corrisponde alla ricerca". Ora, quando si trova un cane si può "capovolgere" ilnoMatchesDogdatrueafalseNelle parentesi quadre dell'istruzione
if (dogDescription.Contains(dogCharacteristic))aggiungere il codice seguente:noMatchesDog = false;Verificare che il codice all'interno delle parentesi angolari
if (dogDescription.Contains(dogCharacteristic))sia stato immesso correttamente.È necessario avere il codice seguente:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }Infine, è necessario creare codice che decida se il messaggio "nessuna corrispondenza trovata" deve essere scritto nella console.
Alla fine del
case "2"codice, subito prima del codiceConsole.WriteLine("\n\rPress the Enter key to continue");, che precedebreak;, aggiungere il codice seguente:if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Questo esempio di codice è il codice finale per questo esercizio.
Salvare le modifiche.
Controlla il tuo lavoro
Al prompt dei comandi TERMINAL immettere il comando seguente per compilare il codice del progetto:
dotnet build.Se ci sono errori, leggi i messaggi di errore, risolvi i problemi tecnici oppure esamina il codice della soluzione nella cartella "Finale".
Eseguire il codice del progetto nel terminale con
dotnet run.
Una volta eseguito il codice, vengono visualizzate due voci di menu.
Nel menu digitare "
2" e "Enter" per testare ripetutamente la ricerca del cane.- Enter nothing as input to test the null entry behavior - Enter "scuba" as input to test the "match not found" - Enter "golden" to get two matches - Enter "medium" to get one matchSe tutto funzionava come previsto in entrambi i passaggi, congratulazioni! In caso contrario, cercare gli errori controllando i passaggi dell'esercizio. Se necessario, iniziare da capo o controllare il codice della cartella Finale per il codice della soluzione per questo esercizio.
Digitare
exitnel menu dell'app per terminare il programma e quindi chiudere il pannello del terminale.