Site icon DataFlair

DSA Java Project – Traffic Light Simulation

Program 1

// Project: Traffic Light Simulation Using Queue Linked List 
//----------------------------------------------------------
// Features:
// Add vehicles to queue (simulating arrival)
// Process vehicles when the signal turns green
// Show vehicles in the queue
// Count waiting vehicles
// Clear All Vehicles (Emergency Clear Signal)
//Search for a Vehicle by Number
//Display First and Last Vehicle in Queue
//Log of Passed Vehicles

import java.util.Scanner;

class Vehicle    // Node 
{
    String number;
    Vehicle next;

    Vehicle(String number) 
    {
        this.number = number;
        this.next = null;
    }
}

class TrafficQueue
 {
    private Vehicle front;
    private Vehicle rear;
    private Vehicle passedLog;

    public TrafficQueue() 
    {
        this.front = null;
        this.rear = null;
        this.passedLog = null;
    }

    public void arriveVehicle(String number) 
    {
        Vehicle temp = new Vehicle(number);
        if (rear == null) 
        {
            front = rear = temp;
        } else 
        {
            rear.next = temp;
            rear = temp;
        }
        System.out.println("\n Vehicle " + number + " arrived at the signal.");
    }

    private void logPassedVehicle(String number)
     {
        Vehicle temp = new Vehicle(number);
        if (passedLog == null) {
            passedLog = temp;
        } else 
        {
            Vehicle ptr = passedLog;
            while (ptr.next != null) 
            {
                ptr = ptr.next;
            }
            ptr.next = temp;
        }
    }

    public void passVehicle() 
    {
        if (front == null) 
        {
            System.out.println("\n No vehicles waiting at the signal.");
            return;
        }
        Vehicle temp = front;
        System.out.println("\n--> Vehicle " + temp.number + " passed the signal.");
        logPassedVehicle(temp.number);
        front = front.next;
        temp.next=null;
        temp=null;
        if (front == null)
         rear = null;
    }

    public void displayQueue() 
    {
        if (front == null) 
        {
            System.out.println("\n No vehicles in the queue.");
            return;
        }
        System.out.println("\n Vehicles at signal:");
        Vehicle temp = front;
        while (temp != null) 
        {
            System.out.println(" --> " + temp.number);
            temp = temp.next;
        }
    }

    public void countQueue() 
    {
        int count = 0;
        Vehicle temp = front;
        while (temp != null) {
            count++;
            temp = temp.next;
        }
        System.out.println("\n Total vehicles waiting: " + count);
    }

    public void clearQueue() 
    {
        while (front != null) 
        {
            front = front.next;
        }
        rear = null;
        System.out.println("\n All vehicles cleared from the signal!");
    }

    public void searchVehicle(String number)
     {
        Vehicle temp = front;
        while (temp != null) 
        {
            if (temp.number.equals(number)) 
            {
                System.out.println("\n --> Vehicle " + number + " is currently in the queue.");
                return;
            }
            temp = temp.next;
        }
        System.out.println("\n Vehicle " + number + " not found in queue.");
    }

    public void showFirstAndLast() 
    {
        if (front == null) {
            System.out.println("\n No vehicles in the queue.");
            return;
        }
        System.out.println("\n--> First Vehicle: " + front.number);
        System.out.println(" --> Last Vehicle: " + rear.number);
    }

    public void showPassedLog() 
    {
        if (passedLog == null) {
            System.out.println("\n No vehicles have passed the signal yet.");
            return;
        }
        System.out.println("\n --> Passed Vehicles Log:");
        Vehicle temp = passedLog;
        while (temp != null) 
        {
            System.out.println("   " + temp.number);
            temp = temp.next;
        }
    }
}

public class TrafficSimulation 
{

    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        TrafficQueue tq = new TrafficQueue();
        int choice;
        String number;

        do {
            System.out.println("\n========== Traffic Light Simulation ========== ");
            System.out.println("1. Vehicle Arrives");
            System.out.println("2. Signal Turns Green (Vehicle Passes)");
            System.out.println("3. Show Vehicles in Queue");
            System.out.println("4.  Count Waiting Vehicles");
            System.out.println("5. Emergency Clear All Vehicles");
            System.out.println("6. Search Vehicle by Number");
            System.out.println("7. Show First and Last Vehicle");
            System.out.println("8. Show Passed Vehicle Log");
            System.out.println("9. Exit");
            System.out.println("\n==================================== ");
            System.out.print(" Choose an option: ");
            choice = Integer.parseInt(sc.nextLine());

            switch (choice) 
            {
                case 1:
                    System.out.print(" Enter vehicle number: ");
                    number = sc.nextLine();
                    tq.arriveVehicle(number);
                    break;
                case 2:
                    tq.passVehicle();
                    break;
                case 3:
                    tq.displayQueue();
                    break;
                case 4:
                    tq.countQueue();
                    break;
                case 5:
                    tq.clearQueue();
                    break;
                case 6:
                    System.out.print(" Enter vehicle number to search: ");
                    number = sc.nextLine();
                    tq.searchVehicle(number);
                    break;
                case 7:
                    tq.showFirstAndLast();
                    break;
                case 8:
                    tq.showPassedLog();
                    break;
                case 9:
                    System.out.println("\n Exiting simulation. Goodbye!");
                    break;
                default:
                    System.out.println("\n Invalid option. Try again.");
            }
        } while (choice != 9);

        sc.close();
    }
}

 

 

Exit mobile version