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