Programming Assignment Unit 6
Vehicle Information System
[Link]
/**
* Vehicle interface defining common vehicle properties.
*/
public interface Vehicle {
String getMake();
String getModel();
int getYear();
}
[Link]
/**
* CarVehicle interface defines additional methods specific to cars.
*/
public interface CarVehicle {
void setNumberOfDoors(int doors);
int getNumberOfDoors();
void setFuelType(String fuelType); // Accepts Petrol, Diesel, Electric
String getFuelType();
}
[Link]
/**
* MotorVehicle interface defines additional methods specific to motorcycles.
*/
public interface MotorVehicle {
void setNumberOfWheels(int wheels);
int getNumberOfWheels();
void setMotorcycleType(String type); // Sport, Cruiser, Off-road
String getMotorcycleType();
}
[Link]
/**
* TruckVehicle interface defines additional methods specific to trucks.
*/
public interface TruckVehicle {
void setCargoCapacity(double capacity); // in tons
double getCargoCapacity();
void setTransmissionType(String type); // Manual, Automatic
String getTransmissionType();
}
[Link]
/**
* Car class implements Vehicle and CarVehicle.
* Stores and retrieves details specific to cars.
*/
public class Car implements Vehicle, CarVehicle {
private String make, model, fuelType;
private int year, numberOfDoors;
public Car(String make, String model, int year, int numberOfDoors, String
fuelType) {
[Link] = make;
[Link] = model;
[Link] = year;
setNumberOfDoors(numberOfDoors);
setFuelType(fuelType);
}
@Override
public String getMake() { return make; }
@Override
public String getModel() { return model; }
@Override
public int getYear() { return year; }
@Override
public void setNumberOfDoors(int doors) {
if (doors < 2 || doors > 6) {
throw new IllegalArgumentException("Doors must be between 2 and 6.");
}
[Link] = doors;
}
@Override
public int getNumberOfDoors() { return numberOfDoors; }
@Override
public void setFuelType(String fuelType) {
if ( &&
 &&
) {
throw new IllegalArgumentException("Invalid fuel type.");
}
[Link] = fuelType;
}
@Override
public String getFuelType() { return fuelType; }
@Override
public String toString() {
return "Car: " + make + " " + model + " (" + year + "), " + numberOfDoors
+
" doors, Fuel: " + fuelType;
}
}
[Link]
public class Motorcycle implements Vehicle, MotorVehicle {
private String make, model, motorcycleType;
private int year, wheels;
public Motorcycle(String make, String model, int year, int wheels, String
type) {
[Link] = make;
[Link] = model;
[Link] = year;
setNumberOfWheels(wheels);
setMotorcycleType(type);
}
@Override
public String getMake() { return make; }
@Override
public String getModel() { return model; }
@Override
public int getYear() { return year; }
@Override
public void setNumberOfWheels(int wheels) {
if (wheels < 2 || wheels > 3) {
throw new IllegalArgumentException("Motorcycles must have 2 or 3
wheels.");
}
[Link] = wheels;
}
@Override
public int getNumberOfWheels() { return wheels; }
@Override
public void setMotorcycleType(String type) {
if ( &&
 &&
) {
throw new IllegalArgumentException("Invalid motorcycle type.");
}
[Link] = type;
}
@Override
public String getMotorcycleType() { return motorcycleType; }
@Override
public String toString() {
return "Motorcycle: " + make + " " + model + " (" + year + "), " + wheels
+
" wheels, Type: " + motorcycleType;
}
}
[Link]
public class Truck implements Vehicle, TruckVehicle {
private String make, model, transmissionType;
private int year;
private double cargoCapacity;
public Truck(String make, String model, int year, double cargoCapacity,
String transmissionType) {
[Link] = make;
[Link] = model;
[Link] = year;
setCargoCapacity(cargoCapacity);
setTransmissionType(transmissionType);
}
@Override
public String getMake() { return make; }
@Override
public String getModel() { return model; }
@Override
public int getYear() { return year; }
@Override
public void setCargoCapacity(double capacity) {
if (capacity <= 0) {
throw new IllegalArgumentException("Cargo capacity must be
positive.");
}
[Link] = capacity;
}
@Override
public double getCargoCapacity() { return cargoCapacity; }
@Override
public void setTransmissionType(String type) {
if ( &&
) {
throw new IllegalArgumentException("Invalid transmission type.");
}
[Link] = type;
}
@Override
public String getTransmissionType() { return transmissionType; }
@Override
public String toString() {
return "Truck: " + make + " " + model + " (" + year + "), " +
cargoCapacity + " tons, Transmission: " + transmissionType;
}
}
[Link]
// Source code is decompiled from a .class file using FernFlower decompiler.
import [Link];
import [Link];
import [Link];
public class VehicleSystem {
public VehicleSystem() {
}
public static void main(String[] var0) {
Scanner var1 = new Scanner([Link]);
ArrayList var2 = new ArrayList();
boolean var3 = false;
label38:
while(!var3) {
[Link]("\n--- Vehicle Information System ---");
[Link]("1. Add Car");
[Link]("2. Add Motorcycle");
[Link]("3. Add Truck");
[Link]("4. View All Vehicles");
[Link]("5. Exit");
[Link]("Enter your choice: ");
try {
int var4 = [Link]([Link]());
switch (var4) {
case 1:
[Link]("Enter make: ");
String var5 = [Link]();
[Link]("Enter model: ");
String var6 = [Link]();
[Link]("Enter year: ");
int var7 = [Link]([Link]());
[Link]("Enter number of doors: ");
int var8 = [Link]([Link]());
[Link]("Enter fuel type (Petrol/Diesel/Electric): ");
String var9 = [Link]();
[Link](new Car(var5, var6, var7, var8, var9));
[Link]("Car added successfully!");
break;
case 2:
[Link]("Enter make: ");
String var10 = [Link]();
[Link]("Enter model: ");
String var11 = [Link]();
[Link]("Enter year: ");
int var12 = [Link]([Link]());
[Link]("Enter number of wheels: ");
int var13 = [Link]([Link]());
[Link]("Enter motorcycle type (Sport/Cruiser/Off-
road): ");
String var14 = [Link]();
[Link](new Motorcycle(var10, var11, var12, var13, var14));
[Link]("Motorcycle added successfully!");
break;
case 3:
[Link]("Enter make: ");
String var15 = [Link]();
[Link]("Enter model: ");
String var16 = [Link]();
[Link]("Enter year: ");
int var17 = [Link]([Link]());
[Link]("Enter cargo capacity in tons: ");
double var18 = [Link]([Link]());
[Link]("Enter transmission type (Manual/Automatic):
");
String var20 = [Link]();
[Link](new Truck(var15, var16, var17, var18, var20));
[Link]("Truck added successfully!");
break;
case 4:
[Link]("\n--- Vehicle List ---");
if ([Link]()) {
[Link]("No vehicles added yet.");
break;
} else {
Iterator var21 = [Link]();
while(true) {
if (![Link]()) {
continue label38;
}
Vehicle var22 = (Vehicle)[Link]();
[Link]([Link]());
}
}
case 5:
var3 = true;
[Link]("Exiting Vehicle System. Goodbye!");
break;
default:
[Link]("Invalid choice. Try again.");
}
} catch (NumberFormatException var23) {
[Link]("Invalid input format. Please enter correct
numbers.");
} catch (IllegalArgumentException var24) {
[Link]("Error: " + [Link]());
}
}
[Link]();
}
}
Car: implements Vehicle and CarVehicle
Motorcycle: implements Vehicle and MotorVehicle
Truck: implements Vehicle and TruckVehicle
a VehicleSystem class with a main() method that:
Uses a menu to let users:
o Add a Car
o Add a Motorcycle
o Add a Truck
o View all added vehicles
o Exit the program
Collects user input using Scanner with error handling for:
o Invalid numeric values
o Invalid choice inputs (e.g., unsupported fuel types)
Output