diff --git a/firstSeminarAdvancedAssignment/docs/readme.md b/firstSeminarAdvancedAssignment/docs/readme.md index 69f7be0..bcc3e92 100644 --- a/firstSeminarAdvancedAssignment/docs/readme.md +++ b/firstSeminarAdvancedAssignment/docs/readme.md @@ -5,7 +5,7 @@ - [X] 고객 등록 기능 + [X] 계좌번호 등록 * 기본 금액은 0원으로 설정 - * [ ] ⚠️ 이미 존재하는 계좌번호 등록 시, 예외발생 + * [X] ⚠️ 이미 존재하는 계좌번호 등록 시, 예외발생 + [X] 개인정보 등록(이름,생년월일,전화번호,주소) + [X] 비밀번호 등록 - [ ] 잔액 조회 기능 diff --git a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/FirstSeminarAdvancedAssignmentApplication.java b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/FirstSeminarAdvancedAssignmentApplication.java index dc89c91..e16c665 100644 --- a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/FirstSeminarAdvancedAssignmentApplication.java +++ b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/FirstSeminarAdvancedAssignmentApplication.java @@ -6,8 +6,9 @@ @SpringBootApplication public class FirstSeminarAdvancedAssignmentApplication { - public static void main(String[] args) { - SpringApplication.run(FirstSeminarAdvancedAssignmentApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(FirstSeminarAdvancedAssignmentApplication.class, args); + + } } diff --git a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/controller/ClientController.java b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/controller/ClientController.java new file mode 100644 index 0000000..0c6decf --- /dev/null +++ b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/controller/ClientController.java @@ -0,0 +1,18 @@ +package sopt.org.firstSeminarAdvancedAssignment.controller; + +import sopt.org.firstSeminarAdvancedAssignment.service.ClientService; +import sopt.org.firstSeminarAdvancedAssignment.view.InputView; +import sopt.org.firstSeminarAdvancedAssignment.view.OutputView; + +public class ClientController { + private final ClientService clientService = new ClientService(); + private final InputView inputView = new InputView(); + private final OutputView outputView = new OutputView(); + + + public void registerClient() { + outputView.inputClientInfoMessage(); + clientService.registerClient(inputView.inputAccountNumber(), inputView.inputClientName(), inputView.inputBirth(), inputView.inputTel(), inputView.inputAddress(), inputView.inputPassword()); + } + +} diff --git a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/domain/Client.java b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/domain/Client.java new file mode 100644 index 0000000..cf6cb9b --- /dev/null +++ b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/domain/Client.java @@ -0,0 +1,28 @@ +package sopt.org.firstSeminarAdvancedAssignment.domain; + +public class Client { + + private String accountNumber; + private String password; + + private int amount; + private String name; + private String birth; + private String tel; + private String address; + + + public Client(String accountNumber, String password, String name, String birth, String tel, String address) { + this.accountNumber = accountNumber; + this.password = password; + this.name = name; + this.birth = birth; + this.tel = tel; + this.address = address; + this.amount = 0; + } + + public String getAccountNumber() { + return accountNumber; + } +} diff --git a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/repository/ClientRepository.java b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/repository/ClientRepository.java new file mode 100644 index 0000000..ccdf261 --- /dev/null +++ b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/repository/ClientRepository.java @@ -0,0 +1,29 @@ +package sopt.org.firstSeminarAdvancedAssignment.repository; + +import sopt.org.firstSeminarAdvancedAssignment.domain.Client; + +import java.util.LinkedHashMap; +import java.util.Map; + +import static sopt.org.firstSeminarAdvancedAssignment.view.TextData.ACCOUNT_NUMBER_DUPLICATED_ERROR_MESSAGE; + +public class ClientRepository { + private static final Map clientDB = new LinkedHashMap<>(); + + public void register(Client client) { + boolean isDuplicated = false; + + for (String accountNumber : clientDB.keySet()) { + if (client.getAccountNumber().equals(accountNumber)) { + isDuplicated = true; + break; + } + } + + if (isDuplicated) { + throw new IllegalArgumentException(ACCOUNT_NUMBER_DUPLICATED_ERROR_MESSAGE); + } + + clientDB.put(client.getAccountNumber(), client); + } +} diff --git a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/service/ClientService.java b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/service/ClientService.java new file mode 100644 index 0000000..3f03fdc --- /dev/null +++ b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/service/ClientService.java @@ -0,0 +1,13 @@ +package sopt.org.firstSeminarAdvancedAssignment.service; + +import sopt.org.firstSeminarAdvancedAssignment.domain.Client; +import sopt.org.firstSeminarAdvancedAssignment.repository.ClientRepository; + +public class ClientService { + private final ClientRepository clientRepository = new ClientRepository(); + + public void registerClient(String accountNumber, String name, String birth, String tel, String address, String password) { + Client client = new Client(accountNumber, name, birth, tel, address, password); + clientRepository.register(client); + } +} diff --git a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/InputView.java b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/InputView.java new file mode 100644 index 0000000..ee05606 --- /dev/null +++ b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/InputView.java @@ -0,0 +1,43 @@ +package sopt.org.firstSeminarAdvancedAssignment.view; + +import java.util.Scanner; + +public class InputView { + private Scanner sc = new Scanner(System.in); + private final OutputView outputView = new OutputView(); + + public String inputAccountNumber() { + outputView.inputAccountNumberForRegisterMessage(); + return inputString(); + } + + public String inputClientName() { + outputView.inputClientNameForRegisterMessage(); + return inputString(); + } + + public String inputPassword() { + outputView.inputPasswordForRegisterMessage(); + return inputString(); + } + + public String inputBirth() { + outputView.inputBirthForRegisterMessage(); + return inputString(); + } + + public String inputTel() { + outputView.inputTelNumberForRegisterMessage(); + return inputString(); + } + + public String inputAddress() { + outputView.inputAddressForRegisterMessage(); + return inputString(); + } + + + private String inputString() { + return sc.nextLine(); + } +} diff --git a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/OutputView.java b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/OutputView.java new file mode 100644 index 0000000..ce87ee8 --- /dev/null +++ b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/OutputView.java @@ -0,0 +1,33 @@ +package sopt.org.firstSeminarAdvancedAssignment.view; + +public class OutputView { + + public final void inputClientInfoMessage() { + System.out.println("고객 등록을 위하여, 정보를 입력해주세요."); + } + + public final void inputAccountNumberForRegisterMessage() { + System.out.println("등록하실 계좌번호를 입력해주세요. (중복불가)"); + } + + public final void inputClientNameForRegisterMessage() { + System.out.println("이름을 입력해주세요."); + } + + public final void inputBirthForRegisterMessage() { + System.out.println("생년월일을 입력해주세요. (2000-01-01 형식)"); + } + + public final void inputTelNumberForRegisterMessage() { + System.out.println("전화번호를 입력해주세요. (010-1234-1234 형식)"); + } + + public final void inputAddressForRegisterMessage() { + System.out.println("거주지 주소를 입력해주세요."); + } + + public final void inputPasswordForRegisterMessage() { + System.out.println("사용하실 비밀번호를 입력해주세요."); + } + +} diff --git a/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/TextData.java b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/TextData.java new file mode 100644 index 0000000..a642a92 --- /dev/null +++ b/firstSeminarAdvancedAssignment/src/main/java/sopt/org/firstSeminarAdvancedAssignment/view/TextData.java @@ -0,0 +1,6 @@ +package sopt.org.firstSeminarAdvancedAssignment.view; + +public class TextData { + + public static final String ACCOUNT_NUMBER_DUPLICATED_ERROR_MESSAGE = "이미 존재하는 계좌번호입니다. 다른 번호를 사용해주세요."; +}