5-12 SalesReport

Post date: Apr 3, 2014 5:11:08 PM

/*

This program opens a file containing the sales

amounts for 30 days. It calculates and displays

the total sales and average daily sales.

*/

package salesreport;

import java.util.Scanner;                    // For the Scanner class.

import java.io.*;                                     // For file I/O classes

import java.text.DecimalFormat;   // For the DecimalFormat class

import javax.swing.JOptionPane;   // For the JOptionPane class

public class SalesReport 

{

        public static void main(String[] args)throws IOException 

        { 

            final int NUM_DAYS = 30;  // Number of days of sales.

            String filename;                   // The name of the file to open.

            double totalSales;             // Total sales for period.

            double averageSales;       // Average daily sales.

            // Get the name of the file.

            filename = getFileName();

            // Get the total sales from the file.

            totalSales = getTotalSales(filename);

            // Calculate the average.

            averageSales = totalSales / NUM_DAYS;

            // Display the total and average.

            displayResults(totalSales, averageSales);

            System.exit(0);

        }

        /*

        The getFileName method prompts the user to enter

        the name of the file to open.

        @return A reference to a String object containing

                  the name of the file.

        */

        public static String getFileName()

        {

            String file;      // To hold the file name.

            // Prompt the user to enter afile name.

            file = JOptionPane.showInputDialog("Enter the name of the file\n"

                                       +"containing 30 days of sales amount.");

            // Return the name.

            return file;

        }

        /*

        The getTotalSales method opens a file and

        reads the daily sales amounts, accumulating

        the total. The total is returned.

        @param filename The name of the file to open.

        @return The total of the sales amounts.

        */

        public static double getTotalSales(String filename)throws IOException

        {

            double total = 0.0;    // Accumulator.

            double sales;              // A daily sales amount.

            // Open the file.

            File file = new File(filename);

            Scanner inputFile = new Scanner(file);

            // This loop processes the lines read from the file.

            // until the end of the file is encountered.

            while(inputFile.hasNext())

            {

                // Read a double from the file.

                sales = inputFile.nextDouble();

                // Add sales to the value already in total.

                total += sales;

            }

            // Close the file.

            inputFile.close( );

            // Return the total sales.

            return total;

        }

        /*

        The displayResults method displays the total and

        average daily sales.

        @param total The total sales.

        @param avg The average daily sales.

        */

        public static void displayResults(double total , double avg)

        {

            // Create a DecimalFormat object capable of formatting a dollar amount.

            DecimalFormat dollar = new DecimalFormat( "#,###.00");

            // Display the total and average sales.

            JOptionPane.showMessageDialog(null,"The total sales for the period is $"+

                  dollar.format(total)+"\nThe average daily sales were $"+dollar.format(avg));

        }

}