Thursday, December 28, 2017

Programming Challenge 14.10 - Corporate Sales

Example Files: CorporateSales.7z

DivSales.h


#ifndef DIVISION_SALES_H
#define DIVISION_SALES_H

#include <array>
using std::array;

const int NUM_DIVS = 6;
const int NUM_QTRS = 4;

class DivSales
{
    private:
        array <double, NUM_QTRS> divSales;            // Holds the sales figures for 4 quarters
        static double totalCorpSales;                    // Holds the total sales of all divisions

    public:
        DivSales();

        void addSales(array <double, NUM_QTRS> &);

        double getQuarterlySales(int qtr) const
        {
            return divSales[qtr];
        }

        double getTotalCorpSales() const
        {
            return totalCorpSales;
        }
};

#endif

DivSales.cpp


#include "DivSales.h"

double DivSales::totalCorpSales = 0;

/* **********************************************************
            DivSales::DivSales() : Default Constructor
   ********************************************************** */

DivSales::DivSales()
{
    for (size_t idx = 0; idx < NUM_QTRS; idx++)
    {
        divSales[idx] = 0;
    }
}

/* **********************************************************
            DivSales::addSales() : array &
    This function is passed an array holding four quarterly
    sales figures. The values are copied into the salesFigures
    array, and the static member variable totalCorpSales adds
    to it the total sum of these values.
   ********************************************************** */

void DivSales::addSales(array <double, NUM_QTRS> &qtrSales)
{
    for (size_t i = 0; i < NUM_QTRS; i++)
    {
        totalCorpSales += divSales[i] = qtrSales[i];
    }   
}

DivSalesDm.cpp


#include "DivSales.h"

#include <array>
using std::array;

#include <iomanip>
using std::setprecision;

#include <iostream>
using std::cin;
using std::cout;
using std::fixed;

void getSales(array <DivSales, NUM_DIVS> &);
void outputSales(const array <DivSales, NUM_DIVS> &);

int main()
{
    array <DivSales, NUM_DIVS> divSales;

    cout << "ISHIKAWA FRUIT COMPANY - CORPORATE SALES DATA 2017\n\n";

    getSales(divSales);
    outputSales(divSales);

    cout << "\nISHIKAWA FRUIT COMPANY - Your number one fruit supplier!\n";

    cin.get();
    cin.ignore();
    return 0;
}

/* **********************************************************
            getSales() : array &
    This function accepts an array of six DivSales objects as
    its argument. It asks the user to input four quarterly
    sales results.
   ********************************************************** */

void getSales(array<DivSales, NUM_DIVS> &salesQtr)
{
    array <double, NUM_QTRS> sales;

    for (int div = 0; div < NUM_DIVS; div++)
    {
        cout << "Enter sales for Division " << (div + 1) << "\n";

        for (int idx = 0; idx < NUM_QTRS; idx++)
        {
            cout << "Quarter " << (idx + 1) << ": JPY ";
            cin >> sales[idx];

            while (sales[idx] <= 0)
            {
                cout << "Quarter " << (idx + 1) << ": JPY ";
                cin >> sales[idx];
            }
        }

        salesQtr[div].addSales(sales);
        cout << "\n";
    }
}

/* **********************************************************
            getSales() : const array &
    This function accepts an array of six DivSales objects,
    holding four quarterly sales for each of its devisions, as
    its argument. The quarterly sales for each division, and
    the total sales of all divisions is output to screen.
   ********************************************************** */

void outputSales(const array <DivSales, NUM_DIVS> &salesQtr)
{
    DivSales corpTotal;
   
    cout << "\nISHIKAWA FRUIT COMPANY - SALES RESULTS 2017\n\n";
    cout << fixed << setprecision(2);

    for (int div = 0; div < NUM_DIVS; div++)
    {
        cout << "Division " << (div + 1) << "\n";
        for (int idx = 0; idx < NUM_QTRS; idx++)
        {
            cout << "Quarter " << (idx + 1) << ": JPY ";
            cout << salesQtr[div].getQuarterlySales(idx) << "\n";
        }
        cout << "\n";
    }

    cout << "Total Sales: JPY " << corpTotal.getTotalCorpSales() << "\n";
}

Example Output:

 


No comments:

Post a Comment