연습 - 제안된 기부 데이터 추가

완료됨

개발 프로세스의 이 단계에서는 시작 프로젝트 폴더에 제공된 코드를 업데이트하고 애플리케이션에 “제안된 기부”에 대한 기능을 추가합니다. 시작 project.cs 파일은 Visual Studio Code에서 열려 있어야 합니다. 시작하기 위한 지침이 필요한 경우 이전 준비 단원으로 돌아갑니다.

“제안된 기부” 기능 만들기

추가된 기부 기능을 사용하려면 suggestedDonation 변수를 만들고 ourAnimals 배열을 확장하여 새 기부 데이터를 수용해야 합니다. 또한 각 동물에 대해 제안된 기부 금액을 추가하고 제안된 기부 정보가 누락된 경우 기본 금액을 구현해야 합니다.

제안된 기부 데이터에 대한 지원 추가

제안된 기부를 보관하고 ourAnimals 배열을 확장하여 새 데이터를 저장할 새 변수를 만들어야 합니다.

  1. 각 동물에 대한 ourAnimals 배열을 채우는 데 사용되는 변수를 선언하는 주석 #1 아래의 코드를 확인합니다.

    제안된 기부 데이터에 대해 다른 string을 선언해야 합니다.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
  2. animalNickname에 대한 선언 아래에 suggestedDonation 변수를 만듭니다.

    suggestedDonation에 대한 선언은 다음 코드와 함께 추가됩니다.

    string suggestedDonation = "";
    
  3. 주석 # 3 이후에 ourAnimals 배열을 만드는 코드를 찾습니다.

    다음 코드 줄은 배열을 만듭니다.

    string[,] ourAnimals = new string[maxPets, 6];

    배열의 두 차원을 정의하는 크기는 원래 정의된 6개의 문자열에 대한 최대 애완 동물 수 maxPets와 개수 6이지만 새 suggestedDonation 데이터에 대한 공간은 없습니다.

  4. 6 대신 각 동물에 대한 데이터의 7 “열”을 보유하도록 ourAnimals 배열을 업데이트합니다.

    다음 줄에는 업데이트된 코드가 표시됩니다.

    string[,] ourAnimals = new string[maxPets, 7];

    추가된 ourAnimals 데이터를 지원하기 위해 suggestedDonation 배열을 확장했습니다.

샘플 데이터에 suggestedDonation 금액 추가

  1. 잠시 시간을 내어 switch 문 내에서 주석 #4 뒤의 case 0:을 검토합니다.

    suggestedDonation 데이터를 생성하기 전에 첫 번째 애완 동물의 샘플 데이터를 정의하는 다음 코드입니다. animalNickname 아래에 잘 맞을 것입니다!

        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";
            break;
    
  2. 다음 값을 사용하여 case 0;에서 default:에 대한 break 문 위에 suggestedDonation 값을 삽입합니다.

    • 케이스 0: suggestedDonation = "85.00";
    • 케이스 1: suggestedDonation = "49.99";
    • 케이스 2: suggestedDonation = "40.00";
    • 케이스 3: suggestedDonation = "";
    • 기본값: suggestedDonation = "";

    다음 코드는 ‘suggestedDonation’이 추가된 case 0: 코드를 보여줍니다.

        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;
    
  3. project.cs 파일에서 case 문의 애완 동물 데이터로 채워진 다음 배열을 찾습니다(주석 # 5 바로 앞).

        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;
    
  4. suggestedDonation 데이터는 배열을 채우기 위한 샘플 데이터 시작 코드의 일부로 포함되지 않습니다.

    다음과 같은 문으로 배열을 채우는 것이 좋습니다.

    ourAnimals[i, 6] = "Suggested Donation: "  + suggestedDonation;
    

    하지만 해당 코드를 추가하지는 않습니다. 다음 섹션에서는 다른 방법을 사용합니다.

TryParse()를 사용한 데이터 유효성 검사[C++]

변수 suggestedDonation은 숫자 값이 되지만 수집되어 string으로 저장됩니다. 향후 suggestedDonation가 10진수를 나타내는지 유효성을 검사하고 청구 계산에 사용할 수 있도록 10진수로 변환할 수 있는 경우를 고려합니다. 사용자가 텍스트 형식으로 twenty 숫자를 입력할 때 오류가 발생하지 않도록 TryParse 유효성 검사를 사용해야 합니다.

참고

이 연습의 코드 샘플은 en-US 문화권 설정을 기반으로 설계되었으며 마침표(.)를 소수 구분 기호로 사용합니다. 다른 소수 구분 기호(예: 쉼 ,표)를 사용하는 문화권 설정으로 코드를 빌드하고 실행하면 예기치 않은 결과나 오류가 자주 발생합니다. 이 문제를 해결하려면 코드 샘플의 마침표 소수 구분 기호를 로컬 소수 구분 기호(예: ,)로 바꿉니다. 또는 en-US 문화권 설정을 사용하여 프로그램을 실행하려면 프로그램 맨 위에 다음 using System.Globalization;을 추가합니다. 그리고 다른 using 문 후에 CultureInfo.CurrentCulture = new CultureInfo("en-US");을(를) 추가합니다.

  1. 주석 #5 앞에 코드 블록의 끝 부분에 suggestedDonation을 10진수로 캐스팅할 수 있는지 유효성을 검사하는 코드를 추가합니다.

    다음 코드를 추가합니다.

    if (!decimal.TryParse(suggestedDonation, out decimalDonation)){
        decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00
    }
    

    변수를 suggestedDonation 캐스팅 decimal할 수 없는 경우 코드는 기본값 decimalDonation = 45.00m;을 할당합니다. 캐스트가 성공하면 TryParsedecimalDonation을 채웁니다. 어느 쪽이든 decimalDonation은 적절한 10진수를 나타냅니다.

  2. 유효성 검사 코드가 올바른 위치에 있는지 확인합니다.

    추가했던 두 줄은 코드의 제일 위 두 줄로 코드에 표시됩니다.

        if (!decimal.TryParse(suggestedDonation, out decimalDonation)){
            decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00
        }
    }
    
    // #5 display the top-level menu options
    

    유효성 검사는 여전히 작동하지 않습니다. 코드에서 사용하기 위해 decimalDonation을 선언해야 한다는 것을 잊어서는 안 됩니다.

  3. 주석 #2의 뒤에서 decimalDonation 이후에 string menuSelection = "";을 선언합니다.

    decimal decimalDonation = 0.00m;
    

    마지막으로 각 애완 동물에 대한 suggestedDonation 데이터를 채울 준비가 되었습니다.

  4. 주석 #5 바로 전에 완료한 TryParse 닫는 대괄호 } 바로 다음에 다음의 코드를 추가합니다.

    ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";
    

    제안된 기부 데이터의 decimalDonation 버전을 사용했습니다. 또한 출력에서 문자열 보간 및 통화 서식을 사용했습니다.

  5. 잠시 시간을 내어 제안된 기부 데이터가 어떻게 ourAnimals 배열로 전환되는지 검토합니다.

    다음 코드는 TryParse()의 컨텍스트에서 ourAnimals 배열을 채웁니다.

    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}";
    }
    
    // #5 display the top-level menu options
    

    코드 {decimalDonation:C2}를 사용하여 decimalDonation의 제안된 기부가 통화 서식 :C2의 지시에 따라 현지 통화 기호와 소수점 두 자리로 표시됩니다.

ourAnimals 배열을 사용해야 하는 위치 검토 및 업데이트

