Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

Feature/search menu #28

Closed
wants to merge 20 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions include/Dataset.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ class Dataset {
std::vector<AirportRef> getAirportsFromCity(const City& city);
std::vector<CountryRef> getCountriesAirportFliesTo(const Airport& airport);
std::vector<CountryRef> getCountriesCityFliesTo(const City& city);
std::vector<Flight> searchFlightsFromAirport(std::string airPortCode);
float numberOfFlightsByCity();
float numberOfFlightsByAirline();
std::vector<AirportInfo> searchDestinationsFromAirport(std::string airPortCode);
std::vector<AirportRef> searchTopNAirPortsWithGreatestTraffic(int n);

private:
CountrySet countrySet_;
Expand Down
1 change: 0 additions & 1 deletion include/Flight.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class AirportInfo;
class FlightInfo {
public:
explicit FlightInfo(AirlineRef airline, const AirportInfo& src, const AirportInfo& dest);

const AirlineRef &getAirline() const;
double getDistance() const;

Expand Down
13 changes: 11 additions & 2 deletions include/Program.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,21 @@ class Program {
Program();

void launch();
void displayAllCountries();
void displayAllAirports();
void displayAllAirlines();
void displayAirlinesByCountry();
void displayCitiesByCountry();
void displayAirportsByCity();
void displayFlightsFromAirport();
void displayCountriesFlyingToAirport();
void displayCountriesFlyingToCity();

private:
Dataset dataset_;

void displayMainMenu();

void searchMenu();
void statisticsMenu();
static int receiveOption(int max);
CountryRef receiveCountry() const;
CityRef receiveCity() const;
Expand Down
55 changes: 55 additions & 0 deletions src/Dataset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,61 @@ vector<CountryRef> Dataset::getCountriesCityFliesTo(const City& city) {
return countries1;
}

vector<Flight> Dataset::searchFlightsFromAirport(string airPortCode) {
AirportRef airport = getAirport(airPortCode);
vector<Flight> flights;
if (airport.lock()) {
for (const auto& flight : airport.lock()->getAdj()){
flights.push_back(flight);
}
}
return flights;
}

float Dataset::numberOfFlightsByCity() {
int cities = getCities().size();
int flights = 0;
for(const auto& city : getCities()){
for(const auto& airport : city.lock()->getAirports()){
flights += airport.lock()->getAdj().size();
}
}
return flights/cities;
}

float Dataset::numberOfFlightsByAirline() {
int airlines = getAirlines().size();
int flights = 0;
for(const auto& airport : getAirports()){
flights += airport->getAdj().size();
}
return flights/airlines;
}

vector<AirportInfo> Dataset::searchDestinationsFromAirport(string airPortCode) {
AirportRef airport = getAirport(airPortCode);
vector<AirportInfo> flights;
if (airport.lock()) {
for (const auto& flight : airport.lock()->getAdj()){
const AirportInfo& targetAirport = flight.getDest().lock()->getInfo();
flights.push_back(targetAirport);
}
}
return flights;
}

vector<AirportRef> Dataset::searchTopNAirPortsWithGreatestTraffic(int n) {
vector<AirportRef> airportTrafficList;
vector<AirportRef> airportsList;
sort(airportTrafficList.begin(), airportTrafficList.end(), [](const AirportRef& a, const AirportRef& b) {
return a.lock()->getAdj().size() > b.lock()->getAdj().size();
});
for(int i = 0; i < n; i++){
airportsList.push_back(airportTrafficList[i]);
}
return airportsList;
}

const AirlineSet& Dataset::getAirlines() const {
return airlineSet_;
}
Expand Down
1 change: 1 addition & 0 deletions src/Flight.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const AirlineRef &FlightInfo::getAirline() const {
return airline_;
}


double FlightInfo::getDistance() const {
return distance_;
}
Expand Down
Loading