명품 자바 Programming
Chapter4 Ex6
Q :
간단한 공연 예약 시스템을 만들어보자. 다수의 클래스를 다루고 객체의 배열을 다루기에는 아직 자바로 프로그램 개발이 익숙하지 않은 초보자에게 다소 무리가 있을 것이다. 그러나 반드시 넘어야 할 산이다. 이 도전 주제를 통해 산을 넘어갈 수 있는 체력을 키워보자. 공연 예약 시스템의 내용은 다음과 같다.
- 공연은 하루에 한 번 있다.
- 좌석은 S석, A석, B석 타입이 있으며 모두 10석의 좌석이 있다.
- 공연 예약 시스템의 메뉴는 “예약”, “조회”, “취소”, “끝내기”가 있다.
- 예약은 한 자리만 예약할 수 있고 좌석 타입, 예약자 이름, 좌석 번호를 순서대로 입력 받아 예약한다.
- 조회는 모든 종류의 좌석을 표시한다.
- 취소는 예약자의 이름을 입력하여 취소한다.
- 없는 이름, 없는 번호, 없는 메뉴, 잘못된 취소 등에 대해서 오류 메시지를 출력하고 사용자가 다시 시도하도록 한다.
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | package chap4ex; import java.util.Scanner; class Seat{ private String[] sClass = new String[10]; private String[] aClass = new String[10]; private String[] bClass = new String[10]; Seat(){ for(int i=0;i<10;i++){ sClass[i] = "---"; aClass[i] = "---"; bClass[i] = "---"; } } //num은 좌석번호 배열은 0~9니까 num-1위치에 name 저장 public void setsSeat(int num, String name){ sClass[num-1] = name; } public void setaSeat(int num, String name){ aClass[num-1] = name; } public void setbSeat(int num, String name){ bClass[num-1] = name; } public void showsSeat(){ System.out.print("S>> "); for(int i=0;i<10;i++){ System.out.print(sClass[i]); if(i<9) System.out.print(" "); } System.out.println(); } public void showaSeat(){ System.out.print("A>> "); for(int i=0;i<10;i++){ System.out.print(aClass[i]); if(i<9) System.out.print(" "); } System.out.println(); } public void showbSeat(){ System.out.print("B>> "); for(int i=0;i<10;i++){ System.out.print(bClass[i]); if(i<9) System.out.print(" "); } System.out.println(); } public void cancelSeat(int select, String name){ switch(select){ case 1: for(int i=0;i<10;i++){ if(sClass[i].equals(name)) sClass[i] = "---"; } break; case 2: for(int i=0;i<10;i++){ if(aClass[i].equals(name)) aClass[i] = "---"; } break; case 3: for(int i=0;i<10;i++){ if(bClass[i].equals(name)) bClass[i] = "---"; } break; } } } class Run{ //S10좌석 A15좌석 B20좌석 Scanner in = new Scanner(System.in); Seat seat = new Seat(); public void run(){ while(true){ Scanner in = new Scanner(System.in); System.out.print("예약(1), 조회(2), 취소(3), 끝내기(4) >>"); //시스템 기능 선택 int choice = in.nextInt(); if(choice <1 || choice >4){ System.out.println("잘 못된 번호 입력입니다."); continue; } switch(choice){ case 1: this.reserve(); break; case 2: this.show(); break; case 3: this.cancel(); break; case 4: System.out.println("프로그램을 종료합니다."); return; } } } public void reserve(){ //select는 좌석선택, num은 좌석번호 String name; System.out.print("좌석구분 S<1>, A<2>, B<3>>>"); int select = in.nextInt(); if(select<1||select>3){ System.out.println("좌석을 잘 못 입력하였습니다."); return; } switch(select){ // 좌석 종류를 선택하는 조건문 번호 예외처리할것 case 1: seat.showsSeat(); System.out.println("이름>>"); name = in.next(); System.out.println("번호>>"); int num = in.nextInt(); // if 그 자리가 ---가 아니라면 자리가 차있는것. break문으로 // 빠져나오도록 해야함 seat.setsSeat(num, name); break; case 2: seat.showaSeat(); System.out.println("이름>>"); name = in.next(); System.out.println("번호>>"); num = in.nextInt(); seat.setaSeat(num, name); break; case 3: seat.showbSeat(); System.out.println("이름>>"); name = in.next(); System.out.println("번호>>"); num = in.nextInt(); seat.setbSeat(num, name); break; } } public void show(){ seat.showsSeat(); seat.showaSeat(); seat.showbSeat(); System.out.println("<<<조회를 완료하였습니다.>>>"); } public void cancel(){ int select, num; //select는 좌석선택, num은 좌석번호 String name; System.out.print("좌석구분 S<1>, A<2>, B<3>>>"); select = in.nextInt(); if(select <1 || select>3){ System.out.println("잘 못된 좌석선택입니다."); return; } switch(select){ case 1: seat.showsSeat(); System.out.println("이름>>"); name = in.next(); seat.cancelSeat(select,name); break; case 2: seat.showaSeat(); System.out.println("이름>>"); name = in.next(); seat.cancelSeat(select,name); break; case 3: seat.showbSeat(); System.out.println("이름>>"); name = in.next(); seat.cancelSeat(select,name); break; } } } public class q6 { public static void main(String[] args) { Run start = new Run(); start.run(); } } | cs |
Key Point
좌석 클래스와 공연 예약 시스템 클래스로 나누어 구현하였다.
주석 참고
유용하셨다면 공감 버튼 ↓ 눌러주세요!
728x90
'# Language > Java' 카테고리의 다른 글
명품 JAVA 프로그래밍 5장 2번 (0) | 2018.07.21 |
---|---|
명품 JAVA 프로그래밍 5장 1번 (0) | 2018.07.21 |
명품 JAVA 프로그래밍 5장 OpenChallenge (0) | 2018.07.20 |
명품 JAVA 프로그래밍 4장 5번 (0) | 2018.07.20 |
명품 JAVA 프로그래밍 4장 4번 (0) | 2018.07.20 |
명품 JAVA 프로그래밍 4장 3번 (0) | 2018.07.20 |
명품 JAVA 프로그래밍 4장 2번 (0) | 2018.07.20 |