Source of SalesReporter.java


  1: //SalesReporter.java
  2: 
  3: import java.util.Scanner;
  4: 
  5: /**
  6:  * Program to generate a sales report.
  7:  */
  8: public class SalesReporter
  9: {
 10:     private double highestSales;
 11:     private double averageSales;
 12:     private SalesAssociate[] team;  //The array object is
 13:     //created in getData.
 14:     private int numberOfAssociates; //Same as team.length
 15: 
 16:     /**
 17:      * Reads the number of sales associates and data for each one.
 18:     */
 19:     public void getData()
 20:     {
 21:         Scanner keyboard = new Scanner(System.in);
 22:         System.out.println("Enter number of sales associates:");
 23:         numberOfAssociates = keyboard.nextInt();
 24:         team = new SalesAssociate[numberOfAssociates+1];//We won't use team[0]
 25:         for (int i = 1; i <= numberOfAssociates; i++)
 26:         {
 27:             team[i] = new SalesAssociate();
 28:             System.out.println("Enter data for associate " + i);
 29:             team[i].readInput();
 30:             System.out.println();
 31:         }
 32:     }
 33: 
 34:     /**
 35:      * Computes the average and highest sales figures.
 36:      * Precondition: There is at least one salesAssociate.
 37:      */
 38:     public void computeStats()
 39:     {
 40:         double nextSales = team[1].getSales();
 41:         highestSales = nextSales;
 42:         double sum = nextSales;
 43:         for (int i = 2; i <= numberOfAssociates; i++)
 44:         {
 45:             nextSales = team[i].getSales();
 46:             sum = sum + nextSales;
 47:             if (nextSales > highestSales)
 48:                 highestSales = nextSales; //highest sales so far.
 49:         }
 50:         averageSales = sum / numberOfAssociates;
 51:     }
 52: 
 53:     /**
 54:      * Displays sales report on the screen.
 55:      */
 56:     public void displayResults()
 57:     {
 58:         System.out.println("Average sales per associate is $" + averageSales);
 59:         System.out.println("The highest sales figure is $" + highestSales);
 60:         System.out.println();
 61:         System.out.println("The following had the highest sales:");
 62:         for (int i = 1; i <= numberOfAssociates; i++)
 63:         {
 64:             double nextSales = team[i].getSales();
 65:             if (nextSales == highestSales)
 66:             {
 67:                 team[i].writeOutput();
 68:                 System.out.println("$" + (nextSales - averageSales)
 69:                     + " above the average.");
 70:                 System.out.println();
 71:             }
 72:         }
 73: 
 74:         System.out.println("The rest performed as follows:");
 75:         for (int i = 1; i <= numberOfAssociates; i++)
 76:         {
 77:             double nextSales = team[i].getSales();
 78:             if (team[i].getSales() != highestSales)
 79:             {
 80:                 team[i].writeOutput();
 81:                 if (nextSales >= averageSales)
 82:                     System.out.println("$" + (nextSales - averageSales)
 83:                         + " above the average.");
 84:                 else
 85:                     System.out.println("$" + (averageSales - nextSales)
 86:                         + " below the average.");
 87:                 System.out.println();
 88:             }
 89:         }
 90:     }
 91: 
 92:     public static void main(String[] args)
 93:     {
 94:         SalesReporter clerk = new SalesReporter();
 95:         clerk.getData();
 96:         clerk.computeStats();
 97:         clerk.displayResults();
 98:     }
 99: }