Programming Language/Java

사용자에게 영화 메뉴를 입력받아 실행하기

Ma_Sand 2022. 3. 15. 23:40
반응형
// 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();
    }

}
반응형