SMART PARK SYSTEM

Benchmark created on


Description

Measure the time and space complexity of the car park computerized system.

Preparation HTML

 <main>
        <div id="header">
            <h1><i>SMART PARK SYSTEM</i></h1>
        </div>
        <aside>
            <!-- The lgo section -->
             <img src="images/logo.png" alt="logo" class="logo">
            <h2><i>PARKING MANAGER</i></h2><br>
            <ul>
                <li>Available slots: 50</li><br>
                <li>Used slots: <p id='parkedIn'></p></li>
                <li>Remaining slots: <p id="remainingSlots"></p> </li>
                <li><button type="button" onclick="park()" id="buttoner"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-circle" viewBox="0 0 16 16">
  <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
  <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/>
</svg>&nbsp;Add car</button></li><br>
            </ul>
            <div id="form">
                <input type="text" id="plateNo" placeholder="RAI 000 C">
                <button type="button" id="confirm">Confirm</button>
            </div>
        </aside>
        <!-- The main section where parked cars and remaining slots will be shown -->
         <div id="main">
            
         </div>
         <div id="payPrompt">
            <p><center>Car with plate no:&nbsp; <i id='plater'></i> <br><br>Is charged:&nbsp; <i id='charger'></i><br><br><button onclick="remover()">Paid</button><button onclick="window.alert('Money must be payed before exit please!');document.getElementById('payPrompt').style.display='none';">Not yet paid</button></center></p>
         </div>
    </main>

Test runner

Ready to run.

Testing in
TestOps/sec
SMART PARK SYSTEM
  //array to store plateNo of all parked cars
        var parkedcars = [];
        var current;
        //array to store entering time of each car
        var timers = [];
        var cars =  localStorage.getItem("cars");
        parkedcars = [];
        //avairable slots
        var parkedIn = parkedcars.length;
        var remainingSlots = 50-parkedIn;
        //time stamp when var enter parking
        var time = 0;
        var charge;
        //main section logic
        (()=>{
            document.getElementById('parkedIn').innerText = parkedIn;
            document.getElementById('remainingSlots').innerText = remainingSlots;
            if(parkedcars.length == 0){
                document.getElementById('main').innerHTML = `<center style='width:100%;position:relative;left:50%;top:10rem;'><i>No car parked yet! <br> <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" fill="currentColor" class="bi bi-cloud-haze2" viewBox="0 0 16 16">
    <path d="M8.5 3a4 4 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 12H4.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 3M0 7.5A.5.5 0 0 1 .5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-2 4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/>
    </svg></i></center`;
            }
            else{
                parked();
            }
        })();

        
        //The logic of managing the main section
        function parked(){
    var main = document.getElementById('main');
    main.innerHTML = '';
    main.style.justifyContent = 'baseline';
    var i = 0;
    parkedcars.forEach(car =>{
    var sloter = document.createElement('div');
    sloter.className = 'slot';
    sloter.innerHTML = `
    <img src="images/parked.png">
    <br>${parkedcars[i]}<br><button onclick='exit(${i})'>Exit</button>`;
    // now the next task is to apend our slot into the main sction
    main.appendChild(sloter);
    i++;
    })
};
//function to park new car

