public class SalesReporter
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: }