생성된 suggestedDonation 데이터를 추가하려면 추가 업데이트가 필요합니다. 메뉴 옵션 "1. List all of our current pet information"에 추가된 데이터가 없습니다.

  1. case 1 내의 메뉴 루프 에 대한 주석 #5 아래의 코드를 확인합니다.

    애완 동물 특성을 인쇄하는 내부 루프 “for (int j = 0; j < 6; j++)”는 추가된 suggestedDonation 데이터를 고려해야 합니다.

  2. 내부 루프 코드 종료 조건을 업데이트합니다. 종료 조건을 "1"로 증가시켜 줍니다.j <7 코드가 다음 코드와 일치하는지 확인합니다.

    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++) // increased exit condition
            {
                Console.WriteLine(ourAnimals[i, j]);
            }
        }
    }
    

테스트 개요

여러 코드가 추가되면 코드가 예상대로 작동하는지 확인해야 합니다. 두 가지 중요한 테스트 영역은 다음과 같습니다.

  1. 코드가 오류없이 컴파일됩니다.

  2. 메뉴 옵션 1을 선택하면 모든 애완 동물 정보가 표시됩니다.

    • 출력에는 ID, 종, 연령, 애칭, 물리적 설명 및 성격 설명을 포함한 모든 샘플 애완 동물 정보가 포함됩니다.
    • 각 애완 동물에 대해 제안된 기부는 통화 기호와 소수점 두 자리의 정밀도로 표시됩니다.

작업 확인

