 修改4个定义各种Employee的类的程序,使得员工的信息增加出生年月日一项。
 修改PayrollSystemTest类,增加图形界面输入,用户输入一个月份,则假设在此月份发薪水,如有员工此月过生日,则为此员工加薪100。
 此加薪结果应在输出中显示出来
// Employee.java
// Employee abstract superclass.public abstract class Employee {
   private String firstName;
   private String lastName;
   private String socialSecurityNumber;
      // constructor
   public Employee( String first, String last, String ssn,)
   {
      firstName = first;
      lastName = last;
      socialSecurityNumber = ssn;
      
   }    // set first name
   public void setFirstName( String first )
   {
      firstName = first;
   }    // return first name
   public String getFirstName()
   {
      return firstName;
   }    // set last name
   public void setLastName( String last )
   {
      lastName = last;
   }    // return last name
   public String getLastName()
   {
      return lastName;
   }    // set social security number
   public void setSocialSecurityNumber( String number )
   {
      socialSecurityNumber = number;  // should validate
   }    // return social security number
   public String getSocialSecurityNumber()
   {
      return socialSecurityNumber;
   }       // return String representation of Employee object
   public String toString()
   {
      return getFirstName() + " " + getLastName() +
         "\nsocial security number: " + getSocialSecurityNumber()+"birthday is:"+getBirthday();
   }    // abstract method overridden by subclasses
   public abstract double earnings();
   
} // end abstract class Employee
// HourlyEmployee.java
// HourlyEmployee class extends Employee.public class HourlyEmployee extends Employee {
   private double wage;   // wage per hour
   private double hours;  // hours worked for week   // constructor
   public HourlyEmployee( String first, String last, 
      String socialSecurityNumber, double hourlyWage, double hoursWorked )
   {
      super( first, last, socialSecurityNumber,birth );
      setWage( hourlyWage );
      setHours( hoursWorked );
   }    // set hourly employee's wage
   public void setWage( double wageAmount )
   {
      wage = wageAmount < 0.0 ? 0.0 : wageAmount;
   }    // return wage
   public double getWage()
   {
      return wage;
   }    // set hourly employee's hours worked
   public void setHours( double hoursWorked )
   {
      hours = ( hoursWorked >= 0.0 && hoursWorked <= 168.0 ) ?
         hoursWorked : 0.0;
   }    // return hours worked
   public double getHours()
   {
      return hours;
   }    // calculate hourly employee's pay;
   // override abstract method earnings in Employee
   public double earnings()
   {
      if ( hours <= 40 )  // no overtime
         return wage * hours;
      else
         return 40 * wage + ( hours - 40 ) * wage * 1.5;
   }    // return String representation of HourlyEmployee object
   public String toString()
   {
      return "\nhourly employee: " + super.toString();
   } 
   
} // end class HourlyEmployee// SalariedEmployee.java
// SalariedEmployee class extends Employee.public class SalariedEmployee extends Employee {
   private double weeklySalary;   // constructor
   public SalariedEmployee( String first, String last, 
      String socialSecurityNumber, double salary )
   {
      super( first, last, socialSecurityNumber,birth ); 
      setWeeklySalary( salary );
   }    // set salaried employee's salary
   public void setWeeklySalary( double salary )
   {
      weeklySalary = salary < 0.0 ? 0.0 : salary;
   }    // return salaried employee's salary
   public double getWeeklySalary()
   {
      return weeklySalary;
   }    // calculate salaried employee's pay;
   // override abstract method earnings in Employee
   public double earnings()
   {
      return getWeeklySalary();
   }    // return String representation of SalariedEmployee object
   public String toString()
   {
      return "\nsalaried employee: " + super.toString();
   } 
   
} // end class SalariedEmployee// CommissionEmployee.java
// CommissionEmployee class extends Employee.public class CommissionEmployee extends Employee {
   private double grossSales;      // gross weekly sales
   private double commissionRate;  // commission percentage   // constructor
   public CommissionEmployee( String first, String last, 
      String socialSecurityNumber, 
      double grossWeeklySales, double percent )
   {
      super( first, last, socialSecurityNumber,birth );
      setGrossSales( grossWeeklySales );
      setCommissionRate( percent );
   }    // set commission employee's rate
   public void setCommissionRate( double rate )
   {
      commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
   }    // return commission employee's rate
   public double getCommissionRate()
   {
      return commissionRate;
   }    // set commission employee's weekly base salary
   public void setGrossSales( double sales )
   {
      grossSales = sales < 0.0 ? 0.0 : sales;
   }    // return commission employee's gross sales amount
   public double getGrossSales()
   {
      return grossSales;
   }    // calculate commission employee's pay;
   // override abstract method earnings in Employee
   public double earnings()
   {
      return getCommissionRate() * getGrossSales();
   }    // return String representation of CommissionEmployee object
   public String toString()
   {
      return "\ncommission employee: " + super.toString();
   } 
   
} // end class CommissionEmployee
// CommissionEmployee.java
// CommissionEmployee class extends Employee.public class CommissionEmployee extends Employee {
   private double grossSales;      // gross weekly sales
   private double commissionRate;  // commission percentage   // constructor
   public CommissionEmployee( String first, String last, 
      String socialSecurityNumber, String birth,
      double grossWeeklySales, double percent )
   {
      super( first, last, socialSecurityNumber,birth );
      setGrossSales( grossWeeklySales );
      setCommissionRate( percent );
   }    // set commission employee's rate
   public void setCommissionRate( double rate )
   {
      commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
   }    // return commission employee's rate
   public double getCommissionRate()
   {
      return commissionRate;
   }    // set commission employee's weekly base salary
   public void setGrossSales( double sales )
   {
      grossSales = sales < 0.0 ? 0.0 : sales;
   } 

