성장, 그리고 노력

부족하더라도 어제보다 더 잘해지자. 노력은 절대 배신하지 않는다.

Side-Project

[JAVA] 크롤링과 엑셀을 이용한 도서 관리 프로그램

제이콥(JACOB) 2019. 12. 8. 22:00

소개글

 자바를 배우며 두번째로 만들어본 도서 관리 프로그램입니다. 이 프로젝트에는 명확한 특징 두 가지가 있습니다.

 첫번째 특징은 "엑셀의 데이터 베이스화"입니다. 이 프로그램 구현 당시에는 데이터 베이스를 배우지 않았습니다. 하지만, 프로그램을 구현하다보니, 가지게된 문제점은 바로 "프로그램이 종료되면 모든게 리셋(reset)"된다는 점이었습니다. 물론 강사님은 나중에 데이터베이스를 배우면 해결된다고 하셨지만, 저는 여기서 문득 별난(?) 생각을 하나하게 되었습니다. (이 당시에 제 네이버 개인 블로그에 엑셀 강의를 포스팅하고 있었습니다.) "MySQL, Oracle 등은 어차피 배운다고 했는데, 그럼 다른거는 데이터 베이스로 못쓸까? 엑셀(Excel)에는 분명 '저장' 및 CRUD가 가능한데, 엑셀을 DB로 사용해 볼까?"라는 생각이었습니다. 물론 그 생각을 실현에 옮기는 데에는 힘들었지만, 말도 안되는 생각은 아니었기 때문에 결국은 성공하여 구현되었습니다.

 두번째 특징은 "도서 목록 크롤링"입니다. 도서 관리 프로그램을 만들려고 보니, 일명 '임시 데이터, Dummy Data'를 사용해야 했습니다. 근데 저 데이터를 내가 내 손으로 타이핑해서 만든다면 너무 귀찮고, 비효율적인거 같아서 도서 사이트를 크롤링(Crawling)하기로 했습니다. 여러 도서 사이트 중, Dom 구조가 명확한 사이트를 선정하여 크롤링하였습니다. Dom 구조가 명확한 사이트를 선정한 이유는 크롤링 데이터의 정확성을 높이기 위함입니다.

개발 기간은 약 10일로 3명의 팀원과 함께한 미니 프로젝트였습니다.

시나리오

 우리가 만들고자 프로그램은 도서관리 프로그램이다. 첫 화면은 로그인(아이디 , 비밀번호) , 회원가입 아이디 찾기 , 비밀번호 찾기가 있다. 비회원으로도 일부 화면을 볼 수 있다. 비회원은 검색을 통해서 도서목록 확인만 가능하다. 도서검색을 하면 번호로 나열되며 원하는 도서의 번호를 입력하여 도서의 세부정보를 볼 수 있다. 회원가입의 항목으로는 아이디, 비밀번호, 이메일 , 전화번호, 이름 등이 있다. 로그인을 해야만 도서 대여가 가능하다. 메인 화면에는 도서를 검색할 수 있는 검색창과 대여/반납, 마이페이지에서는 회원 정보를 볼 수 있다. 회원정보 창에서는 탈퇴가 가능하다. 관리자 메뉴에서는 현재 가입된 회원의 수와 기기가 동작 중인지 확인이 가능하고 회원의 정보를 조회할 수 있다.


사용기술

book


크롤링

학원을 다니기 전 AMD로 일을 하면서 개인적으로 python을 공부하여 네이버 및 인스타그램 크롤링 프로젝트를 했었습니다. 그러다보니, "혹시 자바로도 웹 사이트를 크롤링 할 수 있지 않을까?"라는 생각을 하게 되었고, 직접 구현해 보았습니다.

크롤링 로직:  "사용자가 도서를 검색한다" -> "검색한 내용을 인터파크에서 검색한 후 해당 페이지를 파싱한다" -> "데이터를 가공해 사용자에게 보여준다 + 데이터 베이스(엑셀)에 저장한다"

crawling


클래스 다이어그램

bookclass


주요 기능

로그인 기능

엑셀을 데이터 베이스로 사용했기 때문에 프로그램을 종료해도 유지될 수 있는 회원가입 및 로그인 기능을 구현할 수 있었습니다.

로그인을 하면 [도서관리 메뉴]에서 책 대여가 가능하며, 만약 비회원 로그인을 할시, 검색만 가능합니다.

1




회원가입 기능

이름, 아이디, 비밀번호, 휴대폰 번호, 이메일을 입력해야하며, 아이디와 휴대폰은 중복이 불가합니다.
중복되는 경우에는 중복되었다는 메시지가 출력되며, 다시 입력해야 합니다.
회원가입




아이디 및 비밀번호 찾기

등록된 정보를 토대로 아이디 및 비밀번호를 찾을 수 있습니다.
아이디찾기




관리자 기능

관리자는 현재 총 회원 수 및 회원 정보를 열람할 수 있습니다.

관리자1
관리자2




참고 링크

Source Code - GitHub

반응형