코드를 빌드하고 실행하여 테스트합니다. 코드를 테스트해야 할 때마다 다음 단계를 사용합니다.

  1. Visual Studio Code 파일 메뉴에서 저장을 선택합니다.

  2. 탐색기 보기에서 Starter를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.

    터미널 패널은 코드 편집기 영역 아래에 열려야 합니다.

    Visual Studio Code의 통합 터미널을 여는 방법에는 여러 가지가 있습니다. 예를 들어 위쪽 메뉴는 보기 메뉴와 터미널 메뉴 모두에서 터미널 패널에 대한 액세스를 제공합니다. 또한 터미널 패널을 여는 바로 가기 키는 코딩 효율성을 높이기 위한 유용한 옵션입니다. 각 메서드는 허용됩니다.

  3. 터미널 패널에는 명령줄 프롬프트가 포함되어 있으며 프롬프트에 현재 폴더 경로가 표시됩니다. 예를 들면 다음과 같습니다.

    C:\Users\someuser\Desktop\GuidedProject\Starter>
    

    터미널 패널을 사용하여 dotnet builddotnet run과 같은 CLI(명령줄 인터페이스) 명령을 실행할 수 있습니다. dotnet build 명령은 코드를 컴파일하고 코드 구문과 관련된 오류 및 경고 메시지를 표시합니다.

    중요

    터미널 명령 프롬프트가 프로젝트 작업 영역의 루트에 열려 있는지 확인해야 합니다. 이 경우 프로젝트 작업 영역의 루트는 시작.csproj 및 Program.cs 파일이 있는 시작 폴더입니다. 터미널에서 명령을 실행할 때 명령은 현재 폴더 위치를 사용하여 작업을 수행하려고 합니다. 파일을 포함하지 않는 폴더 위치에서 dotnet build 또는 dotnet run 명령을 실행하려고 하면, 명령이 오류 메시지를 생성합니다.

  4. 터미널 명령 프롬프트에서 프로젝트 코드를 빌드하려면 dotnet build 명령을 입력합니다.

    몇 초 후에 빌드가 성공했음을 알려주는 메시지가 표시되며, 0 Warnings and 0 Errors 항목을 가지고 있다는 메시지가 나옵니다.

    Determining projects to restore...
    All projects are up-to-date for restore.
    Starter -> C:\Users\someuser\Desktop\GuidedProject\Starter\bin\Debug\net10.0\Starter.dll
    
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    

    참고

    이 모듈의 다음 연습에서 코드를 테스트해야 할 때마다 이전 dotnet build 단계와 dotnet run 단계를 사용합니다.

  5. 오류 또는 경고 메시지가 표시되면 계속하기 전에 수정해야 합니다.

    오류 및 경고 메시지에는 문제가 있는 코드 줄이 나열됩니다. 다음 메시지는 Build FAILED 오류 메시지의 예입니다.

    C:\Users\someuser\Desktop\GuidedProject\Starter\Program.cs(53,18): error CS1002: ; expected [C:\Users\someuser\Desktop\GuidedProject\Starter\Starter.csproj]

    이 메시지는 검색된 오류 유형과 찾을 위치를 알려줍니다. 이 경우 메시지는 Program.cs 파일에 오류(error CS1002: ; expected)가 포함되어 있음을 알려줍니다. ; expected는 문 끝에 ;을 포함하는 것을 잊었다는 것을 나타냅니다. 메시지의 Program.cs(53,18) 부분은 오류 위치가 코드 줄 53의 왼쪽에서 18자의 위치임을 알려줍니다.

    이와 같은 구문 오류가 있으면 빌드가 성공하지 못합니다(빌드 실패함). 일부 빌드 메시지는 "오류" 대신 "경고"를 제공합니다. 즉, 주의해야 할 사항이 있지만 어쨌든 프로그램을 실행해 볼 수 있습니다(빌드 성공).

    문제를 해결하고 업데이트를 저장한 후에는 명령을 다시 실행할 dotnet build 수 있습니다. 0 Warning(s) and 0 Error(s)을 가질 때까지 계속하세요.

    직접 문제를 해결하는 데 어려움이 있는 경우 설치 중에 완료된 다운로드에 포함된 최종 폴더의 Program.cs 코드를 검토합니다. Final 폴더의 Program.cs 코드는 이 모듈의 모든 연습에 대한 결론을 나타내므로 아직 만들지 않은 코드가 포함됩니다.

    솔루션 코드는 종종 안내 프로젝트에서 이 시점까지 개발한 Program.cs 코드와 다르게 보입니다. 그러나 Final에서 Program.cs 코드를 검사하여 코드의 문제를 격리하고 해결하는 데 도움이 될 수 있습니다.

    자체 솔루션을 개발하는 동안 솔루션 코드에 의존하지 마세요. 실수에서 배우고 모든 개발자는 오류를 찾고 수정하는 데 시간을 쓴다는 걸 기억하세요.

  6. 업데이트된 콘솔 앱을 테스트합니다. 터미널 명령 프롬프트 빌드 및 실행에서 dotnet run을 입력하여 하나의 명령으로 프로젝트 코드를 실행합니다. 코드가 실행되면 두 개의 메뉴 항목이 표시됩니다.

    • 1”을 입력하여 “모든 애완 동물 표시” 출력을 테스트합니다.
    • 2”를 입력하여 “작성 중” 메시지 자리 표시자 메시지를 테스트합니다.

    메뉴 항목 #1의 출력은 다음 샘플과 유사하게 일치해야 합니다.

    ID #: d1
    Species: dog
    Age: 2
    Nickname: lola
    Physical description: medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.
    Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.
    Suggested Donation: $85.00
    
    ID #: d2
    Species: dog
    Age: 9
    Nickname: gus
    Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken.
    Personality: 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.
    Suggested Donation: $49.99
    
    ID #: c3
    Species: cat
    Age: 1
    Nickname: snow
    Physical description: small white female weighing about 8 pounds. litter box trained.
    Personality: friendly
    Suggested Donation: $40.00
    
    ID #: c4
    Species: cat
    Age:
    Nickname: lion
    Physical description:
    Personality:
    Suggested Donation: $45.00
    

    모든 것이 예상대로 작동한다면, 축하합니다! 그렇지 않으면 관련된 코드 명령 단계를 확인하여 오류를 찾습니다. 필요한 경우 새 시작 Project.cs 파일로 다시 시작하고 이 연습의 솔루션 폴더 코드에 검사 문제가 있는 경우 다시 시작합니다.

  7. 앱 메뉴에서 exit를 입력하여 프로그램을 종료한 다음 터미널 패널을 닫습니다.