Office Hours Queue

Problem Description

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.

Example application Example pop-up

One possible design of the application

Solution Description

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.

Extra Credit

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.

Rubric

This homework has 90 points of extra credit for a total of 190 points.

[100] OfficeHourQueue

[90] LinkedQueue

Checkstyle

For 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.

Submission

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!!!