解决方案 »

  1.   

    // return commission employee's gross sales amount
       public double getGrossSales()
       {
          return grossSales;
       }    // calculate commission employee's pay;
       // override abstract method earnings in Employee
       public double earnings()
       {
          return getCommissionRate() * getGrossSales();
       }    // return String representation of CommissionEmployee object
       public String toString()
       {
          return "\ncommission employee: " + super.toString();
       } 
       
    } // end class CommissionEmployee
    // CommissionEmployee.java
    // CommissionEmployee class extends Employee.public class CommissionEmployee extends Employee {
       private double grossSales;      // gross weekly sales
       private double commissionRate;  // commission percentage   // constructor
       public CommissionEmployee( String first, String last, 
          String socialSecurityNumber, String birth,
          double grossWeeklySales, double percent )
       {
          super( first, last, socialSecurityNumber,birth );
          setGrossSales( grossWeeklySales );
          setCommissionRate( percent );
       }    // set commission employee's rate
       public void setCommissionRate( double rate )
       {
          commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
       }    // return commission employee's rate
       public double getCommissionRate()
       {
          return commissionRate;
       }    // set commission employee's weekly base salary
       public void setGrossSales( double sales )
       {
          grossSales = sales < 0.0 ? 0.0 : sales;
       }    // return commission employee's gross sales amount
       public double getGrossSales()
       {
          return grossSales;
       }    // calculate commission employee's pay;
       // override abstract method earnings in Employee
       public double earnings()
       {
          return getCommissionRate() * getGrossSales();
       }    // return String representation of CommissionEmployee object
       public String toString()
       {
          return "\ncommission employee: " + super.toString();
       } 
       
    } // end class CommissionEmployee
    // CommissionEmployee.java
    // CommissionEmployee class extends Employee.public class CommissionEmployee extends Employee {
       private double grossSales;      // gross weekly sales
       private double commissionRate;  // commission percentage   // constructor
       public CommissionEmployee( String first, String last, 
          String socialSecurityNumber, String birth,
          double grossWeeklySales, double percent )
       {
          super( first, last, socialSecurityNumber,birth );
          setGrossSales( grossWeeklySales );
          setCommissionRate( percent );
       }    // set commission employee's rate
       public void setCommissionRate( double rate )
       {
          commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
       }    // return commission employee's rate
       public double getCommissionRate()
       {
          return commissionRate;
       }    // set commission employee's weekly base salary
       public void setGrossSales( double sales )
       {
          grossSales = sales < 0.0 ? 0.0 : sales;
       }    // return commission employee's gross sales amount
       public double getGrossSales()
       {
          return grossSales;
       }    // calculate commission employee's pay;
       // override abstract method earnings in Employee
       public double earnings()
       {
          return getCommissionRate() * getGrossSales();
       }    // return String representation of CommissionEmployee object
       public String toString()
       {
          return "\ncommission employee: " + super.toString();
       } 
       
    } // end class CommissionEmployee
    // CommissionEmployee.java
    // CommissionEmployee class extends Employee.public class CommissionEmployee extends Employee {
       private double grossSales;      // gross weekly sales
       private double commissionRate;  // commission percentage   // constructor
       public CommissionEmployee( String first, String last, 
          String socialSecurityNumber, String birth,
          double grossWeeklySales, double percent )
       {
          super( first, last, socialSecurityNumber,birth );
          setGrossSales( grossWeeklySales );
          setCommissionRate( percent );
       }    // set commission employee's rate
       public void setCommissionRate( double rate )
       {
          commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
       }    // return commission employee's rate
       public double getCommissionRate()
       {
          return commissionRate;
       }    // set commission employee's weekly base salary
       public void setGrossSales( double sales )
       {
          grossSales = sales < 0.0 ? 0.0 : sales;
       }    // return commission employee's gross sales amount
       public double getGrossSales()
       {
          return grossSales;
       } 
      

  2.   

    // calculate commission employee's pay;
       // override abstract method earnings in Employee
       public double earnings()
       {
          return getCommissionRate() * getGrossSales();
       }    // return String representation of CommissionEmployee object
       public String toString()
       {
          return "\ncommission employee: " + super.toString();
       } 
       
    } // end class CommissionEmployee
    // CommissionEmployee.java
    // CommissionEmployee class extends Employee.public class CommissionEmployee extends Employee {
       private double grossSales;      // gross weekly sales
       private double commissionRate;  // commission percentage   // constructor
       public CommissionEmployee( String first, String last, 
          String socialSecurityNumber, String birth,
          double grossWeeklySales, double percent )
       {
          super( first, last, socialSecurityNumber,birth );
          setGrossSales( grossWeeklySales );
          setCommissionRate( percent );
       }    // set commission employee's rate
       public void setCommissionRate( double rate )
       {
          commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
       }    // return commission employee's rate
       public double getCommissionRate()
       {
          return commissionRate;
       }    // set commission employee's weekly base salary
       public void setGrossSales( double sales )
       {
          grossSales = sales < 0.0 ? 0.0 : sales;
       }    // return commission employee's gross sales amount
       public double getGrossSales()
       {
          return grossSales;
       }    // calculate commission employee's pay;
       // override abstract method earnings in Employee
       public double earnings()
       {
          return getCommissionRate() * getGrossSales();
       }    // return String representation of CommissionEmployee object
       public String toString()
       {
          return "\ncommission employee: " + super.toString();
       } 
       
    } // end class CommissionEmployee
    // CommissionEmployee.java
    // CommissionEmployee class extends Employee.public class CommissionEmployee extends Employee {
       private double grossSales;      // gross weekly sales
       private double commissionRate;  // commission percentage   // constructor
       public CommissionEmployee( String first, String last, 
          String socialSecurityNumber, String birth,
          double grossWeeklySales, double percent )
       {
          super( first, last, socialSecurityNumber,birth );
          setGrossSales( grossWeeklySales );
          setCommissionRate( percent );
       }    // set commission employee's rate
       public void setCommissionRate( double rate )
       {
          commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
       }    // return commission employee's rate
       public double getCommissionRate()
       {
          return commissionRate;
       }    // set commission employee's weekly base salary
       public void setGrossSales( double sales )
       {
          grossSales = sales < 0.0 ? 0.0 : sales;
       }    // return commission employee's gross sales amount
       public double getGrossSales()
       {
          return grossSales;
       }    // calculate commission employee's pay;
       // override abstract method earnings in Employee
       public double earnings()
       {
          return getCommissionRate() * getGrossSales();
       }    // return String representation of CommissionEmployee object
       public String toString()
       {
          return "\ncommission employee: " + super.toString();
       } 
       
    } // end class CommissionEmployee
    // PayrollSystemTest.java
    // Employee hierarchy test program.
    import java.text.DecimalFormat;
    import javax.swing.JOptionPane;public class PayrollSystemTest {   public static void main( String[] args ) 
       {
          DecimalFormat twoDigits = new DecimalFormat( "0.00" );      // create Employee array
          Employee employees[] = new Employee[ 3 ];      // initialize array with Employees
          employees[ 0 ] = new SalariedEmployee( "John", "Smith", 
             "111-11-1111", 800.00 );
          employees[ 1 ] = new CommissionEmployee( "Sue", "Jones", 
             "222-22-2222", 10000, .06 );
          employees[ 2 ] = new HourlyEmployee( "Karen", "Price", 
             "444-44-4444", 16.75, 40 );      String output = "";      // generically process each element in array employees
          for ( int i = 0; i < employees.length; i++ ) {
             output += employees[ i ].toString();
             output += "\nearned $" + employees[ i ].earnings() + "\n";
          } // end for      // get type name of each object in employees array
          for ( int j = 0; j < employees.length; j++ )
             output += "\nEmployee " + j + " is a " +
                employees[ j ].getClass().getName();       JOptionPane.showMessageDialog( null, output );  // display output
          System.exit( 0 );   } // end main} // end class PayrollSystemTest