 修改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;
}
 修改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;
}
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;
}
// 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