$15
PROJECT DESCRIPTION
This series of projects will be a continuation from the last computer laboratory assignment, which had you use an application that wrote data to a sequential file.
This time we will now read that payroll.txt data file, which was created earlier, and display it to the program user.
The program code given in Figure 1 , which follows, reads payroll information from a data file and displays the information to the user. Modify the code to use looping techniques to allow the user to enter five separate payroll reports into a text file.
Information about This Project
This program illustrates an example of sequential file processing.
Steps To Complete This Project
STEP 1 Open Eclipse or JCreator
If it is not open, launch Eclipse or JCreator and open the file associated with the lab project that you created in the prior lab exercise.
STEP 2 Add a New File to the Application
Open Eclipse or JCreator. From the Eclipse or JCreator main menu, click File , choose New and select Java Project . Name the project and Java file as
ReadData since this is the class name for this project. Click OK to close the New dialog box. When the editor opens, type or copy the program code shown in Figure 1 , which follows, exactly as it appears, except substitute your own name in place of Sammy Student.
The program code is written such that when the program is executed, the user will be displayed the various records comprised the data file, one at a time. An example record is shown below.
STEP 3 Compile, Execute and Test the Program
Move the payroll.txt data file such that it will be located within your project ReadData workspace folder and compile your program code.
Once you have successfully compiled your program, run your program and observe the various records displayed to you as you sequence through the message boxes.
PROJECT ( Reading from a Sequential File )
Figure 1 Program Code for Read File
import javax.swing.JOptionPane;
import java.io.*;
public class ReadData { //Sammy Student, Programmer
public ReadData ()
{
try {
String[] firstLine = new String[100],
secondLine = new String[100],
thirdLine = new String[100];
double hours[] = new double[100], wages[] = new double[100];
int index;
for (index = 0; index < 100; index++) {
firstLine[index] = "";
secondLine[index] = "";
thirdLine[index ] = "";
hours[index] = 0.0;
wages[index]= 0.0;
}
FileReader file = new FileReader("payroll.txt");
BufferedReader buffer = new BufferedReader(file);
index = 0;
String line;
while((line = buffer.readLine()) != null)
{
firstLine[index] = line;
secondLine[index] = buffer.readLine();
thirdLine[index ] = buffer.readLine();
hours[index] = Double.parseDouble(secondLine[index]);
wages[index] = Double.parseDouble(thirdLine[index]);
JOptionPane.showMessageDialog(null, firstLine[index] + "\n"
+ hours[index] + "\n" + wages[index], "Result",
JOptionPane.PLAIN_MESSAGE );
index++;
}
buffer.close();
System.exit(0);
}
catch (IOException e ) { System.out.println(e); }
}
PROJECT ( Reading from a Sequential File )
public static void main(String[] args)
{
new ReadData();
}
}
STEP 4 Modify the File to Include Currency Formatting
Modify your code for this Java file such that the data file records will individually display, as shown in the example message box given below.
Each data value is to be labeled as to whether it is a name, number of hours or wage amount. Also, the wage amount is to be displayed with a currency format, with a dollar sign and two decimal points.
One way to incorporate a currency format in your code is given below.
First use the following import directive.
import java.text.DecimalFormat;
Then within the your constructor at the top of the method, incorporate the statement below to declare a DecimalFormat class object.
DecimalFormat twoDecimal = new DecimalFormat("0.00");
Apply the format method of the DecimalFormat object to each variable for which you want to display with the currency format. For example, for the variable named wages[index] , you would use:
twoDecimal.format(wages[index])
Remember to concatenate a $ dollar sign with the decimal output to complete the currency formatting.
STEP 5 Modify the File to Include Overtime Pay
Next, alter your code such that not only the name, hours and wages will be displayed in the message box but also the individual’s gross pay. The gross
pay is calculated in the usual way by multiplying the hours by the wages. An additional amount of 1.5 of the wages is added to gross pay for each hour over 40 hours. A sample output screen is given below.
PROJECT ( Reading from a Sequential File )
STEP 6 Run the Modified Application
Before you run your modified program, add new records to your payroll.txt file. Add in a new class to your source (src) folder and call it CreateData. The code will be like you did for the last lab but with a slight modification. So add in the code below into your file so your app overall will execute properly for this lab
(you’ll see what I mean later).
//Sammy Student: programmer
import javax.swing.JOptionPane;
import java.io.*;
import java.io.FileWriter;
public class CreateData {
public static void main(String[] args)
{
new CreateData();
}
public CreateData()
{
int repeat = 1;
String answer;
do
{
Write();
answer = JOptionPane.showInputDialog ("write payroll " +
"data?\n" + "enter 1 to continue or 0 to exit");
repeat = Integer.parseInt(answer);
}while(repeat == 1);
System.exit(1);
}
static void Write()
{
try {
String firstLine, secondLine, thirdLine, number = "";
File check = new File("payroll.txt");
FileWriter file;
if(check.exists())
file = new FileWriter("payroll.txt", true);
else
file = new FileWriter("payroll.txt");
BufferedWriter buffer = new BufferedWriter(file);
int size, count = 1;
while(number == null || number.equals(""))
number = JOptionPane.showInputDialog("how many records?");
size = Integer.parseInt(number);
do {
firstLine = JOptionPane.showInputDialog("Enter name");
secondLine = JOptionPane.showInputDialog("Enter hours");
thirdLine = JOptionPane.showInputDialog("Enter wage");
buffer.write(firstLine);
buffer.newLine();
buffer.write(secondLine);
buffer.newLine();
buffer.write(thirdLine);
buffer.newLine();
count++;
}while(count <= size);
buffer.close();
JOptionPane.showMessageDialog(null, "data processed",
"Result", JOptionPane.PLAIN_MESSAGE );
}
catch (IOException e) { System.out.println(e); }
}
}
Now execute the CreateData Java file and add the records below to the
payroll.txt file
name
hours
wage
Betty Boop
66
22.00
Tom Ceina
41
15.45
Kathy Kay
43
8.90
Larry Lance
52
11.35
After you add the records, execute your ReadData Java file and view the
PROJECT ( Reading from a Sequential File )
individual payroll records and the corresponding computed gross pay. Ensure that any overtime amounts are correctly computed and added to the gross pay.
Take screen snapshots of your modified program in action and submit them for credit.
STEP 7 Perform a Second Modification to this Application
With your modification successfully computing overtime pay, add additional program code which, for each employee, will save both the name of the
employee and the employee’s respective overtime pay into an new data file
called Overtime.txt . Each employee’s overtime pay is to be written to the overtime file regardless of the amount of overtime pay, that is, even if the
employee receives $ 0 overtime pay.
Test your completed program to ensure that the new Overtime.txt data file is created.
Snapshot the contents of the Overtime.txt file and your completed code and submit it for credit.
STEP 8 Proceed to the Next Project
The next project has you creating a java file to generate a single employee’s data.
PROJECT ( Report Writing ) Total points=20
Objective To write a program that generates a payroll report.
PROJECT DESCRIPTION
Write a program that has the capability of generating a report for each individual employee whose payroll data is requested.
Information about This Project
This particular program illustrates the importance of report writing.
Steps To Complete This Project
STEP 1 Open Eclipse or JCreator
If it is not open, launch Eclipse or JCreator and open the folder or drive location associated with the lab project files that you created in the prior lab exercises.
STEP 2 Add a New Class File to the Application
From the Eclipse or JCreator main menu, create a new Class file. In this case, use the file name Report since this is the class name for this project.
Save the file in the same folder and / or file storage drive location as the file you created in the last project. Click OK to close the New dialog box.
When the Eclipse or JCreator editor opens, write the program code which will
create a payroll report for a particular employee. A sample payroll report is given in Figure 1 , which follows.
PROJECT ( Report Writing )
Figure 1 Sample Payroll Report
.
************ Payroll Report *************************
Employee Name: David Davies
Hours: 30
Wages: $8.75
Gross Pay: $262.50
Overtime Pay: $0.00 (included in gross pay)
*****************************************************
Write your program code such that when the user is allowed to enter an employee name from the given list of employees, the program will search for
the employee’s payroll data and then generate a report in a data file (as shown in figure 1 above), whose file name is the employee’s first initial of his / her first name, followed by their complete last name.
For example, if a report is generated for David Davies, the report will be located in the text file bearing the name DDavies.txt .
If the employee’s name is not in the given list and their payroll information cannot be located, then a message is to be displayed to the user indicating this.
Include the following starter code for your file and finish the code starting in your constructor as you see appropriate:
import java.io.*;
import javax.swing.JOptionPane;
public class Report { //Sammy Student, Programmer
public Report ()
{
//code here the logic to create a report for the user
}
public static void main(String[] args)
{
new Report();
}
}
STEP 3 Run the Application
Run the application and verify that your employee search and write file program is completely functional. Snapshot a few payroll reports, one for an employee without overtime pay and another for an employee with overtime pay.
PROJECT ( Report Writing )
Also take snapshots of an example search request when an employee’s name, which is not on the list, is requested, and your message stating that the employee cannot be located is shown.
Submit the snapshots and your completed program code for credit.
STEP 4 Proceed to the Next Project
The next project has you utilizing a menu to ease the navigation between the three files that you just created and other files you will soon create.
PROJECT ( Creating a Menu Dialog Box ) Total points=5
Objective To write a program that creates a menu.
PROJECT DESCRIPTION
Write a program that creates a menu which allows the user to select from various functions involving payroll processing.
Information about This Project
This particular program illustrates the importance of a switch / case selection structure.
Steps To Complete This Project
STEP 1 Open Eclipse or JCreator
If it is not open, launch Eclipse or JCreator and open the file associated with the lab project files that you created in the prior lab exercises.
STEP 2 Add a New File to the Application
From the Eclipse or JCreator main menu, create a new Java application file and use the file name Menu since this is the class name for this project. Save the file in the same folder and / or file storage drive location as the file you created in the last project. Then, type the program code shown in Figure 1 , which follows, exactly as it appears, except substitute your own name in place of Sammy Student.
The program code is written such that when the program is executed, the user will be displayed the menu screen shown below, allowing the user to select one of the various functions of the application.
PROJECT ( Creating a Menu Dialog Box )
Figure 1
Figure 2 Program Code for Menu.Java File
import java.awt.Graphics;
import javax.swing.JOptionPane;
//programmer: Sammy Student
public class Menu {
public Menu()
{
String message = "welcome" + "\n", response;
message += "\n" + "enter...";
message += "\n" + " 1 to enter payroll data";
message += "\n" + " 2 to view payroll data";
message += "\n" + " 3 to generate report by employee";
message += "\n" + " 4 to exit" + "\n" + " ";
char answer = 'Y';
do {
try {
response = JOptionPane.showInputDialog(message);
int choice = Integer.parseInt(response);
switch (choice) {
case 1: CreateData cd = new CreateData();
answer = 'N'; System.exit(1);
break;
case 2: ReadData rd = new ReadData();
answer = 'N'; System.exit(1);
break;
case 3: Report rpt = new Report();
answer = 'N'; System.exit(1);
break;
case 4: answer = 'N'; System.exit(1);
break;
default: { answer = 'Y'; choice = 0;
JOptionPane.showMessageDialog(null,"enter a number: 1 - 4");
}
}//end switch
}//end try
catch (Exception e ) { System.out.println(e); }
}while(answer == 'Y' || answer == 'y');
}
public static void main(String[] args)
{
new Menu();
}//end main
}//end class
Hope you stop and think a bit about the interesting switch-case above. Notice you’ve got objects of each class you wish to fire when the user selects a particular menu item. The objects instantiate here for you which starts the class file! Further notice that the three classes you created above had an instantiation of each class in main so you can also fire the classes individually when testing and running each java file.
Continue the same logic here when adding future menu options in your switch case to trigger any java file(s) you’ll be adding into your menu for further menu options!
STEP 3 Compile, Execute and Test the Program
After you have typed the given program code, build, compile and execute the program. Observe the menu input dialog box that opens when the application is executed.
Submit a screen snapshot of your menu input dialog box.
STEP 4 Modify the Program Code
Modify your program code for the Menu.java file such that the program will not crash if a non - numeric character is accidentally entered by the user. That is, if the user types the letter A into the Menu input dialog box, the program will catch that a non - numeric character was accidentally entered, display an error message dialog box to the user and allow the user the chance to correctly
enter a number into the dialog box.
Your program is to catch this character exception before any other exception that may happen in the program.
After adding the new program code, run your program again and test the program when a non - numeric character is entered.
Submit a screen snapshot of your error message and completed code for this project.
STEP 5 Proceed to the Next Project
The next project has you incorporating a login entry screen to prevent unauthorized users from using the applications within the program.
PROJECT ( Creating an Login Entry Dialog Box ) Total points=5
Objective To write a program that requires a login entry screen to access a main program.
PROJECT DESCRIPTION
Write a program that will create a menu which allows the user to login or enter an application.
Information about This Project
This particular program illustrates the importance of a login screen to precede an application.
Steps To Complete This Project
STEP 1 Open Eclipse or JCreator
If it is not open, launch Eclipse or JCreator and open the folder or drive location associated with the lab project files that you created in the prior lab exercises.
STEP 2 Add a New Class File to the Application
From the Eclipse or JCreator main menu, create a new Java Class file and use the file name Login since this is the class name for this project. Save the file in the same folder and / or file storage drive location as the file you created in the last project. When the Eclipse or JCreator editor opens, type the program code shown in Figure 7 which follows, exactly as it appears, except substitute your own name in place of Sammy Student.
The program code is written such that when the program is executed, the user will be displayed the login screen shown below, allowing the user to enter their login name.
Figure 1
If the correct login name is entered, SAMMY in this case, this screen appears.
Figure 2
Otherwise, this screen appears.
Figure 3
If the correct login name was entered, this screen also appears, prompting the user for the correct password, which is AUTUMN, according to the following code.
Figure 4
If the correct password is entered, the menu screen that you created in a prior project is opened.
Figure 5
Otherwise, the screen below appears and the application terminates.
Figure 6
Figure 7 Program Code for Login.Java File
import java.awt.Graphics;
import javax.swing.JOptionPane;
import java.lang.String; //programmer: Sammy Student
public class Login {
public static void main(String[] args)
{
boolean access = false;
String message = "welcome" + "\n", response;
message += "enter your name";
message += "\n" + " ";
String name = JOptionPane.showInputDialog(message);
String password;
name = name.trim();
name = name.toUpperCase();
if (name.equals("SAMMY"))
{
JOptionPane.showMessageDialog(null,"hello " + name);
message = "enter your password";
message += "\n" + " ";
password = JOptionPane.showInputDialog(message);
password = password.trim();
password = password.toUpperCase();
if (password.equals("AUTUMN"))
{
access = true;
}
else
JOptionPane.showMessageDialog(null, "incorrect password");
}
else
{
JOptionPane.showMessageDialog(null, "incorrect login name");
System.exit(1);
}
if(access == true)
{
try {
Menu m = new Menu();
System.exit(1);
}
catch (Exception e) { System.out.println(e);}
}
}//end main
}//end class
STEP 3 Compile, Execute and Test the Program
After you have typed the given program code, build, compile and execute the program. Observe the login name dialog box that opens when the application is executed. Enter the login name SAMMY. Then in the appropriate input dialog box, enter the password AUTUMN. When the menu input dialog box appears, type 4 to exit the application.
STEP 4 Modify the Program
After you have successfully executed the Login program, modify your program code to allow the user three opportunities to enter both the correct name and / or password. If the user, within the three tries, types the correct login name or password, the entrance to the menu application (i.e., Menu.java) will be successful, otherwise the login program will terminate.
STEP 5 Run the Modified Program
Test the operation of your modified program. Take screen snapshots of the operation of the program with a successful login and when the user fails to login correctly (show 2 failure snapshots). Submit the screen snapshots and your program code for this file for credit.
STEP 6 Proceed to the Next Project
The next project has you generating a “Control-Break” payroll report.
PROJECT ( Implementing Control - Break Logic )
Objective To write a program that uses control - break logic.
PROJECT DESCRIPTION
Write a program that will demonstrate control - break logic, according to the following instructions.
Information about This Project
This particular program illustrates the importance of control - break logic. Control breaks are typically used to summarize data into groups. As data is accumulated within some looping structure, there is a " break " in the program to report a particular subtotal.
Steps To Complete This Project
STEP 1 Open Eclipse or JCreator
If it is not open, launch Eclipse or JCreator and open the folder or drive location associated with the lab project files that you created in the prior lab exercises.
PROJECT ( Implementing Control - Break Logic )
STEP 2 Add a New Class File to the Application
From the Eclipse or JCreator main menu, create a new Class file. In this case, use the file name Summary since this is the class name for this project. Save the file in the same folder and / or file storage drive location as the file you created in the last project. Click OK to close the New dialog box.
STEP 3 Add a New File to the Application
When the file opens, write the program code that will allow the user to summarize the overtime pay data from the Overtime.txt file, that you
created earlier. Apply control - break logic to your code to add the overtime pay of the employees listed in the file to report a particular subtotal, indicated below.
Your program is to find/display the overtime subtotals of all employees whose first name begins with A through F and then break to find/display the overtime subtotals of all employees whose first name begins with total G through L . Show also a grandtotal of all overtime at the very end of your report.
Add this application to the menu program that you created earlier.
STEP 4 Run the Application
Run the application and verify that the proper subtotals and the grandtotal are computed accurately.
Take a screen snapshot of the operation of your program. Submit your source code as well.