반응형
// Movie 클래스
public class Movie {
private String title; // 영화 제목
private String opening; // 상영 시작일
public Movie() { // 기본 생성자
super();
}
public Movie(String title, String opening) { // 매개변수 생성자
super();
this.title = title;
this.opening = opening;
}
public String getTitle() { // getter/setter 메소드
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getOpening() {
return opening;
}
public void setOpening(String opening) {
this.opening = opening;
}
@Override // 오버라이딩
public String toString() {
return "Movie [title=" + title + ", opening=" + opening + "]";
}
}
// MoiveController 클래스 - 사용자가 입력했을 때 실행될 수 있게 컨트롤하는 클래스
import java.util.ArrayList;
import com.cd.list.mvc.model.vo.Movie;
public class MovieController {
private ArrayList<Movie> list = new ArrayList<>(); // Movie 배열 객체 생성
{ // 초기화 블록: 객체를 생성할 때 무조건 수행되는 블록
list.add(new Movie("살인의 추억", "2000년 2월 4일"));
list.add(new Movie("다크나이트", "2013년 8월 27일"));
list.add(new Movie("라라랜드", "2018년 10월 11일"));
list.add(new Movie("알라딘", "2020년 6월 15일"));
}
// 새로운 영화 추가 메소드
public void insertMovie(String title, String opening) {
list.add(new Movie(title, opening)); // add() : 배열 추가
}
// 영화 전체 조회 메소드
public ArrayList<Movie> showAll(){
return list; // 리스트 전체를 반환
}
// 특정 영화 조회 메소드
public ArrayList<Movie> searchMovie(String keyword){
// 조회된 리스트를 모을 searched
ArrayList<Movie> searched = new ArrayList<>();
for(int i = 0; i < list.size(); i++) {
// 영화 제목에 keyword가 포함되어 있는지 묻는 구문
if(list.get(i).getTitle().contains(keyword)) {
// contains() : 문자열에 해당 문자가 포함되어 있는지 확인하는 메소드
// 포함되어 있으면 새로 만든 searched 리스트에 추가한다.
searched.add(list.get(i));
}
} return searched; // 한번에 반환
}
// 특정 영화 삭제 메소드
public void deleteMovie(String title) {
for(int i = 0; i < list.size(); i++) {
// list의 i번째 인덱스에 있는 제목이 title과 같을 때
if(list.get(i).getTitle().equals(title)) { // equals() : 문자열 비교
list.remove(i); // rmeove() : 삭제
}
}
}
// 특정 영화 수정 메소드
public void changeMovie(String title, String newTitle, String newOpening){
for(int i = 0; i < list.size(); i++) {
// list의 i번째 인덱스에 있는 제목이 title과 같을 때
if(list.get(i).getTitle().equals(title)) {
list.get(i).setTitle(newTitle); // setXXX() : 내용 수정
list.get(i).setOpening(newOpening);
}
}
}
}
// MovieView 클래스 - 사용자가 보는 화면
import java.util.ArrayList;
import java.util.Scanner;
import com.cd.list.mvc.controller.MovieController;
import com.cd.list.mvc.model.vo.Movie;
public class MovieView {
private Scanner sc = new Scanner(System.in); // 스캐너로 입력받기
private MovieController mc = new MovieController();
public void menu() {
while(true) { // 잘못된 숫자를 입력했을 때 프로그램 재실행할 수 있도록 while문 작성
System.out.println("==== MOVIE MENU ====");
System.out.println("1. 영화 추가");
System.out.println("2. 전체 영화 조회");
System.out.println("3. 영화 조회");
System.out.println("4. 영화 삭제");
System.out.println("5. 영화 수정");
System.out.println("9. 프로그램 종료");
System.out.println("메뉴 번호 입력: ");
int num = sc.nextInt(); // 메뉴 번호 변수 num
sc.nextLine(); // 엔터 날리기
switch(num) {
case 1: insertMovie();
break;
case 2: showAll();
break;
case 3: searchMovie();
break;
case 4: deleteMovie();
break;
case 5: changeMovie();
break;
case 9: System.out.println("프로그램을 종료합니다.");
return;
default: System.out.println("잘못된 숫자를 입력하였습니다. \n다시 입력해주세요.");
}
}
}
// 영화 추가 화면
public void insertMovie() {
System.out.println("==== 영화 추가 ====");
System.out.println("영화 제목 입력: ");
String title = sc.nextLine(); // 영화 제목 변수 title
System.out.println("영화 개봉일 입력: ");
String opening = sc.nextLine(); // 영화 개봉일 변수 opening
mc.insertMovie(title, opening);
System.out.println("영화가 추가되었습니다.");
}
// 전체 영화 조회 화면
public void showAll() {
System.out.println("==== 전체 영화 조회 ====");
// Movie 배열 객체를 list로 놓고 mc(MovieController)의 showAll()을 호출
ArrayList<Movie> list = mc.showAll();
if(list.isEmpty()) { // list가 비어있으면
System.out.println("조회할 영화가 없습니다.");
} else { // list에 하나라도 있으면
for(Movie m : list) { // for(값을받을타입 변수명 : 접근할 배열or컬렉션) {}
System.out.println(m);
}
} System.out.println("-조회 끝-");
}
// 영화 조회 화면
public void searchMovie() {
System.out.println("==== 영화 조회 ====");
System.out.println("영화 제목 입력: ");
String keyword = sc.nextLine(); // 영화 제목 변수 keyword
ArrayList<Movie> list = mc.searchMovie(keyword);
// 입력받은 keyword를 mc의 searchMovie() 메소드에서 list와 비교한 후 출력
System.out.println("조회 결과: ");
if(list.isEmpty()) { // list에 없으면
System.out.println("조회할 영화가 없습니다.");
} else { // list에 없으면
for(Movie m : list) {
System.out.println(m);
}
}
}
// 영화 삭제 화면
public void deleteMovie() {
System.out.println("==== 영화 삭제 ====");
System.out.println("영화 제목 입력: ");
String title = sc.nextLine(); // 영화 제목 변수 title
mc.deleteMovie(title); // 삭제
System.out.println("삭제되었습니다.");
}
// 영화 수정 화면
public void changeMovie() {
System.out.println("==== 영화 수정 ====");
System.out.println("수정할 영화 제목 입력: ");
String title = sc.nextLine(); // 수정할 영화 제목 변수 title
System.out.println("새로운 영화 제목 입력: ");
String newTitle = sc.nextLine(); // 새로운 영화 제목 newTitle
System.out.println("새로운 영화 개봉일 입력: ");
String newOpening = sc.nextLine(); // 새로운 영화 개봉일 newOpening
mc.changeMovie(title, newTitle, newOpening);
System.out.println("수정되었습니다.");
}
}
// 실행시키는 Run 클래스
import com.cd.list.mvc.view.MovieView;
public class MovieRun {
public static void main(String[] args) {
new MovieView().menu();
}
}
반응형