Added on - 16 Sep 2019
Project Specification4.1.Imagine you work for a small Irish software company that has won the tender to deliver a fuelmanagement software solution to a large Irish Airline. The airline is entering the European air freightcargo business and wants a software tool to manage their fuel purchasing strategy. Each week, anaircraft will fly up to six trips. The airplane will start and end in the same home airport each weekand can optionally visit one of the other airports in the itinerary twice. The company has severaldifferent aircrafts that have different fuel capacities and the cost of fuel varies from airport toairport. Given a list of 5 airports (including to the home airport) that a given plane needs to visit in aweek, the most economic route must be found.• The distance between airports is calculated as the great circle distance between them• The cost of fuel is assumed to be 1 euro per 1 litre at Airports where the currency is Euros• The cost in of fuel in airports where the local currency is not euros is assumed to be the exchangerate from the local currency to euro. e.g. in you travel from London to Dublin and the exchange rateis GBP£1 = e1.4029 and you purchase 1000 litres of fuel it will cost e1402.4.2. Product Features. The program with take file inputs and give file outputs using CSV formats. Itshould also have a basic GUI to allow input of an individual itinerary. At a minimum, the programshould work with a command line interface to interact with the user – this is not necessary if youhave file and/or GUI interfaces.4.3. Code style and efficiency. The program code should be created in a logical and efficientmanner. This includes: efficient use of data structures (think for loops rather than repeated code),code re-use in functions and classes (breaking code up into logical chunks that keep code-blocks andfiles reasonable length i.e. no 1000 line files!), efficient storage and searching of data (thinkdictionaries).4.4. Class Model Structure. Create classes that model the problem and abstract the main programfrom the underlying data structure. For example, the mainline code shouldn’t need to understandanything about parsing a CSV file or calculating great circle distance or currency rates calculation.This means it should be apparent that you have you created classes that model the problem andassigned useful attributes and methods to the classes. The solution should define classes for holdingdata that will be used in the problem, e.g. there will need to be a class for Currency and Airport?(HINT: Yes, there will!)4.5.Errors and Exception Handling. How robust is your program to errors? Have you implementederror checking and exception handling, especially to handle unexpected user inputs or data? e.g. doyou have error handling to identify and warn if the wrong number of airports are contained in theinput, or one or more of the airports is not a valid airport in your list?4.6.Comments. Is all of your code well commented? Are the variable names andmethods/functions meaningful?4.7.Testing. Test code to run on and demo the program under a variety of valid and errorconditions that will exercise your program and its exception handling.