package book;
public class Books {
//객체의 속성을 부여하자
private String name;
private String author;
// 프라이빗한 객체의 초기값을 정해주자
public Books(String name, String author) {
this.name = name;
this.author = author;
}
//이 클래스에만 사용 가능한 프라이빗을 겟을 통하여 사용할 수 있게 핮
//이것을 사용하는 이유는 java는 객체 지향 프로그램이기에 사용한다.
public String getName() {
return name;
}
public String getAuthor() {
return author;
}
public void showInfo() {
System.out.println(">>>**책의 이름과 저자 **<<<<");
System.out.println("name : " + name);
System.out.println("author : " + author);
}
}//end of class
package book;
import java.util.Scanner;
public class BookStore {
static int basic = 6;
//코드의 진입점
public static void main(String[] args) {
//스크린 도국를 불러 올 수 있게 하자.
Scanner sc = new Scanner(System.in);
//북의 인덱스파일을 생성해주자
Books[] books = new Books[100];
//TODO샘플파일이기에 실제 프로그램이 돌아갈 시 제게해주자.
//샘플로 인덱스 파일에 생성할 객체를 생성해주자
//샘플 파일의 순서대로 책이 저장되기 위해 저장된 책 이후 쌓일 변수를 지정해주자
books[0] = new Books("홍길동전", "허균");
books[1] = new Books("미움 받을 용기", "기시노");
books[2] = new Books("노인과 바다", "허밍웨이");
books[3] = new Books("사막에서 길을 묻지말라", "나태주");
books[4] = new Books("모순", "양귀자");
//책을 1. 저장 2. 모든 책 표시 3. 책 제목으로 책 찾기 4. 책 저장 기록 삭제 5. 프로그램 종료를 만드시오
//위 프로그램은 선택시에도 순차적으로 사용하게끔 하시오 while문을 사용하자.
// 먼저 문자열도 사능 가능한 변수를 생성해 보자.
final String SAVE = "1";
final String SEARCH_ALL = "2";
final String SEARCH_BY_TITLE = "3";
final String DELETE = "4";
final String END = "5";
//함수열을 생성하여 프로그램을 돌아가게하자
//함수안에 많은 식은 가독성을 떨어 뜨리므로 메서드를 활용하자.
//while문을 사용할 것이기에 사용 가능하게끔 한 flag를 꼽자
boolean flag = true;
while (flag) {
System.out.println("메뉴 선택");
System.out.println("1. 등록 2. 전체조회 3. 도서 검색 4.삭제 5. 종료");
String selectedNumber = sc.nextLine();
//방어문 기제 (1~5의 숫자를 벗어날때 다시 번호를 입력하게 설정해주자)
if (selectedNumber.equals(SAVE)) {
System.out.println(">>>>>저장하기<<<<<<");
save(sc, books);
} else if (selectedNumber.equals(SEARCH_ALL)) {
System.out.println(">>>>>전체조회<<<<<<");
readAll(books);
} else if (selectedNumber.equals(SEARCH_BY_TITLE)) {
System.out.println(">>>>>도서조회<<<<<<");
readTitle(sc, books);
} else if (selectedNumber.equals(DELETE)) {
System.out.println(">>>>>도서 삭제<<<<<<");
delete(sc, books);
} else if (selectedNumber.equals(END)) {
System.out.println(">>>>>프로그램을 종료합니다.<<<<<<");
//end();
break;
} else {
System.out.println("--잘못된 번호 입니다-- \n==다시 입력해주세요==");
}
} // end of while
} // end of main
//저장
public static void save(Scanner sc, Books[] books) {
System.out.println("------저장-------");
System.out.println("책 제목을 입력하세요");
String title = sc.nextLine();
System.out.println("저자를 입력하세요");
String author = sc.nextLine();
Books book = new Books(title, author);
//방어적 코드
if (books.length < basic) {
System.out.println("더 이상 저장할 공간이 없습니다");
}
books[basic] = book;
basic++;
}
//전부검색
public static void readAll(Books[] books) {
System.out.println("----보유 목록의 도서------");
for (int i = 0; i < books.length; i++) {
//방어적 코드
if (books[i] != null) {
System.out.println(books[i].getName() + " , " + books[i].getAuthor());
}
}
}
//도서명 검색
public static void readTitle(Scanner sc, Books[] books) {
System.out.println(">>>>>도서 검색<<<<<");
System.out.println("-------찾을 실 도서의 이름을 검색해주세요------");
String title = sc.nextLine();
boolean findBook = false;
for (int i = 0; i < books.length; i++) {
if (books[i] != null) {
if (books[i].getName().equals(title.trim())) {
System.out.println(books[i].getName() + " , " + books[i].getAuthor());
findBook = true;
break;
}
}
}
}
//삭제
public static void delete(Scanner sc, Books[] books) {
System.out.println(">>>>>>>>>>도서 폐기<<<<<<<<<<<<");
System.out.println("---------도서명을 기입하세요--------");
String title = sc.nextLine();
boolean findBook = false;
for (int i = 0; i < books.length; i++) {
if (books[i] != null) {
if (books[i].getName().equals(title.trim())) {
System.out.println(books[i].getName() + " 폐기 되었습니다.");
books[i] = null;
findBook = true;
break;
}
}
}
}
}// end of class
'JAVA 객체 지향 핵심' 카테고리의 다른 글
(JAVA)메서드 오버로딩 - 13 (1) | 2025.04.21 |
---|---|
(JAVA)전화 번호 관리 프로그램 만들기(연습문제) - 12 (0) | 2025.04.19 |
(JAVA)배열 복습하기-11 (0) | 2025.04.18 |
(JAVA)Array(배열) 에 이해 - 10 (0) | 2025.04.17 |
(JAVA)static 키워드에 이해 - 9 (0) | 2025.04.17 |