Question
Java class diagram for the below program. need a class diagram for each of the 3 classes of the program ________________________________________________________________________________________________ import java.util.Scanner; public class
Java class diagram for the below program. need a class diagram for each of the 3 classes of the program
________________________________________________________________________________________________
import java.util.Scanner;
public class Driver
{
//Main Method
public static void main(String[] args)
{
//Opens the file
FileIO a1 = new FileIO("C:\\Users\\JamesJr\\OneDrive\\Documents\\School\\CURRENT QUARTER"
+ "\\Winter 2018\\Java 35A\\Assignments\\Assignment 3\\Salesdat.txt");
//reads the data, creates a franchise
Franchise franchise = a1.readData();
//Creates a scanner to take in user input
Scanner keyboard = new Scanner(System.in);
//calls the function doRun
doRun(franchise, keyboard);
}
//takes user input and and prints requested data
private static void doRun(Franchise franchise, Scanner keyboard)
{
char option;
int storeNumber;
float results [] = new float[5];
Store store = null;
do
{
//Gets Store Number from the user
storeNumber = getStoreNumber(keyboard) - 1;
store = franchise.getStore(storeNumber);
System.out.println();
//Gets menu option from the user
option = showMenu(keyboard);
System.out.println();
//Print Options
switch(option)
{
//when user selects a-g/A-G it calculates and prints selection
case 'A':
case 'a':
store.computeWeeklyTotals();
store.printWeeklyTotals();
break;
case 'B':
case 'b':
store.computeWeeklyAverages();
store.printWeeklyAverages();
break;
case 'C':
case 'c':
System.out.printf("%-25s: %.2f%n", "Total Sales for all Weeks",
store.getTotalSaleForAllWeeks());
System.out.printf("%n");
break;
case 'D':
case 'd':
System.out.printf("%-25s: %.2f%n", "Average Weekly Sales",
store.getAverageWeeklySales());
System.out.printf("%n");
break;
case 'E':
case 'e':
System.out.printf("%-25s: %d%n", "Week # with Highest Sales",
store.getWeekWithHighestSaleAmount() + 1);
System.out.printf("%n");
break;
case 'F':
case 'f':
System.out.printf("%-25s: %d%n", "Week # with Lowest Sales",
store.getWeekWeithLowestSaleAmount() + 1);
System.out.printf("%n");
break;
case 'G':
case 'g':
store.analyzeResults();
store.printResults();
break;
case 'X':
case 'x':
System.out.printf("GoodBye!.... Thanks for using our Sales App");
}
System.out.printf("");
}while(option != 'X');
}
//prints the menu
private static char showMenu(Scanner keyboard)
{
char option;
System.out.printf("STORE SALES APPLICATION MAIN MENU%n");
System.out.printf(" A - The total sales for each week.%n");
System.out.printf(" B - The average daily sales for each week.%n");
System.out.printf(" C - The total sales for all the weeks.%n");
System.out.printf(" D - The average weekly sales.%n");
System.out.printf(" E - The week with the highest amount in sales.%n");
System.out.printf(" F - The week with the lowest amount in sales.%n");
System.out.printf(" G - All of the above.%n");
System.out.printf(" X - Exit Application.%n");
System.out.printf("Enter selection: ");
option = keyboard.next().toUpperCase().charAt(0);
return option;
}
//takes in the user input of 1-6 for the store
public static int getStoreNumber(Scanner keyboard)
{
int storeNumber = 0;
do {
System.out.printf("WELCOME TO THE STORE SALES APPLICATION%n");
System.out.print("Please enter Store number (1-6): ");
storeNumber = keyboard.nextInt();
if(storeNumber < 1 || storeNumber > 6)
{
System.out.println("Invalid Store number entered");
}
}while(storeNumber < 1 || storeNumber > 6);
return storeNumber;
}
}
_________________________________________________________________________________________________
import java.io.*;
import java.util.*;
public class FileIO
{
private String fname = null;
private boolean DEBUG = false;
//constructor
public FileIO(String fname)
{
this.fname = fname;
}
public Franchise readData()
{
Franchise a1 = null;
//counter to count the number of lines
int counter = 0;
//attempts this block of code, if something goes wrong catch an exception
try
{
//opens a text file
FileReader file = new FileReader(fname);
//takes the text file and links file to a buffer
BufferedReader buff = new BufferedReader(file);
String temp;
boolean eof = false;
while (!eof)
{
String line = buff.readLine();
counter++;
//if line equals null it is the end of the file
if (line == null)
eof = true;
else
{
if (DEBUG)
System.out.printf("Reading" + line);
if (counter == 1)
{
//puts the line in temp
temp = line;
a1 = new Franchise(Integer.parseInt(temp));
if (DEBUG)
System.out.printf("d " + a1.numberOfStores());
}
if (counter == 2)
;
if (counter > 2)
{
int x = buildStore(a1, (counter-3), line);
if (DEBUG)
System.out.printf("Reading Store # "+(counter-2)+" "
+ "Number of weeks read = " + x);
if (DEBUG)
{
System.out.printf("Data read:");
a1.getStore(counter-3).printdata();
}
}
}
}
buff.close();
} catch (Exception e) //if code does not work catch exception
{
//prints error message
System.out.println("Error -- " + e.toString());
}
return a1;
}
public int buildStore(Franchise a1, int counter, String temp)
{
//Builds a new store
Store tstore = new Store();
String s1 = "";
float sale = 0.0f;
int week = 0;
int day = 0;
StringTokenizer st = new StringTokenizer(temp);
//loop to read 7 days of data, stops reading at 7 days
while (st.hasMoreTokens())
{
for(day=0;day<7;day++)
{
s1 = st.nextToken();
sale = Float.parseFloat(s1);
//sets the end of week by value
tstore.setSaleOfDay(week, day, sale);
}
week++;
}
a1.setStore(tstore);
return week;
}
}
________________________________________________________________________________________________
public class Franchise
{
//array of stores
private Store stores[];
//Maximum stores that can be accommodated.
private final int MAX_STORES;
//Current number of stores.
private int index;
//Constructor
public Franchise(int num)
{
//Max Number of Stores.
this.MAX_STORES = num;
//Allocate array memory.
this.stores = new Store[MAX_STORES];
//CURRENT number of stores.
this.index = 0;
}
/**
* Function to get given Store with in index.
*
* @param i as index
* @return store
*/
public Store getStore(int i)
{
if(isIndexValid(i))
return stores[i];
return null;
}
//checks if the given store number is valid
private boolean isIndexValid(int i)
{
//if in range, its valid
if(i >= 0 && i < index)
{
return true;
}
return false;
}
//sets or updates the number of stores
public void setStore(Store store)
{
this.stores[index++] = store;
}
//gets the number of stores
public int numberOfStores()
{
return index;
}
}
_________________________________________________________________________________________________
public class Store
{
private final int MAX_WEEKS = 5;
private final int MAX_DAYS = 7;
// Array to accommodate Sales for 5 Week, 7 Days a Week.
private float salesByWeek[][];
private float totalSalesEachWeek [];
private float averageSalesEachWeek[];
private float totalSales;
private float weeklyAverage = 0;
private int weekWithHighestSale;
private int weekWithLowestSale;
//Constructor
public Store()
{
//Algorithms to calculate values sales of week, total sales, average sales
salesByWeek = new float[MAX_WEEKS][MAX_DAYS];
totalSalesEachWeek = new float[MAX_WEEKS];
averageSalesEachWeek = new float[MAX_WEEKS];
}
//sets the sale for a given day of week
public void setSaleOfDay(int week, int day, float sale)
{
this.salesByWeek[week][day] = sale;
}
//displays/prints data in a neat manner
public void printdata()
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(salesByWeek[i][j] + " ");
}
System.out.printf("");
}
}
float [] getSalesOfAWeek(int week)
{
float sales [] = new float[MAX_DAYS];
// If week is valid, store week sales into array
// and return
if(week >= 0 && week < MAX_WEEKS)
{
for(int i=0; i
{
sales[i] = this.salesByWeek[week][i];
}
}
return sales;
}
//gets the sales of any given day of a week
float getSaleOfADay(int week, int day)
{
if(week >= 0 && week < MAX_WEEKS)
{
if(day >= 0 && day < MAX_DAYS)
{
return this.salesByWeek[week][day];
}
}
//if no sale
return -1;
}
// a. total sales for week (float[] <--instance variables
//Calculates the sales for any given week
public float getTotalSalesForWeek(float weekSales [])
{
float sum = 0;
for(int i=0; i
{
sum += weekSales[i];
}
return sum;
}
// b. avg sales for week (float[] <--instance variables
//calculates average sales for the chosen week
public float getAverageSaleForWeek(float [] weekSales)
{
float sum = this.getTotalSalesForWeek(weekSales);
return sum / MAX_DAYS;
}
// c. total sales for all weeks - float - use a <--instance variables
//Calculates total sales for all the weeks sales
public float getTotalSaleForAllWeeks()
{
float total = 0;
for(int i=0; i
float [] weekSales = this.getSalesOfAWeek(i);
float sum = this.getTotalSalesForWeek(weekSales);
total += sum;
}
return total;
}
// d. average weekly sales - float - use b <--instance variables
//calculates the average weekly sales
public float getAverageWeeklySales()
{
float total = 0;
for(int i=0; i
{
float weeklySales [] = this.getSalesOfAWeek(i);
float average = this.getAverageSaleForWeek(weeklySales);
total += average;
}
return total / MAX_WEEKS;
}
// e. week with highest sale amt - float - use a <--instance variables
//calculates the week with the highest sales
public int getWeekWithHighestSaleAmount()
{
int maxWeek = 0;
float weekTotal = 0;
for(int week=0; week
{
float weeklySales [] = this.getSalesOfAWeek(week);
float total = this.getTotalSalesForWeek(weeklySales);
//Determine max weekly sales
if(total > weekTotal)
{
weekTotal = total;
maxWeek = week;
}
}
return maxWeek;
}
// f. week with lowest sale amt - float - use a <--instance variables
//calculates the week with the lowest sales
public int getWeekWeithLowestSaleAmount()
{
int minWeek = 0;
float weekTotal = Float.MAX_VALUE;
for(int week=0; week
{
float weeklySales [] = this.getSalesOfAWeek(week);
float total = this.getTotalSalesForWeek(weeklySales);
//Determine min weekly sales
if(total < weekTotal)
{
weekTotal = total;
minWeek = week;
}
}
return minWeek;
}
//calculates the weekly totals
public void computeWeeklyTotals()
{
//total, Average sales for each week
for(int week=0; week
{
float weeklySales [] = this.getSalesOfAWeek(week);
this.totalSalesEachWeek[week] = this.getTotalSalesForWeek(weeklySales);
}
}
//calculates the weekly averages
public void computeWeeklyAverages()
{
//total, Average sales for each week
for(int week=0; week
{
float weeklySales [] = this.getSalesOfAWeek(week);
this.averageSalesEachWeek[week] = this.getAverageSaleForWeek(weeklySales);
}
}
// analyze results //call a through f or all of the above
public void analyzeResults()
{
//total, Average sales for each week
this.computeWeeklyTotals();
this.computeWeeklyAverages();
//Total and Average for all weeks
this.totalSales = this.getTotalSaleForAllWeeks();
this.weeklyAverage = this.getAverageWeeklySales();
//Highest, Lowest Sales.
this.weekWithHighestSale = this.getWeekWithHighestSaleAmount();
this.weekWithLowestSale = this.getWeekWeithLowestSaleAmount();
}
public void printWeeklyTotals()
{
int week;
System.out.printf("Weekly Total Sales:%n");
//Weekly totals
for(week = 0; week < MAX_WEEKS; week++)
{
System.out.printf("%10s#%d", "Week", week+1);
}
System.out.printf("%n");
for(week = 0; week < MAX_WEEKS; week++)
{
System.out.printf("%12.2f", this.totalSalesEachWeek[week]);
}
System.out.printf("%n%n");
}
//prints the weekly averages
public void printWeeklyAverages ()
{
int week;
System.out.printf("Weekly Average Sales:%n");
//Weekly totals
for(week = 0; week < MAX_WEEKS; week++)
{
System.out.printf("%10s#%d", "Week", week+1);
}
System.out.printf("%n");
for(week = 0; week < MAX_WEEKS; week++)
{
System.out.printf("%12.2f", this.averageSalesEachWeek[week]);
}
System.out.printf("%n%n");
}
// print() - prints - well formated - uses printf - prints only the things user wants
//displays/prinhts the results
public void printResults()
{
this.printWeeklyTotals();
this.printWeeklyAverages();
//Totals
System.out.printf("%-25s: %.2f%n", "Total Sales for all Weeks",
this.totalSales);
System.out.printf("%-25s: %.2f%n", "Average Weekly Sales",
this.weeklyAverage);
System.out.printf("%-25s: %d%n", "Week # with Highest Sales",
this.weekWithHighestSale + 1);
System.out.printf("%-25s: %d%n", "Week # with Lowest Sales",
this.weekWithLowestSale + 1);
System.out.println();
}
}
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started