Assignment 2: NHL Players
Overview
Create a GUI to browse and filter player stats from the NHL 2017-18 regular season.
Directions
Start by downloading the attached assignment starter code
The starter code includes a CSV (comma-separated value) file containing the player stats for the NHL 2017-18 regular season. Write code to parse this file and store the results into a standard collection that can be queried using LINQ.
Build a GUI that displays the player stats in a table format and includes controls for sorting and filtering the data.
Your GUI should include a text box where you can enter filtering data. Users should be able to filter the data using any of the columns in the table. A filter expression would look like “G >= 50”, which would only display players that scored 50 or more goals. The filter should work with any of the fields (Player, Team, Pos, GP, G, A, P, +/-, PIM, P/GP, PPG, PPP, SHG, SHP, GWG, OTG, S, S%, TOI/GP, Shifts/GP, FOW%). The filter should also work with any standard comparison operator (<, <=, ==, =>, >). The filter expression should also be able to include multiple filters separated by commas. For example, “GP < 10, P > 10” would display all players that played less than 10 games and scored more than 10 points.
The GUI should also include a text box where you can enter sorting information. Users should be able to sort by any column in ascending or descending order. A sort expression should list the field, and either “asc” or des” to indicate the direction of the sort. For example, “G des” would sort all players by goals scored, in descending order. You should also be able to sort on multiple keys by providing a comma separated list of sort expressions. For example, “Team asc, Player asc” would sort alphabetically by team and player name (in this example, team is the major sort, so it would be done last so that players are grouped by team).
Sort and filter operations may be applied by either pressing an update button, or by pressing enter in either of the text boxes.
Evaluation
This assignment will be graded for code quality and functionality.
Code quality will be assigned 20 marks according to the following table.
20 – Excellent | 15 – Good | 10 – Fair | 5 – Poor | |
Code quality | Code is clear and easy to read. Style is consistent throughout and comments are used where needed. | Code is mostly clear. A few inconsistencies in style, or locations where comments would help with readability. | Code could use some refactoring. Style is inconsistent with little to no documentation. | Code is very difficult to read. |
Functionality will be tested with standard tests. Students are encouraged to test their application adequately before submitting. Functionality will be tested for the following features:
Functionality Task | Marks |
CSV parsing | 5 |
GUI layout | 5 |
Display all data in table | 20 |
Filter on single key | 10 |
Filter on multiple keys | 10 |
Sort on single key | 10 |
Sort on multiple keys | 10 |
Apply both filter and sort | 10 |
Total | 80 |