Question

In: Computer Science

Enhance the Future Value application Modify this application so it uses a persistent session to save...

Enhance the Future Value application

Modify this application so it uses a persistent session to save the last values entered by the user for 2 weeks..

Index.php

--------------------------

<?php
    //set default value of variables for initial page load
    if (!isset($investment)) { $investment = '10000'; }
    if (!isset($interest_rate)) { $interest_rate = '5'; }
    if (!isset($years)) { $years = '5'; }
?>
<!DOCTYPE html>
<html>
<head>
    <title>Future Value Calculator</title>
    <link rel="stylesheet" type="text/css" href="main.css"/>
</head>

<body>
    <main>
    <h1>Future Value Calculator</h1>
    <?php if (!empty($error_message)) { ?>
        <p class="error"><?php echo $error_message; ?></p>
    <?php } // end if ?>
    <form action="display_results.php" method="post">

        <div id="data">
        
            <label>Investment Amount:</label>
            <select name="investment">
                <?php for ($i = 10000; $i <= 50000; $i += 5000) : ?>
                    <option value="<?php echo $i; ?>">
                        <?php echo number_format($i); ?></option>
                <?php endfor; ?>
            </select><br>
        
        
            <label>Yearly Interest Rate:</label>
            <select name="interest_rate">
                <?php for ($i = 4; $i <= 12; $i += 0.5) : ?>
                    <option value="<?php echo $i; ?>">
                        <?php echo number_format($i, 2); ?></option>
                <?php endfor; ?>
            </select><br>
        
        
        
            <label>Number of Years:</label>
            <input type="text" name="years"
                   value="<?php echo $years; ?>"/><br>
        
       
        </div>
        <p><input type="checkbox" name="monthly" value="1" > Compound Interest Monthly<br></p>

        <div id="buttons">
            <label>&nbsp;</label>
            <input type="submit" value="Calculate"/><br>
        </div>

    </form>
    </main>
</body>
</html>

display_results.php

------------------------

<?php
    // get the data from the form
    $investment = filter_input(INPUT_POST, 'investment',
            FILTER_VALIDATE_FLOAT);
    $interest_rate = filter_input(INPUT_POST, 'interest_rate',
            FILTER_VALIDATE_FLOAT);
    $years = filter_input(INPUT_POST, 'years',
            FILTER_VALIDATE_INT);
    $monthly =filter_input(INPUT_POST, 'monthly',
            FILTER_VALIDATE_INT);   

    // validate investment
    if ($investment === FALSE ) {
        $error_message = 'Investment must be a valid number.';
    } else if ( $investment <= 0 ) {
        $error_message = 'Investment must be greater than zero.';
    // validate interest rate
    } else if ( $interest_rate === FALSE ) {
        $error_message = 'Interest rate must be a valid number.';
    } else if ( $interest_rate <= 0 ) {
        $error_message = 'Interest rate must be greater than zero.';
    // validate years
    } else if ( $years === FALSE ) {
        $error_message = 'Years must be a valid whole number.';
    } else if ( $years <= 0 ) {
        $error_message = 'Years must be greater than zero.';
    } else if ( $years > 30 ) {
        $error_message = 'Years must be less than 31.';
    // set error message to empty string if no invalid entries
    } else {
        $error_message = '';
    }

    // if an error message exists, go to the index page
    if ($error_message != '') {
        include('index.php');
        exit();
    }

    // calculate the future value
    $future_value = $investment;
    if($monthly) {
        $months = 12 * $years;
        for ($i = 1; $i <= $months; $i++) {
            $future_value += $future_value * ($interest_rate/12) *.01;
        }
    } else {
        for ($i = 1; $i <= $years; $i++) {
            $future_value += $future_value * $interest_rate *.01;
        }
    }

    // apply currency and percent formatting
    $investment_f = '$'.number_format($investment, 2);
    $yearly_rate_f = $interest_rate.'%';
    $future_value_f = '$'.number_format($future_value, 2);



?>
<!DOCTYPE html>
<html>
<head>
    <title>Future Value Calculator</title>
    <link rel="stylesheet" type="text/css" href="main.css"/>
</head>
<body>
    <main>
        <h1>Future Value Calculator</h1>

        <label>Investment Amount:</label>
        <span><?php echo $investment_f; ?></span><br>

        <label>Yearly Interest Rate:</label>
        <span><?php echo $yearly_rate_f; ?></span><br>

        <label>Number of Years:</label>
        <span><?php echo $years; ?></span><br>

        <label>Future Value:</label>
        <span><?php echo $future_value_f; ?></span><br>
    
        <label>Compound Interest Calculated:</label>
        <span><?php echo ($monthly?'Monthly':'Yearly'); ?></span><br>

    </main>
</body>
</html>

Solutions

Expert Solution

/************************************************************

**************************** index.php*****************

*********************************************************************/

<?php

// start session to maintain continuity of process
session_start();

