Introduction
Your task is to produce a Java program, which can calculate income tax and investment growth based on the yearly income/salary of an individual. Below the details are described (The rules in this assignment are different from Australia Taxation Office).
Problem description
In Australia, a taxpayer's income is taxed progressively. Progressive taxation means that higher income earners pay more tax than lower income earners. The following tables detail the tax brackets of our progressive tax system for the financial years ending 30 June 2010 and 30 June 2011. Note that the first table is for Australian residents and the next one is for non residents.
Tax rates 2010-11 - residents
Taxable income
|
Tax on this income
|
$0 - $6,000
|
Nil
|
$6,001 - $37,000
|
15c for each $1 over $6,000
|
$37,001 - $80,000
|
$4,650 plus 30c for each $1 over $37,000
|
$80,001 - $180,000
|
$17,550 plus 37c for each $1 over $80,000
|
Over $180,001
|
$54,550 plus 45c for each $1 over $180,000
|
Tax rates 2010-11 - non residents
Taxable income
|
Tax on this income
|
$0 - $37,000
|
29c for each $1
|
$37,001 - $80,000
|
$10,730 plus 30c for each $1 over $37,000
|
$80,001 - $180,000
|
$23,630 plus 37c for each $1 over $80,000
|
Over $180,001
|
$60,630 plus 45c for each $1 over $180,000
|
Residents are also required to pay 1.5% of Medicare levy if your taxable income is greater than $20,000, which is calculated at 1.5% of your taxable income. Non-residents are not required to pay the Medicare levy.
The first task of the program is to calculate the appropriate income tax for an individual based on a set of inputs by the user and the information provided in the Tax tables above. The user should provide the program with
1 Name (the name needs to have at least two names - first name and last name; if not, the program will show an error message and ask the user the name again),
2 Annual income/Salary (income) for an entire year (the salary needs to be a positive number and different from zero; if not, the program will show an error message and ask the salary again)
3 Residence - if the user is a resident or not.
The program is then expected to display:
1. 1 the net salary of this particular individual per year and per week, rounded to two decimal places (where appropriate).
2. The correct amount of tax the individual should pay per year and per week (as defined by the Tax rates above), rounded to two decimal places (where appropriate).
3. If the individual pays the Medicare Levy and if so, how much per year rounded to two decimal places (where appropriate).
The second task of the program is to calculate/display a possible investment. First, the program should ask
The amount of money that he/she requires (on an average) per week as living expenditure. You are to assume this expenditure value does not change for the individual over time. (the amount needs to be a positive number and different from zero; if not, the program will show an error message and ask the salary again)
On the basis of this information the program should advise the user whether or not the amount he/she is earning each week is sufficient to cover his/her weekly expenses. If the user earns less than the amount that is required to live, you should show a warning message and ask if the user would like to enter a new amount or terminate the program.
If an amount is sufficient to cover his/her weekly expenses, the program should ask if the user would like to invest some money. If yes, the program should ask
1. Investment value - the amount of money that he/she would like to invest per week (it is necessary to verify if this amount is feasible. If not, show an error message and ask again)
2. Interest rate - the interest rate of the investment account per annum (the interest rate needs to be between 1% and 100%; otherwise the program will show an error message and ask the user for the interest rate again)
3. Investment length - number of weeks that the user will invest the money (it needs to be a positive number and different from zero; otherwise the program will show an error message and ask the number of weeks again)
The program is then expected to display:
A table with details of the investment at four week intervals for the length of the investment. For the purposes of this assignment you will assume that interest is only applied at the end of a complete four week period, see the example below.
Suppose that the interest is applied in the end of each 4 weeks. See the example below.
Example
Suppose a resident with yearly income of $40,000.00. The Medicare Levy will be $600.00 and the taxes will be $5,550.00/year or $106.73/week. His/her net salary per year will be $33,850.00 or $650.96 per week. Suppose the user needs $628.71 per week as living expenditure. So it is possible to invest $22.25 per week. Suppose the interest is 13% per year (or 1% each 4 weeks, since we have 52 weeks per year) and the number of weeks the user will invest the money is 18. Assuming the user asks to invest $22.25 per week, then the investment account output will be:
Weeks
|
Money in the end of each 4 weeks
|
4
|
$89.89 = 22.25*4*1.01
|
8
|
$180.68 = (89.89+22.25*4)*1.01
|
12
|
$272.38 = (180.68+22.25*4)*1.01
|
16
|
$364.99 = (272.38+22.25*4)*1.01
|
18
|
$409.49 = (364.99 + 22.25*2) (note that is less than 4 weeks, so the interest is not applied
|
Example Output (simplified)
Name: John Smith
Net Salary
Per Week: $650.96
Per Year: $33850.00
Tax Paid
Per Week: $106.73
Per Year: $5550.00
Medicare Levy Per Year: $600.00
Would you like to invest? Yes
The amount per week: 22.25
Interest rate (between 1-100): 13
Investment length (# of weeks): 18
Investment
Weeks Balance --------------------
4 $89.89
8 $180.68
12 $272.38
16 $364.99
18 $409.49
Program Requirements
Your program should consist of only one class (Invest.java) and only one method (the main method). You will use a Terminal I/O interface and your program needs to display all information such that it is easy to read. You cannot use arrays. Your code also must be very well commented and have a heading as:
/*Author: your name
*Student No: 3XXXXXX
*Date: 02-03-2011
*Description:
*/
What to submit.
You should submit the Java program (Invest.java) and the assignment cover sheet electronically under Assignment 1 link in Blackboard. Note: although you can save multiple versions of your program, you can only 'submit' your assignment once. The lab demonstrators will show you how to do this.
VERY IMPORTANT TO DO THIS
You need to provide the pseudocode of the program. The pseudocode can not have any element of your interface implementation. You should specify the input and output in your pseudocode.