예제 #1
0
    def seatBusiness(self, passenger: Passenger):
        """
        :param passenger: Passenger object that needs a seat
        :return: Integer holding the passenger's assigned seat number
        """

        # If there is not at least 1 open seat, returns -1 to indicate full plane
        for i in range(0, 120):
            if self.seatList[i].isAvailable():
                break
            elif i == 119:
                return -1

        # Variable to hold passenger's preferred seat
        passengerPref = passenger.getPref() - 1

        # If the preferred seat is not occupied...
        if self.seatList[passengerPref].isAvailable() and passengerPref != -1:

            # Adds the passenger to that seat, sets rating equal to 0 since preference is granted
            self.seatList[passengerPref].addPassenger(passenger)
            passenger.rating = 0

            # Passenger appended to instance variable list for passengers
            self.passengerList.append(passenger)
            return passengerPref
        else:

            # Checks the business select seats for availability and adds the passenger to the first that is open
            for i in range(0, 12):
                if self.seatList[i].isAvailable():
                    self.seatList[i].addPassenger(passenger)
                    passenger.rating = 0
                    self.passengerList.append(passenger)
                    return i

                # If none of the business select seats are available...
                elif i == 11:

                    # Checks the rest of the seats on the plane and assigns passenger to the first available seat
                    for j in range(12, 120):
                        if self.seatList[j].isAvailable():
                            self.seatList[j].addPassenger(passenger)

                            # Sets passenger rating, then adds them to the passenger list
                            passenger.rating = -5
                            self.passengerList.append(passenger)
                            return j
예제 #2
0
    def seatingAlgorithmTourist(self, passenger: Passenger,
                                passengerTwo: Passenger):
        """
        :param passenger: First passenger to be seated
        :param passengerTwo: Second passenger to be seated
        :return: Integer value for the seat number where each passenger is seated
        """

        # Initializes preference variables
        passengerPref = passenger.getPref() - 1
        prefTwo = passengerTwo.getPref() - 1

        # Initialize variables to check for available seats
        availableSeatOne = -1
        availableSeatTwo = -1
        checkSeats = 0

        # Checks all non-business seats to make sure there are at least two available seats somewhere in the plane for
        # the tourists and stores the available seat values
        for i in range(12, 120):
            if self.seatList[i].isAvailable():
                checkSeats += 1
                if checkSeats == 1:
                    availableSeatOne = i
                if checkSeats == 2:
                    availableSeatTwo = i
                    break

            # If there are not two seats available, returns -1 default values for issue to be handled in GUI
            elif i == 119:
                return -1, -1

        # Checks to see if passenger preferences can be granted and assigns their seats if so
        if (self.seatList[passengerPref].isAvailable() and
                self.seatList[prefTwo].isAvailable()) and (passengerPref != -1
                                                           and prefTwo != -1):
            self.seatList[passengerPref].addPassenger(passenger)
            self.seatList[prefTwo].addPassenger(passengerTwo)

            # Sets passenger ratings and adds them to the list
            passenger.rating = 10
            passengerTwo.rating = 10
            self.passengerList.append(passenger)
            self.passengerList.append(passengerTwo)
            return passengerPref, prefTwo

        # Checks to see if window/middle seat combinations on the left side of the plane are available
        # If so, assigns passengers to those seats
        for i in range(12, 120, 6):
            if self.seatList[i].isAvailable() and self.seatList[
                    i + 1].isAvailable():
                self.seatList[i].addPassenger(passenger)
                self.seatList[i + 1].addPassenger(passengerTwo)

                # Sets passenger ratings, adds them to the passenger list
                passenger.rating = 15
                passengerTwo.rating = 15
                self.passengerList.append(passenger)
                self.passengerList.append(passengerTwo)
                return i, i + 1

        # Checks the window/middle combinations on the right side of the plane
        # Assigns passengers to those seats if possible
        for j in range(16, 120, 6):
            if self.seatList[j].isAvailable() and self.seatList[
                    j + 1].isAvailable():
                self.seatList[j].addPassenger(passenger)
                self.seatList[j + 1].addPassenger(passengerTwo)

                # Sets passenger ratings and adds them to passenger list
                passenger.rating = 15
                passengerTwo.rating = 15
                self.passengerList.append(passenger)
                self.passengerList.append(passengerTwo)
                return j, j + 1

        # Checks the whole plane for two side-by-side seats to keep the tourists together and assigns those seats
        # if possible
        for i in range(12, 120):
            if self.seatList[i].isAvailable() and self.seatList[
                    i + 1].isAvailable():
                self.seatList[i].addPassenger(passenger)
                self.seatList[i + 1].addPassenger(passengerTwo)

                # Sets passenger ratings and adds them to the passenger list
                passenger.rating = 10
                passengerTwo.rating = 10
                self.passengerList.append(passenger)
                self.passengerList.append(passengerTwo)
                return i, i + 1

        # Assigns passengers to the first two available seats if no other combinations could be found
        # Sets ratings, appends them to passenger list
        self.seatList[availableSeatOne].addPassenger(passenger)
        self.seatList[availableSeatTwo].addPassenger(passengerTwo)
        self.passengerList.append(passenger)
        self.passengerList.append(passengerTwo)
        passenger.rating, passengerTwo.rating = -10, -10
        return availableSeatOne, availableSeatTwo