CSE1502 introduction to software development

Introduction to software development with C++ and Fortran

Final Project

BACKGROUND

The previous two increments were stand-alone programs. However, that is not the case in real-life software systems. In fact, they comprise hundreds, even thousands of procedures enclosed within separate program units, such as Fortran modules or C++ classes. In those systems, procedures include the module(s)/classes they use by means of the use directive or the #include directive. This final increment will integrate the two previous increments with this one into a small software system that will have a menu-driven user interface. As a result, the two previous incremental programs will become Fortran modules or C++ classes. The separately compiled modules/classes, along with the additional functionality below, and the driver program will make up a Fortran/C++ application.

REQUIREMENTS

Develop a Fortran/C++ software system that will display a menu, accept the user’s choice, validate the entry and proceed to the corresponding module(s)/class(s), or exit. In addition, the application must:

  • Clear the screen before displaying the Main Menu and any prompts for data, and then, before displaying any results
  • Display appropriate error messages when invalid data is entered. Wait for the user to press Enter, clear the screen, and display the data entry prompt(s) again
  • Clear the screen one last time when the user exit the application
  • The choices in the Main Menu must be numbers. Regardless, the eXit option must be an ‘x’ (lower and upper case must be accepted)

ADDITIONAL FUNCTIONALITY

This increment will make some economic cost-benefit calculations based on the fact that re-usable booster-rockets are now a reality. These are some websites where you can find information on the matter of re-using rockets: Definition and some examples from Wikipedia, SpaceX’s Falcon Heavy rocket and Wikipedia’s Falcon Heavy article.

By the rule of economies of scale, the more a single vehicle can be re-used, the lower the costs per launch, and therefore of the payload. However, realistically a vehicle can be used up to a number of launches. Factors, such as metal fatigue due to forces acting upon it, oxidation (rusting) due to over-heating at atmosphere re-entries and combustion chamber oxidation, set a limit on the number of times the vehicle can be re-launched. Hence, in this project increment you are to calculate the variations of cost per metric ton and per pound of payload, subject to the following assumptions:

Cost of rocket (user-entered): $10,000,000 ≤ rocketCost ≤ $75,000,000

Maximum number of missions (user-entered): 1 ≤ numMissions ≤ 25

Maximum payload to LEO: 53 metric tons (53,000 kg)

Launch costs[1]: $25,000,000

Rocket depreciation: rocketCost / numMissions

For each case, also calculate the price to the client assuming a gross margin of 50% over costs. Conversion factors:

1 metric ton = 1,000 kg 1 kilogram = 2.2046 lb

The program must validate that the data-entries are within the allowed ranges. Assume maximum payload capacity for each mission. In addition, the program must work for as long as the user wishes. Notice: if the equation for the costs per pound

Note: Use the “Developing a C++/Fortran Program” handout as a guide. The submitted code should comply with all requirements for projects set forth in the Projects and Labs Rubric document. A sample object code will be available for you to experiment and see how your own program must work.

[1] Launch costs include NASA’s launch-pad rent fees, fuel, launch-pad staff, payload insurance, rocket preparation and loading, and finance charges on rocket construction and R&D.