|
|
@@ -0,0 +1,61 @@ |
|
|
|
class Book |
|
|
|
{ |
|
|
|
private int id; |
|
|
|
//( AVAILABLE || RENTED || RESERVED || NOT AVAILABLE) |
|
|
|
private String status; |
|
|
|
private int[] dueDate = new int[3]; |
|
|
|
|
|
|
|
public Book(int id, String status) |
|
|
|
{ |
|
|
|
this.id = id; |
|
|
|
this.status = status; |
|
|
|
} |
|
|
|
|
|
|
|
public String getStatus() |
|
|
|
{ |
|
|
|
return status; |
|
|
|
} |
|
|
|
|
|
|
|
public boolean rent(int[] dueDate) |
|
|
|
{ |
|
|
|
if(status != "AVAILABLE") |
|
|
|
{ |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
this.dueDate = dueDate; |
|
|
|
status = "RENTED"; |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
public void returned() |
|
|
|
{ |
|
|
|
status = "AVAILABLE"; |
|
|
|
} |
|
|
|
|
|
|
|
public double overdueFine(int[] currentDay) |
|
|
|
{ |
|
|
|
double fine; |
|
|
|
if(currentDay[0] > dueDate[0] || currentDay[1] > (dueDate[1] + 1)) |
|
|
|
{ |
|
|
|
return 5; |
|
|
|
} |
|
|
|
else if(currentDay[1] > dueDate[1]) |
|
|
|
{ |
|
|
|
fine = (double)(currentDay[2] + 30 - dueDate[2]) * 0.25; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
fine = (double)(currentDay[2] - dueDate[2]) * 0.25; |
|
|
|
} |
|
|
|
|
|
|
|
if(fine > 5) |
|
|
|
{ |
|
|
|
return 5; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
return fine; |
|
|
|
} |
|
|
|
} |
|
|
|
} |