Exercício - Adicionar pesquisa de cães
Neste exercício, você adiciona o recurso "Exibir todos os cães com uma característica especificada" (item de menu #2) ao aplicativo. O exercício usa o projeto de solução do exercício anterior que adicionou suggestedDonation dados.
Observação
Este projeto é um recurso de "produto mínimo viável" (MVP). Os recursos MVP destinam-se a ser um protótipo básico de trabalho de um recurso que permite uma entrega rápida e fácil. Um MVP geralmente não é um produto final, seu objetivo é ajudá-lo a trabalhar uma ideia, testá-la e reunir outros requisitos.
O recurso de pesquisa solicita ao usuário um único termo (ou frase) de entrada de pesquisa que descreve uma característica desejada em um animal de estimação para adotar. Em seguida, as descrições para cães adotáveis são pesquisadas para correspondências exatas da entrada do usuário. As informações sobre os cães que correspondem são enviadas para o console. Se nenhuma correspondência for identificada, uma mensagem "Nenhum de nossos cães é uma correspondência" será exibida junto com o termo de pesquisa usado.
As tarefas concluídas durante este exercício são:
- Reunir a entrada do usuário para o termo de pesquisa de características do animal de estimação
- Percorra a matriz de animais e identifique "cães"
- Pesquise na descrição de cada cão por um termo correspondente
- Exiba os cães que têm uma correspondência de termo
No Visual Studio Code, abra o arquivo de Project.cs concluído do exercício anterior que adicionou as informações de doação para começar.
Reunir informações do usuário para a pesquisa de características do animal de estimação
Revise a instrução de mudança de menu após o comentário #5 no código Project.cs. Você descobre o código que exibe a mensagem "EM CONSTRUÇÃO".
Exclua o código
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");entrecase "2":e aConsole.WriteLine("Press the Enter key to continue.");instrução para que o código corresponda ao seguinte exemplo:case "2": // Display all dogs with a specified characteristic Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Adicione código para coletar a entrada do usuário para a
dogCharacteristiccadeia de caracteres. Reunir a entrada requer umwhileloop que continua a avisar o usuário até que ele envie uma entrada. O loop instrui o usuário aEnter one desired dog characteristic to search for. Inserir uma cadeia de caracteres vazia repete o loop. Coloque o seguinte códigocase "2:imediatamente antes dabreak;instrução, conforme mostrado: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;Analise o código adicionado. As principais características do
case "2":código incluem:- O código começa com uma declaração de cadeia de caracteres
string dogCharacteristic = "";que está com escopo definido paracase "2":. Você não pode utilizardogCharacteristicem nenhum lugar fora do código da instrução de caso. - Depois de
Console.ReadLine()reunir os dados do utilizador,dogCharacteristicassegura que o valor não seja nulo, transforma a cadeia de caracteres em letras minúsculas e remove os espaços à volta. - Se
dogCharacteristictiver um valor nulo, o loop repete a coleta de entrada.
- O código começa com uma declaração de cadeia de caracteres
Salve seu código, compile usando
dotnet buildno TERMINAL (você pode consultar as etapas no exercício anterior) e corrija quaisquer erros.Execute o código usando
dotnet run.Para testar a funcionalidade de entrada do termo de pesquisa do aplicativo, digite
2, selecionando Opção de menu2, para pesquisar.Pressione "Enter" sem inserir dados no prompt "Digite uma característica de cão desejada para pesquisar". O programa deve retornar ao
Enter one desired dog characteristics to search forprompt.O programa deve retornar ao prompt até que os caracteres sejam inseridos.
No prompt, teste a entrada do termo de pesquisa, com
goldencomo sua entrada. O programa deve retornar ao menu sem erro.No menu, digite "Sair" para sair do programa.
Identificar quais animais são cães
Agora você adiciona um recurso para pesquisar usando a entrada dogCharacteristic do usuário dentro das descrições do cão seguindo o código anterior em case "2". Mas primeiro é preciso identificar os cães.
No final do
case "2"código, imediatamente antes do códigoConsole.WriteLine("\n\rPress the Enter key to continue");, que está antes dobreak;, adicione o seguinte código:// #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 } }Reserve um minuto para examinar o loop adicionado ao final do
case "2":código.O código filtra "cães" usando
ourAnimals[i,1], onde os dados deanimalSpeciessão armazenados. SeanimalSpeciesarmazena "cão" como seu valor, então o código se move para os colchetes da instrução if, onde a pesquisa das descrições combinadas pode ocorrer.Compile seu código usando
dotnet builde corrija quaisquer erros.
Pesquise as informações de descrição combinada de cães
O código anterior garante que você pesquise apenas descrições de cães. Agora você precisa pesquisar as descrições dos cães e apresentar informações sobre as correspondências.
Ao pensar sobre as descrições, você percebe que há duas descrições animalPhysicalDescription e animalPersonalityDescription;. A equipe discute a funcionalidade e decide que uma descrição combinada é apropriada para a pesquisa.
Observação
Alguns desenvolvedores se referem à adição de requisitos durante o desenvolvimento como "aumento de escopo". Embora combinar as descrições não seja muito trabalhoso, ainda adiciona tempo e complexidade. Por esse motivo, você deve informar à equipe que os requisitos adicionais muitas vezes atrasam a conclusão do projeto.
Combine as descrições dos cães para facilitar a pesquisa
Você precisa declarar uma cadeia de caracteres dogDescription para armazenar os dados combinados originados de animalPhysicalDescription e animalPersonalityDescription;.
Declare
dogDescriptionimediatamente antes do comentário #6 com o seguinte código:string dogDescription = "";Agora use a string declarada anteriormente
dogDescriptione preencha-a com as descrições físicas e de personalidade de cada animalPreencha a
dogDescriptionvariável com os valores deanimalPhysicalDescriptioneanimalPersonalityDescription;.Adicione o seguinte código após o comentário # 7:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
Pesquise as descrições combinadas de cães e exiba-as.
Agora tu realizas a pesquisa para dogCharacteristic nos dados combinados de dogDescription. Você precisa adicionar uma instrução if para verificar se tem correspondência para a pesquisa de cada cão.
Atualize o código conforme o comentário #7, após
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];, com o código:if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); }Examine o exemplo de código anterior. Quando a instrução
ifencontrar uma correspondência paradogCharacteristicemdogDescription, uma mensagem sobre a correspondência relacionada ao cão e a descrição será enviada para o console. Você ainda precisa levar em conta a mensagem "nenhuma correspondência encontrada".Adicione o código
noMatchesDog = true:Adicione o seguinte código imediatamente antes do comentário #6:
bool noMatchesDog = true;Agora você pode acompanhar quando nenhuma correspondência é encontrada com essa variável de rastreamento. Quando o padrão é definido como
trueisso significa "é verdade que nenhum cão corresponde para a pesquisa". Agora, quando um cão é encontrado, você pode "virar" onoMatchesDogdetrueparafalseEntre parênteses da
if (dogDescription.Contains(dogCharacteristic))instrução, adicione o seguinte código:noMatchesDog = false;Verifique se o seu código entre os colchetes
if (dogDescription.Contains(dogCharacteristic))foi inserido corretamente.Você deve ter o seguinte código:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }Finalmente, é necessário criar um código que decida se a mensagem "nenhuma correspondência encontrada" deve ser registada no console.
No final do
case "2"código, imediatamente antes do códigoConsole.WriteLine("\n\rPress the Enter key to continue");, que está antes dobreak;, adicione o seguinte código:if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Este exemplo de código é o código final para este exercício!
Salve suas alterações.
Verifique o seu trabalho
No prompt de comando TERMINAL, para criar o código do projeto, digite o seguinte comando:
dotnet build.Se houver erros, você precisa ler as mensagens de erro, solucionar problemas e fazer correções ou revisar o código da solução na pasta "Final".
Execute o código do seu projeto no terminal com
dotnet run.
Quando o código é executado, dois itens de menu são exibidos.
No menu, digite "
2" e "Enter" para testar a pesquisa de cães repetidamente.- 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 tudo funcionou como esperado em ambas as etapas, parabéns! Caso contrário, procure os erros verificando as etapas do exercício. Se necessário, comece de novo ou verifique o código da pasta Final para obter o código da solução para este exercício.
Digite
exit, no menu do aplicativo, para encerrar o programa e feche o painel do terminal.