Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

The instructor provided Assignment5 but there are gaps in the code and those gap

ID: 3664761 • Letter: T

Question

The instructor provided Assignment5 but there are gaps in the code and those gaps are what I am having trouble with and need to be answered. Here is the completed code for NonMemberCustomer, MemberCustomer, Customer, and CustomerParser:

Customer.java(Abstract class)

abstract class Customer {

   public Customer(String fName, String lName, double amount, int year,
           int month, int date) {
       firstName = fName;
       lastName = lName;
       purchasedAmount = amount;
       purchasedYear = year;
       purchasedMonth = month;
       purchasedDate = date;

       paymentAmount = 0.0;
   }

   protected String firstName;
   protected String lastName;
   protected double purchasedAmount;
   protected int purchasedYear;
   protected int purchasedMonth;
   protected int purchasedDate;

   protected double paymentAmount;

   public double getPaymentAmount() {
       return paymentAmount;
   }

   public abstract void computePaymentAmount();

   public String toString() {
      
       String s = "First name " + firstName + " ";
       s += "Last name " + lastName + " ";
       s += "Purchased Amount: $" + purchasedAmount + " ";
       s += "Purchased Date " + purchasedMonth + "/" + "purchasedDate" + "/"
               + purchasedYear + " ";
       s += "Payment Amount " + paymentAmount + " ";
      
       return s;
   }

}

NonMemberCustomer.java


public class NonMemberCustomer extends Customer {

  
   protected double visitFee;
  
   public NonMemberCustomer(String fName, String lName, double amount, int year, int month, int date, double fee)
   {
       super(fName,lName,amount,year,month,date);
       visitFee=fee;
   }

   @Override
   public void computePaymentAmount()
   {
       paymentAmount=purchasedAmount+visitFee;
   }
  
   public String toString()
   {
       String s="NonMember Customer ";
       s+=super.toString();
       s+="Visit Fee $"+visitFee+" ";
       return s;
   }

}

MemberCustomer.java


public class MemberCustomer extends Customer {

   protected int pointsCollected;
  
   public MemberCustomer(String fName, String lName, double amount, int year, int month, int date, int points) {
      
       super(fName,lName,amount,year,month,date);
       pointsCollected=points;
   }

   @Override
   public void computePaymentAmount()
   {
       if(pointsCollected>100)
       {
           paymentAmount=purchasedAmount*0.8;
       }
       else
       {
           paymentAmount=purchasedAmount*0.9;
       }
      
       pointsCollected+=purchasedAmount*0.01;
   }
  
   public String toString()
   {
       String s="Member Customer: ";
       s+=super.toString();
       s+="Collected Points "+pointsCollected+" ";
       return s;
   }

}

CustomerParser.java


public class CustomerParser {

   public static Customer parseStringToCustomer(String lineToParse)
   {
       String s[]=lineToParse.split("/");
      
       String type=s[0];
       String fName=s[1];
       String lName=s[2];
       double amount=Double.parseDouble(s[3]);
       int year=Integer.parseInt(s[4]);
       int month=Integer.parseInt(s[5]);
       int date=Integer.parseInt(s[6]);
      
       if(type.equalsIgnoreCase("NonMember"))
       {
           double fee=Double.parseDouble(s[7]);
           NonMemberCustomer customer=new NonMemberCustomer(fName,lName,amount,year,month,date,fee);
           return customer;
       }
       else if(type.equalsIgnoreCase("Member"))
       {
           int points=Integer.parseInt(s[7]);
           MemberCustomer customer=new MemberCustomer(fName,lName,amount,year,month,date,points);
           return customer;
       }
       return null;
      
   }
  
}

Here is Assignment5, the gaps in the code are what need answered:

Explanation / Answer

Answer

import java.io.*; //to use InputStreamReader and BufferedReader
import java.util.*; //to use ArrayList
import java.text.NumberFormat;

