본문 바로가기
IT/기술(C,C++,JAVA)

정말 쉬운 JAVA를 활용한 좌석 예약 프로그램 만들기

by ghostzoominn 2020. 8. 20.

따라하면 다되는 JAVA를 활용한 좌석 예약 프로그램 예제

오늘은 JAVA를 활용하여 간단한 좌석 예약 프로그램을 만드는 방법에 대해 알아보겠습니다.

 

필요한 기능으로는 예약, 조회, 취소 정도가 있습니다.

 

여러 프로그램에서 다양하게 활용되는 예약, 조회, 취소에 대한 기능을 간단히 알아보며, 예제와 함께 실습 해 봅시다.

 

1. 소스코드를 어디에 만들고 추가해야할까?

소스코드가 너무 길기 때문에 필요한 부분만 본문에 표시하였습니다. 

 

완전한 코드가 필요하신 분들은 첨부파일을 다운로드 하셔서 확인 하시기 바랍니다.

 

소스코드를 붙혀넣거나 추가 할 위치는 아래와 같습니다.( pakage 명은 reservation으로 만들었습니다.)

소스코드 작성 위치

2. 오늘의 예제는?

 간단한 공연 예약 시스템 (PRS)을 만들기
 공연 예약 시스템 (PRS)을 만들어보자. 조건은 다음과 같다.

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

 - 좌석은 S석, A석, B석 타입이 있으며 각각 10석, 15석, 20석의 좌석이 있다.

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

 - “예약”은 한자리만 예약할 수 있고 예약시 좌석 타입, 예약자 이름, 좌석 번호를 순서대로 입력받아 예약한다.

 - “조회”는 모든 종류의 좌석을 표시한다.

 - “취소”는 예약자의 이름을 입력하여 취소한다.

 - “끝내기”는 바로 PRS 종료
 - 없는 이름, 없는 번호, 없는 메뉴, 잘못된 취소 등에 대해서 오류 메시지를 출력하고 사용자가 다시 시도하도록 한다.

 

위와 같은 예제를 지금부터 풀어보도록 하겠습니다.

 

3. 클래스 구성

 1. main 클래스
 : Reserve 클래스의 객체를 생성하고, Reserve클래스의 run() 메소드를 실행시키는 메인 클래스.


 2. Reserve 클래스
 :  SeatType 클래스를 상속하며, 사용자에게 메뉴번호를 받아 프로그램을 분기시키는 기능을 포함.
프로그램을 작동시키는 run() 메소드를 포함한다.


 3.  Seat 클래스

 :  SeatType 클래스에서 필요한 기능들을 포함.
자리를 초기화 하는 생성자, 예약자를 할당하는 메소드 seatPerson(), 예약자 이름을 받는 메소드 getName(), 좌석 번호를 받는 메소드 getSeatNumber(), 이미 예약되어있는지를 판별하는 메소드 seatChk(), 예약을 취소하는 cancelChk() 메소드를 포함한다.


4. SeatType 클래스

 : Seat 클래스를 상속하며, Reserve 클래스에서 메뉴를 분기할 때, 필요한 메뉴의 기능을 포함.
좌석을 예약 할 때 사용하는 메소드 book(), 좌석을 조회 할 때 사용하는 메소드 check(), 좌석을 취소 할 때 사용하는 메소드 cancel(), 프로그램을 종료 할 때 사용하는 end() 메소드를 포함한다. 

4. main 클래스는 어떻게 구성될까?

아래는 메인클래스 소스코드입니다.

 

package reservation; 

public class main { 

public static void main(String[] args) { 

Reserve PRS = new Reserve(); // Reserve 클래스의 객체 생성 

PRS.run(); //PRS의 run() 메소드를 실행 
} 
}

5. Reserve 클래스는 어떻게 구성될까?

아래는 Reserve 클래스 소스코드입니다.

 

package reservation;



import java.util.*;



public class Reserve extends SeatType { 

int run(){ //run() 메소드 
int num; // 메뉴번호를 저장 

while(true) 
{ 
Scanner input = new Scanner(System.in);

System.out.print("예약(1), 조회(2), 취소(3), 끝내기(4) >> ");

num = input.nextInt(); // 메뉴번호를 사용자에게 입력 받음. 

switch(num) // 입력한 숫자에 따라 메뉴시작 
{

case 1: 
book(s,a,b); // seatType에 있는 book()메소드를 사용 
break; 
case 2: 
check(s,a,b); // seatType에 있는 check()메소드를 사용  
break; 
case 3: 
cancel(s,a,b); // seatType에 있는 cancel()메소드를 사용 
break; 
case 4: 
end(); // seatType에 있는 end()메소드를 사용 
break; 
default:

System.out.println("잘못입력하셧습니다.");

break;

} 
} 
} 

}

 

6. Seat 클래스는 어떻게 구성될까?

아래는 Seat 클래스에서 가장 중요한 예약을 취소하는 메소드의 일부입니다.

 

전체 코드는 첨부파일을 통해 확인 하실 수 있습니다.

 

int cancleChk(int num, String name){ // 예약을 취소하는 메소드 

switch(num) 
{ 
case 1: 
while(true) 
{ 

for(i=0; i<10; i++) 
{if(name.equals(s[i][0])) //같은 이름의 예약자가 있으면 예약을 취소시킴 
{ 
s[i][0] = "--- "; 
s[i][1] = "0"; 
break; 
} 
}


if(i == 10) // 같은 이름의 예약자가 없을 경우 
{ 
System.out.println("예약목록이 없습니다. 다시 입력해주세요!"); 
return 0; 
} 
else //같은 이름의 예약자가 있어 취소를 했을 경우 
{

System.out.println("예약이 취소되었습니다!");

break; 

} 

} 
break; 
}

 

7. SeatType 클래스는 어떻게 구성될까?

아래는 SeatType 클래스에서 가장 중요한 좌석을 조회할 때 사용하는 메소드입니다.

 

전체 코드는 첨부파일을 통해 확인하실 수 있습니다.

void check(String[][] s, String[][] a, String[][] b){ // 조회를 할 때 사용하는 메소드 
System.out.print("S>> "); 
for(int i=0; i<10; i++) //s석의 좌석 현황을 출력

System.out.print(s[i][0]);

System.out.println();



System.out.print("A>> "); 
for(int i=0; i<15; i++) //a석의 좌석 현황을 출력

System.out.print(a[i][0]);

System.out.println();



System.out.print("B>> "); 
for(int i=0; i<20; i++) //b석의 좌석 현황을 출력

System.out.print(b[i][0]);

System.out.println();



System.out.println("<<<조회를 완료하였습니다.>>>"); 
}

 

8. 좌석 예약 프로그램 실행화면

좌석예약 프로그램 실행화면

 

오늘은 간단한 좌석 예약프로그램을 만드는 코드에 대해 알아보았습니다.

 

seat.zip
0.00MB

 

댓글