// Checking last entered value stored in cookie or not which is stored in display_results.php file if yes then storing value in veriable investment, intrest_rate, years
if(isset($_COOKIE['investment']) && isset($_COOKIE['interest_rate']) && isset($_COOKIE['years']))
{
$investment = $_COOKIE['investment'];
$interest_rate = $_COOKIE['interest_rate'];
$years = $_COOKIE['years'];
}


//set default value of variables for initial page load
if (!isset($investment)) { $investment = '10000'; }
if (!isset($interest_rate)) { $interest_rate = '5'; }
if (!isset($years)) { $years = '5'; }
?>
<!DOCTYPE html>
<html>
<head>
<title>Future Value Calculator</title>
<link rel="stylesheet" type="text/css" href="main.css"/>
</head>

<body>
<main>
<h1>Future Value Calculator</h1>
<?php if (!empty($error_message)) { ?>
<p class="error"><?php echo $error_message; ?></p>
<?php } // end if ?>
<form action="display_results.php" method="post">

<div id="data">
  
<label>Investment Amount:</label>
<select name="investment">
<?php for ($i = 10000; $i <= 50000; $i += 5000) : ?>
<!--here just making selectable of that value which is stored in the cookie-->
<?php if($investment==$i)
{
echo'<option value="'. $i.'" selected>';
}else{
echo'<option value="'. $i.'">';
}
?>
<?php echo number_format($i); ?></option>
<?php endfor; ?>
</select><br>
  
  
<label>Yearly Interest Rate:</label>
<select name="interest_rate">
<?php for ($i = 4; $i <= 12; $i += 0.5) : ?>
<!--here just making selectable of that value which is stored in the cookie-->
<?php if($interest_rate==$i)
{
echo'<option value="'. $i.'" selected>';
}else{
echo'<option value="'. $i.'">';
}
?>
  
<?php echo number_format($i, 2); ?></option>
<?php endfor; ?>
</select><br>
  
  
  
<label>Number of Years:</label>
<input type="text" name="years"
value="<?php echo $years; ?>"/><br>
  

</div>
<p><input type="checkbox" name="monthly" value="1" > Compound Interest Monthly<br></p>

<div id="buttons">
<label>&nbsp;</label>
<input type="submit" value="Calculate"/><br>
</div>

</form>
</main>
</body>
</html>

/************************************************************

**************************** display_results.php*****************

*********************************************************************/

<?php
// start session to maintain continuity of process
session_start();


// get the data from the form
$investment = filter_input(INPUT_POST, 'investment',
FILTER_VALIDATE_FLOAT);
$interest_rate = filter_input(INPUT_POST, 'interest_rate',
FILTER_VALIDATE_FLOAT);
$years = filter_input(INPUT_POST, 'years',
FILTER_VALIDATE_INT);
$monthly =filter_input(INPUT_POST, 'monthly',
FILTER_VALIDATE_INT);   

// validate investment
if ($investment === FALSE ) {
$error_message = 'Investment must be a valid number.';
} else if ( $investment <= 0 ) {
$error_message = 'Investment must be greater than zero.';
// validate interest rate
} else if ( $interest_rate === FALSE ) {
$error_message = 'Interest rate must be a valid number.';
} else if ( $interest_rate <= 0 ) {
$error_message = 'Interest rate must be greater than zero.';
// validate years
} else if ( $years === FALSE ) {
$error_message = 'Years must be a valid whole number.';
} else if ( $years <= 0 ) {
$error_message = 'Years must be greater than zero.';
} else if ( $years > 30 ) {
$error_message = 'Years must be less than 31.';
// set error message to empty string if no invalid entries
} else {
$error_message = '';
/***********************************************************
* ************** storing last entered value in cookie ****
* ************** so that it will save for 2 weeks ****
* *********************************************************/
setcookie('investment',$investment,time()+(86400*14),'/');
setcookie('interest_rate',$interest_rate,time()+(86400*14),'/');
setcookie('years',$years,time()+(86400*14),'/');
}

// if an error message exists, go to the index page
if ($error_message != '') {
include('index.php');
exit();
}

// calculate the future value
$future_value = $investment;
if($monthly) {
$months = 12 * $years;
for ($i = 1; $i <= $months; $i++) {
$future_value += $future_value * ($interest_rate/12) *.01;
}
} else {
for ($i = 1; $i <= $years; $i++) {
$future_value += $future_value * $interest_rate *.01;
}
}

// apply currency and percent formatting
$investment_f = '$'.number_format($investment, 2);
$yearly_rate_f = $interest_rate.'%';
$future_value_f = '$'.number_format($future_value, 2);

?>
<!DOCTYPE html>
<html>
<head>
<title>Future Value Calculator</title>
<link rel="stylesheet" type="text/css" href="main.css"/>
</head>
<body>
<main>
<h1>Future Value Calculator</h1>

<label>Investment Amount:</label>
<span><?php echo $investment_f; ?></span><br>

<label>Yearly Interest Rate:</label>
<span><?php echo $yearly_rate_f; ?></span><br>

