|
11 | 11 | </p>
|
12 | 12 | </p>
|
13 | 13 |
|
14 |
| -## 📝 요구사항 |
| 14 | +## ⚙️ Before Started |
15 | 15 |
|
16 |
| -### **공통** |
| 16 | +#### <img alt="Tip" src="https://img.shields.io/static/v1.svg?label=&message=Tip&style=flat-square&color=673ab8"> 로컬에서 서버 띄워서 손쉽게 static resources 변경 및 확인하는 방법 |
17 | 17 |
|
18 |
| -- 기존 [HTML Template](TEMPLATE.md)을 활용한다. |
19 |
| -- 필요하다면 [선택자](SELECTOR.md)를 참고한다. |
20 |
| -- 상단에 `탭`메뉴가 존재하며 각 탭에 따라 적절한 기능을 수행한다. |
21 |
| - - `상품 관리`탭은 자판기가 보유하고 있는 **물품을 추가**하는 기능을 수행한다. |
22 |
| - - `잔돈 충전`탭은 **자판기가 보유할 금액을 충전**하는 기능을 수행한다. |
23 |
| - - `상품 구매`탭은 사용자가 **금액을 충전**할 수 있으며, 금액에 맞춰 **상품을 구매**하고, 남은 금액에 대해서는 **잔돈을 반환**하는 기능을 수행한다. |
24 |
| -- 다른 탭으로 이동했다 돌아와도 기존 탭의 상태가 유지되어야 한다. |
25 |
| -- localStorage를 이용하여, 새로고침하더라도 가장 최근에 작업한 정보들을 불러올 수 있도록 한다. |
| 18 | +로컬에서 웹서버를 띄워 html, css, js 등을 실시간으로 손쉽게 테스트해 볼 수 있습니다. 이를 위해서는 우선 npm이 설치되어 있어야 합니다. 구글에 `npm install` 이란 키워드로 각자의 운영체제에 맞게끔 npm을 설치해주세요. 이후 아래의 명령어를 통해 실시간으로 웹페이지를 테스트해볼 수 있습니다. |
26 | 19 |
|
27 |
| -### **상품 관리** |
| 20 | +``` |
| 21 | +npm install -g live-server |
| 22 | +``` |
28 | 23 |
|
29 |
| -- `상품 관리`탭에서, 다음과 같은 규칙을 바탕으로 상품을 추가한다. |
30 |
| -- 최초 상품 목록은 비워진 상태이다. (이미지 첨부) |
31 |
| -- 상품명, 금액, 수량을 추가할 수 있다. |
32 |
| - - 상품 추가 입력 폼에 상품명, 금액, 수량을 차례로 입력한다. |
33 |
| - - 상품명, 금액, 수량은 공백이 불가능하다. |
34 |
| - - 상품의 최소 수량은 1개여야 한다. |
35 |
| - - 상품의 최소 가격은 100원이며, 10원으로 나누어 떨어져야 한다. |
36 |
| - - 예) 콜라 / 110원 / 5개 |
37 |
| - - 예) 사이다 / 100원 / 100개 |
38 |
| -- 같은 상품명의 데이터를 추가하면 기존의 상품에 해당하는 데이터는 새로운 상품으로 대체된다. |
39 |
| - - 콜라 / 1000원 / 12개(전) -> 콜라 / 1500원 / 10개(후) => 콜라 / 1500원 / 10개(결과) |
40 |
| -- 사용자는 추가한 상품을 확인할 수 있다. |
41 |
| - - 상품의 이름, 가격, 수량 순으로 상품 목록이 보여진다. (이미지 첨부) |
42 |
| -- 상품 목록은 탭을 이동하여도 기존의 상품 목록이 유지되어야 한다. |
| 24 | +실행은 아래의 커맨드로 할 수 있습니다. |
43 | 25 |
|
44 |
| - |
| 26 | +``` |
| 27 | +live-server 폴더명 |
| 28 | +``` |
45 | 29 |
|
46 |
| -### **잔돈 충전** (자판기 보유 동전) |
| 30 | +<br/> |
47 | 31 |
|
48 |
| -- `잔돈 충전` 탭에서, 다음과 같은 규칙으로 자판기 보유 금액을 충전한다. |
49 |
| -- `잔돈 충전` 페이지에서 최초 자판기가 보유한 금액은 0원이며, 각 동전의 개수는 0개이다. |
50 |
| -- 관리자는 잔돈 충전 입력 요소에 충전할 금액을 입력한 후, `자판기 동전 충전` 버튼을 눌러 자판기가 보유한 금액을 충전할 수 있다. |
51 |
| - - 최소 충전 금액은 100원이며, 10원으로 나누어 떨어지는 금액만 충전이 가능하다. |
52 |
| - - 자판기가 보유한 금액은 `{금액}원` 형식으로 나타낸다. (이미지) |
53 |
| - - 예) 1000원 (o) / 1000 원 (x) / 1000 (x) |
54 |
| -- 관리자는 잔돈을 누적하여 충전할 수 있다. |
55 |
| - - 1000원 충전 -> 500원 충전 => 총 1500원 분량의 동전이 생성됨. (추가) |
56 |
| -- 자판기가 보유한 금액 만큼의 동전이 무작위로 생성된다. |
57 |
| - - 동전은 500원, 100원, 50원, 10원의 동전만 생성된다. |
58 |
| -- 동전의 개수를 나타내는 정보는 `{개수}개` 형식으로 나타낸다. |
59 |
| - - 예) 1개 (o) / 1 개 (x) / 1 (x) |
60 |
| -- 다른 탭을 클릭하여도 자판기가 보유한 금액은 유지되어야 한다. |
| 32 | +## 👏 Contributing |
61 | 33 |
|
62 |
| - |
| 34 | +만약 미션 수행 중에 개선사항이 보인다면, 언제든 자유롭게 PR을 보내주세요. |
63 | 35 |
|
64 |
| -### **상품 구매** |
| 36 | +<br/> |
65 | 37 |
|
66 |
| -- `상품 구매`탭에서, 다음과 같은 규칙을 바탕으로 금액을 충전하고, 상품을 구매하며, 잔돈을 반환한다. |
67 |
| -- `상품 구매` 페이지 에서 최초 충전 금액은 0원이며, 반환된 각 동전의 개수는 0개이다. |
68 |
| -- 사용자는 금액 충전 입력 요소에 충전할 금액을 입력한 후, `구매 금액 충전`버튼을 이용하여 금액을 충전한다. |
69 |
| - - 최소 충전 금액은 10원이다. |
70 |
| - - 금액은 10원으로 나누어 떨어지는 금액만 충전이 가능하다. |
71 |
| - - 자판기가 보유한 금액은 `{금액}원` 형식으로 나타낸다. (이미지) |
72 |
| - - 예) 1000원 (o) / 1000 원 (x) / 1000 (x) |
73 |
| -- 금액은 누적으로 충전이 가능하다. |
74 |
| - - 1000원 충전 -> 500원 충전 => 1500원 |
75 |
| -- 사용자는 충전한 금액을 바탕으로 상품을 구매할 수 있다. |
76 |
| - - 상품 구매에 성공하면, 충전한 금액이 상품 금액만큼 차감 된다. 또한 상품의 수량도 차감된다. |
77 |
| - - 수량이 0인 상품은 구매할 수 없다. |
78 |
| - - 구매하려는 상품 가격이 보유하고 있는 금액보다 높은 경우 상품을 구매할 수 없다. |
79 |
| -- 사용자는 `반환하기` 버튼을 통해 잔돈을 반환 받을 수 있다. |
80 |
| - - 잔돈 반환 규칙은 `잔돈 계산 모듈` 요구사항의 규칙을 따른다. |
| 38 | +## 🐞 Bug Report |
81 | 39 |
|
82 |
| - |
| 40 | +버그를 발견한다면, [Issues](https://github.com/next-step/js-vending-machine/issues)에 등록해주세요. |
83 | 41 |
|
84 |
| -### **상품 구매 / 잔돈 계산 모듈** |
85 |
| - |
86 |
| -- `상품 구매` 탭에서, 잔돈 반환 시 다음과 같은 규칙을 통해 잔돈을 반환한다. |
87 |
| -- 최소 개수의 동전으로 잔돈을 돌려준다. |
88 |
| - - 예) 자판기가 보유한 동전 100원 5개, 500원 1개인 상태이고, 500원을 거슬러줘야 한다면 500원 1개를 반환한다. |
89 |
| - - 예) 자판기가 보유한 동전 100원 5개, 500원 2개인 상태이고, 1000원을 거슬러줘야 한다면 500원 2개를 반환한다. |
90 |
| - - 예) 자판기가 보유한 동전 100원 6개, 500원 1개인 상태이고, 1000원을 거슬러줘야 한다면 100원 5개 500원 1개를 반환한다. |
91 |
| -- 지폐를 잔돈으로 반환하는 경우는 없다고 가정한다. |
92 |
| -- 모든 금액에 대해 잔돈을 반환할 수 없는 경우 잔돈으로 반환할 수 있는 금액만 반환한다. |
93 |
| - - 예) 자판기가 보유한 동전 500원 2개인 상태이고, 800원을 거슬러줘야 한다면 500원 1개만 반환한다. 나머지 300원에 해당하는 금액은 반환하지 않는다. (이미지 첨부) |
94 |
| -- 동전의 개수를 나타내는 정보는 `{개수}개` 형식으로 나타낸다. |
95 |
| - - 예) 1개 (o) / 1 개 (x) / 1 (x) |
96 |
| -- 반환한 동전만큼 사용자가 충전한 금액이 차감된다. |
97 |
| -- 반환한 동전만큼 자판기가 보유하고 있는 동전도 차감된다. |
98 |
| -- 반환한 동전의 결과는 누적되지 않는다. |
| 42 | +<br/> |
0 commit comments