Your company has asked you to develop a report detailing payroll information wit
ID: 3930047 • Letter: Y
Question
Your company has asked you to develop a report detailing payroll information with the following format:
Acme Corporation
Number of Employees: 3
Average Salary: 53,502.32
Annual Total: 160,506.95
Name Rank Salary
Gator, Allie A2 48,800.00
Mander, Sally A1 62,123.89
Baer, Teddy B4 53,006.95
Develop an Employee class that contains the attributes first name, last name, rank, and salary. The class should have the following methods:
parameterized constructor
getters necessary for printing the report
formatName() method that returns a String with the name in the format last, first
Employee information is stored in a sequential text file named employees.txt. The file has the format:
employees.txt file: text file with the following fields separated by spaces:
(TEXT FILE for program: employees.txt )
Fields
Description
First Name
string
Last Name
string
Rank
string
Salary
double
Note: Names will not contain spaces.
Write a program named Prog5 that reads employee information from the file and places a corresponding Employee object into an array. After the file has been read, print the report shown above using proper formatting.
Challenge
For those who would like a challenge to increase the difficulty of the assignment, implement the following static methods to be used to print the average salary and annual total, both of which receive an array of doubles and the number of elements in the array:
averageSalary( Employee arr[], int num ) returns the average salary of employees in the array
totalSalary( Employee arr[], int num ) returns the sum of all salaries of employees in the array
Fields
Description
First Name
string
Last Name
string
Rank
string
Salary
double
Explanation / Answer
import java.io.File;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Employee {
String firstName, lastName, rank;
double salary;
/**
* @param firstName
* @param lastName
* @param rank
* @param salary
*/
public Employee(String firstName, String lastName, String rank,
double salary) {
this.firstName = firstName;
this.lastName = lastName;
this.rank = rank;
this.salary = salary;
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @param firstName
* the firstName to set
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @param lastName
* the lastName to set
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
* @return the rank
*/
public String getRank() {
return rank;
}
/**
* @param rank
* the rank to set
*/
public void setRank(String rank) {
this.rank = rank;
}
/**
* @return the salary
*/
public double getSalary() {
return salary;
}
/**
* @param salary
* the salary to set
*/
public void setSalary(double salary) {
this.salary = salary;
}
public String formatName() {
return lastName + ", " + firstName;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
DecimalFormat format = new DecimalFormat("#.00");
return formatName() + " " + rank + " " + format.format(salary);
}
public static double averageSalary(Employee arr[], int num) {
return totalSalary(arr, num) / num;
}
public static double totalSalary(Employee arr[], int num) {
double sumSal = 0;
for (int i = 0; i < num; i++) {
sumSal += arr[i].getSalary();
}
return sumSal;
}
public static void main(String[] args) {
Scanner scanner = null;
try {
scanner = new Scanner(new File("employees.txt"));
Employee[] employees = new Employee[100];
int noOfEmployees = 0;
while (scanner.hasNext()) {
Employee employee = new Employee(scanner.next(),
scanner.next(), scanner.next(), scanner.nextDouble());
employees[noOfEmployees] = employee;
noOfEmployees++;
}
System.out.println("Acme Corporation");
System.out.println("Average Salary: "
+ averageSalary(employees, noOfEmployees));
System.out.println("Annual Total: "
+ totalSalary(employees, noOfEmployees));
System.out
.println("Number of Employees: " + noOfEmployees);
System.out.println("Name Rank Salary");
for (int i = 0; i < noOfEmployees; i++) {
System.out.println(employees[i]);
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
employees.txt
Teddy Baer B4 53000
Allie Gator A2 48000
Sally Mander A1 62123.89
Jed Night B2 42500
Sebastian Celery A3 65000
Amy Aspargus A1 100050
Henry Huckleberry B1 41234.5
Ryan Rutabaga B2 32987.2
Tom Tomato A1 83768.95
OUTPUT:
Acme Corporation
Average Salary: 58740.50444444445
Annual Total: 528664.54
Number of Employees: 9
Name Rank Salary
Baer, Teddy B4 53000.00
Gator, Allie A2 48000.00
Mander, Sally A1 62123.89
Night, Jed B2 42500.00
Celery, Sebastian A3 65000.00
Aspargus, Amy A1 100050.00
Huckleberry, Henry B1 41234.50
Rutabaga, Ryan B2 32987.20
Tomato, Tom A1 83768.95
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.