<label>Number of Years:</label>
<span><?php echo $years; ?></span><br>

<label>Future Value:</label>
<span><?php echo $future_value_f; ?></span><br>
  
<label>Compound Interest Calculated:</label>
<span><?php echo ($monthly?'Monthly':'Yearly'); ?></span><br>

</main>
</body>
</html>


Related Solutions

Modify the following 'MessageBoxes' application so it uses a single action listener for each button. This...
Modify the following 'MessageBoxes' application so it uses a single action listener for each button. This will require you to separate the single action listener logic into multiple listeners, one for each button. Then modify the code to provide additional options to two or more buttons. /* * The source code for this assignment started with * a sample from "Thinking in Java" 3rd ed. page 825 * by Bruce Eckel. I have finished adding the rest of the action...
Modify the GreenvilleRevenue program so that it uses the Contestant class and performs the following tasks:...
Modify the GreenvilleRevenue program so that it uses the Contestant class and performs the following tasks: The program prompts the user for the number of contestants in this year’s competition; the number must be between 0 and 30. The program continues to prompt the user until a valid value is entered. The expected revenue is calculated and displayed. The revenue is $25 per contestant. For example if there were 3 contestants, the expected revenue would be displayed as: Revenue expected...
Using NetBeans, Modify your sales application so that it polymorphically processes any account objects that are...
Using NetBeans, Modify your sales application so that it polymorphically processes any account objects that are created. Complete the following:     Create a 2-item array of type Account.     Store each account object created into the array.     For each element in this array, call the calculateSales() method, and use the toString() method to display the results.     Code should be fully commented.     Program flow should be logical. Code before revision: /* * To change this license header, choose...
C# Create a console application named that creates a list of shapes, uses serialization to save...
C# Create a console application named that creates a list of shapes, uses serialization to save it to the filesystem using XML, and then deserializes it back: // create a list of Shapes to serialize var listOfShapes = new List<Shape> { new Circle { Colour = "Red", Radius = 2.5 }, new Rectangle { Colour = "Blue", Height = 20.0, Width = 10.0 }, new Circle { Colour = "Green", Radius = 8 }, new Circle { Colour = "Purple",...
Finish the following java question:  Modify a Encryption program so that it uses the following encryption algorithm:...
Finish the following java question:  Modify a Encryption program so that it uses the following encryption algorithm: Every letter (both uppercase and lowercase) converted to its successor except z and Z, which are converted to 'a' and 'A' respectively (i.e., a to b, b to c, …, y to z, z to a, A to B, B to C, …, Y to Z, Z to A) Every digit converted to its predecessor except 0, which is converted to 9 (i.e., 9...
Modify the program below so the driver class (Employee10A) uses a polymorphic approach, meaning it should...
Modify the program below so the driver class (Employee10A) uses a polymorphic approach, meaning it should create an array of the superclass (Employee10A) to hold the subclass (HourlyEmployee10A, SalariedEmployee10A, & CommissionEmployee10A) objects, then load the array with the objects you create. Create one object of each subclass. The three subclasses inherited from the abstract superclass print the results using the overridden abstract method. Below is the source code for the driver class: public class EmployeeTest10A { public static void main(String[]...
Modify the Encryption program so that it uses the following encryption algorithm: Every letter (both uppercase...
Modify the Encryption program so that it uses the following encryption algorithm: Every letter (both uppercase and lowercase) converted to its successor except z and Z, which are converted to 'a' and 'A' respectively (i.e., a to b, b to c, …, y to z, z to a, A to B, B to C, …, Y to Z, Z to A) Every digit converted to its predecessor except 0, which is converted to 9 (i.e., 9 to 8, 8 to...
Modify the partition.java program (Listing 7.2) so that the partitionIt() method always uses the highest-index (right)...
Modify the partition.java program (Listing 7.2) so that the partitionIt() method always uses the highest-index (right) element as the pivot, rather than an arbitrary number. (This is similar to what happens in the quickSort1.java program in Listing 7.3.) Make sure your routine will work for arrays of three or fewer elements. To do so, you may need a few extra statements. // partition.java // demonstrates partitioning an array // to run this program: C>java PartitionApp //////////////////////////////////////////////////////////////// class ArrayPar { private...
Future value and present value concepts are applied in various ways, such as calculating growth rates, earnings per share, expected sales and revenues in the future, and so forth.
Please show excel calculationsFuture value and present value concepts are applied in various ways, such as calculating growth rates, earnings per share, expected sales and revenues in the future, and so forth.Consider the following case:Pharmacist John S. Pemberton invented a soft drink in 1886 that eventually became not only an integral part of everyday life in the United States but also a symbol of consumerism worldwide. In 1929 the first Coca-Cola vending machines were installed in Germany, and in 1930,...
Define and discuss terms uses Acid Test Net working capital Future Value Present Value Net Present...
Define and discuss terms uses Acid Test Net working capital Future Value Present Value Net Present Value Cash Flow Return on Investment Return on Assets
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT