[OOP] 공항관리시스템

kpu_airport_control_system

2018년도 1학기 객체지향언어 팀 프로젝트#

프로젝트명 : 공항관리시스템#

팀명 : 공대생#

팀원

  1. 임현성 (Lim HS) 학번 : 2015150031 팀장 스케쥴 관리 담당 C++ 코딩 (User, Leavelist, Entrylist, Blacklist)

  2. 김한상 (Han Sang Banetta Kim) banetion@gmail.com 학번 : 2013154012 Java Poting 담당 C++ 코딩 (Main, Main_Func, TRiFF, RFID)

  3. 유현승 (Yoo HS) 학번 : 2015152024 C++ 코딩 (Flight Schedule, Control Tower, Ticket)

  4. 류무원 학번 : 2017154013 C++ 코딩 (Entry item, Leaveitem item)

시나리오#

사례 제목 : 공항 관리 시스템(Airport Control System)#

공항에서 전반적인 업무(이용자의 입 출국, 항공기의 입출항, 불법 체류자 관리)를 관리하는 프로그램인 공항관리시스템(Airport Control System[ACS])을 개발하려고 한다. 우선 파일 입력을 통해 금일 출국자, 입국자, 입항 항공기, 출항 항공기를 입력받는다. 이용자는 여권번호, 이름, 나이, 국적을 가지고 있고 입출국시에는 항공권이 필요하다. 항공권에는 입국일, 출국일, 좌석이 있고 좌석의 종류에는 퍼스트, 비즈니스, 이코노미가 있다. 그리고 이용자는 입국 시 입국자이며 입국일, 출국일, 입국자 수화물을 가지고 있다. 출국 시에는 출국자로서 입국일, 출국일, 출국자 수화물을 가지고 있다. 입국자 수화물은 RFID를 가지고 있다. RFID에는 가격과 구입 일자가 기록되어 있다. 입국 절차를 진행할 시에 금일 공항 입국자들의 정보로 입국이 가능한지 확인한다. 우선 입국자가 블랙리스트에 포함되어 있는지 확인한다. 입국자가 블랙리스트에 기록되어 있으면 입국을 불허한다. 이때 해당 입국자의 블랙리스트 사유를 출력한다. 블랙리스트에 해당하지 않을 시 입국자 수화물에서 금지 물품에 해당하는 물품을 모두 폐기한다. 이후 입국자의 항공편에서 출국 일과 입국 일을 받아와서 두 날짜 사이에 구매한 수화물이 있는지 RFID를 이용하여 구분하고 해당 기간에 구입한 물건이 있으면 관세를 부과한다. 관세는 구매 총액과 관세 총액으로 이루어져 있다. 이때 구매 물품이 20만 원 이하인 경우 관세 품목에서 제외한다. 이 모든 부분은 1명의 이용자에 대한 입국 절차가 끝나면 계속 진행할 것인지 종료할 것인지 의사를 물어본다. 출국 절차를 진행할 시에 금일 공항 출국자들의 정보로 출국이 가능한지 확인한다. 우선 출국자가 블랙리스트에 포함되어 있는지 확인한다. 출국자가 블랙리스트에 기록되어 있으면 출국을 불허한다. 이때 해당 출국자의 블랙리스트 사유를 출력한다. 블랙리스트에 해당하지 않을 시 출국자 수화물에서 금지 물품에 해당하는 물품을 모두 폐기하고 출국을 허용한다. 이 모든 부분은 1명의 이용자에 대한 출국 절차가 끝나면 계속 진행할 것인지 종료할 것인지 의사를 물어본다. 불법 체류자 관리를 진행할 시에는 금일 기준으로 해당 공항을 통해 체류 중인 외국인 입국자의 목록을 출력한다. (향후 있을 불법체류자 단속을 위해 정보를 관리함.) 금일 입출항 목록 메뉴에서는 오늘 계획되어 있는 비행 일정을 확인할 수 있다. 비행 일정은 목적지, 좌석, 비행기로 이루어져 있다. 항공기 입출항 관리 메뉴에서는 금일 입출항 항공기에 대해 전반적인 관리가 이루어진다. 항공기 출입항은 기후 단계, 활주로 사용가능여부를 통해 이루어진다. 먼저 기후 단계는 5단계로 이루어져 있으며, 기상청에 요청하여 날씨정보를 받아온다. 1-3단계는 출항이 가능하고, 4-5단계는 출항이 불가하다. 활주로는 총 4개가 있으며 이용 가능한 활주로가 존재할 때까지 입출항 지연이 된다. 즉, 기후 단계가 1-3단계이고 사용 가능한 활주로가 존재 시 입출항이 가능하다. 만약 입출항이 불가능한 상태의 항공기가 존재하면 사유를 출력하고 입출항 완료까지 계속 진행한다.

