프로그래밍 예제

java 프로그래밍 예제(간단한 도서 관리 프로그램)

goshek 2024. 9. 20. 10:24

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());

}

}

 

 

}