简体   繁体   中英

How can I ask a user if they want to modify information and then apply the change?

This is a basic Java practice question that I have seen, but I wanted to step it up a notch and include functionalities that ask the user whether or not they want to modify an employee's information and if so which one, then apply the requested modifications to the employee and display the updated employees information one more time.

Here is my code thus far:

public class Employee
{
    private String firstName;
    private String lastName;
    private double monthlySalary;
    private String decision;

    // constructor to initialize first name, last name and monthly salary
    public Employee( String first, String last, double salary )
    {
     firstName = first;
     lastName = last;

        if ( salary >= 0.0 ) // determine whether salary is positive
            monthlySalary = salary;
    } // end three-argument Employee constructor

    // set Employee's first name
    public void setFirstName( String first )
    {
        firstName = first;
    } // end method setFirstName

    // get Employee's first name
    public String getFirstName()
    {
        return firstName;
    } // end method getFirstName

    // set Employee's last name
    public void setLastName( String last )
    {
        lastName = last;
    } // end method setLastName

    // get Employee's last name
    public String getLastName()
    {
        return lastName;
    } // end method getLastName

    // set Employee's monthly salary
    public void setMonthlySalary( double salary )
    {
        if ( salary >= 0.0 ) // determine whether salary is positive
            monthlySalary = salary;
    } // end method setMonthlySalary

    // get Employee's monthly salary
    public double getMonthlySalary()
    {
        return monthlySalary;
    } // end method getMonthlySalary

    // set Employee's new monthly salary
    public void setNewMonthlySalary( double salary )
    {
        monthlySalary = salary;
    } // end method setMonthlySalary

    // get Employee's new monthly salary
    public double getNewMonthlySalary()
    {
        return monthlySalary;
    } // end method getMonthlySalary

} // end class Employee

and the EmployeeTest class

import java.util.Scanner;

public class EmployeeTest
{

    public static void main( String args[] )
    {
        Employee employee1 = new Employee( "Bo", "Jackson", 8875.00 );
        Employee employee2 = new Employee( "Cam", "Newton", 13150.75 );
        // create Scanner to obtain input from command window
        Scanner input = new Scanner(System.in);

        // display employees
        System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                employee1.getFirstName(), employee1.getLastName(),
                12 * employee1.getMonthlySalary() );
        System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                employee2.getFirstName(), employee2.getLastName(),
                12 * employee2.getMonthlySalary() );

        // enter new employee salaries
        System.out.println( "Enter " + employee1.getFirstName() + "'s new salary:" );
        double newSalary1 = input.nextDouble();
        employee1.setNewMonthlySalary( newSalary1 );
        System.out.println( "Enter " + employee2.getFirstName() + "'s new salary:" );
        double newSalary2 = input.nextDouble();
        employee2.setNewMonthlySalary( newSalary2 );

        // display employees with new yearly salary
        System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                employee1.getFirstName(), employee1.getLastName(),
                12 * newSalary1 );
        System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                employee2.getFirstName(), employee2.getLastName(),
                12 * newSalary2 );
    } // end main

 } // end class EmployeeTest

After displaying the employee information I would like to prompt the user to choose whether or not to make a change to an employee's salary. If so, then which employee. After the change is made I would like to display the the modified results. What would be the easiest way to handle this?

After some tweaking to my nested-ifs statements I figured out a way to achieve what I was looking for. I can't say that I was looking for answers to homework as I am no longer in school. I was simply looking for an easier way to achieve my goal by taking the path of least resistance...something that would have made coding easier and more concise. Although my answer is slightly bulkier than what I would have liked, it does still accomplish the task at hand. I will be working more to improve the application, but here is what I came up with:

import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.JDialog;

public class EmployeeTest
{

    public static void main( String args[] )
    {
        // create Scanner to obtain input from command window
        Scanner input = new Scanner(System.in);
        Employee employee1 = new Employee( "Bo", "Jackson", 8875.00 );
        Employee employee2 = new Employee( "Cam", "Newton", 13150.75 );

        // display employees
        System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                employee1.getFirstName(), employee1.getLastName(),
                12 * employee1.getMonthlySalary() );
        System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                employee2.getFirstName(), employee2.getLastName(),
                12 * employee2.getMonthlySalary() );

        JDialog.setDefaultLookAndFeelDecorated(true);
        int response1 = JOptionPane.showConfirmDialog(null, "Do you wnat to change an employee's salary?", 
                "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

            if (response1 == JOptionPane.NO_OPTION)// if NO is clicked
            {
                System.out.println("See you next time");
            } else if (response1 == JOptionPane.YES_OPTION)// if YES is clicked
            {
                // option to change the salary for employee 1
                int response2 = JOptionPane.showConfirmDialog(null, "Would you like to change " + employee1.getFirstName() + " " + employee1.getLastName() + "'s salary:", 
                        "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                if (response2 == JOptionPane.NO_OPTION)// if NO is clicked
                {
                    // option to change the salary for employee 2
                    int response3 = JOptionPane.showConfirmDialog(null, "Would you like to change " + employee2.getFirstName() + " " + employee2.getLastName() + "'s salary:", 
                            "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                    if (response3 == JOptionPane.NO_OPTION)
                            {
                                System.out.println("See you next time");
                            } else if (response3 == JOptionPane.YES_OPTION)// if YES is clicked
                            {
                                // enter new salary for employee 2
                                System.out.println( "Enter " + employee2.getFirstName() + " " + employee2.getLastName() + "'s new salary:" );
                                double newSalary2 = input.nextDouble();
                                employee2.setNewMonthlySalary( newSalary2 );

                                // display unchanged salary for employee 1
                                System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                                        employee1.getFirstName(), employee1.getLastName(),
                                        12 * employee1.getMonthlySalary() );

                                // display new yearly salary for employee 2
                                System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                                        employee2.getFirstName(), employee2.getLastName(),
                                        12 * newSalary2 );
                            } else if (response3 == JOptionPane.CLOSED_OPTION)// if JOPTIONPANE is closed
                            {
                                System.out.println("JOptionPane closed");
                            }// END RESPONSE 3
                } else if (response2 == JOptionPane.YES_OPTION)// if YES is clicked
                {
                    // enter new salary for employee 1
                    System.out.println( "Enter " + employee1.getFirstName() + " " + employee1.getLastName() + "'s new salary:" );
                    double newSalary1 = input.nextDouble();
                    employee1.setNewMonthlySalary( newSalary1 );

                    // display new yearly salary for employee 1
                    System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                            employee1.getFirstName(), employee1.getLastName(),
                            12 * newSalary1 );
                    // display unchanged salary for employee 2
                    System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                            employee2.getFirstName(), employee2.getLastName(),
                            12 * employee2.getMonthlySalary() );
                } else if (response2 == JOptionPane.CLOSED_OPTION)// if JOPTIONPANE is closed
                {
                    System.out.println("JOptionPane closed");
                }// END RESPONSE 2
                {

                }

            } else if (response1 == JOptionPane.CLOSED_OPTION)// if JOPTIONPANE is clicked
            {
                System.out.println("JOptionPane closed");
            }// END RESPONSE 1

    } // end main

 } // end class EmployeeTest

public class "Employee" did not change for post above.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM