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;
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.