명품 자바 프로그래밍 4장 실습문제 12번 - myeongpum jaba peulogeulaeming 4jang silseubmunje 12beon

12번 : 간단한 콘서트 예약 시스템을 만들어보자. 다수의 클래스를 다루고 객체의 배열을 다루기에는 아직 자바 프로그램 개발이 익숙하지 않은 초보자에게 다소 무리가 있을 것이다. 그러나 반드시 넘어야 할 산이다. 이 도전을 통해 산을 넘어갈 수 있는 체력을 키워보자. 예약 시스템의 기능은 다음과 같다.

- 공연은 하루에 한 번 있다.

- 좌석은 S석, A석, B석으로 나뉘며, 각각 10개의 좌석이 있다.

- 예약 시스템의 메뉴는 "예약", "조회", "취소", "끝내기"가 있다.

- 예약은 한 자리만 가능하고, 좌석 타입, 예약자 이름, 좌석 번호를 순서대로 입력받아 예약한다.

- 조회는 모든 좌석을 출력한다.

- 취소는 예약자의 이름을 입력받아 취소한다.

- 없는 이름, 없는 번호, 없는 메뉴, 잘못된 취소 등에 대해서 오류 메시지를 출력하고 사용자가 다시 시도하도록 한다.

package varyeun; import java.util.Scanner; class Rsystem{ //Reserve system 이라는 뜻임 //좌석 나타내는 것 때문에 class로 만들고 기능은 메소드로 넣기 String name[] = {"---","---","---","---","---","---","---","---","---","---"}; //초기화 해줌 void print() { for(int i=0;i<name.length;i++) { System.out.print(name[i]+" "); } } //좌석 상태 보여주기 , 조회 void reserve(String who, int sitnum) { name[sitnum-1] = who; } //예약 void cancle(String who) { for(int i=0;i<name.length;i++) { if(name[i].equals(who)) { name[i]="---"; //지워버림 return ; //나가버려야 밑에 안걸림 } else if(i==9) System.out.println("없는 이름입니다."); //어차피 위 조건부터 거르니까 i==9로만 해도 됨 //name[9].equal(who)면 이미 걸러져서 취소되고, 이 조건은 들어오지도 않음 //해봤으니 걱정 ㄴㄴ } } //취소 } public class varyeun { public static void main(String [] args) { Scanner scanner = new Scanner(System.in); Rsystem Ssystem = new Rsystem(); //여기서 배열 하면 안됨 //S석 system 이라는 뜻임 //이렇게 일일이 해야 상태를 뽑고 예약 등등 분리해서 가능 Rsystem Asystem = new Rsystem(); Rsystem Bsystem = new Rsystem(); System.out.println("명품콘서트홀 예약 시스템입니다."); for(;;) { System.out.print("예약:1, 조회:2, 취소:3, 끝내기:4>>"); int num = scanner.nextInt(); if (num==4) return ; //끝내기 부터 거르기 else if(num==1) { System.out.print("좌석구분 S(1), A(2), B(3)>>"); int sit = scanner.nextInt(); if (sit == 1) { System.out.print("S>> "); Ssystem.print(); System.out.print("\n이름>>"); String who = scanner.next(); System.out.print("번호>>"); int sitnum = scanner.nextInt(); Ssystem.reserve(who,sitnum); } else if(sit == 2){ System.out.print("A>> "); Asystem.print(); System.out.print("\n이름>>"); String who = scanner.next(); System.out.print("번호>>"); int sitnum = scanner.nextInt(); Asystem.reserve(who,sitnum); } else if(sit==3) { System.out.print("B>> "); Bsystem.print(); System.out.print("\n이름>>"); String who = scanner.next(); System.out.print("번호>>"); int sitnum = scanner.nextInt(); Bsystem.reserve(who,sitnum); } else { System.out.println("없는 번호 입니다."); continue; //이러면 다시 위로 올라가서 메뉴 고르게 함 } } else if(num==2) { System.out.print("S>> "); Ssystem.print(); System.out.print("\nA>> "); //메소드가 한줄 안 띄고 끝나서 앞에 \n 해줘야함 Asystem.print(); System.out.print("\nB>> "); Bsystem.print(); System.out.println("\n<<<조회를 완료하였습니다.>>>"); } else if(num==3) { System.out.print("좌석구분 S(1), A(2), B(3)>>"); int sit = scanner.nextInt(); if (sit == 1) { System.out.print("S>> "); Ssystem.print(); System.out.print("\n이름>>"); String who = scanner.next(); Ssystem.cancle(who); } else if (sit == 2) { System.out.print("A>> "); Asystem.print(); System.out.print("\n이름>>"); String who = scanner.next(); Asystem.cancle(who); } else if (sit == 3) { System.out.print("B>> "); Bsystem.print(); System.out.print("\n이름>>"); String who = scanner.nextLine(); Bsystem.cancle(who); } } else System.out.println("없는 메뉴 입니다."); } } }

명품 자바 프로그래밍 4장 실습문제 12번 - myeongpum jaba peulogeulaeming 4jang silseubmunje 12beon

명품 자바 프로그래밍 4장 실습문제 12번 - myeongpum jaba peulogeulaeming 4jang silseubmunje 12beon

나는 이런 문제 풀 때 겁을 내는 성격이고, 못 할까봐 걱정하고, 못 풀면 또 내 스스로한테 좀 실망할까봐 더 걱정하는.. 그런 성격이다.

그러나 저자가 문제를 제시하면서부터 언젠가 꼭 넘어야 할 산이고, 무리일 수 있다고 미리 말해주면서 격려해주는데 이는 이 책의 가장 큰 장점이자 내가 좋아하는 부분이다.

이 게시글을 빌려 두 저자분들께 감사를 드린다.