Intial Commit
This commit is contained in:
71
Order.java
Normal file
71
Order.java
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
Programmer: Lucas Mathews 12070730
|
||||
Course: Programming Fundamentals COIT11222
|
||||
File: Order.java
|
||||
Purpose: Assignment Two -- Rocky Dry Cleaners windowed application
|
||||
Date: 19 May 2019
|
||||
*/
|
||||
|
||||
public class Order //page 141 does not contain a main, organising classes
|
||||
{
|
||||
|
||||
private String customerName = "";
|
||||
private int garments = 0;
|
||||
|
||||
public Order() //Default constructor, name is set to "" and gar is set to 0
|
||||
{
|
||||
this("", 0);
|
||||
}
|
||||
|
||||
public Order(String name, int gar) //Parameterised constructor
|
||||
{
|
||||
customerName = name;
|
||||
garments = gar;
|
||||
}
|
||||
|
||||
|
||||
public void setCustomerName(String name)
|
||||
{
|
||||
customerName = name;
|
||||
}
|
||||
|
||||
|
||||
public void setGarments(int gar)
|
||||
{
|
||||
garments = gar;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getCustomerName() //returns data to RockyDryCleanersGUI.java
|
||||
{
|
||||
return customerName;
|
||||
}
|
||||
|
||||
|
||||
public int getGarments() //returns data to RockyDryCleanersGUI.java
|
||||
{
|
||||
return garments;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public double calculateCharge() //calculates the charge for the garments, calculation code from ASS1
|
||||
{
|
||||
double garmentCost = 8.50;
|
||||
double garmentDiscount = 6.50;
|
||||
double charge = 0; //do not store charge as an instance variable.. can I store it straight to array?
|
||||
|
||||
if (garments == 1 || garments == 2)
|
||||
charge = garmentCost * garments;
|
||||
|
||||
else if (garments == 3)
|
||||
charge = 20;
|
||||
|
||||
else
|
||||
charge = 20 + (garmentDiscount * (garments - 3));
|
||||
|
||||
return charge;
|
||||
}
|
||||
|
||||
}
|
||||
282
RockyDryCleanersGUI.java
Normal file
282
RockyDryCleanersGUI.java
Normal file
@@ -0,0 +1,282 @@
|
||||
/*
|
||||
Programmer: Lucas Mathews 12070730
|
||||
Course: Programming Fundamentals COIT11222
|
||||
File: RockyDryCleanersGUI.java
|
||||
Purpose: Assignment Two -- Rocky Dry Cleaners windowed application
|
||||
Date: 19 May 2019
|
||||
*/
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.Font;
|
||||
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.JTextArea;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JScrollPane;
|
||||
|
||||
|
||||
public class RockyDryCleanersGUI extends JFrame implements ActionListener
|
||||
{
|
||||
|
||||
private final int MAX_ORDERS = 10; //declare maximum orders constant
|
||||
private Order [] orderArray = new Order[MAX_ORDERS]; //declare Order object array
|
||||
private int currentOrder = 0; //declare current order variable
|
||||
|
||||
|
||||
private JLabel titleLabel = new JLabel("Rocky Dry Cleaners Management System"); // program title
|
||||
private JLabel nameLabel = new JLabel("Customer name: ");// for prompt
|
||||
private JTextField nameField = new JTextField(26); // for name entry
|
||||
|
||||
private JLabel garmentsLabel = new JLabel("Number of plain garments: ");// for prompt
|
||||
private JTextField garmentsField = new JTextField(4); // for number of garments entry
|
||||
|
||||
private JTextArea displayTextArea = new JTextArea("", 16, 56); // declare text area
|
||||
private JScrollPane scrollPane; // scroll pane for the text area
|
||||
|
||||
// declare all of the buttons
|
||||
private JButton enterButton = new JButton("Enter"); // buttons
|
||||
private JButton displayButton = new JButton("Display All");
|
||||
private JButton searchButton = new JButton("Search");
|
||||
private JButton exitButton = new JButton("Exit");
|
||||
|
||||
|
||||
public RockyDryCleanersGUI()
|
||||
{ // constructor create the Gui
|
||||
this.setLayout(new FlowLayout()); // set JFrame to FlowLayout
|
||||
|
||||
titleLabel.setFont(new Font("Ariel", Font.BOLD, 22));
|
||||
add(titleLabel);
|
||||
add(nameLabel);
|
||||
add(nameField);
|
||||
add(garmentsLabel);
|
||||
add(garmentsField);
|
||||
|
||||
// set text area to a monospaced font so the columns can be aligned using a format string
|
||||
displayTextArea.setFont(new Font("Monospaced", Font.PLAIN, 12));
|
||||
displayTextArea.setEditable(false); // make text area read only
|
||||
scrollPane = new JScrollPane(displayTextArea); // add text area to the scroll pane
|
||||
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); // just need vertical scrolling
|
||||
|
||||
add(scrollPane);
|
||||
|
||||
add(enterButton);
|
||||
add(displayButton);
|
||||
add(searchButton);
|
||||
add(exitButton);
|
||||
|
||||
enterButton.addActionListener(this); // add the action listener to the buttons
|
||||
displayButton.addActionListener(this);
|
||||
searchButton.addActionListener(this);
|
||||
exitButton.addActionListener(this);
|
||||
|
||||
|
||||
|
||||
// when the user pushes the system close (X top right corner)
|
||||
addWindowListener( // override window closing method
|
||||
new WindowAdapter()
|
||||
{
|
||||
public void windowClosing(WindowEvent e)
|
||||
{
|
||||
exit(); // Attempt to exit application
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{ // process the clicks on all of the buttons
|
||||
String command = e.getActionCommand();
|
||||
|
||||
if (command.compareTo("Enter") == 0)
|
||||
enter();
|
||||
else if (command.compareTo("Display All") == 0)
|
||||
displayAll();
|
||||
else if (command.compareTo("Search") == 0)
|
||||
search();
|
||||
else if (command.compareTo("Exit") == 0)
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void enter()
|
||||
{
|
||||
if (currentOrder == 10) //error message code to show max orders has been reached
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Maximum number of orders has been reached", "Rocky Dry Cleaners Management System", JOptionPane.ERROR_MESSAGE);
|
||||
nameField.requestFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
if (nameField.getText().compareTo("") == 0) //error message code to prompt for name to be entered
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "You must enter a customer name", "Rocky Dry Cleaners Management System", JOptionPane.ERROR_MESSAGE);
|
||||
nameField.requestFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (garmentsField.getText().compareTo("") == 0) //error message code to prompt for number of garments to be entered
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "You must enter the number of garments", "Rocky Dry Cleaners Management System", JOptionPane.ERROR_MESSAGE);
|
||||
garmentsField.requestFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
String customerName = nameField.getText(); //Read in customer name and number of garments information and add to the Order array
|
||||
int garments = Integer.parseInt(garmentsField.getText());
|
||||
|
||||
orderArray[currentOrder] = new Order(customerName, garments);
|
||||
double charge = orderArray[currentOrder].calculateCharge();
|
||||
|
||||
displayHeading(); //Display customer name, number of garments and the order charge to the text area
|
||||
displayTextArea.append(String.format("%-30s%-17s%5.2f", customerName, garments, charge));
|
||||
|
||||
//Clear input fields and return focus to the customer name field and increment current booking variable
|
||||
nameField.setText("");
|
||||
garmentsField.setText("");
|
||||
nameField.requestFocus();
|
||||
currentOrder ++;
|
||||
|
||||
}
|
||||
|
||||
private void displayHeading()
|
||||
{
|
||||
displayTextArea.setText(String.format("%-30s%-17s%-6s\n", "Customer Name", "Garments", "Charge"));
|
||||
appendLine();
|
||||
}
|
||||
|
||||
private void appendLine()
|
||||
{
|
||||
displayTextArea.append("-------------------------------------------------------\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void displayAll()
|
||||
{
|
||||
|
||||
displayTextArea.setText(String.format("%-30s%-17s%-6s\n", "Customer Name", "Garments", "Charge"));
|
||||
displayTextArea.append("-------------------------------------------------------\n");
|
||||
|
||||
for (int i = 0; i < currentOrder; i++) //displays all of the entries in the array
|
||||
{
|
||||
displayTextArea.append(String.format("%-30s%-17s%5.2f\n", orderArray[i].getCustomerName(), orderArray[i].getGarments(), orderArray[i].calculateCharge()));
|
||||
}
|
||||
|
||||
displayTextArea.append("-------------------------------------------------------\n");
|
||||
|
||||
|
||||
double totalGarments = 0;
|
||||
double totalCharge = 0;
|
||||
|
||||
|
||||
for(int i = 0; i < currentOrder; i++) //adds up total garments and charge stored in array
|
||||
{
|
||||
totalGarments = totalGarments + orderArray[i].getGarments();
|
||||
totalCharge = totalCharge + orderArray[i].calculateCharge();
|
||||
}
|
||||
|
||||
double average = totalGarments / currentOrder; //calculates average garments
|
||||
|
||||
displayTextArea.append(String.format("Average garments per order: %.2f\nTotal charges: $%.2f\n", average, totalCharge));
|
||||
|
||||
|
||||
if (currentOrder == 0) //error message for no order entered when pressing the Display All button
|
||||
{
|
||||
displayTextArea.setText("");
|
||||
JOptionPane.showMessageDialog(null, "No order entered", "Rocky Dry Cleaners Management System", JOptionPane.ERROR_MESSAGE);
|
||||
nameField.requestFocus();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void search()
|
||||
{
|
||||
if (currentOrder == 0)
|
||||
{
|
||||
displayTextArea.setText(""); //error message for no order entered when pressing the Search button
|
||||
JOptionPane.showMessageDialog(null, "No order entered", "Rocky Dry Cleaners Management System", JOptionPane.ERROR_MESSAGE);
|
||||
nameField.requestFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
String searchName;
|
||||
searchName = JOptionPane.showInputDialog(null, "Enter a customer name to search", "Search", JOptionPane.PLAIN_MESSAGE); //Read search name
|
||||
|
||||
boolean found = false;
|
||||
int searchNum = 0;
|
||||
|
||||
for(int i = 0; i < currentOrder ; i++) //iterate through array to search for the search key
|
||||
{
|
||||
if(searchName.equalsIgnoreCase(orderArray[i].getCustomerName()))
|
||||
{
|
||||
found=true;
|
||||
searchNum = i;
|
||||
}
|
||||
}
|
||||
|
||||
if(found == true) //display search entry
|
||||
{
|
||||
displayTextArea.setText(String.format("%-30s%-17s%-6s\n", "Customer Name", "Garments", "Charge"));
|
||||
displayTextArea.append("-------------------------------------------------------\n");
|
||||
displayTextArea.append(String.format("%-30s%-17s%5.2f\n", orderArray[searchNum].getCustomerName(), orderArray[searchNum].getGarments(), orderArray[searchNum].calculateCharge()));
|
||||
}
|
||||
|
||||
else if(searchName.length() == 0) //error message for entering nothing in the search field
|
||||
{
|
||||
displayTextArea.setText("");
|
||||
JOptionPane.showMessageDialog(null, "You must enter a search name", "Rocky Dry Cleaners Management System", JOptionPane.ERROR_MESSAGE);
|
||||
nameField.requestFocus();
|
||||
}
|
||||
|
||||
else //error message for not finding search
|
||||
{
|
||||
displayTextArea.setText("");
|
||||
JOptionPane.showMessageDialog(null, searchName + " not found", "Rocky Dry Cleaners Management System", JOptionPane.ERROR_MESSAGE);
|
||||
nameField.requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void exit()
|
||||
{
|
||||
//display exit message here
|
||||
JOptionPane.showMessageDialog(null, "Thank you for using the Rocky Dry Cleaners Management System", "Rocky Dry Cleaners Management System", JOptionPane.PLAIN_MESSAGE);
|
||||
|
||||
System.exit(0);
|
||||
} // exit
|
||||
|
||||
|
||||
|
||||
|
||||
// Main method create instance of class
|
||||
public static void main(String[] args)
|
||||
{
|
||||
RockyDryCleanersGUI f = new RockyDryCleanersGUI(); // Create instance of class
|
||||
f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // allow the code to close the program
|
||||
f.setBounds(200, 100, 470, 440); // Define position and size of app
|
||||
f.setTitle("Rocky Dry Cleaners Management System"); // Set the title of the app
|
||||
f.setVisible(true); // Make the application visible
|
||||
f.setResizable(false); // Make the window not resizable
|
||||
} // main
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user