Giter Club home page Giter Club logo

burgerking-kiosk's Introduction

백엔드 트랙 중간과제 - 버거킹 키오스크

시나리오

“그날은 여느날과 같이 평범한 하루였다. 내가 키오스크가 되어버렸다는 사실만을 제외한다면”

잠에서 깬 당신은 버거킹 키오스크가 되어버린 스스로를 발견하였다.

지금은 오전 10시 30분, 오픈 시간까지 1시간 밖에 남지 않았다.

만약 제 시간에 키오스크 기능을 구현하지 못한다면, 평소 키오스크를 못마땅해 하던 사장은 당신을 고물상에 팔아 버릴 것이다.

지금 당장, 아직까지는 당신이 쓸모있는 키오스크라는 사실을 증명하라!

기능 요구사항

사용자가 장바구니에 담은 메뉴에 따라 가격을 산출하는 CLI 키오스크를 구현하라

  • 프로그램의 실행되면 홈 화면이 출력되며 홈 화면에는 아래와 같은 메뉴항목이 존재해야한다

    • 햄버거
    • 사이드
    • 음료
    • 장바구니
    • 종료
  • 햄버거 또는 사이드 또는 음료를 선택했을 경우

    • 햄버거 또는 사이드 또는 음료 리스트를 가격과 함께 출력해야 한다 (각 메뉴는 아래의 항목으로 고정한다) image

    • 사용자는 출력된 메뉴 중 하나를 선택할 수 있어야 한다

    • 선택한 메뉴는 장바구니에 담겨야 한다

    • 메뉴를 선택한 뒤에는 완료 메세지 출력 후 홈으로 이동해야 한다

  • 장바구니 메뉴를 선택했을 경우

    • 사용자는 아래와 같은 메뉴 중 하나를 선택할 수 있어야 한다
      • 주문하기
      • 수량 조절하기
      • 삭제하기
    • 현재 장바구니에 담겨있는 항목과 수량을 출력해야 한다
  • 장바구니 → 주문하기를 선택했을 경우

    • 주문완료 메세지를 출력 후 애플리케이션을 종료한다
  • 장바구니 → 수량 조절하기를 선택했을 경우

    • 현재 장바구니에 담겨있는 항목과 수량을 출력해야 한다
    • 사용자는 수정할 항목을 선택할 수 있어야 한다
    • 사용자는 수정할 수량을 선택할 수 있어야 한다
    • 수정할 수 있는 수량의 도메인은 다음과 같다
      • 1 ≤ n ≤ 50
    • 수정을 완료하면 메세지 출력 후 장바구니 화면으로 돌아와야 한다
  • 장바구니 → 삭제하기를 선택했을 경우

    • 현재 장바구니에 담겨있는 항목과 수량을 출력해야 한다
    • 사용자는 삭제할 항목을 선택할 수 있어야 한다
    • 삭제하기 전에 사용자의 확인을 받아야 한다
    • 삭제를 완료하면 완료 메세지 출력 후 장바구니 화면으로 돌아와야 한다
  • 종료 메뉴를 선택했을 경우

    • 종료 메세지를 출력후 애플리케이션을 종료한다
  • 그 외 요구사항

    • 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생시키고 애플리케이션을 종료한다
    • 장바구니에 담을 수 있는 단일품목의 최대 수량은 50개이다
    • 홈을 제외한 모든 화면에는 홈으로 돌아갈 수 있는 방법이 존재해야 한다

실행화면 예시

  • 홈 화면 예시
=====홈=====

1. 햄버거
2. 사이드
3. 음료
4. 장바구니
5. 종료

메뉴선택:
  • 햄버거 메뉴 화면 예시
=====햄버거 메뉴=====

1. 와퍼 (6900원)
2. 큐브 스테이크 와퍼 (8900원)
3. 콰트로 치즈 와퍼 (7900원)
4. 몬스터 와퍼 (9300원)
5. 통새우 와퍼 (7900원)
6. 블랙바베큐 와퍼 (9300원)

메뉴선택 (0을 선택 시 홈으로): 
  • 사이드 메뉴 화면 예시
=====사이드 메뉴=====

1. 너겟킹 (2500원)
2. 해쉬 브라운 (1800원)
3. 치즈스틱 (1200원)
4. 어니언링 (2400원)
5. 바삭킹 (3000원)
6. 감자튀김 (2000원)

메뉴선택 (0을 선택 시 홈으로):
  • 음료 메뉴 화면 예시
=====음료 메뉴=====

1. 코카콜라 (2000원)
2. 코카콜라 제로 (2000원)
3. 펩시 (2000원)
4. 펩시 제로 (2000원)
5. 스프라이트 (2000원)
6. 스프라이트 제로 (2000원)

메뉴선택 (0을 선택 시 홈으로):
  • 장바구니 화면 예시
===== 장바구니 =====

- 통새우 와퍼 1개
- 큐브 스테이크 와퍼 2개
- 감자튀김 1개
- 코카콜라 1개

====================
1. 주문하기 
2. 수량 조절하기
3. 삭제하기 

총 가격: 29700원

메뉴선택 (0을 선택 시 홈으로):
  • 수량 조절하기 화면 예시
===== 수량 조절하기 =====

현재 장바구니

1. 통새우 와퍼 1개
2. 큐브 스테이크 와퍼 2개
3. 감자튀김 1개
4. 코카콜라 1개

수량을 조절할 메뉴 번호를 선택하세요 (0을 선택 시 홈으로): 
//번호 선택 후
변경할 수량을 입력하세요:
  • 삭제하기 화면 예시
===== 삭제하기 =====

현재 장바구니

1. 통새우 와퍼 1개
2. 큐브 스테이크 와퍼 2개
3. 감자튀김 1개
4. 코카콜라 1개

삭제할 메뉴 번호를 선택하세요 (0을 선택 시 홈으로): 
//번호 선택 후
정말 삭제 하시겠습니까? (0: 취소 및 홈으로 1: 삭제):

프로그래밍 요구사항

  • JDK 17 버전에서 실행 가능해야 한다
  • 프로그램 실행의 시작점은 Application의 main()이다
  • build.gradle 파일을 변경할 수 없고, 외부 라이브러리를 사용하지 않는다
  • Java 코드 컨벤션 가이드를 준수하며 프로그래밍한다
  • 프로그래밍 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 이름을 수정하거나 이동하지 않는다

클린코드

아래의 사항을 고려하여 프로그래밍 해야한다

  • 이름을 통해 의도를 드러내는가?
  • 정말 필요한 주석인가?
  • 함수가 한 가지 역할만 하는가?
  • 발생할 수 있는 예외에 대해서 충분히 고려하고 있는가?

테스트 작성

  • 최소 하나 이상의 단위 테스트를 작성한다

테스트 실행 가이드

  • 터미널에서 java -version을 실행하여 Java 버전이 17인지 확인한다. Eclipse 또는 IntelliJ IDEA와 같은 IDE에서 Java 17로 실행되는지 확인한다
  • 터미널에서 Mac 또는 Linux 사용자의 경우 ./gradlew clean test 명령을 실행하고, Windows 사용자의 경우 gradlew.bat clean test 또는 ./gradlew.bat clean test 명령을 실행할 때 모든 테스트가 아래와 같이 통과하는지 확인한다
BUILD SUCCESSFUL in 0s

과제 진행방식

  • 과제는 이 저장소를 Fork & Clone 해 시작한다
  • 기능을 구현하기 전에 구현할 기능 목록을 docs/README.md를 생성하여 정리한다
    • 작성 양식은 자유이나, 필요한 경우 마크다운 문법을 참고한다
  • 멋사 컨벤션을 준수하여 버전관리를 한다
  • 구현이 완료되면 이 저장소에 Pull Request 를 보내 과제를 제출한다
    • PR 제목은 [12기] $이름 중간과제 제출합니다 형식으로 작성한다
    • PR 본문에는 자유 형식으로 과제에 대한 소감(회고)을 작성한다
  • 과제 진행중에 궁금한 점은 멋사 디스코드 채널을 통해 질문한다

burgerking-kiosk's People

Contributors

dobbinci avatar k-minhyeok avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.