package chapter20.Library02;
import chapter20.Library02.Controller.LibraryController;
/*
=== Library2 패키지 ===
1. 프로젝트 개요
: 도서 대여 관리 시스템을 구축
> 도서 등록, 사용자 등록, 도서 대여 및 반납을 관리
2. 프로젝트 구조
1) Controller -LibraryController
: 요청을 처리하는 컨트롤러 layer
2) model- Book, User
: 데이터 설계
3) repository - BookRepository, UserRePository
: 데이터를 저장하고 조회하는 계층
4) service - LibraryService
: 비즈니스 로직을 처리하는 서비스 계층
Main.java (class 파일 - 실행 메소드 포함)
: 애플리케이션의 시작점
3. 기능 목록
1) 사용자 관리
- 사용자 등록
-사용자 목록 조회
2) 도서 관리
- 도서 등록
- 도서 목록 조회
3) 도서 대여
- 사용자에게 도서 대여
- 도서 반납
4) 기타
도서 대여 여부 확인
대여 중인 도서 목록 조회
*/
public class Main {
public static void main(String[] args) {
LibraryController controller= new LibraryController();
controller.start();
}
}
package chapter20.Library02.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
////Constructor
// public Book(String title, String author, boolean isBorrowed) {
// super();
// this.title = title;
// this.author = author;
// this.isBorrowed = isBorrowed;
// }
//
// // Getter
// public String getTitle() {
// return title;
// }
//
// public String getAuthor() {
// return author;
// }
//
// public boolean isBorrowed() {
// return isBorrowed;
// }
//
// // Setter
// public void setTitle(String title) {
// this.title = title;
// }
//
// public void setAuthor(String author) {
// this.author = author;
// }
//
// public void setBorrowed(boolean isBorrowed) {
// this.isBorrowed = isBorrowed;
// }
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Book {
private String title;
private String author;
private boolean isBorrowed;
}
package chapter20.Library02.model;
public class User {
private String name;
private String userId;
// 생성자
public User(String name, String userId) {
this.name = name;
this.userId = userId;
}
// Getters
public String getName() {
return name;
}
public String getUserId() {
return userId;
}
// Setters
public void setName(String name) {
this.name = name;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
package chapter20.Library02.repository;
import java.util.ArrayList;
import java.util.List;
import chapter20.Library02.model.Book;
public class BookRepository {
private List<Book> books= new ArrayList<Book>();
public void addBook(Book book) {
books.add(book);
}
public Book findBookById(String bookTitle) {
for(Book book: books) {
if(book.getTitle().equals(bookTitle))return book;
}
return null;
}
public List<Book> findAllBooks() {
return books;
}
}
package chapter20.Library02.repository;
import java.util.ArrayList;
import java.util.List;
import chapter20.Library02.model.User;
public class UserRepository {
private List<User> users= new ArrayList<User>();
public void addUser(User user) {
users.add(user);
}
public User findUserById(String userId) {
for(User user: users) {
if(user.getUserId().equals(userId))return user;
}
return null;
}
public List<User> findAllUser() {
// TODO Auto-generated method stub
return null;
}
}
package chapter20.Library02.service;
import chapter20.Library02.model.Book;
import chapter20.Library02.model.User;
import chapter20.Library02.repository.BookRepository;
import chapter20.Library02.repository.UserRepository;
public class LibraryService {
private BookRepository bookRepository= new BookRepository();
private UserRepository userRepository= new UserRepository();
public void addBook(Book book) {
bookRepository.addBook(book);
}
public void registerUser(User user) {
userRepository.addUser(user);
}
public void borrowBook(String userId, String bookTitle) {
User user= userRepository.findUserById(userId);
Book book= bookRepository.findBookById(bookTitle);
if(user !=null & book !=null && !book.isBorrowed()) {
book.setBorrowed(true);
System.out.println(user.getName() +"님이" + book.getTitle()+ "을(를) 대여하였습니다.");
}
else {
System.out.println("대여 불가");
}
}
public void returnBook(String title) {
Book book= bookRepository.findBookById(title);
if(book!= null && book.isBorrowed()) {
book.setBorrowed(false);
System.out.println(book.getTitle()+"이(가)반납되었습니다.");
}
else {
System.out.println("반납 불가");
}
}
public void listAllBooks() {
for(Book book: bookRepository.findAllBooks()) {
System.out.println(book.getTitle() + "-" + (book.isBorrowed() ? "대여 중": "대여 가능"));
}
}
public void listAllUsers() {
for(User user: userRepository.findAllUser()) {
System.out.println(user.getUserId()+ ":" + user.getName());
}
}
}
'프로그래밍 예제' 카테고리의 다른 글
간단한 활용 예제(포토 앨범) (0) | 2024.08.22 |
---|---|
HTML, CSS, JS 활용 예제(간단한 todo list02, 모듈화) (0) | 2024.08.09 |
HTML, CSS, JS 활용 예제(간단한 todo list) (0) | 2024.08.08 |