# Language/Java

명품 JAVA 프로그래밍 4장 6번

명품 자바 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<9System.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<9System.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<9System.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