Advertisement
Guest User

theatre

a guest
Jan 23rd, 2020
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.28 KB | None | 0 0
  1. package gd2.theatreapp;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import java.util.HashSet;
  6. import java.util.LinkedHashSet;
  7. import java.util.LinkedList;
  8. import java.util.List;
  9.  
  10. public class Theatre {
  11.     private final String threatreName;
  12.     private final int numRows;
  13.     private final int seatsPerRow;
  14.     public List<Seat> seats = new ArrayList<Seat>();
  15.  
  16.     public Theatre(String threatreName, int numRows, int seatsPerRow)
  17.     {
  18.         this.numRows = numRows;
  19.         this.seatsPerRow = seatsPerRow;
  20.         this.threatreName = threatreName;
  21.         int lastRow = 'A' + (numRows-1);
  22.         for(char row = 'A'; row <= lastRow; ++row)
  23.         {
  24.             for(int seatNum = 1; seatNum <= seatsPerRow; ++seatNum)
  25.             {
  26.                 Seat seat = new Seat(row + String.format("%02d", seatNum));
  27.                 seats.add(seat);
  28.             }
  29.         }
  30.     }
  31.  
  32.     public String getThreatreName() {
  33.         return threatreName;
  34.     }
  35.  
  36.     //Write a method called reserveSeat that takes in a seatNumber and tries to reserve it
  37.     //This may fail for at least two reasons - seat could already be reserved, or doesn't exist
  38.     //The seat class has a method called reserve
  39.  
  40.     //goes through each one individually
  41.     public boolean reserveSeat(String seatNumber)
  42.     {
  43.        
  44.         System.out.println("Complex version");
  45.         Seat requestedSeat = null;
  46.         for(Seat seat : seats)
  47.         {
  48.             System.out.println(".");
  49.             if(seat.getSeatNumber().equals(seatNumber))
  50.             {
  51.                 requestedSeat = seat;
  52.                 break;
  53.             }
  54.         }
  55.         if(requestedSeat == null)
  56.         {
  57.             System.out.println("There is no seat " + seatNumber);
  58.             return false;
  59.         }
  60.         return requestedSeat.reserve();
  61.     }
  62.    
  63.     //goes through log_2(seat num)
  64.     public boolean reserveSeatBS(String seatNumber)
  65.     {
  66.         int low = 0;
  67.         int high = seats.size()-1;
  68.          
  69.         while(low<=high)
  70.         {
  71.             System.out.println(".");
  72.             int mid = (low + high)/2;
  73.             Seat midSeat = seats.get(mid);
  74.             int cmp = midSeat.getSeatNumber().compareTo(seatNumber);
  75.            
  76.             if(cmp < 0)
  77.             {
  78.                 low = mid+1;
  79.             }
  80.             else if(cmp > 0)
  81.             {
  82.                 high = mid-1;
  83.             }
  84.             else
  85.             {
  86.                 return seats.get(mid).reserve();
  87.             }
  88.         }
  89.         System.out.println("There is no seat " + seatNumber);
  90.         return false;
  91.     }
  92.  
  93.     //print the seats, for testing
  94.     public void printSeats()
  95.     {
  96.         for(int i=0; i < seats.size(); i++)
  97.         {
  98.             if(i % seatsPerRow == 0 && i != 0)
  99.             {
  100.                 System.out.println();
  101.             }
  102.             System.out.print(seats.get(i).getSeatNumber() + " ");
  103.         }
  104.         System.out.println("\n================================================");
  105.  
  106.     }
  107.  
  108.     public class Seat implements Comparable<Seat>
  109.     {
  110.         private final String seatNumber;
  111.         private boolean reserved = false;
  112.  
  113.         public Seat(String seatNumber)
  114.         {
  115.             this.seatNumber = seatNumber;
  116.         }
  117.  
  118.         public boolean reserve()
  119.         {
  120.             if(reserved == true)
  121.             {
  122.                 System.out.println("Sorry, " + seatNumber + " is not available");
  123.                 return false;
  124.             }
  125.             else
  126.             {
  127.                 this.reserved = true;
  128.                 System.out.println("Seat " + seatNumber + " reserved");
  129.                 return true;
  130.             }
  131.         }
  132.  
  133.         public boolean cancel()
  134.         {
  135.             if(this.reserved == false)
  136.             {
  137.                 return false;
  138.             }
  139.             else
  140.             {
  141.                 this.reserved = false;
  142.                 System.out.println("Reservation of seat " + seatNumber + " cancelled");
  143.                 return true;
  144.             }
  145.         }
  146.  
  147.         public String getSeatNumber() {
  148.             return seatNumber;
  149.         }
  150.        
  151.  
  152.         @Override
  153.         public int compareTo(Seat seat) {
  154.             return this.seatNumber.compareToIgnoreCase(seat.getSeatNumber());
  155.         }
  156.     }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement