INFO1113 Assignment 1 Due: 23 April 2021, 11:59PM AEST This assignment is worth 12% of your final grade. Task Description – Flight Scheduler In this assignment, you will create a Flight Scheduler application in the Java programming language. The program will be a tool for airlines to use to schedule flights between different locations, producing timetable plans, and an easy way to check routing between cities on multiple flights. You must create at least three classes: FlightScheduler, Flight and Location, for which a scaffold and description have been provided to you. The FlightScheduler class will contain the main entry point of the application (static main function). You are encouraged to ask questions on Ed under the assignments category if you are unsure of the specification – but staff members will not be able to do any coding or debugging in this assignment for you. As with any assignment, make sure that your work is your own, and do not share your code or solutions with other students. Working on your assignment You can work on this assignment on your own computer or the lab machines. It is important that you continually back up your assignment files onto your own machine, external drives, and in the cloud. You are encouraged to submit your assignment on Ed while you are in the process of completing it. By submitting you will obtain some feedback of your progress on the sample test cases provided. INFO1113 Page 2 of 18 Implementation details Write a program in Java to implement the Flight Schedular application that accepts input from the user via standard input. The terminal interface allows the user to interact with the program, to give it input and receive output. The available commands are described below in the section ‘Commands’. There are three main classes you must implement, but you may also create more if you wish. FlightScheduler class This class will contain the main entry point of your program (static main function) and store links to all the data relevant to the application. It will be a container for the flight schedule, which is made up of a list of Flights. It should also contain a list of Locations. The flight schedule is only a single week, Monday to Sunday, which repeats. Assume all times are in UTC, so you do not have to account for timezone differences at different locations. Flight class The Flight type should contain all data relevant to a particular flight, methods that perform operations on a Flight or multiple Flights. Attributes will be the flight ID, departure time, source and destination locations, capacity, ticket price, number of passengers booked, and anything else you think is relevant. Flight duration is determined by the distance between the start and end locations, calculated using the Haversine Formula, and assuming the average speed of an aircraft is 720km/h. The initial ticket price is calculated using an average cost of $30, plus 4x the demand coefficient differential between locations, per 100km distance. For example, if the starting location has demand coefficient of -1 and the end has -1, it remains $30 per 100km. If the starting location has -1 and the end has 1, then it’s $38 per 100km. If the starting location has 1 and end has -1, it would be $22 per 100km. Ticket price changes when the flight starts to fill up. For the first 50% of seats, the price decreases linearly to 80% of its original value by the time the flight is half full. For the next 20% of seats, the price increases linearly back to 100% of its original value. For the last 30% of seats, ticket price increases by an inverse- tan curve to 110% of its original value. = ൞ −0.4 + 1, 0 < ≤ 0.5 + 0.3, 0.5 < ≤ 0.7 0.2 × tanିଵ(20 − 14) + 1 , 0.7 < ≤ 1 = × 100 × (30 + 4൫௧ − ൯) where T = ticket price y = multiplier for ticket price to determine current value x = proportion of seats filled (booked/capacity) d = flight distance in kilometres (haversine formula result) Dto = demand coefficient for destination location Dfrom = demand coefficient for starting location INFO1113 Page 3 of 18 Location class The Location type should contain all data relevant to a particular location, and methods that perform operations on a Location or multiple Locations. Attributes will be the location name, latitude and longitude coordinates, lists of arriving and departing flights, and a demand coefficient. Location names must be unique (case insensitive). Latitude must be within [-85, 85] and longitude must be within [- 180,180], both in degrees. The demand coefficient is a number between -1 and 1 (inclusive) which represents whether there is a net inflow or outflow of passengers from this location (negative means passengers want to leave, positive means they want to come). It factors into the calculation that determines the ticket price for a particular flight. Assume each location has only one runway – that is, no flights can be scheduled to arrive or depart within an hour of another at a particular location. Multi-runway airports can be represented by multiple locations in such a system (eg. Heathrow-1, Heathrow-2, etc). If there is a scheduling conflict, you must check for conflicts in the following order: If there is a clashing flight departing within an hour of this flight’s departure time, at the source If there is a clashing flight arriving within an hour of this flight’s departure time, at the source If there is a clashing flight departing within an hour of this flight’s arrival time, at the destination If there is a clashing flight arriving within an hour of this flight’s arrival time, at the destination INFO1113 Page 4 of 18 Commands FLIGHTS - list all available flights ordered by departure time, then departure location name FLIGHT ADD
- add a flight FLIGHT IMPORT/EXPORT - import/export flights to csv file FLIGHT - view information about a flight (from->to, departure arrival times, current ticket price, capacity, passengers booked) FLIGHT BOOK - book a certain number of passengers for the flight at the current ticket price, and then adjust the ticket price to reflect the reduced capacity remaining. If no number is given, book 1 passenger. If the given number of bookings is more than the remaining capacity, only accept bookings until the capacity is full. FLIGHT REMOVE - remove a flight from the schedule FLIGHT RESET - reset the number of passengers booked to 0, and the ticket price to its original state. LOCATIONS - list all available locations in alphabetical order LOCATION ADD - add a location LOCATION - view details about a location (it’s name, coordinates, demand coefficient) LOCATION IMPORT/EXPORT - import/export locations to csv file SCHEDULE - list all departing and arriving flights, in order of the time they arrive/depart DEPARTURES - list all departing flights, in order of departure time ARRIVALS - list all arriving flights, in order of arrival time TRAVEL [sort] [n] - list the nth possible flight route between a starting location and destination, with a maximum of 3 stopovers. Default ordering is for shortest overall duration. If n is not provided, display the first one in the order. If n is larger than the number of flights available, display the last one in the ordering. can have other orderings: TRAVEL cost - minimum current cost TRAVEL duration - minimum total duration TRAVEL stopovers - minimum stopovers TRAVEL layover - minimum layover time TRAVEL flight_time - minimum flight time HELP – outputs this help string. EXIT – end the program. Note: All commands may be case insensitive. However Location names when stored in the location class, should display the name as initially given. INFO1113 Page 5 of 18 Travel command Since the schedule is weekly and wraps around, you need to consider the possibility of a flight arriving on Sunday evening potentially connecting with a flight that departs on Monday morning. As such, you may ignore available seat capacity selecting a flight in a potential route, since it is assumed that the current bookings are only for the current week, and this flight route may be used to show results for travellers in subsequent weeks, looking to make a booking later on. However, the ticket prices and overall route cost should depend on the current booking numbers of each flight, since we are assuming that the current booking demand is a good indicator of future demand, so ticket prices will be similar in the future to what they are now. The TRAVEL command has 5 potential orderings, detailed below. If the primary sorting property is equal between two flight paths, it will fall back to the following secondary and tertiary sorting properties. If total cost is equal, sort then by minimum total duration. If total duration is equal, sort then by minimum current cost. Total duration is the time taken from initial departure of the first flight, to finally arriving at the destination. If number of stopovers is equal, sort then by minimum total duration (and then by minimum cost). Stopovers are intermediary locations travelled to in order to reach the destination. If layover time is equal, sort then by minimum total duration (and then by minimum cost). Layover time is the time spent waiting at the airport for connecting flights. If flight time is equal, sort then by minimum total duration (and then by minimum cost). Flight time is the time spent onboard the aircraft while it is flying (ie. total duration excluding layover time). The output format of the travel command is composed of the flight plan, with layover times between flights specified, see the examples section below. Note: The number of stopovers is the number of intermediary destinations, not including the original starting location and final destination. It is equivalent to the number of flight legs minus 1. Also: The nth flight in the order, starts from 0 being the first one. INFO1113 Page 6 of 18 Error messages The following messages should be output upon encountering the prescribed error case or condition. The order of precedence is as shown here, except ‘not enough arguments’ takes precedence: command Description of condition/error case Message output flight add Time added was not in the correct format, for example “Monday 18:00” Invalid departure time. Use the format , with 24h time. Starting location was not in the database. Invalid starting location. Ending location was not in the database. Invalid ending location. Capacity was not a positive integer. Invalid positive integer capacity. The two locations entered were the same. Source and destination cannot be the same place. No runways are available for this flight at the designated location at that time. is in the format as above, “Monday 18:00” Scheduling conflict! This flight clashes with Flight departing from on . No runways are available for this flight at the designated location at that time. is in the format as above, “Monday 18:00” Scheduling conflict! This flight clashes with Flight arriving at on . Not enough command arguments given. Usage: FLIGHT ADD \nExample: FLIGHT ADD Monday 18:00 Sydney Melbourne 120 flight book The number of passengers entered was not a valid positive integer. Invalid number of passengers to book. If the capacity is full, print this after each attempt at booking that would otherwise exceed the capacity, or has filled it. Flight is now full. flight remove Remove this flight – display the short departure time, eg. Mon 18:00, and then source destination locations. Removed Flight , --> , from the flight schedule. flight reset Display the short departure time, eg. Mon 18:00, and then source destination locations. Reset passengers booked to 0 for Flight , --> . flight Invalid flight id is entered that is either not a number, or does not exist in the database. Invalid Flight ID. flight no parameters given Usage:\nFLIGHT [BOOK/REMOVE/RESET] [num]\nFLIGHT ADD \nFLIGHT IMPORT/EXPORT import No filename is given, or the file doesn’t exist. Error reading file. export No filename is given, or the directory for this file doesn’t exist. Error writing file. INFO1113 Page 7 of 18 flights/ locations No flights/locations are available – print this instead of the flight/location listing (None) location add Location is already present in the database (case insensitive based on name) This location already exists. Latitude exceeds bounds or is an invalid number. Invalid latitude. It must be a number of degrees between -85 and +85. Longitude exceeds bounds or is an invalid number Invalid longitude. It must be a number of degrees between -180 and +180. Demand coefficient exceeds bounds or is an invalid number. Invalid demand coefficient. It must be a number between -1 and +1. Not enough command arguments given. Usage: LOCATION ADD \nExample: LOCATION ADD Sydney -33.847927 150.651786 0.2 location Location is not present in the database (case insensitive based on name) Invalid location name. location No parameters given. Usage:\nLOCATION \nLOCATION ADD \nLOCATION IMPORT/EXPORT Schedule, departures, arrivals Location is not present in the database (case insensitive based on name) This location does not exist in the system. travel Starting location is not present in the database (case insensitive based on name. Starting location not found. Ending location is not present in the database (case insensitive based on name. Ending location not found. Bad sorting property. Invalid sorting property: must be either cost, duration, stopovers, layover, or flight_time. No flight paths of 3 stopovers or less are available from the given starting location to the ending destination. Sorry, no flights with 3 or less stopovers are available from to . No parameters given. Usage: TRAVEL [cost/duration/stopovers/layover/flight_time] INFO1113 Page 8 of 18 CSV file formats The import and export command for flights and locations allow the contents of the flight and location databases within the program to be saved to CSV (comma separated values) files. Two example files have been provided, as well as a sample command input/output sequence below. When importing and exporting, if invalid lines are encountered in the file without the required data, skip them and display the total number of errors at the end, if any were invalid. For example: User: location import locations.csv Imported 23 locations. 1 line was invalid. User: flight import flights.csv Imported 23 flights. 3 lines were invalid. User: flight import flights2.csv Imported 1 flight. User: flight export flights3.csv Exported 1 flight. Flights and locations are to be imported in the order they are given in the file. Export should write to the file flights in the order of their flight id, and locations in the order of their name. Flights csv has the following format: day time,startLocation,endLocation,capacity,booked Example: Monday 18:00,Sydney,Melbourne,120,80 Monday 19:00,Sydney,Hobart,120,29 Monday 21:30,Sydney,Hobart,120,29 Monday 18:00,Auckland,Rio,120,1 Locations csv has the following format: locationName,latitude,longitude,demandCoefficient Example: Sydney,-33.847927,150.651786,0.4 Hobart,-42.8823399,147.3198016,0.1 Perth,-32.0397559,115.681346,0.5 Adelaide,-35.0004451,138.3309716,0.1 CoffsHarbour,-30.2973943,153.0286009,-0.2 Brisbane,-27.4732824,152.747337,0.3 INFO1113 Page 9 of 18 Examples – Input/Output format Format of FLIGHTS command – sorted by departure time: Flights ------------------------------------------------------- ID Departure Arrival Source --> Destination ------------------------------------------------------- 0 Mon 17:00 Mon 17:04 Brisbane --> GoldCoast 1 Mon 18:05 Mon 18:09 Brisbane --> GoldCoast 2 Mon 19:05 Mon 19:09 Brisbane --> GoldCoast Format of flight command: Flight 0 Departure: Mon 00:05 Berlin Arrival: Mon 08:57 NewYork Distance: 6,387km Duration: 8h 52m Ticket Cost: $1724.01 Passengers: 0/189 Format of locations command – sorted by alphabetical order: Locations (3): Berlin, London, NewYork Format of location command: Location: Hobart Latitude: -42.882340 Longitude: 147.319802 Demand: +0.5000 Format of travel command: User: travel sydney london Legs: 3 Total Duration: 34h 36m Total Cost: $5172.49 ------------------------------------------------------------- ID Cost Departure Arrival Source --> Destination ------------------------------------------------------------- 5 $ 3399.00 Wed 10:00 Thu 02:44 Sydney --> AbuDhabi LAYOVER 1h 16m at AbuDhabi 10 $ 1384.44 Thu 04:00 Thu 11:11 AbuDhabi --> Oslo LAYOVER 7h 49m at Oslo 20 $ 389.05 Thu 19:00 Thu 20:36 Oslo --> London INFO1113 Page 10 of 18 Examples (1) $ java FlightScheduler User: location add Berlin 52.5 13.15 0.22222 Successfully added location Berlin. User: location add NewYork 40.7 -74.26 -0.874 Successfully added location NewYork. User: flight add sunday 20:00 Berlin NewYork 250 Successfully added Flight 0. User: flights Flights ------------------------------------------------------- ID Departure Arrival Source --> Destination ------------------------------------------------------- 0 Sun 20:00 Mon 04:52 Berlin --> NewYork User: flight 0 Flight 0 Departure: Sun 20:00 Berlin Arrival: Mon 04:52 NewYork Distance: 6,387km Duration: 8h 52m Ticket Cost: $1636.01 Passengers: 0/250 User: flight add monday 05:00 newYork berlin 234 Scheduling conflict! This flight clashes with Flight 0 arriving at NewYork on Monday 04:52. User: exit Application closed. INFO1113 Page 11 of 18 Examples (2) $ java FlightScheduler User: flight import flights.csv Imported 0 flights. 3 lines were invalid. User: location import locations.csv Imported 51 locations. User: locations Locations (51): AbuDhabi, Adelaide, AliceSprings, Alta, Athens, Auckland, Beijing, Berlin, Bern, Bordeaux, Brisbane, Cairo, Cardiff, Chicago, CoffsHarbour, Dallas, Darwin, Dubai, Dubbo, GoldCoast, Hanoi, Hobart, Houston, Jakarta, Johannesburg, Lagos, Liverpool, London, Longyearbyen, LosAngeles, Luton, Madrid, Manchester, Moscow, NewYork, Orange, Oslo, Paris, Perth, Rio, Rome, SanFrancisco, Stockholm, Sydney, Toulouse, Townsville, Tromso, Ufa, Utqiagvik, Vladivostok, Washington User: flights import flights.csv Flights ------------------------------------------------------- ID Departure Arrival Source --> Destination ------------------------------------------------------- (None) User: flight import flights.csv Imported 2 flights. 1 line was invalid. User: flights Flights ------------------------------------------------------- ID Departure Arrival Source --> Destination ------------------------------------------------------- 0 Mon 19:00 Mon 20:27 Sydney --> Hobart 1 Mon 21:30 Mon 22:57 Sydney --> Hobart User: flight 0 Flight 0 Departure: Mon 19:00 Sydney Arrival: Mon 20:27 Hobart Distance: 1,045km Duration: 1h 27m Ticket Cost: $272.00 Passengers: 29/120 User: flight 1 Flight 1 Departure: Mon 21:30 Sydney Arrival: Mon 22:57 Hobart Distance: 1,045km Duration: 1h 27m Ticket Cost: $272.00 Passengers: 29/120 User: exit Application closed. INFO1113 Page 12 of 18 Examples (3) User: location import locations.csv Imported 51 locations. User: flight add wednesday 6:00 sydney perth 180 Successfully added Flight 0. User: flight add wednesday 8:00 sydney perth 180 Successfully added Flight 1. User: flight 0 Flight 0 Departure: Wed 06:00 Sydney Arrival: Wed 10:31 Perth Distance: 3,254km Duration: 4h 31m Ticket Cost: $989.16 Passengers: 0/180 User: flight 0 book 20 Booked 20 passengers on flight 0 for a total cost of $19365.60 User: flight 0 book 20 Booked 20 passengers on flight 0 for a total cost of $18486.35 User: flight 0 book 20 Booked 20 passengers on flight 0 for a total cost of $17607.09 User: fligh1 book 100 Invalid command. Type 'help' for a list of commands. User: fligh 1 book 100 Invalid command. Type 'help' for a list of commands. User: flight 1 book 100 Booked 100 passengers on flight 1 for a total cost of $88381.66 User: flight 0 Flight 0 Departure: Wed 06:00 Sydney Arrival: Wed 10:31 Perth Distance: 3,254km Duration: 4h 31m Ticket Cost: $857.27 Passengers: 60/180 User: flight 1 Flight 1 Departure: Wed 08:00 Sydney Arrival: Wed 12:31 Perth Distance: 3,254km Duration: 4h 31m Ticket Cost: $846.28 Passengers: 100/180 User: flight add wednesday 11:31 perth johannesburg 230 Successfully added Flight 2. User: fligh 2 Invalid command. Type 'help' for a list of commands. INFO1113 Page 13 of 18 User: flight 2 Flight 2 Departure: Wed 11:31 Perth Arrival: Wed 23:03 Johannesburg Distance: 8,303km Duration: 11h 32m Ticket Cost: $2163.44 Passengers: 0/230 User: flight add thursday 01:00 johannesburg London 220 Successfully added Flight 3. User: flight add friday 01:00 johannesburg London 220 Successfully added Flight 4. User: flight add satursday 01:00 johannesburg London 220 Invalid departure time. Use the format , with 24h time. User: flight add saturday 01:00 johannesburg London 220 Successfully added Flight 5. User: flights Flights ------------------------------------------------------- ID Departure Arrival Source --> Destination ------------------------------------------------------- 0 Wed 06:00 Wed 10:31 Sydney --> Perth 1 Wed 08:00 Wed 12:31 Sydney --> Perth 2 Wed 11:31 Wed 23:03 Perth --> Johannesburg 3 Thu 01:00 Thu 13:36 Johannesburg --> London 4 Fri 01:00 Fri 13:36 Johannesburg --> London 5 Sat 01:00 Sat 13:36 Johannesburg --> London User: flight export flights3.csv Exported 6 flights. User: exit Application closed. Examples (4) User: location import locations.csv Imported 51 locations. User: location import locations4.csv Imported 2 locations. User: flight import flights6.csv Imported 182 flights. User: travel sydney london Legs: 3 Total Duration: 34h 36m Total Cost: $5172.49 ------------------------------------------------------------- ID Cost Departure Arrival Source --> Destination INFO1113 Page 14 of 18 ------------------------------------------------------------- 5 $ 3399.00 Wed 10:00 Thu 02:44 Sydney --> AbuDhabi LAYOVER 1h 16m at AbuDhabi 10 $ 1384.44 Thu 04:00 Thu 11:11 AbuDhabi --> Oslo LAYOVER 7h 49m at Oslo 20 $ 389.05 Thu 19:00 Thu 20:36 Oslo --> London User: exit Application closed. Examples (5) User: location import locations.csv Imported 51 locations. User: location import locations4.csv Imported 2 locations. User: flight import flights6.csv Imported 182 flights. User: schedule sydney Sydney ------------------------------------------------------- ID Time Departure/Arrival to/from Location ------------------------------------------------------- 166 Mon 10:30 Departure to Dubai 100 Mon 12:00 Departure to Jakarta 103 Mon 13:33 Arrival from AbuDhabi 89 Mon 19:00 Departure to Hobart 90 Mon 21:30 Departure to Hobart 173 Tue 02:38 Arrival from AliceSprings 174 Tue 04:00 Departure to AliceSprings 69 Tue 05:00 Departure to LosAngeles 99 Tue 08:27 Arrival from Hobart 0 Wed 09:00 Departure to Beijing 5 Wed 10:00 Departure to AbuDhabi 161 Wed 11:00 Departure to LosAngeles 162 Wed 13:00 Departure to Dubbo 165 Wed 15:23 Arrival from Dubbo 163 Wed 18:00 Departure to Orange 164 Wed 20:14 Arrival from Orange 6 Thu 04:44 Arrival from AbuDhabi 3 Thu 11:11 Arrival from Hanoi 131 Fri 14:00 Departure to AbuDhabi 113 Sat 04:00 Departure to Perth 114 Sat 06:00 Departure to Perth 112 Sat 09:00 Departure to Perth User: arrivals sydney Sydney ------------------------------------------------------- ID Time Departure/Arrival to/from Location ------------------------------------------------------- 103 Mon 13:33 Arrival from AbuDhabi 173 Tue 02:38 Arrival from AliceSprings 99 Tue 08:27 Arrival from Hobart 165 Wed 15:23 Arrival from Dubbo 164 Wed 20:14 Arrival from Orange 6 Thu 04:44 Arrival from AbuDhabi INFO1113 Page 15 of 18 3 Thu 11:11 Arrival from Hanoi User: departures sydney Sydney ------------------------------------------------------- ID Time Departure/Arrival to/from Location ------------------------------------------------------- 166 Mon 10:30 Departure to Dubai 100 Mon 12:00 Departure to Jakarta 89 Mon 19:00 Departure to Hobart 90 Mon 21:30 Departure to Hobart 174 Tue 04:00 Departure to AliceSprings 69 Tue 05:00 Departure to LosAngeles 0 Wed 09:00 Departure to Beijing 5 Wed 10:00 Departure to AbuDhabi 161 Wed 11:00 Departure to LosAngeles 162 Wed 13:00 Departure to Dubbo 163 Wed 18:00 Departure to Orange 131 Fri 14:00 Departure to AbuDhabi 113 Sat 04:00 Departure to Perth 114 Sat 06:00 Departure to Perth 112 Sat 09:00 Departure to Perth User: arrivals perth Perth ------------------------------------------------------- ID Time Departure/Arrival to/from Location ------------------------------------------------------- 169 Mon 17:52 Arrival from AliceSprings 113 Sat 08:31 Arrival from Sydney 114 Sat 10:31 Arrival from Sydney 112 Sat 13:31 Arrival from Sydney User: departures perth Perth ------------------------------------------------------- ID Time Departure/Arrival to/from Location ------------------------------------------------------- 145 Mon 00:00 Departure to Johannesburg 171 Mon 15:05 Departure to AliceSprings 170 Mon 16:05 Departure to AliceSprings 115 Thu 06:00 Departure to Mumbai 132 Fri 13:00 Departure to AbuDhabi User: schedule perth Perth ------------------------------------------------------- ID Time Departure/Arrival to/from Location ------------------------------------------------------- 145 Mon 00:00 Departure to Johannesburg 171 Mon 15:05 Departure to AliceSprings 170 Mon 16:05 Departure to AliceSprings 169 Mon 17:52 Arrival from AliceSprings 115 Thu 06:00 Departure to Mumbai 132 Fri 13:00 Departure to AbuDhabi 113 Sat 08:31 Arrival from Sydney 114 Sat 10:31 Arrival from Sydney 112 Sat 13:31 Arrival from Sydney User: exit Application closed. INFO1113 Page 16 of 18 Examples (6) $ java FlightScheduler User: location add Mumbai 19.08 72.741 0.4 Successfully added location Mumbai. User: location add NewDelhi 28.527 77.0688988 -0.123 Successfully added location NewDelhi. User: flight add monday 08:00 mumbai newdelhi 120 Successfully added Flight 0. User: flight 0 Flight 0 Departure: Mon 08:00 Mumbai Arrival: Mon 09:35 NewDelhi Distance: 1,139km Duration: 1h 35m Ticket Cost: $317.79 Passengers: 0/120 User: flight 0 book 23 Booked 23 passengers on flight 0 for a total cost of $7041.08 User: flight 0 reset Reset passengers booked to 0 for Flight 0, Mon 08:00 Mumbai --> NewDelhi. User: flight 0 Flight 0 Departure: Mon 08:00 Mumbai Arrival: Mon 09:35 NewDelhi Distance: 1,139km Duration: 1h 35m Ticket Cost: $317.79 Passengers: 0/120 User: flight 0 book 130 Booked 120 passengers on flight 0 for a total cost of $36255.03 Flight is now full. User: flight 0 remove Removed Flight 0, Mon 08:00 Mumbai --> NewDelhi, from the flight schedule. User: flights Flights ------------------------------------------------------- ID Departure Arrival Source --> Destination ------------------------------------------------------- (None) User: exit Application closed. INFO1113 Page 17 of 18 Writing your own testcases We have provided you with some test cases but these do not test all the functionality described in the assignment. It is important that you thoroughly test your code by writing your own test cases. You should place all of your test cases in a tests/ directory. Ensure that each test case has a .in input file along with a corresponding .out output file. We require that the names of your test cases are descriptive so that you know what each is testing, e.g. listFlights.in & listFlights.out and we can accurately and quickly assess your test cases. Note: If you do not format your test case files as explained (where each test case has .in and .out files for input and output, placed inside the tests folder), you shall receive 0 for this component. Submission Details You must submit your code and tests using the assignment page on Ed. To submit, simply place your files and folders into the workspace, click run to check your program works and then click submit. You are encouraged to submit multiple times, but only your last submission will be considered. Marking 7 marks will be assigned based on the results of the automatic tests and correctness of the program. This component will use hidden test cases that cover every aspect of the specification. Your program must match the exact output in the examples and the test cases on Ed. 4 marks will be assigned to the code coverage of the testcases you have written yourself. For this, we will use a script to automatically generate a code coverage report using Jacoco. For this reason, please make sure you structure your testcases in the manner described above. 0.5 marks will be assigned based on a manual inspection of the OO design of your program. Being able to apply standard paradigms of Object-Oriented Design such as encapsulation, not repeating code, and separation of methods and attributes into different classes with a single responsibility is part of the learning outcomes of this course. 0.5 marks will be assigned based on a manual inspection of the code style. Style will be assessed based on the conventions set out in the Google Java Style Guide (https://google.github.io/styleguide/javaguide.html ) INFO1113 Page 18 of 18 Academic Declaration By submitting this assignment you declare the following: I declare that I have read and understood the University of Sydney Student Plagiarism: Coursework Policy and Procedure, and except where specifically acknowledged, the work contained in this assignment/project is my own work, and has not been copied from other sources or been previously submitted for award or assessment. I understand that failure to comply with the Student Plagiarism: Coursework Policy and Procedure can lead to severe penalties as outlined under Chapter 8 of the University of Sydney By-Law 1999 (as amended). These penalties may be imposed in cases where any significant portion of my submitted work has been copied without proper acknowledgment from other sources, including published works, the Internet, existing programs, the work of other students, or work previously submitted for other awards or assessments. I realise that I may be asked to identify those portions of the work contributed by me and required to demonstrate my knowledge of the relevant material by answering oral questions or by undertaking supplementary work, either written or in the laboratory, in order to arrive at the final assessment mark. I acknowledge that the School of Computer Science, in assessing this assignment, may reproduce it entirely, may provide a copy to another member of faculty, and/or communicate a copy of this assignment to a plagiarism checking service or in-house computer program, and that a copy of the assignment may be maintained by the service or the School of Computer Science for the purpose of future plagiarism checking. 欢迎咨询51作业君