$24
Concepts tested by this program:
Array lists of objects
Arrays of components
Output formatting
Reading from files
JUnit Tests
Inheritance
The College Football Playoff (CFP) is the new system in American college football that has determined a national champion for the NCAA Division I Football Bowl Subdivision (FBS) starting in the 2014 season. It replaced the Bowl Championship Series (BCS) previously used that generated much controversy.1 Unlike the BCS, the new format does not use computer rankings or polls to select the participants. In the playoff four teams play in two semifinal games, with the winners advancing to the new College Football Championship Game. Six bowl games — the Rose Bowl, Sugar Bowl, Orange Bowl, Cotton Bowl, Fiesta Bowl, and Peach Bowl — rotate as hosts for the semifinal games. A committee of 12 members including athletic directors, former coaches, administrators and others vote to select and seed the teams.2 See www.collegefootballplayoff.com for more detailed information.
You are to write an application to read the committee votes and select and seed the teams. For the sake of simplicity, the input file will include votes on only 10 teams, with one line per committee member. Since the voting is by secret ballot, the votes of each committee member will be anonymous.
Once the votes have been read, the application will show the rankings of the ten teams, along with their total votes (lower is better). The application will be able to show the detailed votes of each anonymous committee member for each team.
Since the CFP intends to provide weekly rankings as the season progresses, the user will be able to select other voting files and display the results.
Operation
When the user selects the Read Votes button, the application reads the committee voting file.
When the user selects the Rank Teams button, the application selects and seeds the teams and displays the output. If the user selects the Rank Teams button again, a new file will be read in and results displayed.
When the user selects the Show Details button, the application will display the votes of each committee member for each team, listed in ranked order.
If the user selects Read Votes again, another file can be read in and repeat the displays
When the user closes the frame or presses the Exit button, the application exits.
Specifications
Data Element – CollegeFootballTeam class
Create a CollegeFootballTeam class that inherits from the Team class (Team.java is supplied). Team.java is a high-level class that would accommodate any team, regardless of sport, professional or amateur. CollegeFootballTeam will also contain instance variables for the team’s conference, the votes for that team, and the sum of votes, and inherit instance variables for the team name, sport, and professional (true/false). It will include a getSumOfVotes method to retrieve the sum of the votes and a getVotes method to retrieve an array of votes, and a setter and a getter for the Conference name. Provide a default no-argument constructor and a three-argument constructor whose arguments are the String name of the team, the String name of the Conference, and an array of integers that will hold the votes for the team.
Data Structure – An ArrayList< CollegeFootballTeam of CollegeFootballTeam objects.
Data Manager – CollegeFootballPlayoffManager class
Create a CollegeFootballPlayoffManager class. It will contain an ArrayList< CollegeFootballTeam of CollegeFootballTeam objects. Data Managers are in charge of adding to the data structure, deleting from the data structure, updating the data structure, retrieving information from the data structure and any other methods that involve the data structure as a whole. This Data Manager will provide methods to read the input file (read Votes) and return an ArrayList< CollegeFootballTeam of teams in order of their voted ranking (rankTeams). Follow the Javadoc that I gave you for your CollegeFootballPlayoffManager class so that the JUnit test for this class will work correctly. Add any additional methods as required for your design.
GUI Driver
It will contain a CollegeFootballPlayoffManager object.
Use a JOptionPane at the beginning of the application to prompt the user to choose a file to read.
When the application starts, only the relevant buttons are activated.
Use the JFileChooser class to select a file to read.
When the user selects the Rank Teams button, display the teams by name in order (#1 through #10).
When the user selects the Show Details button, display the 10 teams by name and the votes of each (anonymous) committee member.
Data File – The data files will be text files with two header lines and one line per committee member. The first line will contain the team names, and the second line will contain the corresponding conference names. Each subsequent line will be a sequence of 1 through 10, separated by commas. There will be several data files, labeled by week (the actual committee will vote seven times during the season, starting on Oct 28th.)
Deliverables:
CheckList
Java files - The src folder with your driver (javafx application), data element, data manager and Junit Test (.java) files
Javadoc files - The doc folder with your javadoc for student generated files
UML Class Diagram (an image, not the proprietary format, must be a .jpg)
Deliverable format: The above deliverables will be packaged as follows. Two compressed files in the following formats:
LastNameFirstName_AssignmentX_Complete.zip [a compressed file containing the following]
UML.jpg
Assignment 6 Checklist (filled in with YES or NO or ?)
doc [a directory] please include the entire doc folder with the javadoc for student
generated files
file1.html (example)
file2.html (example)
src [a directory] contains your driver (javafx application), enumerated class, data
element, data manager and Junit Test (.java) files
File1.java (example)
File2.java (example)
File_Test.java (example)
LastNameFirstName_AssignmentX_Moss.zip [a compressed file containing only the following]
contains .java file which includes the driver (javafx application), enumerated
class, data element, data manager and Junit Test (.java) files – NO FOLDERS!!
File1.java (example)
File2.java (example)
Program Grade Sheet Assignment #6
Name _____________________________________________
DOCUMENTATION Total 25 points
CheckList for Assignment 6 is included and completed 1 pt _____
Javadoc for all user created classes 6 pts _____
Test Cases: JUnit Test Class
Add to the public tests for your CollegeFootballPlayoffManager class 5 pts _____
Create a Test for your Team class 5 pts _____
UML Diagram 4 pt _____
Lessons Learned 4 pt _____
In 3+ paragraphs, highlight your lessons learned and learning experience from working on this project. How did you do? What have you learned? What did you struggle with? How will you approach your next project differently?
PROGRAMMING Total 75 points
Internal class documentation (within source code) using Javadoc 5 pts _____
Description of what class does
Author’s Name, @author
Methods commented properly using Javadoc
Description
@param, @return
Compiles and Runs without runtime errors or warnings 10 pts _____
Accuracy
Public tests – JUnit test given to you and your tests/additions 10 pts _____
Student Tests – CollegeFootballPlayoffManager and Team 4 pts _____
Private tests 10 pts _____
Program Details
Data Element – Team class 10 pts _____
Contains instance variables with setters and getters
method to retrieve the total votes for the team
toString method to print the name and total votes of the team
Data Structure – uses ArrayList<Team to hold the list of team instances 4 pts _____
Data Manager – CollegeFootballPlayoffManager 12 pts _____
arraylist of Team objects
method to add to the data structure (addTeam)
method to retrieve from the data structure (getTeams).
constructor and a toString method
Follow the Javadoc for the CollegeFootballPlayoffManager class
GUI – Frame and Panel 10 pts _____
Displays an appropriate title
Use the ActionListener and define actionPerformed
Uses a CollegeFootballPlayoffManager object
Reads from a file - uses a FileChooser
Displays top four teams and shows their pairing
Displays teams and total of votes for each team
Provides an Exit button that closes the application
Program user interface
Clear to user how data is to be entered
Output is easy to understand
Total 100 pts _____
1 http://en.wikipedia.org/wiki/Bowl_Championship_Series
2 http://en.wikipedia.org/wiki/College_Football_Playoff