Design a valet parking system.

来源:互联网 发布:淘宝农产品生产许可证 编辑:程序博客网 时间:2024/06/15 21:55
Design a valet parking system. Requirements of the valet parking system should be: 
1. Customer are given a ticket that they can use to redeem to get their vehicle back 
2. Parking spots come in three sizes, small, med, large 
3. Thee types of vehicles, small, med, large 
-a small vehicle can park in a small, medium, and large spot 
-a medium vehicle can park in a medium and large spot 

-a large vehicle can park in a large spot


public class Car {public String plateNum;public carSize size;public Car(String num, carSize size){plateNum = num;this.size = size;}}public enum carSize {small, medium, large;}public class Spot {public carSize spotSize;private Car parkedCar = null;public Car getParkedCar(){return parkedCar;}public Spot(carSize size){spotSize = size;}public void park(Car car){if(parkedCar==null)parkedCar = car;}public Car unpark(){Car result = parkedCar;parkedCar = null;return result;}}public class Ticket {public String ticketID;public String plateNum;public Ticket(String id, String num){ticketID = id;plateNum = num;}}import java.util.Hashtable;import java.util.ArrayList;public class Garage {private Hashtable<Ticket,Spot> table = new Hashtable<Ticket,Spot>();private ArrayList<Spot> smallSpots = new ArrayList<Spot>();private ArrayList<Spot> mediumSpots = new ArrayList<Spot>();private ArrayList<Spot> largeSpots = new ArrayList<Spot>();private int numFreeSmall;private int numFreeMedium;private int numFreeLarge;public Garage(int smallTot, int mediumTot, int largeTot){numFreeSmall = smallTot;numFreeMedium = mediumTot;numFreeLarge = largeTot;createSpots(smallTot,carSize.small);createSpots(mediumTot,carSize.medium);createSpots(largeTot,carSize.large);}private void createSpots (int Tot, carSize size){ArrayList<Spot> list;switch (size){case small:list = smallSpots;break;case medium:list = mediumSpots;break;case large:list = largeSpots;break;default:return;}for(int i=1;i<=Tot;i++){list.add(new Spot(size));}}private Spot findSpot(carSize size){ArrayList<Spot> list = new ArrayList<Spot>();switch (size){case small:if(numFreeSmall>0){list.addAll(smallSpots);}else if (numFreeMedium>0){list.addAll(mediumSpots);}else{list.addAll(largeSpots);}break;case medium:if(numFreeMedium>0)list.addAll(mediumSpots);elselist.addAll(largeSpots);break;case large:list.addAll(largeSpots);}for(Spot s: list){if(s.getParkedCar()==null)return s;}return null;}public Ticket park(Car car){if(car==null) return null;Spot spot = findSpot(car.size);if(spot!=null){Ticket ticket = new Ticket("I'm unique", car.plateNum);table.put(ticket, spot);switch (spot.spotSize){case small:numFreeSmall--;break;case medium:numFreeMedium--;break;case large:numFreeLarge--;break;}return ticket;}else return null;}public Car unpark(Ticket ticket){if(ticket!=null && table.contains(ticket)){Spot s = table.get(ticket);Car c = s.unpark();switch (s.spotSize){case small:numFreeSmall++;break;case medium:numFreeMedium++;break;case large:numFreeLarge++;break;}return c;}return null;}}


0 0
原创粉丝点击