Skip to content

Commit 3328ca8

Browse files
authored
Merge pull request #769 from kylekim2123/kylekim2123-w2_1
2 parents 2e4d7dd + 9bf6ed8 commit 3328ca8

24 files changed

+546
-327
lines changed

README.md

Lines changed: 56 additions & 206 deletions
Original file line numberDiff line numberDiff line change
@@ -1,163 +1,10 @@
1-
# SpringBoot Basic Weekly Mission 1
2-
> 바우처 관리 애플리케이션 만들기 1 - 김영주
3-
4-
5-
6-
# 1. 요구사항
7-
8-
## 프로젝트 요구사항
9-
10-
1. Gradle로 프로젝트를 빌드하고, SpringBoot 프로젝트 환경을 설정한다.
11-
2. Web 기능 없이 Command-line Application으로 만든다.
12-
3. logback을 통해 로그를 띄우고, 특히 에러는 별도의 파일로 기록한다.
13-
4. 실행 가능한 jar 파일을 생성한다.
14-
15-
16-
17-
## 기능 요구사항
18-
19-
### 1. 프로그램 시작(랜딩 화면)
20-
21-
```
22-
[할인권 프로그램 v1.0]
23-
1. 새 할인권 생성
24-
2. 할인권 조회
25-
3. 프로그램 종료
26-
27-
입력 : 1
28-
```
29-
30-
사용자는 숫자를 입력해서 원하는 메뉴를 선택할 수 있다.
31-
- `1` → 새 할인권 생성 메뉴 실행
32-
- `2` → 저장된 할인권 조회 메뉴 실행
33-
- `3` → 프로그램 종료
34-
35-
36-
37-
### 2. 새 할인권 생성
38-
39-
사용자는 숫자를 입력해서 원하는 할인 방식을 선택할 수 있다.
40-
41-
- `1` → 고정 할인 방식
42-
- `2` → 비율 할인 방식
43-
44-
45-
46-
할인권 생성이 완료되면 생성된 할인권의 `UUID, 할인 방식, 금액/비율` 내용을 보여준다.
47-
48-
- `고정 할인 방식`
49-
50-
```
51-
할인 방식을 선택하세요.
52-
1. 고정 할인
53-
2. 비율 할인
54-
입력 : 1
55-
56-
고정 할인 금액을 입력하세요.
57-
1이상의 자연수만 입력하세요. 단위는 원입니다.
58-
입력 : 1000
59-
60-
할인권 생성이 완료되었습니다.
61-
sf5e8400-53m2-nn53-me09-456292156231 | 고정 할인 | 1,000원
62-
```
63-
64-
- 사용자는 1 이상의 자연수를 입력하여, 고정 할인 금액을 설정할 수 있다.
65-
66-
- `비율 할인 방식`
67-
68-
```
69-
할인 방식을 선택하세요.
70-
1. 고정 할인
71-
2. 비율 할인
72-
입력 : 2
73-
74-
비율 할인 퍼센트를 입력하세요.
75-
1이상 100이하의 자연수만 입력하세요. 단위는 %입니다.
76-
입력 : 40
77-
78-
할인권 생성이 완료되었습니다.
79-
550e8400-e29b-41d4-a716-446655440000 | 비율 할인 | 40%
80-
```
81-
82-
- 사용자는 1 이상 100 이하의 자연수를 입력하여, 비율 할인 퍼센트를 설정할 수 있다.
83-
84-
85-
86-
### 3. 할인권 조회
87-
88-
```
89-
현재까지 생성된 할인권 목록입니다.
90-
550e8400-e29b-41d4-a716-446655440000 | 비율 할인 | 40%
91-
sf5e8400-53m2-nn53-me09-456292156231 | 고정 할인 | 1,000원
92-
```
93-
94-
저장된 할인권들의 `UUID, 할인 방식, 금액/비율` 목록을 조회한다.
95-
96-
97-
98-
### 4. 프로그램 종료
99-
100-
```
101-
[할인권 프로그램 v1.0]
102-
1. 새 할인권 생성
103-
2. 할인권 조회
104-
3. 프로그램 종료
105-
106-
입력 : 3
107-
108-
프로그램을 종료합니다.
109-
```
110-
111-
실행 중인 프로그램을 종료한다.
112-
113-
114-
115-
------
116-
117-
# 2. 설계
118-
119-
## 주요 객체 목록
120-
121-
1. **클라이언트**
122-
- 입력(InputView.java) : 각종 메뉴, 할인 금액/비율에 대해 사용자 입력을 받는다.
123-
- 출력(OutputView.java) : 각종 결과 및 예외메시지를 출력한다.
124-
2. **컨트롤러(VoucherController.java)**
125-
- 사용자의 메뉴 입력에 따라 각 메뉴를 실행한다.
126-
3. **서비스(VoucherService.java)**
127-
- 할인권과 관련된 기능을 수행한다.
128-
- 새로운 할인권(고정, 비율)을 생성한다.
129-
- 저장된 모든 할인권 목록을 조회한다.
130-
4. **할인권(Voucher.java)**
131-
- 실제 발행되는 할인권 객체
132-
- 할인권의 UUID, 할인 금액/비율 수치 정보를 갖는다.
133-
- 고정 할인 방식(FixDiscountVoucher)과 비율 할인 방식(PercentDiscountVoucher)이 존재한다.
134-
5. **저장소(VoucherRepository.java)**
135-
- 할인권 정보를 저장한다.
136-
- 저장된 할인권 목록을 조회하여 전달한다.
137-
6. **메뉴(Menu.java)**
138-
- 사용자가 실행할 수 있는 메뉴 정보를 가진다.
139-
7. **할인권 종류(VoucherType.java)**
140-
- 발행할 수 있는 할인권의 종류 정보를 가진다.
141-
- 각 종류에 맞는 실제 할인권을 발행한다.
142-
143-
144-
145-
## 예외처리
146-
147-
1. 메뉴 입력 예외
148-
- 없는 메뉴 번호인 경우
149-
2. 할인권 생성 예외
150-
- 할인 방식을 선택할 때, 없는 방식 번호를 선택한 경우
151-
- 고정 할인권 생성할 때, 금액의 범위를 벗어난 경우
152-
- 고정 할인권 생성할 때, 자연수 이외의 숫자나 문자를 입력한 경우
153-
- 비율 할인권 생성할 때, 퍼센트 범위를 벗어난 경우
154-
- 비율 할인권 생성할 때, 자연수 이외의 숫자나 문자를 입력한 경우
155-
156-
1+
# SpringBoot Basic Weekly Mission 2
2+
> 바우처 관리 애플리케이션 만들기 2 - 김영주
1573
4+
# 1. 설계
1585
## 프로그램 구조도
1596

