Description
You will develop a GUI (graphical user interface) with JavaFX for the software system you developed in Project 2.
The GUI shall replace the TuitionManager class in Project 2, i.e., Project 3 is a GUI version of Project 2. The GUI
must provide the following functionalities.
1. Add and remove any type of students defined in Project 2.
2. Provide the interface to enter necessary data items for different student types.
3. Make one-time or multiple-time tuition payments.
4. Enter or update the financial aid amount for eligible students.
5. Change the study abroad status for an international student.
6. Calculate tuition due for a single student or for all students in the roster.
7. Print the roster on the GUI in 3 different sequences.
• all students, by the current order in the roster
• all students, by the student names
• print only the students with payments, by the last payment dates
Project Requirements
1. This is a group assignment. You MUST work in pair in order to get the credit for this project.
2. You MUST follow the software development ground rules, or you will lose points for not having a good
programming style.
3. Each Java class must go in a separate file. -2 points if you put more than one Java class into a file.
4. You MUST include all the classes from Project 2 and use them in this project, EXCEPT the TuitionManager
class and RunProject2 class. -2 points for each class not used. Note that, if you lose points on Project 2, you must
fix the issues, or you will lose points again for the same cause! For the classes imported from Project 2, you
cannot use any Java library classes EXCEPT DecimalFormat and Calendar class, or you will lose 5 points. If
you use ArrayList class in those classes, you will lose 10 points.
2 | Page
5. Project 3 uses the Model-View-Controller (MVC) design pattern. You must use only ONE JavaFX fxml file for
the “view”, ONE Controller class for the “control”, and ALL the classes from Project 2 for the “model”. In
addition, there will be ONE Java file contains the main() method to “launch” the GUI version of the tuition
management system. You will get 0 points if you don’t follow the MVC structure.
6. You can design your own GUI, however, your GUI must include the following JavaFX components.
(a) Use at least 4 different Layout Panes, such as BorderPane, GridPane, VBox, Hbox, etc., or -5 points.
(b) Use a TextArea to display messages or output data, or you will lose 5 points. All output MUST be appended
to the TextArea. You are NOT ALLOWED to use System.out in ALL CLASSES, or you will lose 10
points. This means you must modify all the print() methods in the Roster class to return a string, or define
a toString() method in the Roster class.
(c) Use RadioButton group for single-select items, or -2 points, for example, student types or major, etc.
(d) You must disable not applicable items, -2 points for each violation; for example,
o Only fulltime students are eligible for financial aid, or discounts.
o Only International student has the status of study abroad
o Only tristate student can check New York or Connecticut, i.e., only these 2 states are eligible for
discount.
(e) You MUST set the title of the primaryStage (title for the window.) or -2 points.
7. You are required to generate the Javadoc after you properly commented your code. Your Javadoc must include
the documentations for the constructors, private methods and public methods of all Java classes (*.java files.)
You must comment the Main.java and Controller class and include them in the Javadoc. DO NOT include
the *.fxml file, which is NOT a java file. Generate the Javadoc in a single folder and include it in your project
folder to be submitted to Canvas. You are responsible to double check your Javadoc after you generated them.
The grader will navigate the Javadoc with the “index.html”. You will lose 5 points for not including the Javadoc,
OR, the grader cannot navigate your Javadoc through the “index.html”.
System Testing
1. You MUST create a test document and design the test cases for testing Project 3. The test document is worth 15
points. Use the test cases provided in Project 2 (project2TestCases.txt) as a reference to design your test cases.
For example,
• adding and removing different types of students,
• computing tuition dues,
• making payments,
• update study abroad status for the international students
• enter the financial aid amounts
• enter all possible invalid input or trigger any exceptions
• other test cases based on your GUI design
2. Use your test cases to manually test your GUI. All invalid data should be rejected by the GUI. Proper error
messages must be displayed in the TextArea. You will lose 2 points for each invalid condition not rejected, or
error message not properly displayed in the TextArea.
3. Your program must always run in a sane state and should not crash in any circumstances. The graders will try
to produce exceptions while running your GUI. You must catch all Java Exceptions. Your program shall continue
to run until the user stops the program execution or closes the window. You will lose 2 points for each exception
not caught.