본문 바로가기
Study/JAVA

[20210614] 자바 기초 코딩 실습

by 햄리뮤 2021. 6. 14.
반응형

 

package studyGroup.june.three;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class LibraryServiceImpl implements LibraryService {

  private Scanner scanner = new Scanner(System.in);
  private final List<Library> libraryList = new ArrayList<>();
  private final Date date = new Date();
  private final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  private final Calendar cal = Calendar.getInstance();

  @Override
  public void init() throws ParseException {

    while (true) {
      System.out.println("1. 책 입력");
      System.out.println("2. 책 빌리기");
      System.out.println("3. 책 반납하기");
      System.out.println("4. 종료");
      System.out.println("==============");

      String input = scanner.next();
      switch (input) {
        case "1":
          insertBook();
          break;
        case "2":
          borrowBook();
          break;
        case "3":
          returnBook();
          break;
        case "4":
          quit();
          break;
      }
    }
  }

  private void quit() {
    System.out.println("시스템을 종료합니다.");
    System.out.close();
  }

  @Override
  public void insertBook() {
    System.out.println("책이름");
    String bName = scanner.next();
    libraryList.add(new Library(bName, date, 0));
  }

  @Override
  public void borrowBook() {
    int index = 0;

    System.out.println("== 책 빌리기 ==");

    for (Library r : libraryList) {
      System.out.println(index++ + "번째 " + r);
    }

    System.out.println("===========================");
    System.out.println("몇번째 책을 빌려가시겠습니까?");
    String input = scanner.next();

    if (Integer.parseInt(input) >= libraryList.size()) {
      System.out.println("없는 책입니다.");
      System.out.println("메뉴로 돌아갑니다.");
    } else {
      if (libraryList.get(Integer.parseInt(input)).getState() == 1) {
        System.out.println("대여하실 책: " + libraryList.get(Integer.parseInt(input)));
        System.out.println("현재 도서 대여중입니다.");
        System.out.println("메뉴로 돌아갑니다. ");
      } else {
        cal.setTime(libraryList.get(Integer.parseInt(input)).getDate());
        cal.add(Calendar.DATE, 3);
        String expectDate = df.format(cal.getTime());

        System.out.println("대여하실 책: " + libraryList.get(Integer.parseInt(input)).getName());
        System.out.println("반납 기한: " + expectDate);
        libraryList.get(Integer.parseInt(input)).setDate(date);
        libraryList.get(Integer.parseInt(input)).setState(1);
      }
    }
  }

  @Override
  public void returnBook() throws ParseException {
    int index = 0;
    System.out.println("== 반납하기 ==");
    for (Library r : libraryList) {
      System.out.println(index++ + "번째 " + r);
    }
    System.out.println("반납하실 책은 몇번째 책입니까?");
    String input = scanner.next();

    if (Integer.parseInt(input) > libraryList.size()) {
      System.out.println("없는 책입니다.");
      System.out.println("메뉴로 돌아갑니다.");
    } else {
      if (libraryList.get(Integer.parseInt(input)).getState() == 1) {
        System.out.println("반납하실 책: " + libraryList.get(Integer.parseInt(input)).getName());

        System.out.println("반납일을 입력해주세요: 형식) 2021-06-14 ");
        String returnDate = scanner.next();
        Date inputDate = df.parse(returnDate);

        cal.setTime(libraryList.get(Integer.parseInt(input)).getDate());
        cal.add(Calendar.DATE, 3);
        Date compareDate = cal.getTime();
        if (inputDate.compareTo(compareDate) >= 0) {
          System.out.println("반납 기간이 지났습니다");
          System.out.println("벌금 100만원");

        } else {
          System.out.println("책을 반납합니다.");
        }

        libraryList.get(Integer.parseInt(input)).setDate(date);
        libraryList.get(Integer.parseInt(input)).setState(0);


      } else {
        System.out.println("이미 도서 목록에 있습니다.");
        System.out.println("다시 선택해주세요.");
        System.out.println("메뉴로 돌아 갑니다.");
      }
    }
  }
}
​
package studyGroup.june.three;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Library {

  private String name;
  private Date date = null;
  private int state = 0;

  public Library(String name, Date date, int state) {
    this.name = name;
    this.date = date;
    this.state = state;
  }

  @Override
  public String toString() {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    return "Library{" +
        "bName='" + name + '\'' +
        ", bDate=" + df.format(date) +
        ", state=" + state +
        '}';
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Date getDate() {
    return date;
  }

  public void setDate(Date date) {
    this.date = date;
  }

  public int getState() {
    return state;
  }

  public void setState(int state) {
    this.state = state;
  }
}

 

 

package studyGroup.june.three;

import java.text.ParseException;

public interface LibraryService {

  void init() throws ParseException;
  void insertBook();
  void borrowBook();
  void returnBook() throws ParseException;
}

 

 

 

반응형

'Study > JAVA' 카테고리의 다른 글

[20210627] JAVA 스터디  (0) 2021.06.28
[20210620] JAVA 스터디  (0) 2021.06.20
[20210613] JAVA 스터디  (0) 2021.06.13
[20210612] 자바 기초 코딩 실습  (0) 2021.06.12
[20210606] 자바 기초 코딩 실습  (0) 2021.06.11

댓글