13.6. Exercises: Modules¶
Practice makes better. You will create a project that accomplishes the following:
Steps through a list of Yes/No questions.
Calls functions based on the user's responses.
Rather than coding all of the functions from scratch, you are going to use existing modules to help assemble your project.
Open this link and fork the starter code, then complete the following:
13.6.1. Export Finished Modules¶
Lucky you! Some of your teammates have already coded the necessary functions
in the averages.js
and display.js
files.
In
averages.js
, add code to export all of the functions within an object.In
display.js
, add code to export ONLYprintAll
as a function.
13.6.2. Code & Export New Module¶
randomSelect.js
requires your attention.
Add code to complete the
randomFromArray
function. It should take an array as an argument and then return a randomly selected element from that array.Do not forget to export the
randomFromArray
function so you can use it in your project.
13.6.3. Import Required Modules¶
The project code is in index.js
. Start by importing the required modules:
Assign
readline-sync
to theinput
variable.Assign the functions from
averages.js
to theaverages
variable.Assign the
printAll
function fromdisplay.js
to theprintAll
variable.Assign the function from
randomSelect.js
to therandomSelect
variable.
13.6.4. Finish the Project¶
Now complete the project code. (Note - The line references assume that you
added no blank lines during your work in the previous section. If you did, no
worries. The comments in index.js
will still show you where to add code).
Line 21 - Call
printAll
to display all of the tests and student scores. Be sure to pass in the correct arguments.Line 24 - Using dot notation, call
averageForTest
to print the class average for each test. Usej
andscores
as arguments.Line 29 - Call
averageForStudent
(with the proper arguments) to print each astronaut's average score.Line 33 - Call
randomSelect
to pick the next spacewalker from theastronauts
array.
13.6.5. Sanity check!¶
Properly done, your output should look something like:
Would you like to display all scores? Y/N: y
Name Math Fitness Coding Nav Communication
Fox 95 86 83 81 76
Turtle 79 71 79 87 72
Cat 94 87 87 83 82
Hippo 99 77 91 79 80
Dog 96 95 99 82 70
Would you like to average the scores for each test? Y/N: y
Math test average = 92.6%.
Fitness test average = 83.2%.
Coding test average = 87.8%.
Nav test average = 82.4%.
Communication test average = 76%.
Would you like to average the scores for each astronaut? Y/N: y
Fox's test average = 84.2%.
Turtle's test average = 77.6%.
Cat's test average = 86.6%.
Hippo's test average = 85.2%.
Dog's test average = 88.4%.
Would you like to select the next spacewalker? Y/N: y
Turtle is the next spacewalker.