Fa19 Bse 001 Dsa Assign3

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

Name: Muhammad Hamza Aziz

Reg. No: FA19-BSE-001

Data Structures And Algorithms

Assignment 3

Air Traffic Control System


//Author: Muhammad Hamza Aziz
//RegNo: FA19-BSE-001
import java.util.Scanner;
public class AirportTrafficControl {
public static void main(String [] args) {
int fuel =0;
String flightId;
ArrivingFlight arrFlight=new ArrivingFlight();
DepartingFlight depFlight= new DepartingFlight();
int passengers=0;
int opt=-1;
Scanner input=new Scanner(System.in);
while(opt!=0)
{
System.out.printf("\n\n\t\t 1: Enter arriving flight info:");
System.out.printf("\n\n\t\t 2: Enter departing flight info:");
System.out.printf("\n\n\t\t 3: Request to depart the flight:");
System.out.printf("\n\n\t\t 4: Request to land the flight:");
System.out.printf("\n\n\t\t 5: Request to land flight because of
emergency:");
System.out.printf("\n\n\t\t 6: Display");
System.out.printf("\n\n\t\t 0: press 0 to exit: ");
System.out.printf("\n\n\t\t enter your choice: ");
opt=input.nextInt();
switch(opt) {
case 1:
System.out.printf("\n\n\t\t enter flight id: ");
flightId=input.next();
System.out.printf("\n\n\t\t enter fuel: ");
fuel=input.nextInt();
if(fuel<=0) {
System.out.printf("\nfuel can not be 0\n");
break;
}
System.out.printf("\n\n\t\t enter passengers: ");
passengers=input.nextInt();
if(passengers<=0) {
System.out.printf("\npassengers can not be 0\n");
break;
}
Flight flight=new Flight(flightId,fuel,passengers);
if(!arrFlight.isFull())
arrFlight.Enqueue(flight);
else
System.out.println("flight can not be enetered because
runway is full");
break;
case 2:
System.out.printf("\n\n\t\t enter flight id :");
flightId=input.next();
System.out.printf("\n\n\t\t enter fuel :");
fuel=input.nextInt();
if(fuel<=0) {
System.out.printf("\nfuel can not be 0\n");
break;
}
System.out.printf("\n\n\t\t enter passengers: ");
passengers=input.nextInt();
if(passengers<=0) {
System.out.printf("\npassengers can not be 0\n");
break;
}
Flight flight1=new Flight(flightId,fuel,passengers);
if(!depFlight.isFull())
depFlight.Enqueue(flight1);
else
System.out.println("flight can not be enetered because
runway is full");
break;
case 3:
depFlight.Dequeue();
break;
case 4:
arrFlight.Dequeue();
break;
case 5:
System.out.printf("\n\n\t\t Enter flight id:");
flightId=input.next();
if(arrFlight.Emergency(flightId)){
System.out.println("flight landed successfully");
}
else
System.out.println("Error! Enter correct flight id");
break;
case 6:
System.out.printf("\n\t\tFlight Id of arrival flight waiting :");
arrFlight.Display();
System.out.printf("\n\t\tFlight Id of departing flight waiting :");
depFlight.Display();
break;
case 0:
break;

}
}
}
}

class Flight {
public String flightid;
public int fuel;
public int passengers;
public Flight(String flightid,int fuel,int passengers) {
this.fuel=fuel;
this.flightid=flightid;
this.passengers=passengers;
}
public void setFlightID(String flightid) {
this.flightid=flightid;
}
public void setpassengers(int passengers) {
this.passengers=passengers;
}
public int getpassengers() {
return passengers;
}
public String getFlightid() {
return flightid;
}
public void setFuel(int fuel) {
this.fuel=fuel;
}
public int getFuel() {
return fuel;
}
}
class ArrivingFlight{
private final int SIZE= 10;
private Flight [] LQ=new Flight[SIZE];
private Flight [] LQ1=new Flight[SIZE];
private Flight [] newArry=new Flight[SIZE];
private int LQcounter;
private int LQcounter1;
int newArryCounter;
private int temp;
private int a;
public ArrivingFlight() {
LQcounter=0;
newArryCounter=0;
LQcounter1=0;
temp=0;
a=0;
}
public boolean Enqueue(Flight f)
{
if(LQcounter>LQcounter1) {
LQ1[LQcounter1++]=f;
return true;
}
if(LQcounter==LQcounter1) {
LQ[LQcounter++]=f;
return true;
}

if(LQcounter<LQcounter1) {
LQ[LQcounter++]=f;
return true;
}
return false;
}
public boolean Dequeue() {
int front=0;
Flight objectt;
Flight object2;
objectt=LQ[front];
object2=LQ1[front];
for(int i=0;i<LQcounter;i++) {
LQ[i]=LQ[i+1];
}
for(int i=0;i<LQcounter1;i++) {
LQ1[i]=LQ1[i+1];
}
LQcounter--;
LQcounter1--;
return true;
}
public boolean isFull()
{
if(LQcounter>=SIZE&&LQcounter1>=SIZE) {
return true;
}
return false;
}
public boolean isEmpty() {
if(LQcounter<=0&&LQcounter1<=0) {
return true;
}
return false;
}
public boolean Emergency(String id) {
int top=0;
int a=0;
String flightID=id;
Flight stack[]=new Flight[SIZE];
Flight emObj;
if(LQcheck(flightID)) {
a=LQcounter-1;
while(!LQ[a].getFlightid().equals(id)) {
stack[top++]=LQ[a--];
}
newArry[newArryCounter++]=LQ[a];
while(top>=0) {
LQ[a++]=stack[top--];
}
LQcounter--;
return true;
}
if(LQcheck1(id)) {
int b=LQcounter1-1;
while(!LQ1[b].getFlightid().equals(id)) {
stack[top++]=LQ1[b--];
}
newArry[newArryCounter++]=LQ1[b];
while(top>=0) {
LQ1[b++]=stack[top--];
}
LQcounter1--;
return true;
}
return false;
}
public boolean LQcheck(String id)
{

for(int i=0; i<=LQcounter-1;i++) {


if(LQ[i].getFlightid().equals(id)) {
return true;
}
}
return false;
}
public boolean LQcheck1(String id)
{
for(int i=0; i<=LQcounter1-1;i++) {
if(LQ1[i].getFlightid().equals(id)) {
return true;
}
}
return false;
}

public void Display() {


for(int i=0;i<LQcounter;i++) {
System.out.printf("\nflight id:%s", LQ[i].getFlightid());
}
for(int i=0;i<LQcounter1;i++) {
System.out.printf("\nflight id:%s", LQ1[i].getFlightid());
}
}

}
class DepartingFlight{
private final int SIZE= 10;
private Flight [] TO1=new Flight[SIZE];
private Flight [] TO2=new Flight[SIZE];
public int temp;
private int a;

private int TOcounter1;


private int TOcounter2;
public DepartingFlight() {
TOcounter1=0;
TOcounter2=0;
temp=0;
a=0;
}
public boolean Enqueue(Flight f) {
if(TOcounter1==TOcounter2) {
TO1[TOcounter1++]=f;
return true;
}
if(TOcounter1>TOcounter2) {
TO2[TOcounter2++]=f;
return true;
}
if(TOcounter1<TOcounter2) {
TO1[TOcounter1++]=f;
return true;
}
return false;
}
public boolean isFull() {
if(TOcounter1>=SIZE&&TOcounter2>=SIZE) {
return true;
}
return false;
}
public boolean isEmpty() {
if(TOcounter1<=0&&TOcounter2<=0) {
return true;
}
return false;
}
public boolean Dequeue() {
Flight objectt;
Flight object2;
int front=0;
objectt=TO1[front];
object2=TO2[front];
for(int i=0;i<TOcounter1;i++) {
TO1[i]=TO1[i+1];
}
for(int i=0;i<TOcounter2;i++) {
TO2[i]=TO2[i+1];
}
TOcounter1--;
TOcounter2--;
return true;
}
public void Display() {
for(int i=0;i<TOcounter1;i++) {
System.out.printf("\nflight id:%s", TO1[i].getFlightid());
}
for(int i=0;i<TOcounter2;i++) {
System.out.printf("\nflight id:%s", TO2[i].getFlightid());
}
}
}

You might also like