You’re an innovative TA for CS 1321. You’ve noticed your whiteboard queue system often gets crowded and complicated on busy days. You decide that, since you learned JavaFX when you took the course, you will implement an office hours queue in JavaFX.
One possible design of the application
For this homework, your main task is to build a JavaFX application, called
OfficeHourQueue
(this is the name of the class), which meets the following
functional requirements:
It is entirely possible to complete this assignment using a simple LinkedList
and updating a series of basic nodes within a VBox
, however you may want to
consider using the javafx ListView
class and some of the methods within
FXCollections
. We will be grading based on the functionality of your GUI, so
how you decide to implement it is up to you.
Note: For OfficeHourQueue
, you are allowed to import anything that
doesn’t trivialize the assignment. For example, you may use
java.util.LinkedList
or
javafx.collections.FXCollections.observableArrayList()
as a collection for
storing students currently in the queue, or any any JavaFX classes you need.
You shouldn’t import some GUIQueueWithPasswordSupport
class that does the
entire assignment for you. If you aren’t sure about a specific import, ask on
Piazza.
For extra credit, you have the option to implement your own queue instead of
using LinkedList
or the FXCollections ObservableArrayList
for keeping
track of the students in office hours. Your queue should be a linked
list contained in a generic class called LinkedQueue<E>
, which must
extend
ModifiableObservableListBase
and implement the following two interfaces: Iterable
and SimpleQueue.java.
The LinkedQueueNode.java class has been provided to
help with your implementation.
You must use an instance of LinkedQueue
for keeping track of students within
OfficeHoursQueue
to receive extra credit. Thoroughly test your GUI to
ensure everything functions appropriately.
Note: For LinkedQueue
, you are allowed to import java.util.Iterator
,
java.util.NoSuchElementException
, and
javafx.collections.ModifiableObservableListBase
. Do not import any lists,
sets, or collections from java.util. If you want to use any other imports,
ask on Piazza.
This homework has 90 points of extra credit for a total of 190 points.
[100] OfficeHourQueue
[90] LinkedQueue
enqueue
adds an element to the queuedoAdd
IndexOutOfBoundsException
if the index is invaliddequeue
doRemove
IndexOutOfBoundsException
if the index is invalidget
IndexOutOfBoundsException
if the index is invaliddoSet
throws an UnsupportedOperationException
LinkedQueue
is Iterable<E>
Iterable<E>
and has compiling iterator()
methodhasNext()
method properly implemented in Iteratornext()
method properly implemented in Iteratorsize()
method returns size of queueclear()
method empties queue and sets size to 0isEmpty()
method returns true when queue is empty, false otherwiseFor each of your homework assignments we will run checkstyle and deduct one point for every checkstyle error.
There is no checkstyle cap for this assignment, meaning that the amount of points lost for checkstyle errors is not limited.
java -jar checkstyle-6.2.2.jar -a *.java
.For this assignment, you will be submitting a zip file that contains any and all files needed for your submission to compile and run properly. Please be sure to compress all of your files and name the zip file following this naming convention: GTID_hw7.zip
. The zip file you submit should look like this:
gburdell3_hw7.zip
Submit all files necessary for your program to run. Do not submit .class
files; only submit .java
files. Check Piazza before submitting for important updates and clarifications.
Please make sure you have included all the necessary files for your program to compile and run. If your submission does not compile because you forgot a file, or if it cannot run because an image is missing, we won’t be able to award you any points no matter how small the error. Re-download and double check your submission in a different folder from your original project to make sure it works!
NOTE: Please be sure to remove any class files before you zip up your project!!!