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
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