In: Computer Science
Changes from the basic are highlighted yellow
Write a payroll processing program. Input will be from a file
called “weeklyData.txt”. You may create this file on your own for
testing purposes, but I have provided a file with 75 employees that
I will use to test your code. (I know what it should
produce).
Each line in the file contains information about one employee. Each
item is separated by a space. The items are, in order:
First Name Last Name Hourly wage rate (decimal) Hours worked
(decimal) # of dependents (whole number) % of gross withheld for
retirement (whole number, ranges from 0 to 10) Amount donated to
United Way (dollar amount)
For each employee listed in this file, read the above data and
produce the following detail data:
Regular hours worked and overtime hours worked Regular pay and
overtime pay and gross pay Pension contribution, United Way
contribution Taxable income Insurance deduction, Income tax
deduction Net pay
Calculations: Overtime hours are all hours over 40, the rest are
regular hours Regular pay is the regular hours times the wage rate
Overtime pay is 1.5 times the overtime hours times the wage rate
Gross pay is regular pay plus overtime pay Retirement is the
percentage of the gross deducted from the employee, and the company
will donate a matching amount up to $100.00. The matching amount is
not added to the employees pay, or deducted from their pay. Just
note this amount when you print the detail data for retirement.
United Way contribution is whatever was read. Taxable income is
gross minus both the retirement and united way contributions
Insurance is determined by the number of dependents: 0 is $25.19 1
is $39.02 2 or more is $50.63 Income tax is calculated on taxable
income as follows. The first $300 dollars is not taxed The next
$500 is taxed at 8.5% of gross Everything over $800 is taxed at
12.5% of gross
with the following stipulation: for each dependent, the tax rates
(8.5 and 12.5) are reduced by %0.5 (a half of a percent). So, if a
person has 2 dependents the rates would be %7.5 and %11.5
Net pay is gross pay minus the four deductions (retirement,
united way, tax and insurance)
The detail output should be to a file called “payroll.txt”
formatted nicely, and include the three input values as well as all
calculated values. Separate each employee’s detail data in the file
as you see fit.
Summary data should include the following (and should be printed at
the end of the detail data in the output file, as well as to the
screen.
# of employees Total payroll (sum of all gross pay), and of that
how much was overtime Total hours worked, and of that how many were
overtime hours Total retirement contributions and total amount of
matching funds Total United Way contributions Total insurance
premiums Total taxes withheld
Please find my implementation.
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class ProjectFive {
public static void main(String[] args) throws
IOException {
// Payroll Project
Scanner inFile = new Scanner(new
File("weeklyData.txt"));
PrintWriter outFile = new
PrintWriter(new File("payroll.txt"));
int counter1 = 0;
double counter2 = 0;
double counter4 = 0;
double counter5 = 0;
double counter6 = 0;
double counter7 = 0;
double counter8 = 0;
while (inFile.hasNext()) {
String name1
= inFile.next();
String name2 =
inFile.next();
double hourly =
inFile.nextDouble();
double worked =
inFile.nextDouble();
int dependants =
inFile.nextInt();
double ins =
calcInsurance(dependants);
double gross =
calcGross(worked, hourly);
double overtime3
= calcOvertime(worked);
double overtime2
= calcOTPay(worked, hourly);
double tax =
calcTax(gross);
double reg =
worked - overtime3;
counter1++;
counter2 +=
worked;
counter4 +=
gross;
counter5 +=
overtime3;
counter6 +=
overtime2;
counter8 +=
ins;
counter7 +=
tax;
System.out.printf("Hours Worked: (Regular:%.2f Overtime:%.2f) total
hours %.2f Total overtime %.2f %n", reg,
overtime3, counter2,
counter5);
}
}
public static double calcOvertime(double worked)
{
if (worked > 40) {
return (worked -
40);
}
return 0;
}
public static double calcOTPay(double worked,
double hourly) {
if (worked > 40) {
return ((worked
- 40) * hourly * 1.5);
}
return 0;
}
public static double calcTax(double gross) {
if (gross <= 300) {
return 0;
} else if (gross <= 800) {
return ((gross -
300) * .05);
} else if (gross > 800) {
return ((gross -
800) * .085) + ((800 - 300) * .05);
} // Unneeded final return but
function fails without
return gross;
}
public static double calcInsurance(int dependants)
{
if (dependants == 0) {
return
25.19;
} else if (dependants == 1) {
return
39.02;
} else if (dependants >= 2)
{
return
50.63;
} // Unneeded final return but
function fails without
return dependants;
}
public static double calcGross(double worked,
double hourly) {
if (worked > 40) {
return (40 *
hourly) + ((worked - 40) * hourly * 1.5);
} else {
return worked *
hourly;
}
}
}
/*
weeklyData.txt
Randy Rich 32.32 46.75 5
Ruby Bianchi 21.94 40.00 2
Clemens Hopkins 18.18 39.50 1
Hugo Shannon 18.52 40.00 0
Carol Carpenter 24.54 39.00 5
Gero Parker 31.36 40.00 5
Otto Muniz 37.45 48.75 5
Gordon Uzarski 42.95 40.00 4
Tina Lee 15.25 40.00 2
Calvin Harper 39.95 40.00 0
Kelvin Fowler 37.45 40.00 1
Freddy Hobbs 41.11 38.25 0
Clayton Frank 27.18 36.50 2
Edward Harris 19.40 45.00 4
Shea Torres 31.19 49.75 4
Ruben Aguilar 41.54 40.00 0
Betty Wiggins 17.43 40.00 1
Gabriel Hall 23.62 34.00 4
Zina Dominguez 40.44 39.00 4
Alfredo Castellena 35.63 38.75 4
Archie Turner 41.55 40.00 0
Ernest Phillips 17.49 40.00 3
Carlton Neto 26.10 48.50 1
Grace Pitts 30.41 35.00 0
Abraham Knox 20.17 40.00 2
Randy Boyd 34.92 40.00 1
Max Zimmerman 22.31 40.00 0
Homer Harper 34.56 40.00 1
Mauritius Gray 32.93 40.00 3
Arturo Lawrence 26.44 40.00 4
Fernando Pittman 22.94 40.00 4
Kenneth Hernandez 37.53 40.00 1
Eugene Adgate 34.99 40.00 1
Werner Halpin 40.39 47.50 2
Dan O'Flanigan 21.95 38.75 1
Linda Sun 40.61 45.25 1
Gregor Neal 21.94 40.00 2
Hugh Dominguez 33.54 50.75 1
Helen Goodman 30.36 40.00 3
Dwight Monroe 29.79 34.75 0
Helena Mcgee 32.31 45.75 3
Melvin Stanley 43.07 39.75 1
Agnes Martinez 21.73 47.75 4
Filbert Bethel 33.49 40.00 3
Herman Carter 36.16 40.00 4
Felix Hudson 36.11 40.00 2
Ben Cohen 31.69 48.25 2
Wayne Navarro 35.54 34.75 1
Frank Johnson 37.62 36.00 3
Edward Greer 43.29 40.00 4
Nicole Todd 28.96 40.00 2
Alvin Asmal 18.70 40.00 1
Debra Curry 39.30 40.00 1
Julius Bankemper 34.91 38.00 0
Johnny Rios 41.96 37.25 3
Harvey Simon 21.64 40.00 4
Anthony Walton 41.52 36.25 1
Terrance Morgan 26.86 40.00 4
Mitchell Mersey 41.50 40.00 2
Frank Rios 27.96 34.50 3
Neal Williamson 34.10 40.00 0
Casey Hansen 27.97 49.25 3
Perry Roth 20.57 40.00 3
Kenny Beck 25.04 40.00 5
Betty Davis 39.97 49.00 1
Ed Cruz 21.82 38.00 3
Margareta Serrano 15.10 40.00 1
Agatha Roman 28.33 38.75 1
Colleen Skolnik 22.18 40.00 1
Ronnie Roux 19.12 40.00 1
Quincy Peters 34.58 40.00 0
Benedikt Yates 16.15 48.25 1
Enrique Carpenter 34.97 36.25 4
Janet Visser 44.00 45.50 3
Alan Rodriguez 20.53 40.00 4
*/