HashMap 이용한 데이터 관리 프로그램 직접 작성하기 ✅✅✅
Run
Application.class
package com.reminder.collection_practice.exhibition.run;
import com.reminder.collection_practice.exhibition.view.ExhibitMenu;
public class Application {
public static void main(String[] args) {
new ExhibitMenu().mainMenu();
}
}
Model DTO
ExhibitDTO.class
package com.reminder.collection_practice.exhibition.model.dto;
public class ExhibitDTO {
private String title;
private int category;
private int takingPlaceIn;
public ExhibitDTO() {}
public ExhibitDTO(String title, int category, int takingPlaceIn) {
super();
this.title = title;
this.category = category;
this.takingPlaceIn = takingPlaceIn;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getCategory() {
return category;
}
public void setCategory(int category) {
this.category = category;
}
public int getTakingPlaceIn() {
return takingPlaceIn;
}
public void setTakingPlaceIn(int takingPlaceIn) {
this.takingPlaceIn = takingPlaceIn;
}
@Override
public String toString() {
String categoryName = "";
if(category == 1) {
categoryName = "전시";
} else if(category == 2) {
categoryName = "체험";
} else if(category == 3) {
categoryName = "박람회";
}
String place = "";
if(takingPlaceIn == 1) {
place = "서울";
} else if(takingPlaceIn == 2) {
place = "강원";
} else if(takingPlaceIn == 3) {
place = "부산";
}
return "분류 : " + categoryName + ", 전시회명 : " + title + ", 개최 지역 : " + place;
}
}
View
ExhibitMenu.class
package com.reminder.collection_practice.exhibition.view;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import com.reminder.collection_practice.exhibition.controller.ExhibitManager;
import com.reminder.collection_practice.exhibition.model.dto.ExhibitDTO;
public class ExhibitMenu {
Scanner scan = new Scanner(System.in);
private ExhibitManager exhManager = new ExhibitManager();
public ExhibitMenu() {}
public void mainMenu() {
mainMenu:
while(true) {
System.out.println("===== 이벤트 상품 관리 프로그램 =====");
System.out.println("1. 새 이벤트 추가");
System.out.println("2. 이벤트 조회");
System.out.println("3. 전체 이벤트 조회");
System.out.println("4. 이벤트 삭제");
System.out.println("0. 프로그램 종료");
System.out.print("메뉴 선택 : ");
int menu = scan.nextInt();
scan.nextLine();
switch(menu) {
case 1 : insertExhibit(); break;
case 2 : searchExhibit(); break;
case 3 : selectMap(); break;
case 4 : deleteExhibit(); break;
case 0 : System.out.println("프로그램을 종료합니다."); break mainMenu;
}
}
}
public void insertExhibit() {
System.out.print("이벤트명 : ");
String title = scan.nextLine();
System.out.println("# 카테고리(1. 전시 | 2. 체험 | 3. 박람회)");
System.out.print("카테고리 : ");
int category = scan.nextInt();
scan.nextLine();
System.out.println("# 지역 구분(1. 서울 | 2. 강원 | 3. 부산)");
System.out.print("개최 지역 : ");
int takingPlaceIn = scan.nextInt();
scan.nextLine();
exhManager.insertExhibit(new ExhibitDTO(title, category, takingPlaceIn));
}
public void searchExhibit() {
System.out.print("이벤트명 검색 : ");
Map<Integer, ExhibitDTO> searchMap = exhManager.searchExhibit(scan.nextLine());
if(searchMap.isEmpty()) {
System.out.println("조회한 전시·체험·박람회 이벤트가 존재하지 않습니다.");
} else {
Iterator<Integer> it = searchMap.keySet().iterator();
while(it.hasNext()) {
int key = it.next();
System.out.println("이벤트 No. : " + key + ", " + searchMap.get(key));
}
}
}
public void selectMap() {
Map<Integer, ExhibitDTO> exhibitMap = exhManager.selectMap();
if(exhibitMap.isEmpty()) {
System.out.println("이벤트가 없습니다.");
} else {
Iterator<Integer> it = exhibitMap.keySet().iterator();
while(it.hasNext()) {
Integer key = it.next();
System.out.println("이벤트 No. : " + key + ", " + exhibitMap.get(key));
}
}
}
public void deleteExhibit() {
System.out.print("이벤트 No. : ");
int result = exhManager.deleteExhibit(scan.nextInt());
if(result > 0) {
System.out.println("성공적으로 삭제되었습니다.");
} else {
System.out.println("삭제할 이벤트가 존재하지 않습니다.");
}
}
}
Controller
ExhibitManager.class
package com.reminder.collection_practice.exhibition.controller;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import com.reminder.collection_practice.exhibition.model.dto.ExhibitDTO;
public class ExhibitManager {
private HashMap<Integer, ExhibitDTO> exhibitMap = new HashMap<>();
public void insertExhibit(ExhibitDTO exh) {
int lastNo = 0;
Iterator<Integer> it = exhibitMap.keySet().iterator();
while(it.hasNext()) {
lastNo = it.next();
}
exhibitMap.put(lastNo + 1, exh);
}
public Map<Integer, ExhibitDTO> searchExhibit(String title) {
Map<Integer, ExhibitDTO> searchMap = new HashMap<>();
Iterator<Entry<Integer, ExhibitDTO>> it = exhibitMap.entrySet().iterator();
while(it.hasNext()) {
Entry<Integer, ExhibitDTO> entry = it.next();
if(entry.getValue().getTitle().contains(title)) {
searchMap.put(entry.getKey(), entry.getValue());
}
}
return searchMap;
}
public Map<Integer, ExhibitDTO> selectMap() {
return exhibitMap;
}
public int deleteExhibit(int exhibitNo) {
ExhibitDTO old = null;
Iterator<Integer> it = exhibitMap.keySet().iterator();
while(it.hasNext()) {
if(it.next() == exhibitNo) {
old = exhibitMap.remove(exhibitNo);
break;
}
}
return old != null ? 1 : 0;
}
}
'Java' 카테고리의 다른 글
[자바의 정석] Ch 7. OOP II 연습문제 풀이 (0) | 2022.01.16 |
---|---|
[JAVA] 14-2. 입출력 | 보조 스트림 | 직렬화 (0) | 2022.01.14 |
[자바의 정석] Ch 7. 객체 지향 프로그래밍 II 강의 메모 (0) | 2022.01.13 |
[JAVA] 14-1. 입출력 | 스트림 | InputStream-OutputStream | Reader-Writer (0) | 2022.01.12 |
[JAVA] 13-2. 예외처리 | finally | try-with-resource | 오버라이딩 (0) | 2022.01.12 |