사례 분석#

  1. 주어진 사례에서 명사를 뽑아낸다. -> 클래스 및 멤버변수 후보

    이용자, 여권번호, 이름, 나이, 국적, 입 출국, 항공권, 입국일, 출국일, 퍼스트 비즈니스, 이코노미, 입국, 입국자 수화물, 출국, 출국자 수화물, RFID, 가격, 구입 일자 입국자, 출국자, 출국 절차, 비행 일정, 목적지, 비행기, 블랙리스트, 사유, 금지 물품, 좌석 입국 절차, 외국인, 불법 체류, 체류 외국인, 관세 항공기 관리, 일정, 항공기 출항, 기후 단계, 활주로, 기상청, 날씨정보, 출항

  2. 추려진 명사들 간의 포함 관계를 분석한다. -> 클래스 및 멤버변수 결정

    1. 이용자 (여권번호, 이름, 나이 국적, 항공권) ->  ‘항공권’은 구성 관계로 구현.
      
    2. 출국자 (입국일, 출국일, 출국자 수화물) ->  ‘출국자 수화물’은 구성 관계로 구현.
      
    3. 입국자 (입국일, 출국일, 입국자 수화물) ->  ‘입국자 수화물’은 구성 관계로 구현.
      
    4. 블랙리스트 (여권번호, 사유)
      
    5. 출국자 수화물 (금지물품 여부)
      
    6. 입국자 수화물 (금지물품 여부, RFID) ->  ‘RFID’는 구성 관계로 구현.
      
    7. 항공권 (입국일, 출국일, 좌석)
      
    8. RFID (가격, 구입일자)
      
    9. 관세 (구매 총액, 관세 총액)
      
    10. 비행 일정(목적지, 좌석, 비행기) -> ‘좌석’은 구성 관계로 구현.
  3. 주어진 사례에서 동사를 뽑아낸다. -> 멤버함수 후보

    09th 문장 : (블랙리스트에 기록되어 있는 이용자의 출국을) 불허한다. 10th 문장 : (블랙리스트 사유를) 출력한다. 11th 문장 : (금지 물품을) 폐기한다. 12th 문장 : (관세를) 부과한다. 21th 문장 : (불법 체류자를) 출력한다. 22th 문장 : (비행 일정을) 확인한다. 26th 문장 : (날씨정보를) 받아온다. 27th 문장 : (출항이) 불가하다. 28th 문장 : (출항이) 지연된다. 30th 문장 : (불가 사유를) 출력한다.

  4. 클래스별 멤버함수 분류 -> 멤버함수 결정

    1. 이용자 : 여권번호, 이름, 나이, 국적, 항공편을 생성한다.
      

    블랙리스트를 여권번호로 확인한다. 2) 출국자 : 출국일, 입국일, 출국자 수화물을 생성한다. 출국자 수화물과 메시지 패싱 관계로 금지물품을 폐기한다. 3) 입국자 : 출국일, 입국일, 입국자 수화물을 생성한다. 입국자 수화물과 메시지 패싱 관계로 금지물품을 폐기한다. 불법체류여부를 확인한다. 4) 블랙리스트 : 여권번호, 사유를 생성한다. 이용자와 메시지 패싱 관계로 블랙리스트 여부를 확인한다. 5) 출국자 수화물 : 금지물품 여부를 생성한다. 6) 입국자 수화물 : 금지물품 여부를 생성한다. RFID정보를 생성한다. 7) 항공편 : 입국일, 출국일, 좌석을 생성한다. 8) RFID : 가격, 구입일자를 생성한다. 항공권의 입출국일을 받아 관세 부여물품에 해당하는지 확인한다. 9) 관세 : 입국자와 메시지 패싱 관계로 구매 총액을 계산한다. 구매 총액으로 관세 총액을 계산한다. 10) 비행일정 : 비행기 입출항 목록을 생성한다.

UML#

img

개발결과#

github 바로가기 img img img img img