1. 문제
9. 비행기 예약 프로그램을 작성하라. 이 문제는 여러 개의 클래스와 객체들을 다루는 연습을 위한 것이다. 클래스 사이의 상속 관계는 없다. 항공사 이름은 '한성항공'이고, 8개의 좌석을 가진 3대의 비행기로 서울 부산 간 운항 사업을 한다. 각 비행기는 하루에 한 번만 운항하며 비행 시간은 7시, 12시, 17시이다. 비행기 예약 프로그램은 다음의 기능을 가진다.
-예약 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받아 예약한다.
-취소 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받고 예약을 취소한다.
-예약 보기 : 예약된 좌석 상황을 보여준다.
2. 결과

3. 코드
4. 설명
힌트에서 설명했듯이 AirlineBook 클래스, Schedule 클래스, Seat 클래스, Console 클래스, 이 4개의 클래스 함수를 작성하였습니다.
지금은 편의상 한 cpp 파일에 다 작성을 하였지만 본래 문제에서도 말하였듯이 여러 개의 클래스를 다루는 연습을 하기 위해서라도 각 클래스를 각각 다른 파일의 구현하는 것이 좋습니다. 여기서는 하나의 파일의 다 작성하였고, 어느 클래스의서는 다른 클래스 변수를 사용하기 때문에 클래스를 선언하는 순서가 중요합니다.
- Console 클래스 : 메뉴를 물어보고 선택한 숫자를 return 해주는 menu 멤버 함수와 시간 대를 물어보고 어느 시간 대를 선택하였는지 return 해주는 time_menu 멤버 함수를 구현하였습니다.
- Seat 클래스 : 좌석 클래스로서 name, number를 멤버 변수로 가집니다. name은 이름을, number은 각각 좌석 번호를 저장하는 변수 입니다. 또한 생성자에서 name = "---"로 초기화 해주므로서 예약되지 않은 좌석이 출력될 때 "---"가 출력되도록 합니다. 그 밖에 이름을 변경하는 setName 멤버 함수와 이름을 return하는 getName 멤버 함수를 가집니다.
- Schedule 클래스 : Seat 변수를 가지며, 생성자에서 크기가 8인 동적 배열을 선언합니다. 그리고 좌석을 예약할 시 또는 취소할 시 해당하는 시간 대의 좌석 상황을 보여주기 위한 show 멤버 함수를 가집니다. show 멤버 함수는 num 매개변수를 하나 입력 받아서 해당하는 시간 대의 좌석 현황만 보여줍니다. 그 밖에 좌석을 예약, 취소 시 이름을 수정하기 위한 setN 멤버 함수와 해당 좌석에 이름을 return하는 getN 멤버 함수를 가집니다.
- AirlineBook 클래스 : Schedule 변수를 가지며, 생성자에서 크기가 3인 동적 배열을 선언합니다. 전체적인 프로그램을 구현한 program 멤버 함수를 가지며, program 멤버 함수에서 전체 프로그램을 작성하였기 때문에 main 함수에서는 AirlineBook 변수를 동적으로 생성한 후 "->"를 사용하여서 program 멤버 함수를 실행하기만 하면 됩니다.
이건 여담이지만 파일이 날라가서 코드를 다시 작성하였는데 문제를 안 읽고해서인지는 몰라도 상속관계로 구현하였다가 실패하고 잠시 해매면서 다시 작성하였내요 ㅎㅎ; 그래도 느낌상 처음보다 더 잘 만든 코드인 것 같습니다. 여러분들도 나중에 한번 씩 다시 해보시는 것이 좋을 것 같습니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 9장 1번, 2번 (0) | 2019.05.02 |
---|---|
명품 C++ programming 8장 Open Challenge (0) | 2019.04.29 |
명품 C++ programming 실습문제 8장 8번 (0) | 2019.04.28 |
명품 C++ programming 실습문제 8장 7번 (0) | 2019.04.28 |
명품 C++ programming 실습문제 8장 6번 (0) | 2019.04.28 |