160-
![](https://github.com/prgrms-be-devcourse/java-calculator/assets/49775540/6d4e6aba-824e-4e8e-b5fe-9c05589cdce7)
7+
![image](https://github.com/prgrms-be-devcourse/springboot-basic/assets/49775540/1b4f4d03-b56b-4c2a-9cf6-410db2bdffb7)
1618

1629

16310

@@ -170,20 +17,29 @@ src/main/java/com.devcourse.voucherapp/
17017
- VoucherController.java
17118

17219
- entity/
20+
- dto/
21+
- VoucherCreateRequestDto.java
22+
- VoucherUpdateRequestDto.java
23+
- VoucherResponseDto.java
24+
- VouchersResponseDto.java
17325
- voucher/
17426
- Voucher.java
17527
- FixDiscountVoucher.java
17628
- PercentDiscountVoucher.java
17729
- Menu.java
17830
- VoucherType.java
31+
- TriFunction.java
17932

18033
- exception/
18134
- MenuInputException.java
182-
- VoucherInputException.java
35+
- NotFoundVoucherException.java
36+
- DiscountAmountException.java
37+
- VoucherTypeInputException.java
18338

18439
- repository/
18540
- VoucherRepository.java
18641
- MemoryVoucherRepository.java
42+
- JdbcVoucherRepository.java
18743

18844
- service/
18945
- VoucherService.java
@@ -193,17 +49,19 @@ src/main/java/com.devcourse.voucherapp/
19349
- OutputView.java
19450
- ConsoleInputView.java
19551
- ConsoleOutputView.java
52+
- ViewManager.java
19653

54+
- CommandLineApplication.java
19755
- VoucherappApplication.java
19856
```
19957

20058

20159

20260
------
20361

204-
## 3. 컨벤션
62+
# 2. 컨벤션
20563

206-
### Git commit convention
64+
## Git commit convention
20765

20866
> [Angular JS commit convention](https://velog.io/@outstandingboy/Git-커밋-메시지-규약-정리-the-AngularJS-commit-conventions)를 참고
20967
@@ -234,79 +92,71 @@ src/main/java/com.devcourse.voucherapp/
23492

23593
------
23694

237-
# 4. 기능 구현 및 실행 화면
95+
# 3. 기능 구현 및 실행 화면
23896

239-
## 기능 구현
97+
## 구현 사항
24098

241-
- [x] 메뉴 선택 화면
242-
- [x] 메뉴 입력 및 예외처리
243-
- [x] 프로그램 종료
244-
- [x] 고정 할인권 생성
245-
- [x] 비율 할인권 생성
246-
- [x] 할인권 조회
247-
- [x] logback 이용한 로그 파일 생성
248-
- [x] 실행 가능한 jar 파일 생성
99+
- [x] H2 데이터베이스를 적용한다.
100+
- [x] 프로필을 이용해 개발과 로컬 환경을 구분한다.
101+
- [x] 할인권 수정 기능을 추가한다.
102+
- [x] 할인권 삭제 기능을 추가한다.
249103

250104

251105

252106
## 실행 화면
253107

108+
> 할인권 수정, 삭제 기능 추가
109+
254110
```
255111
[할인권 프로그램 v1.0]
256112
1. 새 할인권 생성
257113
2. 할인권 조회
258-
3. 프로그램 종료
114+
3. 할인권 수정
115+
4. 할인권 삭제
116+
5. 프로그램 종료
117+
입력 : 3
118+
119+
현재까지 생성된 할인권 목록입니다.
120+
62f590c0-61c0-461d-90ce-ebafd031a4d8 | 고정 할인 | 1,000원
121+
38de7fec-e170-49ee-b5bd-30d768a11fd5 | 비율 할인 | 20%
259122
260-
입력 : 1
123+
수정할 할인권의 ID를 입력하세요.
124+
입력 : 62f590c0-61c0-461d-90ce-ebafd031a4d8
261125
262-
할인 방식을 선택하세요.
263-
1. 고정 할인
264-
2. 비율 할인
265-
입력 : 1
126+
선택하신 할인권의 정보를 수정합니다.
127+
62f590c0-61c0-461d-90ce-ebafd031a4d8 | 고정 할인 | 1,000원
266128
267-
고정 할인 금액을 입력하세요.
268-
1이상의 자연수만 입력하세요. 단위는 원입니다.
269-
입력 : 1000
129+
고정 할인 금액을 입력하세요. (1이상의 자연수, 단위: 원)
130+
입력 : 3000
270131
271-
할인권 생성이 완료되었습니다.
272-
0437e68e-7fc1-4136-9090-e8a4c3f50ed1 | 고정 할인 | 1,000원
132+
할인권 수정이 완료되었습니다.
133+
62f590c0-61c0-461d-90ce-ebafd031a4d8 | 고정 할인 | 3,000원
273134
274135
[할인권 프로그램 v1.0]
275136
1. 새 할인권 생성
276137
2. 할인권 조회
277-
3. 프로그램 종료
138+
3. 할인권 수정
139+
4. 할인권 삭제
140+
5. 프로그램 종료
141+
입력 : 4
278142
279-
입력 : 1
280-
281-
할인 방식을 선택하세요.
282-
1. 고정 할인
283-
2. 비율 할인
284-
입력 : 2
143+
현재까지 생성된 할인권 목록입니다.
144+
62f590c0-61c0-461d-90ce-ebafd031a4d8 | 고정 할인 | 3,000원
145+
38de7fec-e170-49ee-b5bd-30d768a11fd5 | 비율 할인 | 20%
285146
286-
비율 할인 퍼센트를 입력하세요.
287-
1이상 100이하의 자연수만 입력하세요. 단위는 %입니다.
288-
입력 : 40
147+
삭제할 할인권의 ID를 입력하세요.
148+
입력 : 62f590c0-61c0-461d-90ce-ebafd031a4d8
289149
290-
할인권 생성이 완료되었습니다.
291-
71a70469-3e03-49a6-ad53-e8ec37531dce | 비율 할인 | 40%
150+
할인권이 정상적으로 삭제되었습니다.
292151
293152
[할인권 프로그램 v1.0]
294153
1. 새 할인권 생성
295154
2. 할인권 조회
296-
3. 프로그램 종료
297-
155+
3. 할인권 수정
156+
4. 할인권 삭제
157+
5. 프로그램 종료
298158
입력 : 2
299159
300160
현재까지 생성된 할인권 목록입니다.
301-
71a70469-3e03-49a6-ad53-e8ec37531dce | 비율 할인 | 40%
302-
0437e68e-7fc1-4136-9090-e8a4c3f50ed1 | 고정 할인 | 1,000원
303-
304-
[할인권 프로그램 v1.0]
305-
1. 새 할인권 생성
306-
2. 할인권 조회
307-
3. 프로그램 종료
308-
309-
입력 : 3
310-
311-
프로그램을 종료합니다.
161+
38de7fec-e170-49ee-b5bd-30d768a11fd5 | 비율 할인 | 20%
312162
```

build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@ repositories {
1616
}
1717

1818
dependencies {
19-
implementation 'org.springframework.boot:spring-boot-starter'
19+
implementation 'org.springframework.boot:spring-boot-starter-web'
20+
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
21+
implementation 'org.apache.commons:commons-lang3:3.12.0'
2022
testImplementation 'org.springframework.boot:spring-boot-starter-test'
2123

24+
runtimeOnly 'com.h2database:h2'
25+
2226
compileOnly 'org.projectlombok:lombok:1.18.28'
2327
annotationProcessor 'org.projectlombok:lombok:1.18.28'
2428

0 commit comments

Comments
 (0)