CSE1322 Assignment 3

Background:

A rental company has hired you to build an inventory system to keep track of their vehicles. The company, Acme Car Rentals, rents 3 classes of : Economy, Midsized and SUVs. Each rents for a different price.

Their initial inventory is as follows:

Type Make Model Color Current Original Rental Mileage Cost Rate

Economy Nissan Versa Blue 105 $14,500 $25/day

Economy White 8422 $17,500 $25/day

Midsized Avenger Green 15720 $15,000 $45/day

Midsized Ford Focus Yellow 2368 $14,500 $45/day

SUV Toyota Rav4 Silver 432 $26,150 $80/day

Classes you must create: ● Define a Vehicle class. ● It should have attributes for make, model, color, current mileage, original cost, and a boolean that keeps track of whether the vehicle is currently rented. ● It should have getters/setters for each attribute. ● It must have a constructor to set all attributes. ● It should have an override for toString or ToString which returns a string similar to: ○ Available: Blue Nissan Versa with 105 miles ○ Rented: Blue Nissan Versa with 105 miles

● Define an Economy_Car class. It should inherit from Vehicle. ○ It should have an attribute daily_rental_rate. ○ Create a constructor which takes in make, model, color, current mileage, original cost, and daily rental rate. ○ Create an override for toString/ToString which prints: ■ Economy Car: Rented: Blue Nissan Versa with 105 miles ● Note most of this is just the text that your parent class prints.

● Define a Midsize_Car class. It should inherit from Vehicle. ○ It should have an attribute daily_rental_rate. ○ Create a constructor which takes in make, model, color, current mileage, original cost, and daily rental rate. ○ Create an override for toString/ToString which prints: ■ Midsized Car: Available: Green Dodge Avenger with 15720 miles ● Note: Most of this is just the text that your parent class prints.

● Define a SUV class. It should inherit from Vehicle. ○ It should have an attribute daily_rental_rate. ○ Create a constructor which takes in make, model, color, current mileage, original cost, and daily rental rate. ○ Create an override for toString/ToString which prints: ■ SUV: Available: Silver Toyota RAV4 with 432 miles ● Note: Most of this is just the text that your parent class prints.

Driver Program: ● In your driver class, create an ArrayList/List of Vehicles. ● Add each of the vehicles in the table above to your ArrayList/List. ● Create a method show_cars which takes in the ArrayList/List and prints out all of the vehicles in a menu like this:

0. Return 1. Economy Car: Available: Blue Nissan Versa with 105 miles 2. Economy Car: Available: White Toyota Yaris with 8422 miles 3. Midsized Car: Available: Green Dodge Avenger with 15720 miles 4. Midsized Car: Available: Yellow Ford Focus with 2368 miles 5. SUV: Available: Silver Toyota RAV4 with 432 miles

● Create a method rent_cars ○ Using a loop, prompt the user to: “Choose a car to rent:”. Call the show_cars() method above to produce a menu. ○ Read in a response, so long as it’s not 0, mark the chosen car as rented. ● Create a method return_cars ○ Using a loop, prompt the user to: “Choose a car to rent:”. Call the show_cars() method above to produce a menu. ○ Read in a response, so long as it’s not 0, mark the chosen car as available. ● Produce a main menu that looks like this: 1. Rent cars 2. Return cars 3. Quit

