I need help in improving my code. This is an elevator simulator that uses polymorphism and object-oriented programming to simulate the movement of elevators in a building with multiple types of passengers and elevators. The system has 8 elevators, each of which can be one of 4 types of elevators, with a certain percentage of requests for each type. Similarly, each passenger can be one of 4 types, with a different percentage of requests for each type.

Programming Logic & Design Comprehensive
9th Edition
ISBN:9781337669405
Author:FARRELL
Publisher:FARRELL
Chapter6: Arrays
Section: Chapter Questions
Problem 10PE
icon
Related questions
Question

I need help in improving my code. This is an elevator simulator that uses polymorphism and object-oriented programming to simulate the movement of elevators in a building with multiple types of passengers and elevators.
The system has 8 elevators, each of which can be one of 4 types of elevators, with a certain
percentage of requests for each type. Similarly, each passenger can be one of 4 types, with a
different percentage of requests for each type.

The simulation should have 4 types of Passengers:

Standard: This is the most common type of passenger and has a request percentage of 70%. Standard passengers have no special requirements. 

VIP: This type of passenger has a request percentage of 10%. VIP passengers are given priority and are more likely to be picked up by express elevators. 

Freight: This type of passenger has a request percentage of 15%. Freight passengers have large items that need to be transported and are more likely to be picked up by freight elevators. 

Glass: This type of passenger has a request percentage of 5%. Glass passengers have fragile items that need to be transported and are more likely to be picked up by glass elevators.

 

Passenger {

Should have the variable used in sub classes

initializes Passenger Counter - keeps count of number of passengers

}

Sub-classes (Standarda, Vip, Frieght, Glass) {

Use the polymorphic methods from Passenger class

requestElevator - Uses random to generate a Start floor and End floor.

getPercent - Retrieves the percent from the setting.txt file.

}

This is what I have:

public class Simulation {

    SimulatorSettings settings = new SimulatorSettings("settings.txt");

    public void InitSimulation() throws FileNotFoundException{

        ///// Read all parameters from the file and store in the clas

        File file = new File("settings.txt");

        Scanner scanner = new Scanner(file);

        //FileReader freader = new FileReader(file); 

        while(scanner.hasNextLine()){

            String line = scanner.nextLine();

            if(line.startsWith("floor="))

            {

                line= line.replace("floor=", "");

                // Convert the value to the wanted type 

                System.out.println(line);

            }

        }

        settings.setNofloors(55);

        Passenger pass1 = new StandardPassenger();

        pass1.requestElevator(settings);

        ArrayList<Passenger> passengers = null;

        for(int i = 0; i < 100; i++){

            //Use the percentage from the file

            passengers.add(new StandardPassenger());

        }

    }

}

 

public class SimulatorSettings {

    SimulatorSettings(String fileName){

        

    }

    private int nofloors;

 

    public int getNofloors() {

        return nofloors;

    }

 

    public void setNofloors(int nofloors) {

        this.nofloors = nofloors;

    }

}

import java.util.Random;

public abstract class Passenger {

    public static int passengerCounter = 0;

    private String passengerID;

    protected int startFloor;

    protected int endFloor;

    Passenger() {
        this.passengerID = "" + passengerCounter;
        passengerCounter++;
    }

    public abstract boolean requestElevator(SimulatorSettings settings);
}

class StandardPassenger extends Passenger {

    public StandardPassenger() {
        super();
    }

    @Override
    public boolean requestElevator(SimulatorSettings settings) {
        Random rand = new Random();
        this.startFloor = rand.nextInt(settings.getNofloors());
        this.endFloor = rand.nextInt(settings.getNofloors());
        while (this.startFloor == this.endFloor) {
            this.endFloor = rand.nextInt(settings.getNofloors());
        }
        return true;
    }
}

class VIPPassenger extends Passenger {

    public VIPPassenger() {
        super();
    }

    @Override
    public boolean requestElevator(SimulatorSettings settings) {
        // Request an express elevator
        int expressElevator = settings.getNofloors() / 2;
        this.startFloor = expressElevator;
        this.endFloor = expressElevator;
        return true;
    }
}

class FreightPassenger extends Passenger {

    public FreightPassenger() {
        super();
    }

    @Override
    public boolean requestElevator(SimulatorSettings settings) {
        Random rand = new Random();
        this.startFloor = rand.nextInt(settings.getNofloors());
        this.endFloor = rand.nextInt(settings.getNofloors());
        while (this.startFloor == this.endFloor) {
            this.endFloor = rand.nextInt(settings.getNofloors());
        }
        return true;
    }
}

class GlassPassenger extends Passenger {

    public GlassPassenger() {
        super();
    }

    @Override
    public boolean requestElevator(SimulatorSettings settings) {
        Random rand = new Random();
        this.startFloor = rand.nextInt(settings.getNofloors());
        this.endFloor = rand.nextInt(settings.getNofloors());
        while (this.startFloor == this.endFloor) {
            this.endFloor = rand.nextInt(settings.getNofloors());
        }
        return true;
    }
}

 

Sample Input File Should look like this:
# Building parameters
floors-30
# Passengers to add to floors
add_passenger
add_passenger
1 6 25 Standard 30
2 2 28 VIP 10
add_passenger 37 15 Freight 20
add_passenger 4 4 20 Glass 15
# Elevator types |
elevator_type StandardElevator 10 40
elevator_type ExpressElevator 8 25
elevator_type FreightElevator 5 20
elevator_type GlassElevator 6 15
# Percentage of passenger requests for each elevator type
request_percentage StandardElevator 70
request_percentage Express Elevator 20
request_percentage FreightElevator 5
request_percentage GlassElevator 5
# Percentage of passenger requests for each passenger type
Standard 70
VIP 10
Freight 15
Glass 5
passenger_request_percentage
passenger_request_percentage
passenger_request_percentage
passenger_request_percentage
# Number of elevators in the system
number_of_elevators 8
# Run simulation for 60 iterations
run_simulation 60
Transcribed Image Text:Sample Input File Should look like this: # Building parameters floors-30 # Passengers to add to floors add_passenger add_passenger 1 6 25 Standard 30 2 2 28 VIP 10 add_passenger 37 15 Freight 20 add_passenger 4 4 20 Glass 15 # Elevator types | elevator_type StandardElevator 10 40 elevator_type ExpressElevator 8 25 elevator_type FreightElevator 5 20 elevator_type GlassElevator 6 15 # Percentage of passenger requests for each elevator type request_percentage StandardElevator 70 request_percentage Express Elevator 20 request_percentage FreightElevator 5 request_percentage GlassElevator 5 # Percentage of passenger requests for each passenger type Standard 70 VIP 10 Freight 15 Glass 5 passenger_request_percentage passenger_request_percentage passenger_request_percentage passenger_request_percentage # Number of elevators in the system number_of_elevators 8 # Run simulation for 60 iterations run_simulation 60
Expert Solution
steps

Step by step

Solved in 4 steps with 6 images

Blurred answer
Knowledge Booster
Developing computer interface
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Programming Logic & Design Comprehensive
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
Np Ms Office 365/Excel 2016 I Ntermed
Np Ms Office 365/Excel 2016 I Ntermed
Computer Science
ISBN:
9781337508841
Author:
Carey
Publisher:
Cengage
Programming with Microsoft Visual Basic 2017
Programming with Microsoft Visual Basic 2017
Computer Science
ISBN:
9781337102124
Author:
Diane Zak
Publisher:
Cengage Learning
Microsoft Visual C#
Microsoft Visual C#
Computer Science
ISBN:
9781337102100
Author:
Joyce, Farrell.
Publisher:
Cengage Learning,