public class Assignment5
{
public static void main (String[] args)
{
char input1;
String inputInfo = new String();
String line = new String();
boolean operation;

// ArrayList object is used to store customer objects
ArrayList customerList = new ArrayList();

try
{
printMenu(); // print out menu

// create a BufferedReader object to read input from a keyboard
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader stdin = new BufferedReader (isr);

do
{
System.out.println("What action would you like to perform?");
line = stdin.readLine().trim();
input1 = line.charAt(0);
input1 = Character.toUpperCase(input1);

if (line.length() == 1)
{
switch (input1)
{
case 'a':
case 'A': //Add Customer
System.out.print("Please enter some customer information to add: ");
inputInfo = stdin.readLine().trim();
       CustomerParser obj=new CustomerParser();
       customerList.add(obj.parseStringToCustomer(inputInfo));
break;
       case 'c':
case 'C': //Compute Payment Amount
       Iterator itr2=customerList.iterator();//getting Iterator from arraylist to traverse elements
       while(itr2.hasNext())
       {      
           Customer obj2=(Customer)itr2.next();
           obj2.computePaymentAmount();
       }
System.out.print("payment amount computed ");
break;
case 'd':
case 'D': //Count certain customers
System.out.print("Please enter a purchased amount: ");
inputInfo = stdin.readLine().trim();
double amount = Double.parseDouble(inputInfo);
int count = 0;
       Iterator itr1=customerList.iterator();//getting Iterator from arraylist to traverse elements
       while(itr1.hasNext())
       {      
           Customer obj1=(Customer)itr1.next();
           if(obj1.purchasedAmount>amount)
           {
               count++;
           }
       }
NumberFormat money = NumberFormat.getCurrencyInstance();
System.out.println("The number of customers who purchased more than " + money.format(amount)
+ " is: " + count);
break;
case 'l':
case 'L': //List Customers
       Iterator itr=customerList.iterator();//getting Iterator from arraylist to traverse elements
       while(itr.hasNext())
       {      
           System.out.println(itr.next());
       }
break;
case 'q':
case 'Q': //Quit
break;
case '?': //Display Menu
printMenu();
break;
default:
System.out.print("Unknown action ");
break;
}
}
else
{
System.out.print("Unknown action ");
}
} while (input1 != 'Q'); // stop the loop when Q is read
}
catch (IOException exception)
{
System.out.println("IO Exception");
}
}

/** The method printMenu displays the menu to a user **/
public static void printMenu()
{
System.out.print("Choice Action " +
"------ ------ " +
"A Add Customer " +
"C Compute Payment Amount " +
"D Count Certain Customers " +
"L List Customers " +
"Q Quit " +
"? Display Help ");
}
}

abstract class Customer {

public Customer(String fName, String lName, double amount, int year,
int month, int date) {
firstName = fName;
lastName = lName;
purchasedAmount = amount;
purchasedYear = year;
purchasedMonth = month;
purchasedDate = date;

paymentAmount = 0.0;
}

protected String firstName;
protected String lastName;
protected double purchasedAmount;
protected int purchasedYear;
protected int purchasedMonth;
protected int purchasedDate;

protected double paymentAmount;

public double getPaymentAmount() {
return paymentAmount;
}

public abstract void computePaymentAmount();

public String toString() {
  
String s = "First name " + firstName + " ";
s += "Last name " + lastName + " ";
s += "Purchased Amount: $" + purchasedAmount + " ";
s += "Purchased Date " + purchasedMonth + "/" + purchasedDate + "/"
+ purchasedYear + " ";
s += "Payment Amount " + paymentAmount + " ";
  
return s;
}

}
public class NonMemberCustomer extends Customer {

  
protected double visitFee;
  
public NonMemberCustomer(String fName, String lName, double amount, int year, int month, int date, double fee)
{
super(fName,lName,amount,year,month,date);
visitFee=fee;
}

@Override
public void computePaymentAmount()
{
paymentAmount=purchasedAmount+visitFee;
}
  
public String toString()
{
String s="NonMember Customer ";
s+=super.toString();
s+="Visit Fee $"+visitFee+" ";
return s;
}

}
public class MemberCustomer extends Customer {

protected int pointsCollected;
  
public MemberCustomer(String fName, String lName, double amount, int year, int month, int date, int points) {
  
super(fName,lName,amount,year,month,date);
pointsCollected=points;
}

@Override
public void computePaymentAmount()
{
if(pointsCollected>100)
{
paymentAmount=purchasedAmount*0.8;
}
else
{
paymentAmount=purchasedAmount*0.9;
}
  
pointsCollected+=purchasedAmount*0.01;
}
  
public String toString()
{
String s="Member Customer: ";
s+=super.toString();
s+="Collected Points "+pointsCollected+" ";
return s;
}

}
public class CustomerParser {

public static Customer parseStringToCustomer(String lineToParse)
{
String s[]=lineToParse.split("/");
  
String type=s[0];
String fName=s[1];
String lName=s[2];
double amount=Double.parseDouble(s[3]);
int year=Integer.parseInt(s[4]);
int month=Integer.parseInt(s[5]);
int date=Integer.parseInt(s[6]);
  
if(type.equalsIgnoreCase("NonMember"))
{
double fee=Double.parseDouble(s[7]);
NonMemberCustomer customer=new NonMemberCustomer(fName,lName,amount,year,month,date,fee);
return customer;
}
else if(type.equalsIgnoreCase("Member"))
{
int points=Integer.parseInt(s[7]);
MemberCustomer customer=new MemberCustomer(fName,lName,amount,year,month,date,points);
return customer;
}
else
{
return null;
}
  
}
  
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote