Advanced OOP Assignment II – 2022-2023
The total assignment consists of three parts, each with their own weight in the final grade. You will still be working with a model of a galaxy with stars and planets, now building a graphical user interface to examine and if needed change it. The stars provided as .csv files, while the planets are generated on the fly.
You end having a project with a larger number of classes than you probably are used to. For this assignment you do not have to change a lot in the provided classes, you use them. At the end you will have a functioning application with a GUI.
You start by importing the provided Eclipse project. Create a class with a main method where you instantiate a StarCollection object (which is a Singleton) and a SpeciesCollection (idem.) Data has been provided in the csv files; change the paths in the class Settings.java so the data will be loaded. Make sure you can indeed print some objects of the classes Star, Planet and Species to the console before continuing this assignment. You have done so in assignments #1 and #2, so this should not be a problem here.
Create a new JavaFX project (make sure to use your name in the project name) and copy all packages with files (excluding your test class,) the data folder and the libraries to the new project.
Create a Menu structure containing
- A File Menu with the options New, Exit and a submenu Load o The submenu Load has options to load Stars and to load Species.
o The submenu New has options New Star and New Species
- A Star Menu with the option to Show Stars and Create Star
- A Species Menu with the option to Show Species and Create Species
- A Graphs Menu with options to show several graphs (see assignment)
- A Help Menu with the option About
When the application starts, the screen should be empty except for the menu.
Note: while the menu has options for Species, you do not implement them.
Implement the option Load Stars. This should read the data from the csv files configured in the settings file. Bonus points for allowing the user to select a csv file of which the contents are added to the already available data.
Implement the menu option About. It should give a dialog box with some info on the application and a Close button.
Implement the functionality Add Star. A new Star does not have to be stored to disk, you only add it to the StarCollection and make sure it is shown in the list of #3e.
Implement the functionality behind the Show Stars option. It should show the list of all stars known in the application in a list, with a detail box to the right of that list. The detail box also shows the number of planets with the star, but not details on them. Make sure to generate the planets on the fly.
Add a New and a Delete button here and make them work. We do not edit the stars. Do add a button Details; this button switches the screen to #3f.
Create a screen for details of the Star. These details include a list of the planets with the star. There are no buttons here.
Create at least two screens showing a different type of graph on Stars, Planets and/ or Species. Examples are:
- A pie chart showing the distribution of Planets over PlanetTypes
- A bar chart showing distances of the stars from the center in groups
- A scatterplot or line chart showing number of planets versus star types
- ? (Be creative, you may add other features as necessary) Make them available from the menu.
Assignment Grading criteria
|1||Correct JavaFX Architecture||Required to score|
|3||Screens change (instead of popping up new screens all the time)||2|
|4||Menu option: Load Stars||1|
|5||Menu option: About||1|
|6||Menu option: Add Star||3|
|7||Using advanced options (for example drop down boxes)||2|
|8||Showing a list of Stars||4|
|9||Showing Star details||2|
|10||Including Planet list in the Star Details||2|
|11||Correctly deleting a Star||2|
|12||Showing graph #1||3|
|13||Showing graph #2||4|
The grade is calculated as (points scored + 2) / 3.