일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 내배카
- 페이징
- 국비학원
- 정처기
- 권한변경
- 국민취업지원제도
- 페이지 재사용
- redirect
- 국취제
- github
- 비밀번호암호화
- forward
- 인코딩
- jsp기본
- 검색기능
- 회원정보수정
- live server 환경설정
- emmet환경설정
- 별찍기
- 비밀번호변경
- Git
- 회원탈퇴
- jdbc설정
- 배열
- mvc
- 로그아웃
- 내일배움카드
- jdbc환경설정
- 관리자회원조회
- 입력메소드
- Today
- Total
기록
*25일차 실습 본문
## 컬렉션 실습문제1
@실습문제1
*** 도서 관리 프로그램 ***
1. 새 도서 추가
=> addBook(inputBook() 이 리턴한 객체) 실행
2. 도서정보 정렬후 출력
=> sortedBookList() 실행
=> Book[] 리턴받아 printBookList(Book[]) 실행
3. 도서 삭제
=> inputBookTitle(삭제할 도서명) 실행
=> index를 리턴받아 deleteBook(index) 실행
4. 도서 검색출력
=> inputBookTitle(검색할 도서명) 실행
=> index 리턴받아 printBook(index) 실행
5. 전체 출력
=> printAll() 실행
6. 끝내기
>>추가, 삭제, 검색에 필요한 키정보는 키보드로 입력받도록 함
//Book 객체의 필드값을 키보드로 입력받아 초기화하고 객체 리턴
+ inputBook() : Book
//삭제 또는 검색을 위한 도서 타이틀을 키보드로 입력받아 리턴
+ inputBookTitle() : String
>> 끝내기 메뉴 선택 전까지는 메뉴 반복 실행되도록 처리함
---------------------------
package com.collection.list.book.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import com.collection.list.book.model.compare.AscCategory;
import com.collection.list.book.model.vo.Book;
public class BookManager {
private ArrayList<Book> bookList = new ArrayList<>();
{
bookList.add(new Book("200", 2, "나미야 잡화점의 기적", "히가시노 게이고"));
bookList.add(new Book("100", 3, "파리의 아파트", "기욤 뮈소"));
bookList.add(new Book("400", 1, "ABCDE", "도레미"));
bookList.add(new Book("300", 2, "미중전쟁", "김진명"));
bookList.add(new Book("500", 1, "JAVA 삽질하기", "김동현"));
}
public BookManager() {
super();
}
public BookManager(ArrayList<Book> bookList) {
this.bookList = bookList;
}
// 1.새 도서 추가
public void addBook(Book book) {
bookList.add(book);
}
// 3.도서 삭제
public void deleteBook(int index) {
if (index != -1)
bookList.remove(index);
else
System.out.println("해당 도서 없음");
}
// 4.도서명으로 검색하기
public int searchBook(String title) {
for (int i = 0; i < bookList.size(); i++) {
Book b = (Book) bookList.get(i);
if (title.equals(b.getTitle()))
return 1;
}
return -1;
}
// 출력
public void printBook(int index) {
if (index != -1) {
System.out.println((Book) bookList.get(index));
} else {
System.out.println("해당 도서 없음");
}
}
//5.전체 출력
public void printAll() {
for (int i = 0; i < bookList.size(); i++) {
System.out.println((Book) bookList.get(i));
}
}
// 2.도서정보 정렬 후 출력
public Book[] sortedBookList() {
//List를 직접 정렬하게 되면, 실제 리스트의 저장순서(index)가 바뀐다.
//정렬프로그램은 보통 배열복사를 통해 이루어진다.
Book[] bookarr = new Book[bookList.size()];
bookList.toArray(bookarr);
Arrays.sort(bookarr,new AscCategory());
return bookarr;
}
public void printBookList(Book[] bookArr) {
for (int i = 0; i < bookArr.length; i++) {
System.out.println(bookArr);
}
}
}
------------------------------------------------
package com.collection.list.book.model.compare;
import java.util.Comparator;
import com.collection.list.book.model.vo.Book;
public class AscCategory implements Comparator <Book>{
@Override
public int compare(Book o1, Book o2) {
return o1.getCategory()-o2.getCategory();
}
}
------------------------------------------------------
package com.collection.list.book.model.vo;
public class Book {
private String bNo;
private int category;
private String title;
private String author;
public Book() {
super();
}
public Book(String bNo, int category, String title, String author) {
super();
this.bNo = bNo;
this.category = category;
this.title = title;
this.author = author;
}
public String getbNo() {
return bNo;
}
public void setbNo(String bNo) {
this.bNo = bNo;
}
public int getCategory() {
return category;
}
public void setCategory(int category) {
this.category = category;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "번호: "+bNo+"\t카테고리: "+category+"\t제목: "+title+"\t저자: "+author;
}
public int compareTo(Book other) {
return this.getbNo().compareTo(other.getbNo());
}
}
----------------------------------------------------------
package com.collection.list.book.run;
import java.util.Iterator;
import java.util.Scanner;
import com.collection.list.book.controller.BookManager;
import com.collection.list.book.model.vo.Book;
public class TestBookManager {
Scanner sc = new Scanner(System.in);
BookManager bm = new BookManager();
public static void main(String[] args) {
TestBookManager tm = new TestBookManager();
tm.mainMenu();
System.out.println("---이용해주셔서 감사합니다.---");
}
public void mainMenu() {
String menu = "**** 도서 관리 프로그램 ****\r\n"
+ " 1. 도서 추가\r\n"
+ " 2. 도서 정보 정렬 후 출력\r\n"
+ " 3. 도서 삭제\r\n"
+ " 4. 도서 검색 출력\r\n"
+ " 5. 전체 출력\r\n"
+ " 6. 끝내기\r\n\n"
+ "***************\r\n"
+ ">> 메뉴 선택: ";
while(true) {
System.out.print(menu);
// int index;
int choice = sc.nextInt();
switch (choice) {
case 1:
System.out.println("---1.도서 추가하기---");
bm.addBook(inputBook());
System.out.println("---추가 완료 !---");
System.out.println();
break;
case 2:
System.out.println("---2.도서 정보 정렬 후 출력하기---");
bm.printBookList(bm.sortedBookList());
System.out.println("---출력 완료 !---");
System.out.println();
break;
case 3:
System.out.println("---3.도서 삭제하기---");
bm.deleteBook(bm.searchBook(inputBookTitle()));
System.out.println("---삭제 완료 !---");
break;
case 4:
System.out.println("---4.도서를 검색한 후 출력하기---");
bm.printBook(bm.searchBook(inputBookTitle()));
break;
case 5:
System.out.println("---5.전체 출력하기---");
bm.printAll();
System.out.println();
break;
case 6:
System.out.println("---6.시스템 종료---");
return;
default:
System.out.println("잘못 입력");
break;
}
}
}
// public Book inputBook() {
// Book book = new Book();
// try {
// System.out.println("제목 입력");
// // String title = sc.next();
// book.setTitle(sc.next());
// sc.next();
// }catch(InputMismatchException e) {
// System.out.println("잘못 입력함.");
// }
// try {
// System.out.println("저자 입력");
// book.setAuthor(sc.next());
// // String author = sc.next();
// }catch(InputMismatchException e) {
// System.out.println("잘못 입력함.");
// }
//
// return book;
// }
public String inputBookTitle() {
System.out.println("제목 입력: ");
sc.nextLine();
return sc.nextLine();
}
public Book inputBook() {
System.out.print("책 번호 입력: ");
String bNo = sc.next();
System.out.print("카테고리 입력(1.인문 2.자연과학 3.의료 4.기타) : ");
int category = sc.nextInt();
sc.nextLine();
System.out.print("제목 입력: ");
String title = sc.nextLine();
System.out.print("저자 입력: ");
String author = sc.nextLine();
return new Book(bNo,category,title,author);
}
}
## 컬렉션 실습문제1
@실습문제1
- 클래스명 : com.collection.list.book.model.vo.Book
//Field
- bNo : String //도서번호
- category : int //도서분류코드(1.인문/2.자연과학/3.의료/4.기타)
- title : String //책제목
- author : String //저자
//기본생성자, 매개변수 있는 생성자, getters and setters 작성함
//toString() 오버라이딩함
- 정렬 처리를 위한 클래스 작성함 : java.util.Comparator 인터페이스 상속받음
=> compare() 오버라이딩함
//카테고리 기준 오름차순 정렬용
com.collection.list.book.model.compare.AscCategory
- 관리용 클래스 : com.collection.list.book.controller.BookManager
//Field
- bookList : ArrayList
//기본생성자 : bookList 객체 생성함
//매개변수있는 생성자 : 다른 리스트를 전달받아.
// bookList 객체의 초기값으로 사용함
//Method
+ addBook(book:Book) : void //리스트에 객체 추가
+ deleteBook(int index) : void //리스트에서 객체 제거
+ searchBook(String title) : int
//도서명이 일치하는 객체를 찾아 해당 인덱스를 리턴
//도서명이 일치하는 객체가 리스트에 없으면, -1 리턴함
+ printBook(index:int) : void //인덱스 위치의 객체의 정보를 출력함
+ printAll():void //목록정보 모두 출력
+ sortedBookList():Book[]
// 해당 카테고리순 오름차순정렬해서 객체배열 리턴함
+ printBookList(Book[] br) : void
//객체 배열 출력, for each 문 사용
- 클래스명 : com.collection.list.book.run.TestBookManager.java >> main() 포함
>> menu() 메소드 추가함
public static void menu(){}
=> 다음 내용이 출력되게 함
=> BookManager 클래스 객체 생성함
*** 도서 관리 프로그램 ***
1. 새 도서 추가
=> addBook(inputBook() 이 리턴한 객체) 실행
2. 도서정보 정렬후 출력
=> sortedBookList() 실행
=> Book[] 리턴받아 printBookList(Book[]) 실행
3. 도서 삭제
=> inputBookTitle(삭제할 도서명) 실행
=> index를 리턴받아 deleteBook(index) 실행
4. 도서 검색출력
=> inputBookTitle(검색할 도서명) 실행
=> index 리턴받아 printBook(index) 실행
5. 전체 출력
=> printAll() 실행
6. 끝내기
>>추가, 삭제, 검색에 필요한 키정보는 키보드로 입력받도록 함
//Book 객체의 필드값을 키보드로 입력받아 초기화하고 객체 리턴
+ inputBook() : Book
//삭제 또는 검색을 위한 도서 타이틀을 키보드로 입력받아 리턴
+ inputBookTitle() : String
>> 끝내기 메뉴 선택 전까지는 메뉴 반복 실행되도록 처리함
@실습문제2
실습문제1버젼을 맵으로 해서 만들어본다.
클래스 import시 문제1 패키지의 entity클라스를 공유함.
- 클래스명 : com.collection.map.book.Controller.MapBookManager.java
//Field
- booksMap : HashMap //도서번호를 키로 사용함
//기본생성자 : 맵 객체 생성함
//매개변수있는 생성자 : 다른 맵을 전달받아.
//booksMap 객체의 초기값으로 생성함
//Method
+ putBook(book:Book) : void //맵에 객체 추가, 도서번호를 키로 사용함
+ deleteBook(key:String) : void //맵에서 객체 제거
+ searchBook(String title) : String : entrySet() 사용
//도서명이 일치하는 객체의 도서번호를 리턴
//도서명이 객체가 맵에 없으면, null 리턴함
+ displayAll():void //맵정보 모두 출력 : keySet() 사용
+ sortedBookMap():Book[]
// 해당 도서명순으로 오름차순정렬해서 객체배열 리턴함
+ printBookMap(Book[] br) : void
//객체 배열 출력, for each 문 사용
+ printBook(key:String) : void //
- 실행용 : com.collection.map.book.TestBookManager.java
=> 실행은 [문제 2] 와 같은 방식으로 작동되게 함
package com.collection.map.book.controller;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import com.collection.list.book.model.compare.AscCategory;
import com.collection.list.book.model.vo.Book;
public class BookManager {
private Map<String,Book> bookMap = new HashMap<>();
{
bookMap.put("100", new Book("100", 3, "파리의 아파트", "기욤 뮈소"));
bookMap.put("200", new Book("200", 2, "나미야 잡화점의 기적", "히가시노 게이고"));
bookMap.put("300", new Book("300", 2, "미중전쟁", "김진명"));
bookMap.put("400", new Book("400", 1, "ABCDE", "도레미"));
bookMap.put("500", new Book("500", 1, "JAVA 삽질하기", "김동현"));
}
public BookManager(){}
public BookManager(Map<String,Book> bookMap) {
this.bookMap = bookMap;
}
public void addBook(Book book){
bookMap.put(book.getbNo(), book);
}
public void deleteBook(String key){
if(key != null)
bookMap.remove(key);
else
System.out.println("해당 도서가 존재하지 않습니다.");
}
public String searchBook(String title){
//Map을 열람하는 방법 3가지
//1. keySet()
//2. values()
//3. entrySet()
Set<Map.Entry<String, Book>> entrySet = bookMap.entrySet();
Iterator<Map.Entry<String, Book>> it = entrySet.iterator();
// Iterator<Map.Entry<String, Book>> it = bookMap.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String, Book> entry = (Map.Entry<String, Book>)it.next();
Book b = (Book)entry.getValue();
if(title.equals(b.getTitle()))
return b.getbNo();
}
return null;
}
public void printBook(String key){
if(key!=null)
System.out.println((Book)bookMap.get(key));
else
System.out.println("해당 도서가 존재하지 않습니다.");
}
public void printAll(){
Set<String> keySet = bookMap.keySet();
// for(String key : keySet) {
// Book value = bookMap.get(key);
// System.out.println(value);
// }
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()) {
String key = iter.next();
Book value= bookMap.get(key);
System.out.println(value);
}
}
public Book[] sortedBookMap(){
Book[] bookArr = new Book[bookMap.size()];
Iterator<Map.Entry<String, Book>> it = bookMap.entrySet().iterator();
int index = 0;
while(it.hasNext()){
Map.Entry<String, Book> entry = (Map.Entry<String, Book>)it.next();
bookArr[index++] = (Book)entry.getValue();
}
//배열정렬에 배열과 배열기준객체를 제공한다
//<Book> void java.util.Arrays.sort(Book[] a, Comparator<? super Book> c)
Arrays.sort(bookArr, new AscCategory());
// Arrays.sort(bookArr, Collections.reverseOrder(new AscCategory()));
return bookArr;
}
public void printBookMap(Book[] bookArr){
for (Book book : bookArr) {
System.out.println(book);
}
}
}
-----------------------------------------
package com.collection.map.book.run;
import java.util.Scanner;
import com.collection.map.book.controller.BookManager;
import com.collection.list.book.model.vo.Book;
public class TestBookManager {
Scanner sc = new Scanner(System.in);
BookManager bm = new BookManager();
public static void main(String[] args) {
TestBookManager t = new TestBookManager();
t.menu();
System.out.println("프로그램을 종료합니다.");
}
public void menu() {
String menu = "*** 도서 관리 프로그램 ***\n"
+ "1. 새 도서 추가\n"
+ "2. 도서정보 정렬후 출력\n"
+ "3. 도서 삭제\n"
+ "4. 도서 검색출력\n"
+ "5. 전체 출력\n"
+ "6. 끝내기\n"
+ "메뉴선택 : ";
while(true){
System.out.print(menu);
int selected = sc.nextInt();
switch (selected) {
case 1: bm.addBook(inputBook()); break;
case 2: bm.printBookMap(bm.sortedBookMap()); break;
case 3: bm.deleteBook(bm.searchBook(inputBookTitle())); break;
case 4: bm.printBook(bm.searchBook(inputBookTitle())); break;
case 5: bm.printAll(); break;
case 6: return;
default: System.out.println("잘못 입력하셨습니다."); break;
}
}
}
public String inputBookTitle() {
sc.nextLine();
System.out.print("책제목을 입력하세요 : ");
return sc.nextLine();
}
a
public Book inputBook() {
System.out.print("책번호 : ");
String bNo = sc.next();
System.out.print("책카테고리 (1.인문/2.자연과학/3.의료/4.기타) : ");
int category = sc.nextInt();
sc.nextLine();
System.out.print("책제목 : ");
String title = sc.nextLine();
System.out.print("저자 : ");
String author = sc.nextLine();
return new Book(bNo, category, title, author);
}
}
'학원 > 실습' 카테고리의 다른 글
*34일차 실습 (0) | 2022.03.28 |
---|---|
*26일차 실습 (0) | 2022.03.02 |
*24일차 ncs (수강생 평가) -실기 (0) | 2022.02.25 |
*24일차 ncs (수강생 평가) -필기 (0) | 2022.02.25 |
*23일차 실습 (0) | 2022.02.24 |