Skip to content

Commit

Permalink
feat: 고객 등록 기능 구현 #1
Browse files Browse the repository at this point in the history
  • Loading branch information
PgmJun committed Apr 14, 2023
1 parent 82aa62b commit 2f6064e
Show file tree
Hide file tree
Showing 9 changed files with 175 additions and 4 deletions.
2 changes: 1 addition & 1 deletion firstSeminarAdvancedAssignment/docs/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- [X] 고객 등록 기능
+ [X] 계좌번호 등록
* 기본 금액은 0원으로 설정
* [ ] ⚠️ 이미 존재하는 계좌번호 등록 시, 예외발생
* [X] ⚠️ 이미 존재하는 계좌번호 등록 시, 예외발생
+ [X] 개인정보 등록(이름,생년월일,전화번호,주소)
+ [X] 비밀번호 등록
- [ ] 잔액 조회 기능
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);

}

}
Original file line number Diff line number Diff line change
@@ -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());
}

}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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<String, Client> 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);
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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("사용하실 비밀번호를 입력해주세요.");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package sopt.org.firstSeminarAdvancedAssignment.view;

public class TextData {

public static final String ACCOUNT_NUMBER_DUPLICATED_ERROR_MESSAGE = "이미 존재하는 계좌번호입니다. 다른 번호를 사용해주세요.";
}

0 comments on commit 2f6064e

Please sign in to comment.