Source of SalesReporter.java


  2: import java.util.Scanner;

  4: /**
  5:  Program to generate a sales report.
  6: */
  7: public class SalesReporter
  8: {
  9:         private double highestSales;
 10:         private double averageSales;
 11:     private SalesAssociate[] team;  //The array object is
 12:                                     //created in getData.
 13:     private int numberOfAssociates; //Same as team.length

 15:     /**
 16:      Reads the number of sales associates and data for each one.
 17:     */
 18:     public void getData( )
 19:     {
 20:         Scanner keyboard = new Scanner(System.in);
 21:         System.out.println("Enter number of sales associates:");
 22:         numberOfAssociates = keyboard.nextInt( );
 23:         team = new SalesAssociate[numberOfAssociates + 1];//We won't use team[0]
 24:         for (int i = 1; i <= numberOfAssociates; i++)
 25:         {
 26:             team[i] = new SalesAssociate( );
 27:             System.out.println("Enter data for associate " + i);
 28:             team[i].readInput( );
 29:             System.out.println( );
 30:         }
 31:     }

 33:     /**
 34:      Computes the average and highest sales figures.
 35:      Precondition: There is at least one salesAssociate.
 36:     */
 37:     public void computeStats( )
 38:     {
 39:         double nextSales = team[1].getSales( );
 40:         highestSales = nextSales;
 41:         double sum = nextSales;
 42:         for (int i = 2; i <= numberOfAssociates; i++)
 43:         {
 44:              nextSales = team[i].getSales( );
 45:              sum = sum + nextSales;
 46:              if (nextSales > highestSales)
 47:                  highestSales = nextSales; //highest sales so far.
 48:         }
 49:         averageSales = sum / numberOfAssociates;
 50:     }

 52:     /**
 53:      Displays sales report on the screen.
 54:     */
 55:     public void displayResults( )
 56:     {
 57:         System.out.println("Average sales per associate is $" + averageSales);
 58:         System.out.println("The highest sales figure is $" + highestSales);
 59:         System.out.println( );
 60:         System.out.println("The following had the highest sales:");
 61:         for (int i = 1; i <= numberOfAssociates; i++)
 62:         {
 63:             double nextSales = team[i].getSales( );
 64:             if (nextSales == highestSales)
 65:             {
 66:                 team[i].writeOutput( );
 67:                 System.out.println("$" + (nextSales - averageSales) +
 68:                                                                    " above the average.");
 69:                 System.out.println( );
 70:             }
 71:         }
 72:                 
 73:         System.out.println("The rest performed as follows:");
 74:         for (int i = 1; i <= numberOfAssociates; i++)
 75:         {
 76:             double nextSales = team[i].getSales( );
 77:             if (team[i].getSales( ) != highestSales)
 78:             {
 79:                 team[i].writeOutput( );
 80:                 if (nextSales >= averageSales)
 81:                     System.out.println("$" + (nextSales - averageSales) +
 82:                                        " above the average.");
 83:                 else
 84:                     System.out.println("$" + (averageSales - nextSales) +
 85:                                        " below the average.");
 86:                 System.out.println( );
 87:             }
 88:         }
 89:     }

 91:     public static void main(String[] args)
 92:     {
 93:         SalesReporter clerk = new SalesReporter( );
 94:         clerk.getData( );
 95:         clerk.computeStats( );
 96:         clerk.displayResults( );
 97:     }
 98: }