반응형
미니 프로젝트 — 자바로 도서 관리 프로그램 만들기
드디어 마지막 편이에요! 🎉
지금까지 배운 변수, 조건문, 반복문, 배열, 메서드, 클래스, 객체를 모두 활용해서
실제로 동작하는 도서 관리 프로그램을 처음부터 끝까지 만들어볼게요!
📌 이 글에서 만들 것
오늘 만들 프로젝트는 콘솔 도서 관리 시스템이에요.
- 도서를 추가할 수 있어요.
- 전체 도서 목록을 조회할 수 있어요.
- 도서를 제목으로 검색할 수 있어요.
- 도서를 삭제할 수 있어요.
전체 코드
Book.java — 도서 클래스
public class Book {
private String title;
private String author;
private int year;
public Book(String title, String author, int year) {
this.title = title;
this.author = author;
this.year = year;
}
public String getTitle() { return title; }
public String getAuthor() { return author; }
public int getYear() { return year; }
public void printInfo() {
System.out.printf("📖 %-20s | %-10s | %d년%n", title, author, year);
}
}
Library.java — 도서관 클래스
import java.util.ArrayList;
public class Library {
private ArrayList<Book> books = new ArrayList<>();
// 도서 추가
public void addBook(String title, String author, int year) {
books.add(new Book(title, author, year));
System.out.println("✅ \"" + title + "\" 추가 완료!\n");
}
// 전체 도서 출력
public void showAll() {
if (books.isEmpty()) {
System.out.println("등록된 도서가 없어요.\n");
return;
}
System.out.println("=== 전체 도서 목록 (" + books.size() + "권) ===");
for (int i = 0; i < books.size(); i++) {
System.out.print((i + 1) + ". ");
books.get(i).printInfo();
}
System.out.println();
}
// 도서 검색
public void searchBook(String keyword) {
System.out.println("=== \"" + keyword + "\" 검색 결과 ===");
boolean found = false;
for (Book book : books) {
if (book.getTitle().contains(keyword) || book.getAuthor().contains(keyword)) {
book.printInfo();
found = true;
}
}
if (!found) {
System.out.println("검색 결과가 없어요.");
}
System.out.println();
}
// 도서 삭제
public void removeBook(String title) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getTitle().equals(title)) {
books.remove(i);
System.out.println("🗑️ \"" + title + "\" 삭제 완료!\n");
return;
}
}
System.out.println("해당 도서를 찾을 수 없어요.\n");
}
}
Main.java — 메인 실행 클래스
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Library library = new Library();
Scanner scanner = new Scanner(System.in);
// 초기 데이터
library.addBook("자바의 정석", "남궁성", 2022);
library.addBook("클린 코드", "로버트 마틴", 2013);
library.addBook("객체지향의 사실과 오해", "조영호", 2015);
System.out.println("📚 자바 도서 관리 시스템에 오신 걸 환영해요!\n");
while (true) {
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.print("\n번호를 입력하세요: ");
String choice = scanner.nextLine().trim();
switch (choice) {
case "1":
System.out.print("제목: ");
String title = scanner.nextLine();
System.out.print("저자: ");
String author = scanner.nextLine();
System.out.print("출판 연도: ");
int year = Integer.parseInt(scanner.nextLine());
library.addBook(title, author, year);
break;
case "2":
library.showAll();
break;
case "3":
System.out.print("검색어 (제목 또는 저자): ");
String keyword = scanner.nextLine();
library.searchBook(keyword);
break;
case "4":
System.out.print("삭제할 도서 제목: ");
String removeTitle = scanner.nextLine();
library.removeBook(removeTitle);
break;
case "5":
System.out.println("프로그램을 종료해요. 수고하셨어요! 👋");
scanner.close();
return;
default:
System.out.println("1~5 중에서 선택해주세요.\n");
}
}
}
}
실행 예시
📚 자바 도서 관리 시스템에 오신 걸 환영해요!
번호를 입력하세요: 2
=== 전체 도서 목록 (3권) ===
1. 📖 자바의 정석 | 남궁성 | 2022년
2. 📖 클린 코드 | 로버트 마틴 | 2013년
3. 📖 객체지향의 사실과 오해 | 조영호 | 2015년
번호를 입력하세요: 3
검색어 (제목 또는 저자): 자바
=== "자바" 검색 결과 ===
📖 자바의 정석 | 남궁성 | 2022년
코드에서 배운 개념 찾아보기
| 코드 | 배운 편 |
|---|---|
class Book { ... } |
9편 (클래스와 객체) |
private, getter/setter |
9편 (캡슐화) |
ArrayList<Book> |
7편 (ArrayList) |
for (Book book : books) |
7편 (for-each) |
public void addBook(...) |
8편 (메서드) |
switch (choice) |
5편 (조건문) |
while (true) |
6편 (반복문) |
String title = "..." |
3편 (변수와 자료형) |
🚀 다음 단계로 나아가고 싶다면?
이 시리즈를 완주하셨으면 기초는 탄탄해요! 다음엔 이런 걸 공부해보세요.
- 상속과 다형성 — 객체 지향의 꽃
- 인터페이스 — 설계를 더 유연하게
- 예외 처리 — try/catch로 오류 다루기
- 파일 입출력 — 데이터를 파일로 저장하기
- Spring Boot — 자바로 웹 서버 만들기
10편 시리즈 완주를 축하해요! 🎊
| 편 | 주제 | 핵심 개념 |
|---|---|---|
| 1편 | 자바 소개 | 왜 자바인가 |
| 2편 | 설치 & 환경 세팅 | JDK, IntelliJ |
| 3편 | 변수와 자료형 | int, String, boolean |
| 4편 | 연산자와 문자열 | 산술, 비교, String 메서드 |
| 5편 | 조건문 | if, switch, 삼항 연산자 |
| 6편 | 반복문 | for, while, break, continue |
| 7편 | 배열과 ArrayList | [], ArrayList |
| 8편 | 메서드 | 반환값, 매개변수, 오버로딩 |
| 9편 | 클래스와 객체 | 생성자, getter/setter |
| 10편 | 미니 프로젝트 | 종합 실습 |
처음엔 긴 문법이 낯설게 느껴졌겠지만, 이제 자바가 조금 친숙해지셨나요?
자바의 세계는 훨씬 더 넓어요. 오늘 배운 기초가 그 출발점이 될 거예요. 화이팅! ☕
시리즈를 끝까지 읽어주셔서 감사해요 😊 궁금한 점은 언제든지 댓글로 남겨주세요!
'프로그래밍 언어 > Java' 카테고리의 다른 글
| 자바 클래스 Class와 객체 인스턴스 instance — 객체 지향 프로그래밍 첫걸음(Java 기초) (0) | 2026.03.22 |
|---|---|
| 자바 메서드 함수 — 코드를 재사용 가능한 블록으로 만들기(Java 기초) (0) | 2026.03.21 |
| 자바 배열과 ArrayList — 데이터를 묶어서 관리하기(Java 기초) (1) | 2026.03.21 |
| 자바 반복문 for문 — for와 while로 반복 작업 처리하기(Java 기초) (0) | 2026.03.20 |
| 조건문 if문 — if와 switch로 상황에 맞게 분기하기(Java 기초) (0) | 2026.03.20 |