function park(){
document.getElementById('buttoner').style.display = 'none';
document.getElementById('form').style.display = 'block';
document.getElementById('confirm').addEventListener('click',()=>{
    // alert("Clicked yet");
    var plateNo = document.getElementById('plateNo').value;
    //first check if there is remanining slots
    if(remainingSlots > 0){
        var statusb;
        var a = 0;
        //traverse in parked cars list and chek if car already exist in order to duplication
        parkedcars.forEach(car=>{
            if(car == plateNo){
                statusb = 'found';
            }
        })
        //if car is not already found in the parked cars array we can add it.
        if(statusb != 'found'){
        //timer object
        var timerOb = new Object();
        timerOb.plate = parkedcars.length;
        timerOb.time = Date.now();
        parkedcars.push(plateNo);
        timers.push(timerOb);
        //save the curerent time
        time = Date.now();
        remainingSlots =50-parkedcars.length;
        localStorage.setItem("cars",parkedcars);
        document.getElementById('parkedIn').innerText = parkedcars.length;
        document.getElementById('remainingSlots').innerHTML = remainingSlots;
        parked();
        }
        else{
            alert("Car already found in parking");
        }
    }
            //hide input box and bring back add car button
        // document.getElementById('form').style.display ='none';
        // document.getElementById('buttoner').style.display = 'block';
})
}
function exit(index){
    //varibale tohold time
var carTime;
    //search for time
    timers.forEach(timer=>{
        if(parkedcars[timer.plate] == parkedcars[index]){
            carTime = timer.time;
        }
    })
    // check the amount of time car lasts in parking
    const hour = 3600000;
    var NowTime = Date.now();
    var normal = carTime + hour;
    //decide according to the amount of tiime elapsed
    if(NowTime <= normal){
        //wecharge him or her just 500 frw
        charge = 500;
    }
    else{
        var elapsed = NowTime - carTime;
        var elapsedHours = elapsed/hour;
        //if elapsed one hour and minutes we add 300 at payment bill
        if(elapsedHours > 1 && elapsedHours < 2){
            charge = 800;
        }
        else{
            var extra = elapsedHours - 1;
            //add 300 for each extra hour 
            var preCharge = extra * 300;
            //ignore floats
            charge = parseInt(preCharge);
        }
        

    }
    document.getElementById('payPrompt').style.display='block';
        document.getElementById('plater').innerText = parkedcars[index];
        document.getElementById('charger').innerText = charge + 'frw';

   current = index; 
}
function remover(){
    //creal the exited car from our array
    document.getElementById('payPrompt').style.display = 'none';
    parkedcars.splice(current,1);
    parked();
}
ready
SMART PARK SYSTEM
  //array to store plateNo of all parked cars
        var parkedcars = [];
        var current;
        //array to store entering time of each car
        var timers = [];
        var cars =  localStorage.getItem("cars");
        parkedcars = [];
        //avairable slots
        var parkedIn = parkedcars.length;
        var remainingSlots = 50-parkedIn;
        //time stamp when var enter parking
        var time = 0;
        var charge;
        //main section logic
        (()=>{
            document.getElementById('parkedIn').innerText = parkedIn;
            document.getElementById('remainingSlots').innerText = remainingSlots;
            if(parkedcars.length == 0){
                document.getElementById('main').innerHTML = `<center style='width:100%;position:relative;left:50%;top:10rem;'><i>No car parked yet! <br> <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" fill="currentColor" class="bi bi-cloud-haze2" viewBox="0 0 16 16">
    <path d="M8.5 3a4 4 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 12H4.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 3M0 7.5A.5.5 0 0 1 .5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-2 4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/>
    </svg></i></center`;
            }
            else{
                parked();
            }
        })();

        
        //The logic of managing the main section
        function parked(){
    var main = document.getElementById('main');
    main.innerHTML = '';
    main.style.justifyContent = 'baseline';
    var i = 0;
    parkedcars.forEach(car =>{
    var sloter = document.createElement('div');
    sloter.className = 'slot';
    sloter.innerHTML = `
    <img src="images/parked.png">
    <br>${parkedcars[i]}<br><button onclick='exit(${i})'>Exit</button>`;
    // now the next task is to apend our slot into the main sction
    main.appendChild(sloter);
    i++;
    })
};
//function to park new car

function park(){
document.getElementById('buttoner').style.display = 'none';
document.getElementById('form').style.display = 'block';
document.getElementById('confirm').addEventListener('click',()=>{
    // alert("Clicked yet");
    var plateNo = document.getElementById('plateNo').value;
    //first check if there is remanining slots
    if(remainingSlots > 0){
        var statusb;
        var a = 0;
        //traverse in parked cars list and chek if car already exist in order to duplication
        parkedcars.forEach(car=>{
            if(car == plateNo){
                statusb = 'found';
            }
        })
        //if car is not already found in the parked cars array we can add it.
        if(statusb != 'found'){
        //timer object
        var timerOb = new Object();
        timerOb.plate = parkedcars.length;
        timerOb.time = Date.now();
        parkedcars.push(plateNo);
        timers.push(timerOb);
        //save the curerent time
        time = Date.now();
        remainingSlots =50-parkedcars.length;
        localStorage.setItem("cars",parkedcars);
        document.getElementById('parkedIn').innerText = parkedcars.length;
        document.getElementById('remainingSlots').innerHTML = remainingSlots;
        parked();
        }
        else{
            alert("Car already found in parking");
        }
    }
            //hide input box and bring back add car button
        // document.getElementById('form').style.display ='none';
        // document.getElementById('buttoner').style.display = 'block';
})
}
function exit(index){
    //varibale tohold time
var carTime;
    //search for time
    timers.forEach(timer=>{
        if(parkedcars[timer.plate] == parkedcars[index]){
            carTime = timer.time;
        }
    })
    // check the amount of time car lasts in parking
    const hour = 3600000;
    var NowTime = Date.now();
    var normal = carTime + hour;
    //decide according to the amount of tiime elapsed
    if(NowTime <= normal){
        //wecharge him or her just 500 frw
        charge = 500;
    }
    else{
        var elapsed = NowTime - carTime;
        var elapsedHours = elapsed/hour;
        //if elapsed one hour and minutes we add 300 at payment bill
        if(elapsedHours > 1 && elapsedHours < 2){
            charge = 800;
        }
        else{
            var extra = elapsedHours - 1;
            //add 300 for each extra hour 
            var preCharge = extra * 300;
            //ignore floats
            charge = parseInt(preCharge);
        }
        

    }
    document.getElementById('payPrompt').style.display='block';
        document.getElementById('plater').innerText = parkedcars[index];
        document.getElementById('charger').innerText = charge + 'frw';

   current = index; 
}
function remover(){
    //creal the exited car from our array
    document.getElementById('payPrompt').style.display = 'none';
    parkedcars.splice(current,1);
    parked();
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.