Exercício - Adicionar pesquisa de cães

Concluído

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:

  1. Reunir a entrada do usuário para o termo de pesquisa de características do animal de estimação
  2. Percorra a matriz de animais e identifique "cães"
  3. Pesquise na descrição de cada cão por um termo correspondente
  4. 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.

  1. 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".

  2. Exclua o código Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); entre case "2": e a Console.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; 
    
  3. Adicione código para coletar a entrada do usuário para a dogCharacteristic cadeia de caracteres. Reunir a entrada requer um while loop que continua a avisar o usuário até que ele envie uma entrada. O loop instrui o usuário a Enter one desired dog characteristic to search for. Inserir uma cadeia de caracteres vazia repete o loop. Coloque o seguinte código case "2: imediatamente antes da break; 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 para case "2":. Você não pode utilizar dogCharacteristic em nenhum lugar fora do código da instrução de caso.
    • Depois de Console.ReadLine() reunir os dados do utilizador, dogCharacteristic assegura que o valor não seja nulo, transforma a cadeia de caracteres em letras minúsculas e remove os espaços à volta.
    • Se dogCharacteristic tiver um valor nulo, o loop repete a coleta de entrada.
  4. Salve seu código, compile usando dotnet build no TERMINAL (você pode consultar as etapas no exercício anterior) e corrija quaisquer erros.

  5. Execute o código usando dotnet run.

  6. Para testar a funcionalidade de entrada do termo de pesquisa do aplicativo, digite 2, selecionando Opção de menu 2, para pesquisar.

  7. 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 for prompt.

  8. O programa deve retornar ao prompt até que os caracteres sejam inseridos.

  9. No prompt, teste a entrada do termo de pesquisa, com golden como sua entrada. O programa deve retornar ao menu sem erro.

  10. 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.

  1. No final do case "2" código, imediatamente antes do código Console.WriteLine("\n\rPress the Enter key to continue");, que está antes do break;, 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
        }
    }
    
  2. 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 de animalSpecies são armazenados. Se animalSpecies armazena "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.

  3. Compile seu código usando dotnet build e 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.

Você precisa declarar uma cadeia de caracteres dogDescription para armazenar os dados combinados originados de animalPhysicalDescription e animalPersonalityDescription;.

  1. Declare dogDescription imediatamente antes do comentário #6 com o seguinte código:

    string dogDescription = "";
    

    Agora use a string declarada anteriormente dogDescription e preencha-a com as descrições físicas e de personalidade de cada animal

  2. Preencha a dogDescription variável com os valores de animalPhysicalDescription e animalPersonalityDescription;.

    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.

  1. 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 if encontrar uma correspondência para dogCharacteristic em dogDescription, 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".

  2. 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 true isso significa "é verdade que nenhum cão corresponde para a pesquisa". Agora, quando um cão é encontrado, você pode "virar" o noMatchesDog de true para false

  3. Entre parênteses da if (dogDescription.Contains(dogCharacteristic)) instrução, adicione o seguinte código:

    noMatchesDog = false;
    
  4. 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.

  5. No final do case "2" código, imediatamente antes do código Console.WriteLine("\n\rPress the Enter key to continue");, que está antes do break;, 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!

  6. Salve suas alterações.

Verifique o seu trabalho

  1. 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".

  2. Execute o código do seu projeto no terminal com dotnet run.

Quando o código é executado, dois itens de menu são exibidos.

  1. 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 match
    

    Se 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.

  2. Digite exit, no menu do aplicativo, para encerrar o programa e feche o painel do terminal.