Skip to content

geunhwa37/javascript-lotto-7

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

javascript-lotto-precourse

✏️ 기능 목록

  1. 상품 및 프로모션 정보 로드
  • products.md와 promotions.md 파일에서 상품 및 프로모션 정보를 불러온다.
  • 상품 정보에는 상품명, 가격, 일반 재고, 프로모션 여부 등을 포함한다.
  • 프로모션 정보에는 프로모션 기간, 적용 상품, 할인 정책(N+1) 등을 포함한다.
  1. 상품 및 프로모션 목록 출력
  • 상품 및 프로모션 정보를 사용자가 쉽게 확인할 수 있도록 정렬하여 출력한다.
  • 프로모션이 적용되지 않는 상품은 "재고 없음" 또는 일반 재고 정보만 출력한다.
  • 프로모션 적용 가능 상품은 프로모션 조건과 함께 출력한다.
  1. 상품 선택 및 수량 입력 처리
  • 사용자가 구매하려는 상품명과 수량을 입력받아 파싱한다.
  • 입력 형식 검증 후, 잘못된 입력 형식이면 오류 메시지를 출력하고 다시 입력을 받는다.
  1. 구매 가능 여부 확인
  • 각 상품의 재고가 충분한지 확인하고, 재고가 부족할 경우 오류 메시지를 출력한다.
  • 프로모션 상품의 경우, 프로모션 재고가 부족하면 사용자에게 안내하고 선택을 받는다.
  • 프로모션 혜택을 받기 위해 추가 수량이 필요한 경우 안내 메시지를 출력한다.
  1. 결제 금액 계산
  • 각 상품의 가격과 수량을 바탕으로 총 구매액을 계산한다.
  • 프로모션이 적용되는 상품에 대해 N+1 할인 혜택을 반영하여 금액을 계산한다.
  • 멤버십 사용자를 위해 프로모션 미적용 금액의 30% 할인을 적용하되, 최대 8,000원까지 제한한다.
  1. 영수증 생성 및 출력
  • 구매 상품의 목록, 각 상품의 수량과 가격을 영수증 형태로 출력한다.
  • 증정된 상품 목록을 영수증에 추가한다.
  • 총 구매액, 프로모션 할인, 멤버십 할인, 최종 결제 금액을 영수증에 요약한다.
  • 영수증의 각 항목을 보기 좋게 정렬하여 출력한다.
  1. 추가 구매 처리
  • 사용자가 추가 구매를 원하는지 여부를 입력받는다.
  • 추가 구매 시 최신 재고 상태를 반영하여 상품 목록을 다시 출력한다.
  • 종료 선택 시 프로그램을 종료한다.
  1. 에러 처리
  • 상품 목록에 없는 상품을 입력한 경우, 오류 메시지를 출력하고 다시 입력을 받는다.
  • 재고 수량을 초과하여 구매하려는 경우 오류 메시지를 출력하고 다시 입력을 받는다.
  • 기타 잘못된 입력이 발생할 경우 오류 메시지를 출력하고 재입력을 받는다.
  1. 단위 테스트 작성
  • 각 기능 단위별로 Jest 테스트 코드를 작성하여 올바르게 동작하는지 확인한다.
  • 특히 금액 계산, 프로모션 및 멤버십 할인 적용 로직에 대한 테스트를 중점적으로 작성한다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%