import java.io.*;
import java.text.*;
public class system{
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public static void main(String [] args) throws IOException {
String EmpCode = “”;
while(!EmpCode.equals(“0?)) {
System.out.print(“Enter Employee Code: “);
EmpCode = in.readLine();
String EmpInfo[] = getInfo(EmpCode);
double basicsalary = Double.parseDouble(EmpInfo[3]);
System.out.println(” NEW BACOLOD ENTERPRISES PAYROLL SYSTEM“);
System.out.println(”\n\n“);
System.out.println(“READ ME FIRST : ****************************”);
System.out.println(” * Input for Regular Hours — > 8:00 – 17:00 “);
System.out.println(” * Input for OT Hours — > 17:30 – 20:30 “);
System.out.println(” * OT Income = ( Basic Salary / 8 ) * 1.1 “);
System.out.println(” * Holiday = ( Basic Salary / 8 ) * 1.1 “);
System.out.println(“*******************************************”);
System.out.println(“============= Employee Information ==========”);
System.out.println(“Employee Code: ” + EmpInfo[0]);
System.out.println(“Employee Name: ” + EmpInfo[1]);
System.out.println(“Employee Position: ” + EmpInfo[2]);
System.out.println(“Employee Basic Salary: ” + EmpInfo[3]);
System.out.println(“=======================================”);
String days[] = {“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”};
double timeInOut[][] = new double[2][5];
double otInOut[][] = new double[2][5];
String strTemp = “”;
String tmpTime[] = new String[2];
double tmpHours, totalHours = 0, tmpRegIncome = 0, totalRegIncome = 0,
tmpOTHours,totalOTHours = 0, tmpOTIncome, totalOTIncome = 0;
for(int i = 0; i < 5; i++){
System.out.print(“Time In for ” + days[i] + “: “);
strTemp = in.readLine();
tmpTime = strTemp.split(“:”);
timeInOut[0][i] = Double.parseDouble(tmpTime[0]) + (Double.parseDouble(tmpTime[1]) / 60);
System.out.print(“Time Out for ” + days[i] + “: “);
strTemp = in.readLine();
tmpTime = strTemp.split(“:”);
timeInOut[1][i] = Double.parseDouble(tmpTime[0]) + (Double.parseDouble(tmpTime[1]) / 60);
System.out.print(“is ” + days[i] + ” Holiday?: “);
String isHoliday = in.readLine();
System.out.print(“OT Time In for ” + days[i] + “: “);
strTemp = in.readLine();
tmpTime = strTemp.split(“:”);
otInOut[0][i] = Double.parseDouble(tmpTime[0]) + (Double.parseDouble(tmpTime[1]) / 60);
System.out.print(“OT Time Out for ” + days[i] + “: “);
strTemp = in.readLine();
tmpTime = strTemp.split(“:”);
otInOut[1][i] = Double.parseDouble(tmpTime[0]) + (Double.parseDouble(tmpTime[1]) / 60);
if(timeInOut[0][i] < 8)timeInOut[0][i] = 8;
if(timeInOut[1][i] > 17)timeInOut[1][i] = 17;
if(otInOut[0][i] < 17.5 && otInOut[0][i] != 0)otInOut[0][i] = 17.5;
if(otInOut[1][i] > 20.5)otInOut[1][i] = 20.5;
tmpHours = timeInOut[1][i] – timeInOut[0][i];
tmpOTHours = otInOut[1][i] – otInOut[0][i];
if(tmpHours > 4)tmpHours–;
if(isHoliday.equals(“Yes”)){
totalOTHours += tmpHours;
totalOTIncome += tmpHours * ((basicsalary / 8) * 1.1);
totalHours += tmpHours;
tmpRegIncome = tmpHours * (basicsalary / 8);
}else{
totalHours += tmpHours;
tmpRegIncome = tmpHours * (basicsalary / 8);
}
totalOTHours += tmpOTHours;
totalOTIncome += tmpOTHours * ((basicsalary / 8) * 1.1);
totalRegIncome += tmpRegIncome;
}
double grossincome = totalRegIncome + totalOTIncome;
DecimalFormat df = new DecimalFormat(“#.##”);
System.out.println(“=========== Total Output ==============”);
System.out.println(“Total work hours: ” + df.format(totalHours));
System.out.println(“Total regular income: ” + df.format(totalRegIncome));
System.out.println(“Total OT hours: ” + df.format(totalOTHours));
System.out.println(“Total OT Income: ” + df.format(totalOTIncome));
System.out.println(“Gross Income: ” + df.format(grossincome));
System.out.println(“=====================================”);
}
}
static String[] getInfo(String EmpCode){
String getInfo[] = new String [4];
String strLine;
int ctr =0;
boolean isFound = false;
try{
FileInputStream fstream = new FileInputStream(“payroll.txt”);
DataInputStream dstream = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(dstream));
while((strLine = br.readLine()) != null && ctr < 4){
if(strLine.equals(EmpCode))isFound = true;
if(isFound){
getInfo[ctr] = strLine;
ctr++;
}
}
br.close();
}catch(IOException e){
System.out.println(“Error: ” + e.getMessage());
}
return getInfo;
}
}