1. Execute
package javastudy06_2;
public class Execute {
public static void main(String[] args) {
MemberService ms = new MemberServiceImpl();
ms.init();
}
}
2. Book
package javastudy06_2;
public class Book{
String title; // 책 제목
String author; // 지은이
int number; // 등록번호
int state; // 현재 빌려간 책인지 아닌지 여부 판단. state : 0 (빌리기 가능) , state : 1(빌려간 상태임)
Long date; // 책 빌려간 날짜
Long dDate; // 책 반납날짜
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public Long getDate() {
return date;
}
public void setDate(Long date) {
this.date = date;
}
public Long getdDate() {
return dDate;
}
public void setdDate(Long dDate) {
this.dDate = dDate;
}
// int state의 숫자표현을 문자열 표현으로 바꾸는 배열
final String[] CHECK_OUT_BOOK = {"대출가능", "대출 불가능"};
public String toString() {
return " [ " + number + ".책 제목 :\'" + title + "\' 지은이 :\'" + author + "\' 대출 여부 :\'" + CHECK_OUT_BOOK[state] +"\']";
}
}
3. MemberService
package javastudy06_2;
public interface MemberService {
// 프로그램 실행하기
void init();
// 책 입력하기
void input();
// 책 조회하기
void search();
// 책 빌리기
void borrow();
// 책 반납하기
void returnBook();
// 종료하기
void quit();
}
4.MemberServiceImpl
package javastudy06_2;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Scanner;
public class MemberServiceImpl implements MemberService {
List<Book> list = new ArrayList<Book>();
Scanner scanner = new Scanner(System.in);
boolean run = true;
int n = 0; // autoIncrease 적용
@Override
public void init() {
while(run) {
menu();
}
}
public void menu() {
System.out.println("*************");
System.out.println("1. 책 입력하기");
System.out.println("2. 책 조회하기");
System.out.println("3. 책 빌리기");
System.out.println("4. 책 반납하기");
System.out.println("5. 종료하기");
System.out.println("*************");
String input = scanner.next();
switch(input) {
case "1" : input(); break;
case "2" : search(); break;
case "3" : borrow(); break;
case "4" : returnBook(); break;
case "5" : quit(); break;
default : System.out.println("잘못 입력하였습니다. 다시 입력해주세요.");
}
}
@Override
public void input() {
Book book = new Book();
int i = 0; // state 설정 변수
System.out.println("*************");
System.out.println("책 제목 : ");
book.setTitle(scanner.next());
System.out.println("저자 : ");
book.setAuthor(scanner.next());
// 등록번호 AutoIncrease적용
book.setNumber(n++);
book.setState(i);
list.add(book);
System.out.println("책 등록이 완료되었습니다.\n");
}
@Override
public void search() {
System.out.println("*************");
for ( Object i : list ) {
System.out.println(i);
}
}
@Override
public void borrow() {
System.out.println("*************");
for ( Object i : list ) {
System.out.println(i);
}
System.out.println("빌릴 책의 번호를 입력하세요. 숫자만 입력할것.");
int i = scanner.nextInt();
// 책 빌릴 때 현재 빌려간 책인지 아닌지 여부 판단
// 1. 책 대여가 불가능한 상태
if(list.get(i).getState() == 1) {
System.out.println("이미 대출이 되어 책 대여가 불가능합니다.");
}
// 2. 책 대여가 가능한 상태
else {
// 빌렸으니 state를 1로 변경하여 대출 불가 상태 만들기
list.get(i).setState(1);
// 책 빌릴때 현재 날짜 저장
Calendar today = Calendar.getInstance();
// String input ="";
// input = today.get(Calendar.YEAR) + "년";
// input = today.get(Calendar.MONTH) + "월";
// input = today.get(Calendar.DATE) + "일";
// list.get(i).setDate(input);
// 현재 빌려간 날짜 1/1000초 단위로 저장
list.get(i).setDate(today.getTimeInMillis());
// 반납 날짜 구하기 위해 현재 날짜에서 3일 더하기
today.add(Calendar.DATE, 3);
// 3일 더한 반납날짜 1/1000초 단위로 저장
list.get(i).setdDate(today.getTimeInMillis());
System.out.println(" 반납은 " + toString(today) + " 까지 입니다.");
System.out.println(" 책 대여가 완료되었습니다. ");
}
}
public static String toString(Calendar date) {
return date.get(Calendar.YEAR) +"년 " + (date.get(Calendar.MONTH)+1) +"월 "
+ date.get(Calendar.DATE) + "일" ;
}
@Override
public void returnBook() {
System.out.println("*************");
for ( Object i : list ) {
System.out.println(i);
}
System.out.println("반납할 책의 번호를 입력하세요.");
int i = scanner.nextInt();
System.out.println("반납날짜(당일)를 입력하세요.");
System.out.println("연도(네자리) : ");
int y = scanner.nextInt();
System.out.println("월(월 입력시 맨 앞에 0을 기입 할 수 없습니다.) : ");
int m = scanner.nextInt()-1; // month의 경우 0부터 시작하기 때문에
System.out.println("일(일 입력시 맨 앞에 0을 기입 할 수 없습니다.): " );
int d = scanner.nextInt();
// 입력 받은 날짜를 셋팅
Calendar date = Calendar.getInstance();
date.clear();
date.set(y,m,d);
// 반납날짜보다 기입한 오늘 날짜가 더 크면 안내 메세지 출력
if (list.get(i).getdDate() < date.getTimeInMillis()) {
System.out.println("반납기한이 지났습니다.");
}
// state 대출 가능 상태로 바꾸기
list.get(i).setState(0);
System.out.println("책 반납이 완료되었습니다.");
}
@Override
public void quit() {
run = false;
System.out.println("프로그램을 종료합니다.");
}
}
'JavaStudy(open) > 코딩' 카테고리의 다른 글
지네릭스 기능 이용하여 프로그램 만들기 (0) | 2021.07.04 |
---|---|
컬렉션 Set 인터페이스 이용하여 장보기 프로그램 만들기 (0) | 2021.06.27 |
게시판 만들어보기(맴버 아이디 별로 게시글 작성하기, 삭제시 userName과 password 확인 후 삭제, memberId로 게시글을 조회 했을시 없는 사용자일때 예외로 던지고 예외처리 ) (0) | 2021.06.17 |
일부러 예외를 발생시켜 catch문 동작 시켜보기 (여러 RuntimeException 해보기) (0) | 2021.06.17 |
객체이용하여 Tv클래스 만들기 (0) | 2021.05.24 |