[JAVA] 50. 추상클래스 & 인터페이스 (3)영화 예매 프로그램 예제

서회정's avatar
Feb 17, 2025

[JAVA] 50. 추상클래스 & 인터페이스 (3)영화 예매 프로그램 예제

💡
예제 목표
제공된 코드를 비즈니스로 나누고 분석하며 반복하여 타이핑해본다.
프로그램을 절차에 따라 입력하고 실행해보며 구조를 파악한다.
package ex07.ch01; import java.util.ArrayList; import java.util.Scanner; class Movie01 { private String title; private String[] seats; // 1차원 배열로 좌석 관리 public Movie01(String title, int seatCount) { // 책임-> 영화명, 좌석 수 this.title = title; this.seats = new String[seatCount]; // 좌석 배열 생성 for (int i = 0; i < seatCount; i++) { seats[i] = "A" + (i + 1); //좌석 번호 저장 A1~ } } public String getTitle() { return title; } public void showSeats() { System.out.println("\n=== [" + title + "] 좌석 목록 ==="); for (String seat : seats) { if (seat.equals("X")) { System.out.println("[예약됨] "); } else { System.out.println("[" + seat + "]"); } } System.out.println(); //줄바꿈 } public boolean reserveSeat(String seatNumber) { for (int i = 0; i < seats.length; i++) { if (seats[i].equals(seatNumber)) { seats[i] = "X"; //예약 완료 표시 System.out.println(seatNumber + " 좌석이 예약되었습니다."); return true; } } System.out.println("잘못된 좌석 번호이거나 이미 예약된 좌석입니다."); return false; } } public class MovieReservation01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //영화 객체 생성 ArrayList<Movie> movies = new ArrayList<Movie>(); movies.add(new Movie("인셉션", 5)); // 영화명, 좌석 수 movies.add(new Movie("어벤져스", 5)); // 영화명, 좌석 수 movies.add(new Movie("인터스텔라", 5)); // 영화명, 좌석 수 while (true) { System.out.println("\n=== 영화 예약 시스템 ==="); System.out.println("1. 영화 목록보기"); System.out.println("2. 좌석 예약하기"); System.out.println("3. 종료"); System.out.println("메뉴 선택: "); int choice = sc.nextInt(); sc.nextLine(); // 개행 문자 처리 if (choice == 1) { System.out.println("\n=== 영화 목록 ==="); for (int i = 0; i < movies.size(); i++) { System.out.println((i + 1) + ". " + movies.get(i).getTitle()); } } else if (choice == 2) { System.out.println("\n=== 영화 목록 ==="); for (int i = 0; i < movies.size(); i++) { System.out.println((i + 1) + ". " + movies.get(i).getTitle()); } System.out.println("영화 번호 선택: "); int movieChoice = sc.nextInt(); sc.nextLine(); // 개행 문자 처리 if (movieChoice < 1 || movieChoice > movies.size()) { System.out.println("잘못된 선택입니다."); continue; } Movie selectedMovie = movies.get(movieChoice - 1); selectedMovie.showSeats(); System.out.println("예약할 좌석 번호 입력 (예: A1): "); String seatNumber = sc.nextLine(); selectedMovie.reserveSeat(seatNumber); } else if (choice == 3) { System.out.println("프로그램을 종료합니다."); break; } else { System.out.println("잘못된 입력입니다."); } } sc.close(); } }
Share article

clubnerdy