This assignment should be done individually. The submission should be made as a single zipped file including a BlueJ project and submitted in Canvas.
Students should be aware that I may do a plagiarism check.
Note: code must be in BlueJ; code written and submitted in any other Java environment may not be able to be marked (if I can’t mark it you will probably get a mark of Zero).
This assignment is marked as a submission of a single zip file. It should be submitted to Canvas by its due date (see above). You need to submit:
· The Java program code (working or not) as a BlueJ project directory;
· A test plan;
· Documented results of your test plan;
· Evidence of you running a number of mandatory, well documented, test runs (e.g. screen shots); These are the results of mandatory test runs (test runs required are detailed in a separate document);
· A short reflection report on what you learned;
· Optional feedback (on the unit). Just a paragraph to me which is not marked;
· Remember: “A single zipped file including a BlueJ project and submitted in Canvas.”
There are no resubmission options for this assignment.
This assignment is marked after semester ends in the exam period; resubmissions will NOT be possible.
You can ask for help in the tutorials, PALS, and hints, but the assignment should be your own work.
Assignment Briefing:
The wonderful company, SpaceW, is a fictional company that makes its money by providing orbital services (aka, blasting rockets into space). They are ramping up spaceflights; to help them they need a planning and costing program that can produce a report on the profitability of CubeSat launches.
For the curious, CubeSats are generally launched as a secondary payload, on launches of larger satellites.
The output of the system is a one online query and two reports. The online query advises how profitable a single CubeSat launch is likely to be and provides a ‘guideline’ price to the customer. The input for this option is to come from the keyboard and the program must not crash, no matter what rubbish is typed in. Obviously incorrect inputs should generate sensible error messages.
The reports are summaries of all the CubeSat launches for a given month or launch. The input for this option is to come from an input file (comma separated) with one line per CubeSat. For the loading report, the file may contain more than one launch. This file may have trailing blank lines.
The reports are:
· Profit report – effectively the same information as the online query summed up for a month;
· Loading report for a given launch to help engineers position the CubeSats for launch. (For a bonus point or two you can enhance this option). ?????????????? (The HD level option worth only 4 marks and very optional)
Space vehicles can be launched into many standard orbits, but SpaceW limits CubeSats to: LEO (low earth orbit equatorial) and LEOP (low earth orbit polar).
You program needs to do the following (also see marking rubric below):
· Show a small menu with 5 options (console input)
o Online pricing Query;
o Profit report;
o Loading report; and
o Exit
· The loading report is focused on producing a loading guide and determining spare capacity (which can still be sold) or detecting overselling for a given launch. It’s optional and worth only a few marks – see marking guide.
· The two report options process a file. The file is the monthly orders file for a given company. Several of these input files will be provided for testing and mandatory testing. (See format below.)
Monthly-Orders format (input file) comma separated
Field Number | Name | Contents |
1 | Date | The date of the order in format dd/mm/yy |
2 | Launch ID | The launch ID; a 10-character code unique to each launch |
3 | Client | The client Id (a string of up to 10 characters) |
4 | Orbit | LEO or LEOP |
5 | Service | ORBC1U, ORBC2U, ORBC3U, ORBC6U |
6 | Customer Discount | As a percentage (ie 1.3 is 1.3%)
(This is negotiated by the salesperson and can be any value within the range 0 to 25, but the sales manager can discount up to 30% for ‘community’, and loyalty reasons) |
7 | Satellite ID | A string of up to 20 characters |
To keep it simple no launches are ever done on leap days (29 Feb) and it is not necessary to check that it’s a valid date To make your life a bit easier you can assume the date format in the file to be dd/mm/yy so you may get 01/07/19 but you won’t get 1/7/19. Which makes sorting and editing a bit easier.
Below is the test file Oct2021.txt (which I supply for your testing)
19/10/21,HAWK21018,ESAA,LEO,ORBC2U,20,WEATHER014
19/10/21,HAWK21018, NASHA,LEO,ORBC1U,21.5,TESTGRAV |
Below is the test file Nov2023.txt (which I supply for your testing)
03/11/23,HAWK23028,ESAA,LEO,ORBC2U,22.1,MOONZERO2
03/11/23,HAWK23028,NASHA,LEO,ORBC6U,21.5,MINITELESCOPE
03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC3U,30,PrimaryCharity
03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES01
03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES02
03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES03
03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES04
03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES05
03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES06
03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES07
03/11/23,HAWK23028,TICK,LEO,ORBC2U,7,TICK2UA321D
03/11/23,HAWK23028,TICK,LEO,ORBC6U,7,TICK27
19/11/23,HAWK23029,ESAA,LEOP,ORBC2U,20,WEATHER019A
19/11/23,HAWK23029,NASHA,LEOP,ORBC1U,21.5,TICKLLE
19/11/23,HAWK23029,MARZ,LEOP,ORBC6U,26.0,MARSEXP1
19/11/23,HAWK23029,MARZ,LEOP,ORBC6U,26.0,MARSEXP2
NOTE: for simplicity’s sake there will never be more than 99 lines in the file.
I also provide an error file example Oct2021err.txt
SpaceW Launch services
Service Code | Description | Cost$ US LEO | Cost$ US LEOP | Price US LEO | Price US LEOP |
ORBC1U | One micro satellite 10x10x10cm (size 1) | 365,000 | 379,000 | 500,000 | 600,000 |
ORBC2U | One micro satellite 10x10x20cm (size 2) | 693,000 | 758,000 | 950,000 | 1,100,000 |
ORBC3U | One micro satellite 10x10x30cm (size 3) | 1,015,000 | 1,097,000 | 1,400,000 | 1,550,000 |
ORBC6U | One micro satellite 10x20x30cm (size 6) | 1,403,000 | 1,653,000 | 2,300,000 | 2,400,000 |
All Cubesats ride share with another payload in a similar orbit.
They are launched by the CS-dispenser (see below) which presents the interesting HD level challenge for this assignment.
Customers table (you only need the code)
Code | Name | Contact name | Address |
ESAA | Europe Systems Alternative Agency | Jean-Claude Junxer | 23 Razor Road Belconnen ACT
2617 |
NASHA | National Air Space Hash Agency | Jimmy Briden | 2 Mashup Drive
Bruce ACT 2617 |
ASA | Aussie Space Agency | Megan Clock | Flat 31/a, Bax Units
Stix St, Marble Bar, WA 6760 |
TICK | Tick Incorporated | Mark Watson | 87 Race Drive Bathurst, NSW
2795 |
BINCPRIVAT | Byer Private Space Incorporated | Marilyn Hewson | 212 Webly Drive,
Canowindra, NSW 2804 |
CODC | Corporate Space Trust | ?Zhang Chen | 212 Scorch Drive,
Beltana, SA 5730 |
MARZ | The Mars Gen Inc | Cool Dude | 26 O’Conner’s Road,
Werribee South, VIC 3030 |
MANDATORY TESTING:
Most importantly your program must work and be tested, you need to provide a test plan and show how you tested the program including evidence of testing.
You may want to create additional test files; if so let us know (by providing evidence in your submission) so we can give you marks for them (providing they are sane, ie relevant and reasonable).
Some tests test error handling.
YOU MUST Run (providing evidence that you have executed the run) the following mandatory tests:
Test Id | File | Menu Option | Notes |
MAND TEST1 | NONE | online query | CODC, LEOP launch of CubeSat ORBC3U, with an 11% discount |
MAND TEST2 | NONE | online query | Error handling (see note below) |
MAND TEST3 | MAND1.txt | Profit Report | |
MAND TEST4 | MAND4.txt | Profit Report | Error handling |
MAND TEST5 | MAND2.txt | Profit Report | |
MAND TEST6a | MAND3.txt | Loading Report | For launch HAWK2025X |
MAND TEST6b | MAND1.txt | Loading Report | For launch HAWK23029 |
You must write, run & provide evidence you have run, MAND TEST2; its purpose is to test the online query, specifically that it can detect bad input without crashing. (Worth 2 marks).
Calculations:
I kept these deliberately simple, most of the assignment is editing and checking input and only the loading report has significant data processing (not calculations, but allocations – still data processing).
Example Calculation 1:
ORBC1U to LEO with 5% discount for Esaa
Cost 365,000
Price 500,000
500,000 * 5% = 25,000
So quote is 500,000 – 25,000 = 475,000
Profit is 475,000-365,000 = 110,000
Example Calculation 2:
The file
19/10/21, HAWK21018, ESAA, ORBC2U, 20, WEATHER014
19/10/21, HAWK21018, NASHA, ORBC1U, 21.5, TESTGRAV
Cost Satellite WEATHER014 is 693,000
Cost Satellite TESTGRAV 365,000
Price Satellite WEATHER014 950,000
Price Satellite TESTGRAV 500,000
Discount Satellite WEATHER014 20%
Discount Satellite TESTGRAV 21.5%
WEATHER014
950,000*.20 = 190,000
Quote= 950,000 – 190,000 = 760,000
Profit = 67,000 (760,000-693,000)
TESTGRAV
500,000 * 21.5% = 107,500
So quote is 500,000 – 107,500 = 392,500
Profit is 475,000-365,000 = 27,500
Total profit for file is: 94,500
Total Revenue for file is: 1,152,500