Sunday 28 July 2013

Small Project on Bus Reservation 

Implement a bus reservation system asume bus' seats are as follows
HHHHHH
HHHHHH
HHHHHH
. . . . . . . .
you can assume 10 rows in bus.

Now if user enters 4 as required seat no then the prefrence order would be
4
3,1
2,2
2,1,1
1,1,1,1
and the function should return the seat number.

1. Bus.java


package com.cobra.entity;

import java.util.ArrayList;
import java.util.List;

public class Bus {

private List<Row> rowList = new ArrayList<Row>();
private static int seatAvailable;

public Bus() {
// TODO Auto-generated constructor stub
}

public List<Row> getRowList() {
return rowList;
}

public void setRowList(List<Row> rowList) {
this.rowList = rowList;
}

public int getSeatAvailable() {
return seatAvailable;
}

public void setSeatAvailable(int seatAvailable) {
Bus.seatAvailable = seatAvailable;
}

}

2. Row.java


package com.cobra.entity;
import java.util.ArrayList;
import java.util.List;
public class Row {
private List<Seat> seatList = new ArrayList<Seat>();
private int seatsAvailable;
public Row() {
this.seatsAvailable = 5;
}
public List<Seat> getSeatList() {
return seatList;
}
public void setSeatList(List<Seat> seatList) {
this.seatList = seatList;
}
public int getSeatsAvailable() {
return seatsAvailable;
}
public void setSeatsAvailable(int seatsAvailable) {
this.seatsAvailable = seatsAvailable;
}
}
3. Seat.java

package com.cobra.entity;
public class Seat {
private int seatNo;
private boolean isAvailable;
public Seat() {
// TODO Auto-generated constructor stub
}
public Seat(int seatNo) {
this.seatNo = seatNo;
this.isAvailable = true;
}
public int getSeatNo() {
return seatNo;
}
public void setSeatNo(int seatNo) {
this.seatNo = seatNo;
}
public boolean isAvailable() {
return isAvailable;
}
public void setAvailable(boolean isAvailable) {
this.isAvailable = isAvailable;
}
}
4. BusControl.java


package com.cobra.program;
import com.cobra.entity.Bus;
import com.cobra.entity.Row;
import com.cobra.entity.Seat;
public class BusControl {
public static Bus populate()
{
Bus bus = new Bus();
/*
*  create new row
*  add seats to that new row
*/
Row row = null;
for(int i=0 ;i <=9 ;i++)
{
row = new Row();
row.getSeatList().add(new Seat((1)+((i)*5)));
row.getSeatList().add(new Seat((2)+((i)*5)));
row.getSeatList().add(new Seat((3)+((i)*5)));
row.getSeatList().add(new Seat((4)+((i)*5)));
row.getSeatList().add(new Seat((5)+((i)*5)));
bus.getRowList().add(row);
bus.setSeatAvailable(bus.getSeatAvailable()+5);
}
return bus;
}
public static void allocate(Bus bus,int seatsRequired)
{
//if required seat is <= 0 return
if(seatsRequired <= 0)
return;
for(Row row:bus.getRowList())
{
//if the row has more seats than required seats then allocate
if(row.getSeatsAvailable()>=seatsRequired)
{
for(Seat seat:row.getSeatList())
{
if(seat.isAvailable()==true && seatsRequired >0)
{
System.out.print(seat.getSeatNo()+" ");
seat.setAvailable(false);
bus.setSeatAvailable(bus.getSeatAvailable()-1);
row.setSeatsAvailable(row.getSeatsAvailable()-1);
seatsRequired--;
}
if(seatsRequired==0)
return;
}
if(seatsRequired==0)
return;
}
}
//recursion process
allocate(bus,seatsRequired-1);
allocate(bus,1);
}
}
5. MainApp.java
package com.cobra.program;
import com.cobra.entity.Bus;
public class MainApp {
public static void main(String[] args) {
// populate bus seat numbers
Bus bus = BusControl.populate();
// First Allocating Three Seats
int seatRequired = 3;
// check for availability of seat in the bus;
if (bus.getSeatAvailable() < seatRequired) {
System.out.println("Seats are not Available");
} else {
BusControl.allocate(bus, seatRequired);
}
                System.out.println("");
// Second Allocation Four Seats
seatRequired = 4;
// check for availability of seat in the bus;
if (bus.getSeatAvailable() < seatRequired) {
System.out.println("Seats are not Available");
} else {
BusControl.allocate(bus, seatRequired);
}
                   System.out.println("");
// Third Allocating Two Seats
seatRequired = 2;
// check for availability of seat in the bus;
if (bus.getSeatAvailable() < seatRequired) {
System.out.println("Seats are not Available");
} else {
BusControl.allocate(bus, seatRequired);
}
}
}
Output:  1 2 3 
               6 7 8 9
               4 5

No comments:

Post a Comment