0. 개발 환경
- eclipse
- java 1.8
1. 폴더 구조

2. MVC 패턴
* Model
- 도서 데이터를 표현하기 위한 데이터 전송 객체 (DTO)
- 도서 데이터의 저장소와 비즈니스 로직을 담당함.
BookDto : 개별 도서의 정보를 담고 있음
BookList : 여러 개의 BookDto를 담는 컨테이너 역할
BookRepository : 데이터베이스나 파일 시스템과 같은 저장소에서 데이터를 읽고 쓰는 기능을 제공함
BookService : 도서와 관련된 비즈니스 로직을 처리함
* View
BookView : 사용자에게 보여지는 부분. 콘솔 출력과 사용자 입력을 처리함.
사용자에게 도서 목록을 보여주고, 입력을 받는 등의 역할 담당.
* Controller
BookController : 사용자의 입력을 받아서 모델의 상태를 변경하고 뷰를 업데이트 하는 중간 역할.
사용자의 요청을 해석하고, 해당 요청에 대한 적절한 모델의 메소드를 호출하고
이에 따른 결과를 뷰에 반영
3. 파일
* BookDto.java



* BookList.java

* BookService.java

* LibraryApp.java

* BookRepoFile.java

* BookRepository.java






* BookView.java





* BookController.java






4. 콘솔

메뉴 1: 도서목록 전체 출력


메뉴 2: 도서 등록
도서 들록 후 도서 목록 출력 시 등록된 도서가 아래에 함께 나옴

메뉴 3: 도서 정보 수정
도서 정보 수정 시 전체 도서목록이 출력되고, 그 아래에 수정할 도서 정보를 다시 입력할 수 있다.
도서 정보가 수정되면 y / n으로 저장할 수 있도록 하였다.




메뉴 4: 도서 삭제
도서를 삭제한 후 다시 도서 목록을 출력했을 때 삭제된 도서가 목록에 나오지 않음

메뉴 5: 도서 검색
1을 선택 시 검색할 도서명을 입력하고, 2를 선택 시 검색할 저자명을 입력할 수 있음.
(단, 도서명과 저자를 검색할 때 전체 명을 틀리지 않고 입력해야 찾는 결과가 출력됨)


메뉴 6: 도서 목록 파일 저장
현재까지 콘솔에 등록하여 저장한 도서 목록을 txt파일로 저장함.
상단에 파일이 처음 저장된 날짜와 시간이 함께 입력됨.
+ 프로젝트에 대한 간단한 후기
자바로 만든 첫 미니 프로젝트로 콘솔을 이용한 도서관리 프로그램을 만들었는데, 기본적인 crud 기능을 구현하고 추가로 검색기능까지 넣었다. 처음 만들다 보니 파일 간 구조와 내용을 이해하는데에 시간이 걸려 기능을 조금 더 구현하고 싶었지만 기본 기능을 조금 더 깔끔하게 정리하고 싶어서 아쉽게 그러지 못했다.
유지보수하기 좋은 코드를 깔끔하게 정리해서 만들 수 있도록 더 많은 공부가 필요하다고 느꼈다.