Our team was given the task to assist Elon Musk and his team to design a system to simulate SpaceX and Starlink. The final product will contribute to the planning and optimising that is put towards their launches. The Six Musketeers need to figure out a way in order to optimise the cost of each launch by choosing the best rocket configuration for the job. There are 2 rockets (the Falcon9 and the Falcon Heavy), 2 spacecrafts (the Crew Dragon and the Dragon) and the Starlink satellites that orbit around the planet in order to provide fast internet to everyone around the world.
Our crew of computer scientists has decided to code a simulation of a rocket. During our studies, we were taught about design patterns and we all knew that they would be the most helpful tool in making our dream of helping thee Elon Musk become a reality. As soon as we got our initial design planned out, we got to work.
The code base is contained in a compressed file called System.zip. It contains a 'main.cpp', 'makefile' and all the necessary (.h and .cpp) source files for the program to compile and run, as well as the relevant source files necessary for Google unit tests.
[press 1] for Falcon 9 (single core rocket body) or [press 2] for Falcon Heavy (3-core rocket body)
[press 1] for Yes and [press 2] for No. Option 1 allows you to choose any of the Dragon capsule variants or alternatively a batch of Starlink satellites.
Option 2 gives you a rocket without anything attached.
[press 1] for Crew Dragon: this carries passengers to the ISS launch thrust rate is reduced to minimize G-forces for humans.
[press 2] for Cargo Dragon: Carries supplies to the ISS, rocket thrust is at maximum for better fuel efficiency.
[press 3] for Fairing: An aerodynamic cover which houses up to 60 Starlink Satellites. Can only be built on a Falcon 9
Requires an integer input between 0 and 7
Submit a passenger name for each member on the capsule
Enter the weight of the payload. Must be a positive real number
[press 1] for Falcon 9 (single core rocket body) or [press 2] for Falcon Heavy (3-core rocket body)
[press 1] for Yes and [press 2] for No. Option 1 allows you to choose any of the Dragon capsule variants or alternatively a batch of Starlink satellites.
Option 2 gives you a rocket without anything attached.
[press 1] for Crew Dragon: this carries passengers to the ISS launch thrust rate is reduced to minimize G-forces for humans.
[press 2] for Cargo Dragon: Carries supplies to the ISS, rocket thrust is at maximum for better fuel efficiency.
[press 3] for Fairing: An aerodynamic cover which houses up to 60 Starlink Satellites. Can only be built on a Falcon 9
Enter the weight of the payload. Must be a positive real number
[press 1] for Falcon 9 (single core rocket body)
[press 1] for Yes and [press 2] for No. Option 1 allows you to choose any of the Dragon capsule variants or alternatively a batch of Starlink satellites.
Option 2 gives you a rocket without anything attached.
[press 1] for Crew Dragon: this carries passengers to the ISS launch thrust rate is reduced to minimize G-forces for humans.
[press 2] for Cargo Dragon: Carries supplies to the ISS, rocket thrust is at maximum for better fuel efficiency.
[press 3] for Fairing: An aerodynamic cover which houses up to 60 Starlink Satellites. Can only be built on a Falcon 9
Provide a positive integer amount between 0 and 60
Enter the weight of the payload. Must be a positive real number
[press 1] Build My Own : creates and stores new user defined simulation
[press 2] Pre-made : use the default. Automatically generated
[press 3] Restore your most recent rocket : recreate from last build
[press 4] Run all your saved simulations : batch run
[press 1] Static-Fire Test : tests all the Merlin engines attached to the rocket core
[press 2] Jettison Fairing : open Fairing to expose satellites
[press 3] Seperate Boosters : initiates next stage
[press 4] Distribute Satellites : Spin and decouples all satellites to spread them out over time
[press 5] Deliver Crew : command sent to Capsule to transport cre to/from ISS
[press 6] Use Communications Network : see Communications Network below
[press 7] Fire Merlin Engines : Ignites all engines simultaneously
[press 8] Fire Vacuum Merlin Engines: Ignites all second stage engines
Input 'y' [Yes] or 'n' [No]
Gives you the option to start this process from the start again
[press 1] Add another stage : increase the stage count
[press 2] Edit Simulation : Tweak aspects of the simulation
[press 3] Save Simulation : store simulation instance
[press 4] Run Simulation : Execute all rocket functions
[press 5] Print Simulation : Outputs verbose information about simulation
[press 6] Exit Editor : Terminates Simulation section of program
[press 1] Swap Staging Order: bad idea but you can have stage 2 fire before stage 1
[press 2] Remove Stage
[press 3]
This is only available when the rocket construction contains satellites.
[Press 1] Send A Message To A Satellite : relays a string from one satellite to another
[Press 2] Force Satellite Error State: simulates an outer space 'anomaly' to see how it affects the satellite network
Enter the ID (positive integer) of the receiving satellite
Enter the ID (positive integer) of the messenger satellite
Enter the message which you would like to transmit via satellite
Provide an ID (positive integer less than 60) to specify a satellite
[Press 1] Broadcasting
[Press 2] Online
[Press 3] Offline
[Press 1] Yes. Takes you back to the initial Satellite Communications prompt
[Press 2] No. Ends this part of the simulation