📝관련 실습: 인터페이스와 제어자(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. 영화등록'을 눌렀을 때 지금 상태에서 영화를 더 등록할 수 있는지 아닌지 알려주는 기능이 있었으면 좋겠다.
실행 결과는 다음과 같다.