Skip to content

JunBe/java-convenience-store-7-JunBe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

프리코스 4주차 미션 '편의점'

미션 개요

이번 미션은 구매자의 할인 혜택과 재고 상황을 고려하여 최종 결제 금액을 계산하고 안내하는 결제 시스템을 구현한다.

기능 목록

  • 최종 결제 금액 계산

    • 총구매액 = 상품별 가격 * 수량
    • 프로모션 및 멤버십 할인 정책을 총 구매액에 반영
  • 재고 관리

    • 재고 수량을 고려해 결제 가능 여부 확인
    • 고객이 상품을 구매 시, 결제 수량 만큼 재고에서 차감
    • 최신 재고 상태를 유지하고, 다음 고객에게 정확한 재고 정보를 제공
    • ? : 재고가 2개 남아있고 고객이 3개를 주문하면 2개만 사는가? 아예 안 사는가
  • 프로모션 할인

    • 프로모션 종류
      • 탄산2+1 → 2개 구입 시 1개 무료 / 2024-01-01 ~ 2024-12-31
      • MD추천상품→ 1개 구입 시 1개 무료 / 2024-01-01 ~ 2024-12-31
      • 반짝할인 → 1개 구입 시 1개 무료 / 2024-11-01 ~ 2024-11-30
    • 오늘 날짜가 프로모션 기간 내에 포함되어 있다면 할인 적용
    • N+1 으로 각각 지정된 상품에 적용되고, 동일 상품에 여러 프로모션은 적용되지 않는다.
    • 프로모션 재고 내에서만 적용 가능
    • 프로모션 재고를 우선으로 차감하고, 프로모션 재고가 부족하면 일반 재고를 사용
  • 멤버십 할인

    • 멤버십 회원은 프로모션 미적용 상품 금액의 30% 할인
    • 할인 최대 한도는 8000원

입력 요구사항

  • 상품 목록, 행사 목록

    • 파일 입출력을 이용해 불러올 것
  • 구매할 상품, 수량

    • 수량은 하이픈(-), 개별 상품은 대괄호([])로 묶어 쉼표(,)로 구분
    • [콜라-10],[사이다-3]
  • 프로모션 적용 상품에 대해 해당 수량보다 적게 가져온 경우, 수량만큼 추가 여부 입력

    • Y: 추가 , N: 추가하지 않음
  • 프로모션 재고가 부족해 일부 수량을 프로모션 혜택 없이 정가로 결제할지 여부 입력

    • Y: 일부 수량 정가 결제
    • N: 정가로 결제해야하는 수량 제외 후 결제
  • 멤버십 할인 적용 여부

    • Y: 추가 , N: 추가하지 않음
  • 추가 구매 여부

    • 영수증 출력 후 확인
    • Y: 추가 , N: 추가하지 않음

출력 요구사항

  • 환영 인사

  • 상품명, 가격, 재고, 프로모션 이름

    • 재고가 0개라면 재고 없음 출력
    • 프로모션 예) 탄산2+1 , MD추천상품 , 반짝할인
  • 프로모션 적용 상품에 대해 해당 수량보다 적게 가져온 경우 메시지

    현재 {상품명}() 1개를 무료로  받을  있습니다. 추가하시겠습니까? (Y/N)
  • 프로모션 재고가 부족해 일부 수량을 프로모션 혜택 없이 정가로 결제하는 경우 메시지

    현재 {상품명} {수량}개는 프로모션 할인이 적용되지 않습니다. 그래도 구매하시겠습니까? (Y/N)
  • 멤버십 할인 적용 여부 확인 메시지

    멤버십 할인을 받으시겠습니까? (Y/N)
  • 영수증 : 구매 내역, 할인 요약하여 출력

    • 구매 상품 내역

      • 구매한 상품명, 수량, 가격
    • 증정 상품 내역

      • 프로모션으로 무료 제공된 상품 목록
    • 금액 정보

      • 총구매액: 구매한 상품 총 수량, 총 금액
      • 행사할인: 프로모션으로 할인된 금액
      • 멤버십할인: 멤버십으로 할인된 금액
      • 내실돈: 최종 결제 금액
        • 총구매액 - 행사할인 - 멤버십할인
    • 구성 요소 보기 좋게 정렬하여 상품 내역, 금액, 수량, 증정 상품 내역 등 확인할 수 있도록 출력

      ===========W 편의점=============
      상품명		수량	금액
      콜라		    3 	 3,000
      에너지바 	5 	10,000
      ===========	=============
      콜라		    1
      ==============================
      총구매액		8	  13,000
      행사할인			  -1,000
      멤버십할인		  -3,000
      내실돈			   9,000
  • 추가 구매 진행 여부 메시지

    감사합니다. 구매하고 싶은 다른 상품이 있나요? (Y/N)

예외 처리

  • 사용자가 잘못된 값을 입력한 경우 IllegalArgumentException 을 발생시키고, “[ERROR]”로 시작하는 에러 메시지 출력 후 그 부분부터 입력을 다시 받는다.
  • 구매할 상품과 수량 형식이 올바르지 않은 경우
    • [ERROR] 올바르지 않은 형식으로 입력했습니다. 다시 입력해 주세요.
    • 수량은 양수만 입력 가능하다.
    • [콜라-셋], [콜라-21-콜] 와 같은 잘못된 형식 모두 예외 처리
  • 존재하지 않는 상품을 입력한 경우
    • [ERROR] 존재하지 않는 상품입니다. 다시 입력해 주세요.
  • 구매 수량이 재고 수량을 초과한 경우
    • [ERROR] 재고 수량을 초과하여 구매할 수 없습니다. 다시 입력해 주세요.
  • 기타 잘못된 입력의 경우
    • [ERROR] 잘못된 입력입니다. 다시 입력해 주세요.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages