Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Austin Hasemeyer
Executive Summary
Baseball is one of if not the most statistically dependent sports in the world;
everything from batting average to the color of the winning pitchers socks is recorded and
stored. Some of these statistics may be more useful than others however the more data that you
have on a particular player the better equipped your team is to go against them. In contrast these
statistics can also vastly improve players on your own team by highlighting their weaknesses and
Professional baseball teams have a vast array of tools and professional statisticians at
their disposal and can create incredibly detailed stats and sabermetrics to relay this crucial
information to the players. All of this data has led to major changes in Major League Baseball
the most apparent of all is the shift. The shift has always been around in baseball, at least in a
minimal sense, but with new emerging statistics teams are able to tell exactly where on the field
a player is more likely to hit the ball and field accordingly. This concept is still rather
controversial in Major League Baseball but its impact is unescapable almost every team is now
resorting to shifting for power hitters and some teams for almost every at bat.
Since major league teams have so many statisticians they are able to come up with these
shifts based on the numbers; however, couldnt this play style also help in independent leagues?
For my Capstone project I am going to create a program that fills this void. My program,
Baseball League Manager, will be the perfect platform for independent leagues to create teams,
players, and leagues while retaining data for each respective position. This will allow for teams
to be able to breakdown all of their players games into feasible numbers that can help them
Table of Contents
Capstone Final Report Hasemeyer Page 4
Introduction
For years amateur baseball leagues have been sprouting up all around the United States
from youth to adult leagues everyone wants in on the fun. For these small independent leagues,
the matter of score keeping and keeping up player statistics can be overwhelming and laborious.
Calculating every players weekly statistics can only be done at the most basic level before you
are buried in a mountain of paperwork. Going to the league playoffs can be a complete guessing
game as you spent all of your time meticulously compiling your teams statistics and you had no
time to scout out your competition. If only there was a simple way to be able to present your
players with all of their individual statistics along with their completions. Well now thanks to
Baseball League Manager every team, player, and managers statistics can be located with the
press of a button.
Baseball League Manager is a Java based program that allows a manager or league
commissioner to create leagues, teams, and players then compare them against each other.
Baseball League Manager takes all of the statistic calculations out of the hands of a team
manager and generates everything from just a few fields that can be easily updated with just a
few clicks by using an up-to-date JavaFX interface. All of this information is stored in SQL
databased for easy retrieval so when game day comes a manager can quickly pull up his
opponents information just as easily as he could pull up his own teams information. This will
allow for teams to be more prepared for their competition and lead to better game play and
setting as it is designed to help improve a players shortcomings. Of course, the system can be
applied on any level of baseball and can be used casually to only record one team; but to be fully
implemented it should be applied in a competitive league. An ideal setting for this program
would be in either a High School League of in a city Little League program. Both of these
settings involve players who are not yet at their full potential and have much to learn and to
improve upon. Helping developing player is the key aim for this program, as more and more
information is added to the system the more apparent a players shortcomings will become
making it easier to pin point where they can improve and become a better player.
Goals
To ensure that the information that is being given to the players is not only accurate but
useful you need to consider what a player needs to know in order to improve their game. Most
scoresheet software will simply record a players slash line and leave it at that, a slash line being
their batting average, on base percentage, and their on base plus slugging or .300/.333/.400 as an
example. This information is important but it does not show the entire picture, for example a
batter may be only batting .100 against right handed pitchers while .500 against left, seeing that
batters average as .300 would rather deceiving. There will be several important splits that
Baseball League Manager will provide to help pin point how the player can improve. Many of
these will be focused towards the batters ability to perform versus certain matchups. Throwing
arm is a very important focus as a batter may have very different results against a left-handed
throwing pitcher opposed to a right-handed pitcher. Throwing arm matchups are not the only
Capstone Final Report Hasemeyer Page 6
discernable statistics as there are several others, from pitch type to field type everything can and
will affect a players ability to perform on any given day. To ensure all of these issues are
addressed in Baseball League Manager there are certain objectives that must be met.
Objectives
To determine if all a players possible needs are met I have complied a list of the most important
Players can be broken down by Player type: Hitter, Pitcher and Manager all have unique
User Interface must be intuitive, after every game all data needs to be entered so you
must be able to update one of your players with minimal button presses.
All Players must be securely stored and edited, mainly by only allowing those who
Player data must be easily converted to physical documents that display the correct
o Player records contain type, position, name, team, and a picture of the player.
Must be some level of secrecy for players statistics to protect poor performers from over
scrutiny.
Must be able to pull up data using different breakdowns, such as: lookup by team, by
Looking up player data must be done efficiently and simply, MySQL allows for both of
these.
Usability Testing/Evaluation
development method, that being the case continuous tested had to take place throughout the
development process. To ensure that every new feature would not interfere with the overall
For example, for each class within the Model there was extensive Junit testing for each
class ensuring that no data could be corrupted or lost in the creation, update and editing stages.
One of the more important classes is one named DBUtil, the purpose of this class is handle all
exchanges between Baseball League Manager and MySQL. Again, though several Junit tests all
The more difficult testing environment was the testing and exception handling of the
GUI. For each entry page there was extensive exception handling to ensure that there was no
way that a user could accidently insert some bad data into the system, for example you cannot
have characters in your player number. This process was rather lengthy but once complete the
The main focus of real user testing was not for errors as most of these had already been
flushed out at this point, but was more focused on ease of use for entries. To test these three
testers were asked to enter the MLB AL West division into the software, each tester was given a
different team. This was a test not only for how easily player data could be used but as a way to
populate the system with a large amount of data to try to find any bottlenecks in the data
processing process.
This test was successful in improving the flow of the data entry pages and was able to
bring some additional issues to light. As for the data retrieval there was no significant delays in
loading any individual player or even a list of all players, and no issues with bad data being
passed into the system. The testing did however produce the results I was mainly focused on
which was ease of use. Through testing each tester took notes on what they found to be the best
way to present data to be entered and how they would like confirmation windows to behave
when they have made changes. All of these issues were addressed and it did make the program
more user friendly but really demonstrated the demand for a mobile platform to make this data
entry less cumbersome as a mobile application would allow for more real-time entries.
Future Goals
Baseball League Manager is currently still rather limited, not necessarily in capability but
more in accessibility. Currently it is developed in a Java and JavaFX environment that is limited
to use in a personal computer. To take Baseball League Manager to the next level a few things
would need to take place. First Baseball League Manager would need a cloud MySQL server,
this way all computers and users would be able to look up statistics no matter where they were.
Second Baseball League Manager is the perfect platform for an Android mobile application,
Capstone Final Report Hasemeyer Page 9
which would allow for teams to update their players in real time. To contribute to that real-time
data entry a scorebook could even be implemented to reduce paper waste and keep the system as
up to date as possible.
Baseball League Manager is really geared towards those who want to improve either their
individual game or improve an entire team by giving the players the tools to better themselves.
Because of this the main benefactors would be the players but they are not the only one who can
reap the benefits. Baseball, as well as most competitive sports, can bring together students, adults
or really anyone together with others who may never see each other in everyday live. When you
break it down Baseball is just a game, a competitive game, but still a game with a purpose to
have fun. As any athlete or competitive person will tell you games are always more fun when
you are winning. This is the main purpose of Baseball League Manager, giving players the
ability to improve their game, which will in turn improve their experience and improve their
relationship with fellow athletes. If more people can enjoy the game while improving their play
not only is their everyday experience more fun they can even elevate their game to the next level
Feasibility
Baseball statistics programs are nothing new, and some have existed for several years now;
however, all of these programs are lacking in one way or another. To bring Baseball League
Manager up to the highest level it required some an environmental scan to compare and contrast
against other similar programs. The lead competitor for school baseball statistic recording is a
website called MaxPreps. MaxPreps is website that allows for High School teams, baseball,
Capstone Final Report Hasemeyer Page 10
football, basketball etc. which allows you to compare your High School to another High School.
However, if you are not a High School athlete and play in a competitive adult league you are not
able to use MaxPreps as they only permit High Schools. However, MaxPreps has a good system
for comparing players against other players or in their case the national average player. The
statistics that they offer for players is rather limited only offering the following statistics: games
played, batting average, on base percentage, hits, runs batted in, and runs.
Where MaxPreps excels Baseball League Manager offers the same features, and where
MaxPreps lacks Baseball League Manager excels. Namely in MaxPreps when a players record
is retrieved it shows all of the players statistics compared to the national average. Baseball
League Manager will offer a similar feature; however, it will only compare to the league average
as the database is not quite big enough to encompass the nation. MaxPreps only offers a few
select statistics for the players that may not be very useful. As previously mentioned splits are
very important when analyzing a player, MaxPreps offers no splits which is not very useful for
player development and preparation. Baseball League Manager is focused on giving you every
statistic that is possible to record at an amateur level to give users the most informative statistics
that they could ask for. Most importantly Baseball League Manager is available to anyone who
wants to use it, if you are not attending a registered High School MaxPreps will not allow you to
use their service. The portability and easy accessibility to Baseball League Manager puts it one
Design Requirements
Functional Decomposition
Capstone Final Report Hasemeyer Page 11
Baseball League Manager is broken up into 4 major functional components, all of which
combine to allow for a fully encompassing baseball statistics program. Each of these sections
have their own specific task that helps a league manager store information for each of their
players while being able to easily manipulate and extract whatever information that is required.
These major sections are rather self-explanatory in an attempt to keep the user interface as
The first section is labeled with Create!, this section is dedicated to the creation of both
Players and Teams. Teams will need to be created first and each team must have a unique name,
the team creation page checks for duplicates, teams that are unique will be created as new teams.
Once there is at least one team created you can create your Players. Players can be broken down
into multiple subcategories: Players, Hitters, Pitchers and Managers. The creation page asks what
type of Player you are creating, if a player is a manager they cannot be a hitter or pitcher and
vice versa, and after filling out all appropriate fields your player is created.
The second section is labeled with Update!, this section is dedicated to updating all
possible entries, such as updating: Pitchers, Hitters, Managers, and Teams. This is where the user
is going to spend most of their time in the software. After a game has been played and scoresheet
is complete the user will go to the Update section and update their players statistics for the
previous game.
The third section may be the most important as it is labeled with Lookup! and allows
for the user to extract exactly what they want. They will be able to produce a table that details all
players statistics, to just their teams statistics, and even look up individual player statistics.
Capstone Final Report Hasemeyer Page 12
From here the user will be able to print whatever page they are looking at or save it to a PDF for
later use.
The last section is labeled Edit!, and is intended for the editing of entered records.
Records such as a players name, number, or player type will generally stay the same throughout
the season and may only change a couple times if at all. This is what the Editing section is
intended for, changing fundamental records as well as for deleting unnecessary or incorrect
records. To keep this vital information from be inadvertently changes in the updating process
Baseball League Manager keeps this section separate giving the user a visual clue for when they
Baseball League Manager is designed to be a low impact SQL database system that relies
on Java and JavaFX to display the information. That being said it is still of the upmost
importance to keep the program as streamline as possible to not only improve performance but to
demonstrate clean coding practices and allow any other designer to easily pick up where another
left off. However, this minimal code will still be all encompassing. Baseball League Manager is
heavily reliant on data entry, with this in mind it is extremely important to make sure that no bad
information is entered into the system by using several try and catch blocks.
Along with good data the system must retain secure data. To ensure that the data is secure
and can only be edited or altered by those who have created it a login is required to use Baseball
League Manager. After sign in the user will only be able to edit or delete records which they
have created, while they will still be able to lookup anyones record they cannot alter them.
Final Deliverables
Capstone Final Report Hasemeyer Page 13
The final deliverable for Baseball League Manager is the JavaFX application itself. Since
all functions are contained within the application there is no accompanying webpage or
necessary additional software. One of the key features for the final deliverable is the ability to
print records. Since this program is designed to be used in real baseball situations being able to
have physical copies of the records is very important for its practicality.
Methodology/Approach
When first considering creating a baseball statistics program the first thing that comes to
mind is it must be simple. As the program is dependent on user input it needs to be as user
friendly as possible. This lead to choose what would be the best languages to use to not only
Due to these two main components as well as the timeline of 6 weeks I chose to use a
language that I am already rather familiar with which is Java. I have Swing experience, but also
know that it is not the most user friendly and can look a little dated, so I decided to use a more
modern JavaFX GUI, that generates the pages using FXML which allowed me to apply CSS to
those pages. This project was very time constrained so using FXML streamlined the process as I
already had CSS experience which gave me more time for the core product.
Once the basic outline of the project was determined I moved forward with creating the
Model for the system. I broke the Model up into 4 classes that correlated to the structure of the
MySQL relational database to make for easy passage of information between the two systems.
Once all classes were created and tested for all push, pull and updates the base product needed to
be built.
Capstone Final Report Hasemeyer Page 14
The first version of the Model was thrown together in not the most effective manner, but
this was intentional as I needed to get a working GUI get a feel for how a user would use this
program. Then it was a matter of refining the GUI to be as simple and user friendly as possible.
To start I really focused on the Create Player window, this window created the base player but
the window set the template for all other windows to follow. Once all windows were functional
After version 1.0 was complete it was a manner of adding and refining. Many of my early
SQL calls where numerous and a little out of hand, all classes were refined, repackaged, notated,
and streamlined as much as time allowed. Then it was just a manner of adding additional features
to the base program. Features such as profile pictures, printing pages, login credentials, user
creator stamps, and editing existing records was all implemented on top of the existing system.
With this approach largely matching an Agile process the system can still continue to
grow. Given another 6 weeks things such as a mobile application of a scorecard sheet could
easily be added to the program without having to alter the Model at all.
Legal Considerations
Since Baseball League Manager was written from scratch I do not believe that there
would be any legal consequences for the subject matter of the program. One legal issue that
could arise would be having to do with the images that I am using for the software. Since this is a
baseball program having appropriate imagery really drives the baseball feel home.
Unfortunately, I am not a graphic designer and do not have Photoshop or any other photo editing
software readily available. Because of this I am using images from the web, which if I were to
release this program to the market I would make sure are copy protected.
Capstone Final Report Hasemeyer Page 15
Ethical Considerations
The main ethical concern with the Baseball League Manager is the impact it will have on
lower level baseball players. Statistic programs bring scrutiny to all who are using them, most of
the time this is for the better allowing players to see where they are struggling and improve those
faults. However, when used in the wrong setting scrutiny can not only be unnecessary but
actually hurt not necessarily the statistics of a young player but affect the game overall. When it
comes down to it baseball is a game, and everyone playing should be having fun. When you try
to record a Tee-ball league you are not going to help anyone and probably ensure some kids
never try baseball again. For these reasons it is important that Baseball League Manager along
with any other statistics program is applied in the right settings with players who understand the
Conclusion
Amateur baseball players do not have an easy way to store player statistics throughout a
season and easily retrieve all possible statistics that they may need on any given player. The
currently available options require you to be a part of a recognized high school or to manually
record all statistics and calculate everyone individually. As a coach with a busy schedule this
task can seem insurmountable, but now there is an easy way for any coach or player to create
teams, players and leagues while giving you the ability to easily update each record and retrieve
Baseball League Manager takes all of the hard work of calculating and storing player
information and presents it in one easy to use and informational package. Baseball League
Manager has many of the statistics that other programs do not offer allowing for your players to
Capstone Final Report Hasemeyer Page 16
see all of their strengths and weaknesses to lead them to their full potential. To make Baseball
League Manager as effective as possible it is written in Java using a JavaFX GUI to give the user
the most intuitive display possible. With its continuous testing Baseball League Manager can
This project was a great example of what can be done in a short window of time. The
entire program was written in about 140 hours and shows many of the capabilities that Java,
JavaFX, MySQL, JPA, FXML and CSS can offer. This project was an ideal platform for the
Agile development process and I stuck to that to allow for continuous improvements without fear
of having to alter previous code. If given more time and resources Baseball League Manager
could be implemented with a cloud database and even be written for the mobile platform giving
References
The Official Site of Major League Baseball. Retrieved October 1, 2017, from
https://www.mlb.com/