● Read in a choice and call the appropriate method above as long as the user doesn’t choose 3. Sample Output: 1. Rent cars 2. Return cars 3. Quit 1 Choose a car to rent: 0. Return 1. Economy Car: Available: Blue Nissan Versa with 105 miles 2. Economy Car: Available: White Toyota Yaris with 8422 miles 3. Midsized Car: Available: Green Dodge Avenger with 15720 miles 4. Midsized Car: Available: Yellow Ford Focus with 2368 miles 5. SUV: Available: Silver Toyota RAV4 with 432 miles 1 Choose a car to rent: 0. Return 1. Economy Car: Rented: Blue Nissan Versa with 105 miles 2. Economy Car: Available: White Toyota Yaris with 8422 miles 3. Midsized Car: Available: Green Dodge Avenger with 15720 miles 4. Midsized Car: Available: Yellow Ford Focus with 2368 miles 5. SUV: Available: Silver Toyota RAV4 with 432 miles 3 Choose a car to rent: 0. Return 1. Economy Car: Rented: Blue Nissan Versa with 105 miles 2. Economy Car: Available: White Toyota Yaris with 8422 miles 3. Midsized Car: Rented: Green Dodge Avenger with 15720 miles 4. Midsized Car: Available: Yellow Ford Focus with 2368 miles 5. SUV: Available: Silver Toyota RAV4 with 432 miles 0 1. Rent cars 2. Return cars 3. Quit 2 Choose a car to return: 0. Return 1. Economy Car: Rented: Blue Nissan Versa with 105 miles 2. Economy Car: Available: White Toyota Yaris with 8422 miles 3. Midsized Car: Rented: Green Dodge Avenger with 15720 miles 4. Midsized Car: Available: Yellow Ford Focus with 2368 miles 5. SUV: Available: Silver Toyota RAV4 with 432 miles 1 Choose a car to return:

0. Return 1. Economy Car: Available: Blue Nissan Versa with 105 miles 2. Economy Car: Available: White Toyota Yaris with 8422 miles 3. Midsized Car: Rented: Green Dodge Avenger with 15720 miles 4. Midsized Car: Available: Yellow Ford Focus with 2368 miles 5. SUV: Available: Silver Toyota RAV4 with 432 miles 3 Choose a car to return: 0. Return 1. Economy Car: Available: Blue Nissan Versa with 105 miles 2. Economy Car: Available: White Toyota Yaris with 8422 miles 3. Midsized Car: Available: Green Dodge Avenger with 15720 miles 4. Midsized Car: Available: Yellow Ford Focus with 2368 miles 5. SUV: Available: Silver Toyota RAV4 with 432 miles 0 1. Rent cars 2. Return cars 3. Quit 3

Submitting your answer: Please follow the posted submission guidelines here: https://ccse.kennesaw.edu/fye/submissionguidelines.php

Ensure you submit before the deadline listed on the lab schedule for CSE1322L here: https://ccse.kennesaw.edu/fye/courseschedules.php

Rubric: ● Vehicle Class (45 points total) ○ Original_cost attribute + getter/setter (5 points) ○ Miles attribute + getter/setter (5 points) ○ Make attribute + getter/setter (5 points) ○ Model attribute + getter/setter(5 points) ○ Color attribute + getter/setter(5 points) ○ Rented attribute + getter/setter(5 points) ○ Constructor (10 points total) ■ 5 parameters (1 point each) ■ Set the 5 attributes (1 point each) ○ toString/ToString override (5 points) ● Economy_Car Class (10 points total) ○ daily_rental_rate attribute (2 points)

○ Constructor (6 points total) ■ 6 parameters are taken in and set (1 point each) ○ toString/ToString override (2 points) ● Midsized_Car Class (10 points total) ○ daily_rental_rate attribute (2 points) ○ Constructor (6 points total) ■ 6 parameters are taken in and set (1 point each) ○ toString/ToString override (2 points) ● SUV Class (10 points total) ○ daily_rental_rate attribute (2 points) ○ Constructor (6 points total) ■ 6 parameters are taken in and set (1 point each) ○ toString/ToString override (2 points) ● Driver Class (25 points total) ○ show_cars() method (3 points total) ■ Use a loop/foreach loop to print the vehicles (3 points) ○ rent_cars() method (5 points total) ■ Prompt and read user response (2 points) ■ Successfully update rented attribute in selected car (3 points) ○ return_cars() method (5 points total) ■ Prompt and read user response (2 points) ■ Successfully update rented attribute in selected car (3 points) ○ ArrayList/List created (5 points) ○ 5 cars added per the table at the top of this doc (5 points total) ○ Main menu (2 points)