// The Monthly sales example from Lewis and Loftus // (first edition, page 217) modified. The program // keeps track of 5 consequtive years sales (class // Sales_Results define each one of 5-year frame), // and provides different services such as: // -- identifying the best year; // -- total sales for each year; // -- avarage sales per month for a specific year, etc. class Sales2 { public static void main (String[] args) { Sales_Results sales = new Sales_Results(); System.out.println ("Comparison Report (2000 -- 2004)"); System.out.println ("--------------------------------"); System.out.println ("Total sales for 2000: " + sales.sales2000.total()); System.out.println ("Avarage sales for 2000: " + sales.sales2000.average ()); System.out.println ("Total sales for 2001: " + sales.sales2001.total()); System.out.println ("Avarage sales for 2001: " + sales.sales2001.average ()); System.out.println ("Total sales for 2002: " + sales.sales2002.total()); System.out.println ("Avarage sales for 2002: " + sales.sales2002.average ()); System.out.println ("Total sales for 2003: " + sales.sales2003.total()); System.out.println ("Avarage sales for 2003: " + sales.sales2003.average ()); System.out.println ("Total sales for 2004: " + sales.sales2004.total()); System.out.println ("Avarage sales for 2004: " + sales.sales2004.average ()); sales.display_best(); } } // Instantiates array total_sales which contains sales results for // the last 5 full years. class Sales_Results { int[] revenue2000 = {0, 1678, 2345, 6543, 2367, 4431, 2789, 3452, 3377, 4576, 6665, 5678, 3456}; int[] revenue2001 = {0, 3678, 1345, 6243, 4367, 3431, 7789, 3492, 3567, 3676, 2395, 2618, 3356}; int[] revenue2002 = {0, 3456, 7755, 6343, 4367, 5431, 1789, 1232, 4577, 4366, 2265, 2378, 10456}; int[] revenue2003 = {0, 1622, 2349, 6112, 2698, 4231, 4789, 4352, 2677, 5676, 3365, 7778, 3756}; int[] revenue2004 = {0, 5678, 4345, 3543, 5667, 2331, 3589, 3652, 3177, 3576, 6265, 4578, 6556}; Monthly_Sales2 sales2000 = new Monthly_Sales2 (revenue2000); Monthly_Sales2 sales2001 = new Monthly_Sales2 (revenue2001); Monthly_Sales2 sales2002 = new Monthly_Sales2 (revenue2002); Monthly_Sales2 sales2003 = new Monthly_Sales2 (revenue2003); Monthly_Sales2 sales2004 = new Monthly_Sales2 (revenue2004); // Array total_sales is an array of objects, where each object // is an array in turn. int [] total_sales = {sales2000.total(), sales2001.total(), sales2002.total(), sales2003.total(), sales2004.total()}; int best_total, best_year, year; // To find the best year, we need method display_best public void display_best () { best_total = total_sales[0]; best_year = 2000; year = 2000; for (int count = 1; count <= 4; count++) { if (best_total < total_sales[count]) { best_total = total_sales[count]; best_year = year; year = year + 1; } else year = year + 1; } System.out.println ("The best revenue was " + best_total + " in " + best_year); System.out.println (); } } class Monthly_Sales2 { private final int JANUARY = 1; private final int DECEMBER = 12; int [] revenue; // We need a constructor to create objects of this class. public Monthly_Sales2 (int[] sales) { revenue = sales; } public int total () { int sum = 0; for (int month = JANUARY; month <= DECEMBER; month++) sum = sum + revenue[month]; return sum; } public int average () { return total()/DECEMBER; } public int highest_month () { int highest = JANUARY; for (int month = JANUARY + 1; month <= DECEMBER; month++) if (revenue[month] > revenue[highest]) highest = month; return highest; } public int months_revenue (int month) { return revenue[month]; } public void print_table () { System.out.println ("Month\tSales"); for (int month = JANUARY; month <= DECEMBER; month++) System.out.println (" " + month + "\t" + revenue[month]); System.out.println (); } }