Develop and test the following classes: Vehicle abstract class (and subclasses C
ID: 3605631 • Letter: D
Question
Develop and test the following classes: Vehicle abstract class (and subclasses Car, SUV, Truck), and the Vehicles aggregation class. VehicleRates abstract class (and subclasses CarRate, SUVRate, and TruckRates), and the Rates class. Account class and the Accounts aggregation class. Transaction class and the Transactions aggregation class. The Cost and Reservation classes.
Abstract Classes Needed Abstract Vehicle Class instance variables private String description II make-model for cars/suvs, length for trucks private int mpg private String VIN private Reservation resv II If null, then vehicle not reserved private Cost I/ miles per gallon I/ unique vehicle identification number only assigned when vehicle reserved appropriate constructor and getter/setter methods public abstract String toString(); ABSTRACT METHOD-implemented in each subclass Il returns a labeled string of information about a particular vehicle e.g. Honda Odyssey (SUV) MPG: 28 Seating: 7 Storage: 6 cu. ft. VIN: QK3FL4273ME public boolean isReserved...) public void reserve(Reservation) - throws ReservedVehicleException (if vehicle already reserved) public cancelReservation) .) - throws UnreservedVehicleException if reservation doesn't existExplanation / Answer
Answer:
Program Code to Copy:
// Account.java
public class Account
{
// should be of 5-digit account number
private String acct_num;
private String company_name;
private String[] vehicles_reserved;
private Boolean prime_customer;
public Account()
{
}
public Account(String acct_num, String company_name, String[] vehicles_reserved, Boolean prime_customer)
{
this.acct_num = acct_num;
this.company_name = company_name;
this.vehicles_reserved = vehicles_reserved;
this.prime_customer = prime_customer;
}
public String getAcctNum()
{
return acct_num;
}
public String getCompany_name()
{
return company_name;
}
public String[] getVehiclesReserved()
{
return vehicles_reserved;
}
public Boolean isPrimeCustomer()
{
return prime_customer;
}
public String toString()
{
String result = "";
result += "Company Name: " + getCompany_name() + " Account Number: " + getAcctNum() + " # Vehicles Reserved: "
+ vehicles_reserved.length + " ";
result += "List of VINS reserved are: ";
for (String vin : vehicles_reserved)
{
result += " " + vin + " ";
}
result += "Prime Customer: " + isPrimeCustomer() + " ";
return result;
}
}
//AccountNumberNotFoundException.java
public class AccountNumberNotFoundException extends Exception
{
public AccountNumberNotFoundException(String acct_num)
{
System.out.println("Sorry! There is account with account number: "+ acct_num);
}
}
// Accounts.java
import java.util.ArrayList;
import java.util.Iterator;
public class Accounts
{
private ArrayList<Account> accounts;
Iterator<Account> accountsIterator;
public Accounts()
{
accounts = new ArrayList<Account>();
}
public void add(Account acct)
{
accounts.add(acct);
}
public Account getAccount(String acct_num) throws AccountNumberNotFoundException, InvalidAcctNumException
{
boolean found = false;
Account currentAccount = null;
if (containsDigits(acct_num) && acct_num.length() == 5)
{
for (int i = 0; i < accounts.size(); i++)
{
if (accounts.get(i).getAcctNum().equalsIgnoreCase(acct_num))
{
found = true;
currentAccount = accounts.get(i);
break;
}
}
if (found)
{
return currentAccount;
}
else
{
throw new AccountNumberNotFoundException(acct_num);
}
}
else
throw new InvalidAcctNumException(acct_num);
}
private boolean containsDigits(String acct_num)
{
// TODO Auto-generated method stub
for (int i = 0; i < acct_num.length(); i++)
{
if (!Character.isDigit(acct_num.charAt(i)))
return false;
}
return true;
}
public void reset()
{
accountsIterator = accounts.iterator();
}
public boolean hasNext()
{
return accountsIterator.hasNext();
}
public Account getNext()
{
return accountsIterator.next();
}
}
// Car.java
public class Car extends Vehicle
{
private String gasolineType;
private int numSeats;
private boolean openTop;
public Car()
{
super();
this.numSeats = 0;
this.gasolineType = "";
this.openTop = false;
}
public Car(String description, int mpg, String VIN, Reservation resv, Cost cost, int num_Seats, int storage_Space,
String gasoline_Type, boolean openTop)
{
super(description, mpg, VIN, resv, cost);
this.numSeats = num_Seats;
this.gasolineType = gasoline_Type;
this.openTop = openTop;
}
public boolean getOpenTop()
{
return openTop;
}
public void setOpenTop(boolean openTop)
{
this.openTop = openTop;
}
public void setGasolineType(String gasolineType)
{
this.gasolineType = gasolineType;
}
public String getGasolineType()
{
return gasolineType;
}
public int getNumSeats()
{
return numSeats;
}
public void setNumSeats(int numSeats)
{
this.numSeats = numSeats;
}
@Override
public String toString()
{
// TODO Auto-generated method stub
String result = getDescription() + " MPG: " + getMpg() + " Seating: " + getNumSeats() + " Gasoline Type: "
+ getGasolineType() + " Contains open top: ";
if (openTop)
result += "Yes";
else
result += "No";
result += " VIN: " + getVIN();
return result;
}
}
// CarRates.java
public class CarRates extends VehicleRates
{
public CarRates()
{
// TODO Auto-generated constructor stub
}
@Override
public double getDailyRate()
{
// TODO Auto-generated method stub
return 25;
}
@Override
public double getWeeklyRate()
{
// TODO Auto-generated method stub
return getDailyRate() * 7;
}
@Override
public double getMonthlyRate()
{
// TODO Auto-generated method stub
return getWeeklyRate() * 4;
}
@Override
public double getMileageChrg()
{
// TODO Auto-generated method stub
return 50;
}
@Override
public double getDailyInsurRate()
{
// TODO Auto-generated method stub
return 5;
}
}
// Cost.java
public class Cost
{
String typeOfVehicle;
String rentalPeriodType;
String rentalPeriodLength;
boolean insuranceOpted;
boolean primeCustomer;
Rates rates;
public Cost(String typeOfVehicle, String rentalPeriodType, String rentalPeriodLength, boolean insuranceOpted,
boolean primeCustomer)
{
this.typeOfVehicle = typeOfVehicle;
this.rentalPeriodType = rentalPeriodType;
this.rentalPeriodLength = rentalPeriodLength;
this.insuranceOpted = insuranceOpted;
this.primeCustomer = primeCustomer;
rates = new Rates(new CarRates(), new SUVRates(), new TruckRates());
}
public String getTypeOfVehicle()
{
return typeOfVehicle;
}
public void setTypeOfVehicle(String typeOfVehicle)
{
this.typeOfVehicle = typeOfVehicle;
}
public String getRentalPeriodType()
{
return rentalPeriodType;
}
public void setRentalPeriodType(String rentalPeriodType)
{
this.rentalPeriodType = rentalPeriodType;
}
public String getRentalPeriodLength()
{
return rentalPeriodLength;
}
public void setRentalPeriodLength(String rentalPeriodLength)
{
this.rentalPeriodLength = rentalPeriodLength;
}
public boolean isInsuranceOpted()
{
return insuranceOpted;
}
public void setInsuranceOpted(boolean insuranceOpted)
{
this.insuranceOpted = insuranceOpted;
}
public boolean isPrimeCustomer()
{
return primeCustomer;
}
public void setPrimeCustomer(boolean primeCustomer)
{
this.primeCustomer = primeCustomer;
}
public VehicleRates getVehicleRates()
{
String vehicleType = typeOfVehicle.toLowerCase();
switch (vehicleType)
{
case "car":
return rates.getCarRates();
case "suv":
return rates.getSUVRates();
case "truck":
return rates.getTruckRates();
}
return null;
}
public double computeCost()
{
double unit_rate = 0;
VehicleRates vehicleRate = getVehicleRates();
switch (rentalPeriodType.toLowerCase())
{
case "days":
unit_rate = vehicleRate.getDailyRate();
break;
case "weeks":
unit_rate = vehicleRate.getWeeklyRate();
break;
case "months":
unit_rate = vehicleRate.getMonthlyRate();
break;
}
double insur_chrg = 0;
if (insuranceOpted)
{
switch (rentalPeriodType)
{
case "days":
insur_chrg = vehicleRate.getDailyInsurRate() * Integer.parseInt(rentalPeriodLength);
break;
case "weeks":
insur_chrg = vehicleRate.getDailyInsurRate() * Integer.parseInt(rentalPeriodLength);
break;
case "months":
insur_chrg = vehicleRate.getDailyInsurRate() * Integer.parseInt(rentalPeriodLength);
break;
}
}
// determine total vehicle use charge
double vehicle_use_chrg = Integer.parseInt(rentalPeriodLength) * unit_rate;
// compute the total charge (before any discounts)
double total_rental_charge = vehicle_use_chrg + insur_chrg;
return total_rental_charge;
}
}
// InvalidAcctNumException.java
public class InvalidAcctNumException extends Exception
{
public InvalidAcctNumException(String acct_num)
{
System.out.println("Sorry! The given account number "" + acct_num + "" is invalid.");
}
}
// Rates.java
public class Rates
{
private VehicleRates[] vehicles_rates = new VehicleRates[3];
public Rates(CarRates carRate, SUVRates suvRate, TruckRates truckRate)
{
vehicles_rates[0] = carRate;
vehicles_rates[1] = suvRate;
vehicles_rates[2] = truckRate;
}
public VehicleRates getCarRates()
{
return vehicles_rates[0];
}
public VehicleRates getSUVRates()
{
return vehicles_rates[1];
}
public VehicleRates getTruckRates()
{
return vehicles_rates[2];
}
}
// RentalDetails.java
public class RentalDetails
{
String vehicleType;
int numMilesDriven;
String typeOfRentalPeriod;
String rentalPeriod;
boolean insuranceOpted;
public RentalDetails(String vehicleType, int numMilesDriven, String typeOfRentalPeriod, String rentalPeriod,
boolean insOpted)
{
this.vehicleType = vehicleType;
this.numMilesDriven = numMilesDriven;
this.typeOfRentalPeriod = typeOfRentalPeriod;
this.rentalPeriod = rentalPeriod;
this.insuranceOpted = insOpted;
}
public String getVehicleType()
{
return vehicleType;
}
public int getNumMilesDriven()
{
return numMilesDriven;
}
public String getTypeOfRentalPeriod()
{
return typeOfRentalPeriod;
}
public String getRentalPeriod()
{
return rentalPeriod;
}
public boolean isInsuranceOpted()
{
return insuranceOpted;
}
}
// Reservation.java
public final class Reservation
{
// account number of company account
private String acctNum;
// days, weeks, months
private String rentalPeriodType;
// how many days, weeks or months reserving for
private String rentalPeriodLength;
// set to true if optional daily insurance wanted
private boolean insuranceSelected;
// constructor
public Reservation()
{
acctNum = "";
rentalPeriodType = "";
rentalPeriodLength = "";
insuranceSelected = false;
}
// constructor
public Reservation(String acctNum, String rentalPeriodType, String rentalPeriodLength, boolean insuranceSelected)
{
this.acctNum = acctNum;
this.rentalPeriodType = rentalPeriodType;
this.rentalPeriodLength = rentalPeriodLength;
this.insuranceSelected = insuranceSelected;
}
public String getAcctNum()
{
return acctNum;
}
public void setAcctNum(String acctNum)
{
this.acctNum = acctNum;
}
public String getRentalPeriodType()
{
return rentalPeriodType;
}
public void setRentalPeriodType(String rentalPeriodType)
{
this.rentalPeriodType = rentalPeriodType;
}
public String getRentalPeriodLength()
{
return rentalPeriodLength;
}
public void setRentalPeriodLength(String rentalPeriodLength)
{
this.rentalPeriodLength = rentalPeriodLength;
}
public boolean isInsuranceSelected()
{
return insuranceSelected;
}
public void setInsuranceSelected(boolean insuranceSelected)
{
this.insuranceSelected = insuranceSelected;
}
public String toString()
{
String result = "Account Number: " + acctNum + " Rental Period Type: " + rentalPeriodType + " Rental Period: "
+ rentalPeriodLength + " Insurance Opted: ";
if (insuranceSelected)
result += "Yes";
else
result += "No";
result += " ";
return result;
}
}
// ReservationDetails.java
public class ReservationDetails
{
String VIN;
String acctNum;
String rentalPeriod;
boolean insuranceOpted;
public ReservationDetails(String VIN, String acctNum, String rentalPeriod, boolean insuranceOpted)
{
this.VIN = VIN;
this.acctNum = acctNum;
this.rentalPeriod = rentalPeriod;
this.insuranceOpted = insuranceOpted;
}
public String getVIN()
{
return VIN;
}
public String getAcctNum()
{
return acctNum;
}
public String getRentalPeriod()
{
return rentalPeriod;
}
public boolean isInsuranceOpted()
{
return insuranceOpted;
}
}
// ReservedVehicleException.java
public class ReservedVehicleException extends Exception
{
public ReservedVehicleException(String des)
{
System.out.println("The vehicle " + des + " is already reserved.");
}
}
// SUV.java
public class SUV extends Vehicle
{
private int numSeats;
private int storageSpace;
public SUV()
{
super();
numSeats = 0;
storageSpace = 0;
}
public SUV(String description, int mpg, String VIN, Reservation resv, Cost cost, int num_Seats, int storage_Space)
{
super(description, mpg, VIN, resv, cost);
this.numSeats = num_Seats;
this.storageSpace = storage_Space;
}
@Override
public String toString()
{
// TODO Auto-generated method stub
String result = getDescription() + " MPG: " + getMpg() + " Seating: " +getNumSeats()+ " Storage: "+getStorageSpace() + "cu. ft. VIN: " + getVIN();
return result;
}
public int getNumSeats()
{
return numSeats;
}
public void setNumSeats(int numSeats)
{
this.numSeats = numSeats;
}
public int getStorageSpace()
{
return storageSpace;
}
public void setStorageSpace(int storageSpace)
{
this.storageSpace = storageSpace;
}
}
// SUVRates.java
public class SUVRates extends VehicleRates
{
public SUVRates()
{
// TODO Auto-generated constructor stub
}
@Override
public double getDailyRate()
{
// TODO Auto-generated method stub
return 30;
}
@Override
public double getWeeklyRate()
{
// TODO Auto-generated method stub
return getDailyRate() * 7;
}
@Override
public double getMonthlyRate()
{
// TODO Auto-generated method stub
return getWeeklyRate() * 4;
}
@Override
public double getMileageChrg()
{
// TODO Auto-generated method stub
return 60;
}
@Override
public double getDailyInsurRate()
{
// TODO Auto-generated method stub
return 10;
}
}
// Transaction.java
public class Transaction
{
private String return_date;
private String acct_num;
private String company_name;
private String vehicle_type;
private String rental_period_type;
private String rental_period_length;
private String rental_cost;
public Transaction()
{
}
public Transaction(String return_date, String acct_num, String company_name, String vehicle_type,
String rental_period_type, String rental_period_length, String rental_cost)
{
this.return_date = return_date;
this.acct_num = acct_num;
this.company_name = company_name;
this.vehicle_type = vehicle_type;
this.rental_period_type = rental_period_type;
this.rental_period_length = rental_period_length;
this.rental_cost = rental_cost;
}
public String toString()
{
String result = "";
result += "Company Name: " + company_name + " Account Number: " + acct_num + " Vehicle Type: " + vehicle_type
+ " ";
result += "Return Date: " + return_date + " Rental Period Type: " + rental_period_type
+ " Rental Period Length: " + rental_period_length + " ";
result += "Rental Cost: $" + rental_cost + " ";
return result;
}
}
// Transactions.java
import java.util.ArrayList;
import java.util.Iterator;
public class Transactions
{
private ArrayList<Transaction> transactions;
Iterator<Transaction> transactionsIterator;
public Transactions()
{
transactions = new ArrayList<Transaction>();
}
public void add(Transaction tran)
{
transactions.add(tran);
}
public void reset()
{
transactionsIterator = transactions.iterator();
}
public boolean hasNext()
{
return transactionsIterator.hasNext();
}
public Transaction getNext()
{
return transactionsIterator.next();
}
}
// Truck.java
public class Truck extends Vehicle
{
// to hold the capacity with units
private String capacity;
// specifies which of type truck it is.
private String truckType;
public Truck()
{
super();
truckType = "";
capacity = "";
}
public Truck(String description, int mpg, String VIN, Reservation resv, Cost cost, String truck_Type,
String capacity)
{
super(description, mpg, VIN, resv, cost);
truckType = truck_Type;
this.capacity = capacity;
}
@Override
public String toString()
{
// TODO Auto-generated method stub
String result = getDescription() + " MPG: " + getMpg() + " Truck Type: " + getTruckType() + " Storage: "
+ getCapacity() + " VIN: " + getVIN();
return result;
}
public String getCapacity()
{
return capacity;
}
public void setCapacity(String capacity)
{
this.capacity = capacity;
}
public String getTruckType()
{
return truckType;
}
public void setTruckType(String truckType)
{
this.truckType = truckType;
}
}
// TruckRates.java
public class TruckRates extends VehicleRates
{
public TruckRates()
{
}
@Override
public double getDailyRate()
{
// TODO Auto-generated method stub
return 35;
}
@Override
public double getWeeklyRate()
{
// TODO Auto-generated method stub
return getDailyRate() * 7;
}
@Override
public double getMonthlyRate()
{
// TODO Auto-generated method stub
return getWeeklyRate() * 4;
}
@Override
public double getMileageChrg()
{
// TODO Auto-generated method stub
return 55;
}
@Override
public double getDailyInsurRate()
{
// TODO Auto-generated method stub
return 30;
}
}
// UnreservedVehicleException.java
public class UnreservedVehicleException extends Exception
{
public UnreservedVehicleException(String des)
{
System.out.println("The vehicle " + des + " is not reserved at all to cancel.");
}
}
// Vehicle.java
public abstract class Vehicle
{
// make-model for cars/suvs, length of trucks
private String description;
// miles per gallon
private int mpg;
// unique vehicle identification number
private String VIN;
// if null, then vehicle not reserved
private Reservation resv;
// only assigned when vehicle reserved
private Cost cost;
// constructor
public Vehicle()
{
description = "";
mpg = 0;
VIN = "";
resv = null;
cost = null;
}
// parameterized constructor
public Vehicle(String description, int mpg, String VIN, Reservation resv, Cost cost)
{
this.description = description;
this.mpg = mpg;
this.VIN = VIN;
this.resv = resv;
this.cost = cost;
}
// getter and setter methods
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public int getMpg()
{
return mpg;
}
public void setMpg(int mpg)
{
this.mpg = mpg;
}
public String getVIN()
{
return VIN;
}
public void setVIN(String vIN)
{
VIN = vIN;
}
public Reservation getResv()
{
return resv;
}
public void setResv(Reservation resv)
{
this.resv = resv;
}
public Cost getCost()
{
return cost;
}
public void setCost(Cost cost)
{
this.cost = cost;
}
// abstract method, this is implemented in the subclasses.
public abstract String toString();
// to check check the vehicle is reserved or not
public boolean isReserved()
{
if (resv != null)
return true;
return false;
}
// to set the reservation if not reserved
public void reserve(Reservation reservation) throws ReservedVehicleException
{
if (resv == null)
{
resv = reservation;
}
else
throw new ReservedVehicleException(description);
}
public void cancelReservation() throws UnreservedVehicleException
{
if (resv != null)
{
resv = null;
}
else
throw new UnreservedVehicleException(description);
}
}
// VehicleAgencyTest.java
public class VehicleAgencyTest
{
public static void main(String args[])
{
Car car1 = new Car("Toyota Yaris (Sedan)", 40, "TY2AB1234WM", null, null, 5, 8, "Petrol", true);
Car car2 = new Car("BMW M4(Sedan)", 40, "BM2AA1111WA", null, null, 4, 5, "Petrol", false);
SUV suv1 = new SUV("Lexus NX (SUV)", 45, "LN5BB2233KL", null, null, 5, 6);
SUV suv2 =new SUV("Renault Captur (SUV)", 50, "RC6BL2333OM", null, null, 7, 10);
Truck truck1 = new Truck("Tata Motors (Truck)", 35, "TM3MW1144IK", null, null, "MiniVan", "6613 pounds");
Accounts accounts = new Accounts();
String[] reservedVINS = { "TY2AB1234WM", "BM2AA1111WA", "TM3MW1144IK" };
String[] reserevVINS = { "LN5BB2233KL", "RC6BL2333OM" };
accounts.add(new Account("12345", "ABCD - Cars, SUV's and Trucks Rental Company", reservedVINS, true));
accounts.add(new Account("35241", "BMWK - Cars, SUV's and Trucks Rental Company", reserevVINS, false));
accounts.reset();
System.out.println("Accounts Details are: ");
while (accounts.hasNext())
{
System.out.println(accounts.getNext());
}
System.out.println(" --------------------------------------------------------- ");
Transactions transactions = new Transactions();
Cost cost1 = new Cost("Car", "Days", "15", true, true);
transactions.add(new Transaction("March 5, 2018", "12345", "ABCD - Cars, SUV's and Trucks Rental Company",
cost1.getTypeOfVehicle(), cost1.getRentalPeriodType(), cost1.getRentalPeriodLength(),
String.valueOf(cost1.computeCost())));
Cost cost2 = new Cost("SUV", "Weeks", "3", false, true);
transactions.add(new Transaction("Feb 25, 2018", "35241", "BMWK - Cars, SUV's and Trucks Rental Company",
cost2.getTypeOfVehicle(), cost2.getRentalPeriodType(), cost2.getRentalPeriodLength(),
String.valueOf(cost2.computeCost())));
transactions.reset();
Cost cost3 = new Cost("Trucks", "Months", "2", false, true);
System.out.println("Transaction Details are: ");
while (transactions.hasNext())
{
System.out.println(transactions.getNext());
}
System.out.println(" --------------------------------------------------------- ");
accounts.reset();
car1.setCost(cost1);
car2.setCost(cost1);
suv1.setCost(cost2);
suv2.setCost(cost2);
truck1.setCost(cost3);
Vehicles vehicles = new Vehicles();
vehicles.add(car1);
vehicles.add(car2);
vehicles.add(suv1);
vehicles.add(suv2);
vehicles.add(truck1);
vehicles.reset();
System.out.println("List of Vehicles are: ");
while (vehicles.hasNext())
{
System.out.println(" " + vehicles.getNext());
}
System.out.println(" --------------------------------------------------------- ");
}
}
//VehicleRates.java
public abstract class VehicleRates
{
public abstract double getDailyRate();
public abstract double getWeeklyRate();
public abstract double getMonthlyRate();
public abstract double getMileageChrg();
public abstract double getDailyInsurRate();
}
//Vehicles.java
import java.util.ArrayList;
import java.util.Iterator;
public class Vehicles
{
private ArrayList<Vehicle> agency_vehicles;
Iterator<Vehicle> agencyIterator;
public Vehicles()
{
agency_vehicles = new ArrayList<Vehicle>();
}
public void add(Vehicle v)
{
agency_vehicles.add(v);
}
public Vehicle getVehicle(String VIN) throws VINNotFoundException
{
boolean found = false;
Vehicle vehicle = null;
for (int i = 0; i < agency_vehicles.size(); i++)
{
if (agency_vehicles.get(i).getVIN().equalsIgnoreCase(VIN))
{
found = true;
vehicle = agency_vehicles.get(i);
break;
}
}
if (found)
{
return vehicle;
}
else
{
throw new VINNotFoundException(VIN);
}
}
public void reset()
{
agencyIterator = agency_vehicles.iterator();
}
public boolean hasNext()
{
return agencyIterator.hasNext();
}
public Vehicle getNext()
{
return agencyIterator.next();
}
}
//VINNotFoundException.java
public class VINNotFoundException extends Exception
{
public VINNotFoundException(String VIN)
{
System.out.println("Sorry! There is not vehicle with VIN: "+ VIN);
}
}
Sample Output:
Accounts Details are:
Company Name: ABCD - Cars, SUV's and Trucks Rental Company Account Number: 12345 # Vehicles Reserved: 3
List of VINS reserved are:
TY2AB1234WM
BM2AA1111WA
TM3MW1144IK
Prime Customer: true
Company Name: BMWK - Cars, SUV's and Trucks Rental Company Account Number: 35241 # Vehicles Reserved: 2
List of VINS reserved are:
LN5BB2233KL
RC6BL2333OM
Prime Customer: false
---------------------------------------------------------
Transaction Details are:
Company Name: ABCD - Cars, SUV's and Trucks Rental Company Account Number: 12345 Vehicle Type: Car
Return Date: March 5, 2018 Rental Period Type: Days Rental Period Length: 15
Rental Cost: $375.0
Company Name: BMWK - Cars, SUV's and Trucks Rental Company Account Number: 35241 Vehicle Type: SUV
Return Date: Feb 25, 2018 Rental Period Type: Weeks Rental Period Length: 3
Rental Cost: $630.0
---------------------------------------------------------
List of Vehicles are:
Toyota Yaris (Sedan) MPG: 40 Seating: 5 Gasoline Type: Petrol Contains open top: Yes VIN: TY2AB1234WM
BMW M4(Sedan) MPG: 40 Seating: 4 Gasoline Type: Petrol Contains open top: No VIN: BM2AA1111WA
Lexus NX (SUV) MPG: 45 Seating: 5 Storage: 6cu. ft. VIN: LN5BB2233KL
Renault Captur (SUV) MPG: 50 Seating: 7 Storage: 10cu. ft. VIN: RC6BL2333OM
Tata Motors (Truck) MPG: 35 Truck Type: MiniVan Storage: 6613 pounds VIN: TM3MW1144IK
---------------------------------------------------------
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.