물음표 살인마의 개발블로그

개인 프로젝트

ATM 기계

BEstyle 2022. 10. 30. 17:20

Aim:

자바프로그래밍, 기본적인 OOP, DB를 연습하기 위해 연습하는 프로젝트.


Hypothesis:

실제 ATM기계처럼 만들려고 한다.(카드 대신 아이디, 비밀번호)

보유하고 있는 은행 계좌들의 상태를 확인할 수 있고, 입출금도 가능하게 하고 싶다.

h2DB와 연결시켜서 db저장.


Method:

1. 유저는 회원가입/로그인을 할 수 있다.

2. 유저는 여러개의 은행계좌를 만들거나 보유할 수 있다.

3. 은행계좌들의 자금 상태를 알 수 있다.

4. 해당 계좌에 대한 입출금 내역을 볼 수 있다.

5. 해당 계좌에 입출금이 가능하다.

6. 다른 유저에게 송금을 할 수 있다.

7. 유저별/계좌별 일정기간 있었던 transaction을 조회할 수 있다.

 


Progress Notes:

[221030]

Account, Accounts, User, Users, AtmDAO 클래스들을 만들었다.

DATA라는 Table을 만들어서 db에 저장했고 필드는 총 7개를 만들었다.

로그를 어떤식으로 저장할지 고민을 했는데, 마땅히 다른 방법이 떠오르지 않는다. 은행계좌 정보를 불러올때 쿼리문이 조금 길어길것 같긴하다.

아무리 생각해도 너무 구조가 이상한것 같다.

현재 구조는

현재구조

이런식인데, 

이상적인 구조

내가 생각하기에 이상적인 구조는 이거다... 기본키를 이용해서 db테이블을 연결시켜야 하는데, 기술이 부족하여 db는 일단 제외하고 Java에서만 구현을 해보려고 한다.

[221101]

IOC와 DI의 개념을 오늘 처음 배웠다. 기존 프로젝트에 생성자를 new User(new Account(new Log)))식으로 적었었는데, 별로 좋지 않은 코드임을 알았다. 팀 프로젝트가 끝나면 수정해야겠다.

[221115]

새로 갈아엎었다. 기존의 코드가 너무 비효율적이기였기때문. 2인 프로젝트로 진행하게됬다.

기능은 크게 6가지이다.

  1. 로그인
  2. 회원가입
  3. 계좌 신설
  4. 계좌 선택
  5. 계좌 삭제
  6. 계좌 현황

테이블 구조도 바꿧다. Transaction에 대한 데이터는 넣지 않기로했다.

 

H2Db를 통해 CRUD를 하기로 했고, 뷰가 없지만 있다고 가정하고, Spring 구조로 작업을 했다.


Estimated Result:

로그인: thomas

비밀번호: 724

 

계좌정보 :

"Saving" : Balance : 77,000 원

"Food" : Balance : 14,000 원

"Transport" : Balance : 50,000 원

 

내역:

"Saving" 계좌 Balance : 77,000

Log:

2022년 10월 30일 17시 18분 12초 : Created

2022년 10월 30일 18시 51분 22초 : 입금 : 50,000 원

2022년 10월 30일 19시 01분 01초 : 출금 : 3,000 원

2022년 10월 30일 20시 11분 11초 : 입금 : 30,000 원

 

입금:

"Saving" 계좌 Balance : 77,000

얼마나 입금 하시겠습니까? x

x원 입금하여 현재 balance가 x원입니다.

 

출금:

"Saving" 계좌 Balance : 77,000

얼마나 출금 하시겠습니까?

x원 출금하여 현재 balance가 x원입니다.

또는

잔액이 부족합니다.

 

송금:

"Saving" 계좌 Balance : 77,000

누구에게 송금하시겠습니까? "thomas2"

"받는 사람을 확인해주세요" 또는

얼마를 송금하시겠습니까?

x원 송금하여 현재 balance가 x원입니다.

또는

잔액이 부족합니다.

 

 


Code:

https://github.com/724thomas/ATM_Machine.git


Conclusion:

 


Bibliography:

[Java]

[Java]생성자 constructor와 this

https://gangnam-americano.tistory.com/16 (Dev.GA 2018.02.12)

[얕은 복사] 주소값 복사

https://owlyr.tistory.com/17 (lijly 20.05.31)

How to convert current date into string in java?

https://stackoverflow.com/questions/2942857/how-to-convert-current-date-into-string-in-java (Eric Leschinski 2010.05.31)

[Java] 자바 날짜 포맷 변경 방법(SimpleDateFormat) yyyyMMdd

https://junghn.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94-%EB%82%A0%EC%A7%9C-%ED%8F%AC%EB%A7%B7-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95SimpleDateFormat-yyyyMMdd (코딩 시그널 2020.08.06)

[Collection] 이것만 알면 해시맵(HASHMAP) 정복 가능 - HASHMAP의 특징, 사용법 예제

https://reakwon.tistory.com/151 (Flatinum)

Java에서 문자열 정렬

https://www.techiedelight.com/ko/sort-string-java/ (Techie delight </> )

[Java] Time (현재 시간 얻기), Date

https://choseongho93.tistory.com/32 (TROLL's 2019.07.19)

What is the syntax of array literal in H2 db?

https://stackoverflow.com/questions/45591461/what-is-the-syntax-of-array-literal-in-h2-db (Artem Petrov 2017.08.09)

SQL syntax error in H2 Database when inserting array

https://stackoverflow.com/questions/59314814/sql-syntax-error-in-h2-database-when-inserting-array (Sam 2019.12.13)

H2 Data Types

https://h2database.com/html/datatypes.html#array_type