Skip to content

Instantly share code, notes, and snippets.

@Shaun420
Created June 10, 2024 14:54
Show Gist options
  • Save Shaun420/67ba54c98bae3f9317c7ed7e1322925a to your computer and use it in GitHub Desktop.
Save Shaun420/67ba54c98bae3f9317c7ed7e1322925a to your computer and use it in GitHub Desktop.
C# Pets console app which displays information about pet animals and searching functionality for finding specific pets.
using System;
// ourAnimals array will store the following:
string animalSpecies = "";
string animalID = "";
string animalAge = "";
string animalPhysicalDescription = "";
string animalPersonalityDescription = "";
string animalNickname = "";
string suggestedDonation = "";
// variables that support data entry
int maxPets = 8;
string? readResult;
string menuSelection = "";
decimal decimalDonation = 0.00m;
// array used to store runtime data
string[,] ourAnimals = new string[maxPets, 7];
// sample data ourAnimals array entries
for (int i = 0; i < maxPets; i++)
{
switch (i)
{
case 0:
animalSpecies = "dog";
animalID = "d1";
animalAge = "2";
animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.";
animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
animalNickname = "lola";
suggestedDonation = "85.00";
break;
case 1:
animalSpecies = "dog";
animalID = "d2";
animalAge = "9";
animalPhysicalDescription = "large reddish-brown male golden retriever weighing about 85 pounds. housebroken.";
animalPersonalityDescription = "loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.";
animalNickname = "gus";
suggestedDonation = "49.99";
break;
case 2:
animalSpecies = "cat";
animalID = "c3";
animalAge = "1";
animalPhysicalDescription = "small white female weighing about 8 pounds. litter box trained.";
animalPersonalityDescription = "friendly";
animalNickname = "snow";
suggestedDonation = "40.00";
break;
case 3:
animalSpecies = "cat";
animalID = "c4";
animalAge = "";
animalPhysicalDescription = "";
animalPersonalityDescription = "";
animalNickname = "lion";
suggestedDonation = "";
break;
default:
animalSpecies = "";
animalID = "";
animalAge = "";
animalPhysicalDescription = "";
animalPersonalityDescription = "";
animalNickname = "";
suggestedDonation = "";
break;
}
ourAnimals[i, 0] = "ID #: " + animalID;
ourAnimals[i, 1] = "Species: " + animalSpecies;
ourAnimals[i, 2] = "Age: " + animalAge;
ourAnimals[i, 3] = "Nickname: " + animalNickname;
ourAnimals[i, 4] = "Physical description: " + animalPhysicalDescription;
ourAnimals[i, 5] = "Personality: " + animalPersonalityDescription;
if (!decimal.TryParse(suggestedDonation, out decimalDonation)){
decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00
}
ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";
}
// top-level menu options
do
{
// NOTE: the Console.Clear method is throwing an exception in debug sessions
Console.Clear();
Console.WriteLine("Welcome to the Contoso PetFriends app. Your main menu options are:");
Console.WriteLine(" 1. List all of our current pet information");
Console.WriteLine(" 2. Display all dogs with a specified characteristic");
Console.WriteLine();
Console.WriteLine("Enter your selection number (or type Exit to exit the program)");
readResult = Console.ReadLine();
if (readResult != null)
{
menuSelection = readResult.ToLower();
}
// switch-case to process the selected menu option
switch (menuSelection)
{
case "1":
// list all pet info
for (int i = 0; i < maxPets; i++)
{
if (ourAnimals[i, 0] != "ID #: ")
{
Console.WriteLine();
for (int j = 0; j < 7; j++)
{
Console.WriteLine(ourAnimals[i, j].ToString());
}
}
}
Console.WriteLine("\r\nPress the Enter key to continue");
readResult = Console.ReadLine();
break;
case "2":
// #1 Display all dogs with a multiple search characteristics
// string dogCharacteristic = "";
string[] searches = new string[10];
int numberSearches = 0;
while (numberSearches == 0)
{
// #2 have user enter multiple comma separated characteristics to search for
Console.WriteLine($"\r\nEnter the desired dog characteristics separated by commas: ");
readResult = Console.ReadLine();
if (readResult != null)
{
searches = readResult.Split(",");
numberSearches = searches.Length;
for (int i = 0; i < numberSearches; i++) {
searches[i] = searches[i].ToLower().Trim();
}
Console.WriteLine();
}
}
bool noMatchesDog = true;
bool thisDog = false;
string dogDescription = "";
// #4 update to "rotating" animation with countdown
string[] searchingIcons = {" | ", " / ", " - ", " \\ "};
// loop ourAnimals array to search for matching animals
for (int i = 0; i < maxPets; i++)
{
if (ourAnimals[i, 1].Contains("dog"))
{
// Search combined descriptions and report results
dogDescription = ourAnimals[i, 4] + "\r\n" + ourAnimals[i, 5];
thisDog = false;
foreach (string search in searches) {
// #5 update "searching" message to show countdown
for (int sec = 3; sec > 0; sec--) {
foreach (string icon in searchingIcons)
{
Console.Write($"\rsearching our dog {ourAnimals[i, 3]} for {search} {icon} {sec}");
Thread.Sleep(250);
}
}
Console.Write($"\r{new String(' ', Console.BufferWidth)}");
if (dogDescription.Contains(search))
{
Console.WriteLine($"Our dog {ourAnimals[i, 3]} is a match for search word {search}!");
noMatchesDog = false;
thisDog = true;
}
}
if (thisDog) {
Console.WriteLine($"\nNickname: {ourAnimals[i, 3]} ({ourAnimals[i, 0]})");
Console.WriteLine($"Physical description: {ourAnimals[i, 4]}");
Console.WriteLine($"Personality: {ourAnimals[i, 5]}");
}
}
}
if (noMatchesDog)
{
Console.WriteLine("None of our dogs are a match found for: " + readResult);
}
Console.WriteLine("\n\rPress the Enter key to continue");
readResult = Console.ReadLine();
break;
default:
break;
}
} while (menuSelection != "exit");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment