feat: update ServiceCounter and ShopSimulation

This commit is contained in:
Yadunand Prem 2022-09-08 10:54:42 +08:00 committed by Yadunand Prem
parent 6f4af3ba97
commit 46f0ad140f
3 changed files with 20 additions and 11 deletions

View File

@ -5,11 +5,12 @@
* @author Yadunand Prem
* @version CS2030S AY22/23 Semester 2
*/
public class ServiceCounter {
public class ServiceCounter implements Comparable<ServiceCounter> {
private static int lastId;
private final int id;
private boolean available;
private Queue<Customer> queue;
public boolean isAvailable() {
return available;
@ -23,9 +24,10 @@ public class ServiceCounter {
this.available = true;
}
public ServiceCounter() {
public ServiceCounter(int queueSize) {
this.id = lastId++;
this.available = true;
this.queue = new Queue<Customer>(queueSize);
}
@Override
@ -33,4 +35,14 @@ public class ServiceCounter {
return "S" + id;
}
@Override
public int compareTo(ServiceCounter o) {
if (this.queue.length() < o.queue.length()) {
return -1;
}
if (this.id < o.id) {
return -1;
}
return 1;
}
}

View File

@ -9,13 +9,13 @@ public class Shop {
private ServiceCounter[] counters;
private Queue queue;
public Shop(int numOfCounters, int queueSize) {
public Shop(int numOfCounters, int shopQueueSize, int counterQueueSize) {
this.counters = new ServiceCounter[numOfCounters];
for (int i = 0; i < numOfCounters; i++) {
this.counters[i] = new ServiceCounter();
this.counters[i] = new ServiceCounter(counterQueueSize);
}
this.queue = new Queue(queueSize);
this.queue = new Queue(shopQueueSize);
}
/**
@ -34,10 +34,6 @@ public class Shop {
return null;
}
public Queue getQueue() {
return this.queue;
}
public boolean isQueueFull() {
return this.queue.isFull();
}

View File

@ -26,9 +26,10 @@ class ShopSimulation extends Simulation {
public ShopSimulation(Scanner sc) {
initEvents = new Event[sc.nextInt()];
int numOfCounters = sc.nextInt();
int maxQueueSize = sc.nextInt();
int maxCounterQueueSize = sc.nextInt();
int maxShopQueueSize = sc.nextInt();
Shop shop = new Shop(numOfCounters, maxQueueSize);
Shop shop = new Shop(numOfCounters, maxShopQueueSize, maxCounterQueueSize);
int id = 0;
while (sc.hasNextDouble()) {