인터페이스_5

호떡·2022년 7월 31일
0

📝관련 실습: 인터페이스와 제어자(MovieTest.java)

  • 영화등록 기능_일부 변경

import java.util.Scanner;

public class MovieTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		IMovieManager mm = MovieManagerImpl.getInstance();
		int sel;
		
		do{
			System.out.print("1. 영화등록\n2. 전체조회\n3. 제목으로 검색\n4. 일반영화 조회\n5. 시리즈영화 조회\n6. 평균상영 시간\n0. 종료\n>>> ");
			sel = sc.nextInt();
			sc.nextLine();
            
			if(sel == 1) {
				System.out.println("1. 일반 영화\n2. 시리즈 영화");
				sel = sc.nextInt();
					if(sel == 1) {
						System.out.println("관리번호를 입력하세요.");
						int id = sc.nextInt();
						sc.nextLine();
						System.out.println("영화 제목을 입력하세요.");
						String title = sc.nextLine();
						System.out.println("영화 감독을 입력하세요.");
						String director = sc.nextLine();
						System.out.println("영화 장르를 입력하세요.");
						String genre = sc.nextLine();
						System.out.println("영화 상영시간을 입력하세요.");
						int runningTime = sc.nextInt();
						
						Movie movie = new Movie(id,title,director,genre,runningTime);
						
						if(mm.add(movie) == true ) {
							System.out.println("["+movie.getTitle()+"]" + " 이/가 등록되었습니다.");
						} else {
							System.err.println("등록 가능한 최대개수 "+MovieManagerImpl.getMaxSize() + "개를 초과하였습니다.");
						}
					} else if(sel == 2) {
						System.out.println("관리번호를 입력하세요.");
						int id = sc.nextInt();
						sc.nextLine();
						System.out.println("영화 제목을 입력하세요.");
						String title = sc.nextLine();
						System.out.println("영화 감독을 입력하세요.");
						String director = sc.nextLine();
						System.out.println("영화 장르를 입력하세요.");
						String genre = sc.nextLine();
						System.out.println("영화 상영시간을 입력하세요.");
						int runningTime = sc.nextInt();
						System.out.println("시리즈 넘버를 입력하세요");
						int seriesNum = sc.nextInt();
						sc.nextLine();
						System.out.println("에피소드를 입력하세요");
						String episode = sc.nextLine();
						
						SeriesMovie movie = new SeriesMovie(id, title, director, genre, runningTime, seriesNum,episode);
						
						if(mm.add(movie) == true ) {
							System.out.println("["+movie.getTitle() +"]"+ " 이/가 등록되었습니다.");
						} else {
							System.err.println("등록 가능한 최대개수 "+MovieManagerImpl.getMaxSize() + "개를 초과하였습니다.");
						}
					}
					
			}
			else if(sel == 2) {
				Movie[] movies = mm.getList();
				for(Movie m : movies) {
					System.out.println(m);
				}
			}
			else if(sel == 3) {
				System.out.println("영화 제목을 입력해주세요");
				String title = sc.nextLine();
				Movie[] movies = mm.searchByTitle(title);
				for(Movie m : movies) {
					System.out.println(m);
				}
			}
			else if(sel == 4) {
				Movie[] movies = mm.getMovies();
				for(Movie m: movies) {
					System.out.println(m);
				}
			}
			else if(sel == 5) {
				Movie[] movies = mm.getSeriesMovies();
				for(Movie m: movies) {
					System.out.println(m);
				}
			}	
			else if(sel == 6) {
				System.out.println(mm.getRunningTimeAvg());
			}
		
		} while(sel != 0);
		
		
	} //main
}//end class


영화등록 기능_일부 변경

원래는 기능과 UI 구분만 하려고 코드를 바꿔보았는데 System.err.println() 도 사용하면서 UI에 그럴싸하게 찍혔다.

// 교수님이 주신 파일에선 이렇게 기능 구현과 UI가 섞여있었다.
public void add(Movie m) {
	if (size < MAX_SIZE) {
		movieList[size] = m;
		size++;
	} else {
		System.out.println(MAX_SIZE + " 이상 저장할 수 없습니다.");	
	}
}
// 이렇게 변경
SeriesMovie movie = new SeriesMovie(id, title, director, genre, runningTime, seriesNum,episode);
						
if(mm.add(movie) == true ) {
	System.out.println("["+movie.getTitle() +"]"+ " 이/가 등록되었습니다.");
} else {
	System.err.println("등록 가능한 최대개수 "+MovieManagerImpl.getMaxSize() + "개를 초과하였습니다.");
}

아쉬운 점이 있다면, 힘들게 영화의 정보들을 다 입력하고나서야 최대 개수를 초과했는지 아닌지 알 수 있다는 것이다. 영화 정보를 다 입력하기 전에 '1. 영화등록'을 눌렀을 때 지금 상태에서 영화를 더 등록할 수 있는지 아닌지 알려주는 기능이 있었으면 좋겠다.

실행 결과는 다음과 같다.

0개의 댓글