summaryrefslogtreecommitdiff
path: root/src/Q5/README.md
blob: c46f8da438896e2d211ad1b6b34aa979bd4f6aee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Learning Profile for Assignment #1, And Question #5

Name: Mo Khan
Student ID: 3431709

1. Problem Statement:

Solve the following problem using a program:
Suppose you save $100 each month into a savings account with an annual interest rate of 5%.
Thus, the monthly interest rate is 0.05/12 = 0.00417.
After the first month, the value in the account becomes 100 * (1 + 0.00417) = 100.417
After the second month, the value in the account becomes (100 + 100.417) * (1 + 0.00417) = 201.252
And after the third month, the value in the account becomes (100 + 201.252) * (1 + 0.00417) = 302.507
... and so on.

Write a program that randomly generates monthly savings amounts for the 15 runners in Problem 4.
Each monthly saving should be in the range of $100 to $800.
Extend the AddressBook class to store the monthly savings generated by the random number generator.
Then, display the final account value for each of the 15 runners.


2. Description of the Code: 

I created a constructor overload that accepts the `monthlyContribution`
as a parameter. This made it easier to write unit tests rather than
depend on random monthlyContributions. The constructor that accepts a
`firstName` and `lastName` will generate a random `monthlyContribution`
and chain to the overloaded constructor.

I had no idea what `d1` and `d2` means, so I didn't use those
parameters.

I designed this class so that you could predict the future value for `n`
months from now. I did assign the `accountValue` to a prediction of 12
months from now. I would have preferred to implement an interface that
didn't require private instance variables and rather depend on
calculations on the fly but I did my best to bride the requirements with
my own preferences.

3. Errors and Warnings:

```bash
モ mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< ca.mokhan.comp268:assignment1 >--------------------
[INFO] Building assignment1 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- fmt-maven-plugin:2.8:format (default) @ assignment1 ---
[INFO] Processed 47 files (0 reformatted).
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ assignment1 ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/mokha/development/gh/comp-268/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ assignment1 ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 24 source files to /Users/mokha/development/gh/comp-268/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ assignment1 ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/mokha/development/gh/comp-268/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ assignment1 ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 24 source files to /Users/mokha/development/gh/comp-268/target/test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ assignment1 ---
[INFO] Surefire report directory: /Users/mokha/development/gh/comp-268/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running ca.mokhan.comp268.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec
Running ca.mokhan.test.CandidateTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.053 sec
Running ca.mokhan.test.NumberTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.021 sec
Running ca.mokhan.test.EmployeeSavingsTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.007 sec
Running ca.mokhan.test.CartesianCoordinateSystemTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running ca.mokhan.test.CommunicationTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running ca.mokhan.test.TaxReturnTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running ca.mokhan.test.BanffMarathonRunnerTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running ca.mokhan.test.AddressBookTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec
Running ca.mokhan.test.TriangleTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running ca.mokhan.test.BonusOnSavingsTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running ca.mokhan.test.HailstoneSequenceTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec

Results :

Tests run: 52, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.620 s
[INFO] Finished at: 2019-05-13T21:26:40-06:00
[INFO] ------------------------------------------------------------------------
```

4. Sample Input and Output:
[Provide some test cases with sample input and output of your program.]

Tests are available in `EmployeeSavingsTest.java`.

5. Discussion: