By: Team CS2103-T11
Since: Sep 2019
Licence: MIT
1. Introduction
A powerlifting competition/meet consists of 3 lifts, the Squat, Bench and Deadlift. With 3 attempts, athletes will try to outdo and challenge themselves and lift as heavy as they can.
This software is for organisers who organise powerlifting competitions. To facilitate the ease of data-entry, we have provided a command line interface that is augmented with a Graphical User Interface to help them better administer powerlifting competitions.
2. Powerlifting Background: Read this if you are new to powerlifting
2.1. What is Powerlifting?
Powerlifting athletes compete in 3 events: The Squat, The Deadlift and The Bench Press. For each event, all athletes have 3 tries: they declare a weight which they want to attempt for each try. Example: John declares the following 3 weights for the 1st, 2nd and 3rd attempt of the squat respectively: 100kg, 150kg, 200kg. The athletes will usually compete in the different events and perform all 3 attempts for an event in the following order: The Squat, The Bench Press and finally, The Deadlift.
2.2. How are scores computed for Powerlifting?
Suppose that John declares 100kg for the 1st attempt of the squat. If he succeeds in clearing the 1st attempt, 100kg will be considered for the overall score for the squat event. Consequently, if John declares 200kg for the 2nd attempt of the squat and succeeds in clearing that attempt, 200kg will be considered for the overall score for the squat event. For each event, an athlete obtains a score which is the maximum weight of the 3 attempts. Example: Suppose John fails the 3rd attempt, the weight he has declared for that attempt will not be considered for the overall score. So, the John’s final score for the squat attempt is max(200kg, 100kg), which is 200kg.
2.3. How is the overall score determined for Powerlifting?
For each athlete, just sum the maximum weight obtained for each event. Suppose John has the following results: The maximum weight for squat: 200kg The maximum weight for bench press: 150kg The maximum weight for deadlift: 300kg The total score for John: 200kg + 150kg + 300kg = 650kg
2.4. How are winners determined for Powerlifting?
Just find which athlete has the highest overall score.
3. Quick Start
-
Download the software from our git repo.
-
Ensure Java 11 is downloaded into your machine.
-
Open application and maximize window if you cannot see the entire screen fully as shown in the picture below.
4. Features
Command Format
-
Words in
UPPER_CASE
are the parameters to be supplied by the user e.g. inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Items in square brackets are optional e.g
n/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family
etc. -
Parameters can be in any order e.g. if the command specifies
n/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
Note that Powerlifting Coordinator has different commands for different contexts. There are only two contexts: During Competition (In-session) and Outside of Competition (Out-session)
5. Context: Outside Of Competition (Out-session)
5.1. Commands related to competition
Commands related to managing competitions outside of a competition setting shall be introduced first.
5.1.1. Adding a new competition: addCompetition
Format: addCompetition n/COMPETITION NAME startDate/START DATE OF COMPETITION endDate/END DATE OF COMPETITION
Example:
addCompetition n/IPF World Championships startDate/12/02/1995 endDate/15/02/1995
5.1.2. Deleting an existing competition: deleteCompetition
Deletes the competition identified by the index number, used in Competition list (shown in the GUI)
Format: deleteCompetition INDEX
Example:
deleteCompetition 1
5.1.3. Finding an existing competition: findCompetition
Finds and lists all competitions in the system whose name or dates contains any of the argument keywords. Keyword matching is case insensitive.
Format: findCompetition [KEYWORD 1] … [KEYWORD N]
Example:
findCompetition NUS Open 2019
5.1.4. Editing information of a competition: editCompetition
Edits the details of the competition identified by the index number, used in the Competition list (shown in the GUI). Existing values will be overwritten by the input values. In addition to INDEX, you must supply a value for at least one of the following fields:
-
COMPETITION NAME
-
START DATE OF COMPETITION
-
END DATE OF COMPETITION
Format: editCompetition INDEX (must be a positive integer) [n/COMPETITION NAME] [startDate/START DATE OF COMPETITION] [endDate/END DATE OF COMPETITION]
Examples:
1.When all fields are supplied:
-
editCompetition 1 n/IPF World Championships startDate/12/02/1995 endDate/15/02/1995
2.When only 1 field is supplied:
-
editCompetition 1 n/IPF World Championships
-
editCompetition 1 endDate/15/02/1995
5.1.5. Listing all records of current and past competitions: listCompetition
This command has no parameters
Format: listCompetition
5.2. Commands related to person (athlete)
Commands related to managing persons (athletes) outside of a competition session shall are described below.
5.2.1. Adding a new person: addPerson
Format: addPerson n/NAME dob/BIRTH DATE g/GENDER
Example:
-
addPerson n/John Doe dob/12/02/1995 g/male
5.2.2. Deleting an existing person: deletePerson
Deletes the person identified by the index number, used in Person list (shown in the GUI).
Format: deletePerson INDEX
Examples:
-
deletePerson 1
5.2.3. Editing information of an existing person: editPerson
Edits the details of the person identified by the index number, used in the Person list. Existing values will be overwritten by the input values. In addition to INDEX, you must supply a value for at least one of the following fields:
-
NAME
-
DATEOFBIRTH
-
GENDER
Format: editPerson INDEX (must be a positive integer) [n/NAME] [dob/DATEOFBIRTH] [g/GENDER]
Examples:
-
When all fields are supplied:
-
editPerson 1 n/John Doe dob/12/02/1995 g/male
-
-
When only 1 field is supplied:
-
editPerson 1 n/John Doe
-
editPerson 1 dob/12/02/1995
-
5.2.4. Finding person(s): findPerson
Finds all persons whose names contain any of the specified keywords (case-insensitive) and displays them as a numerically ordered list.
Format: findPerson [KEYWORD 1] [KEYWORD 2] … [KEYWORD N]
Examples:
-
Find Alex Yeoh only:
findPerson Alex
-
Find Alex Yeoh only:
findPerson alex
-
Find Alex Yeoh only:
findPerson yeoh
-
Find Alex Yeoh and Bernice Yu:
findPerson yeoh yu
5.2.5. Listing all existing persons: listPerson
Lists all persons recorded in the system and displays them as a numerically ordered list.
Format: listPerson
Example: listPerson
5.3. Commands related to participation (linking persons and competitions together)
Commands related to managing persons participating in competitions will be introduced now.
5.3.1. Adding a new participation: addParticipation
Adds an existing person displayed in the Person list on the user interface into an existing competition displayed in the Competition list on the user interface. User also needs to supply 3 weight attempts for each of the following events:
-
Squat
-
Bench
-
Deadlift
Format: addParticipation n/Athlete Name c/Competition Name s/S1/S2/S3 b/B1/B2/B3 d/D1/D2/D3
Example:
-
addParticipation n/Ho c/NUS 2022 s/100/101/102 b/300/400/500 d/1000/2000/3000
Note: S1 means the 1st attempted weight for the Squat and so on.
5.3.2. Listing all persons who are participating in all competitions or for one competition: listParticipation
Note that the user can choose to provide a competition name or not.
Format: listParticipation c/COMPETITION_NAME
Example: To display all persons for all competitions:
-
listParticipation
To display all persons for NUS 2022 competition only:
-
listParticipation c/NUS 2022
5.3.3. Deleting an existing participation: deleteParticipation
Deletes the participation identified by the index number, used in Participation list (shown in the GUI).
Format: deleteParticipation INDEX
Examples:
-
deleteParticipation 2
5.3.4. Finding participations: findParticipation
Finds and lists all participations in the participation list, whose competition name or person name contain any of the inputted keyword(s).
Format: findParticipation [KEYWORD 1] … [KEYWORD N]
Examples:
-
findParticipation NUS Open 2019 Bob
-
findParticipation Alex
5.4. Auxiliary commands
5.4.1. Cleaning entire data from the system: clear
Removes all persons, participations and competitions information from the system
Format: clear
5.4.2. Exiting and closing the GUI: exit
Format: exit
5.4.3. Showing help instructions: help
Display URL to this User Guide to teach users how to use the appropriate commands for Outside Of Competition.
Format: help
5.4.4. Showing overall ranking: overallRank
Sorts and displays ranking of athletes according to the amount of times they are the overall champions for any competition.
Format: overallRank
5.4.5. Starting a competition event along with its competing athletes (person): startSession
Enters into a competition session. Switches the context to being in a competition session.
Only In-session commands can be used after this command is executed until the user
terminates the competition session with the endSession
command (See below).
Format: startSession c/COMPETITION NAME
Example:
-
startSession c/NUS 2022
6. Context: During Competition (In-session)
6.1. Handling Competition During a Competition event
This feature handles the entire flow of each session during Meet Day. It allows event organisers to submit a person(athlete)’s Squat, Bench, Deadlift attempts, as well as the success of their lifts. It will show the relevant information to prepare for the athletes lift (displaying name, weight, etc). The flow of events, and the commands to facilitate the competition session will be presented in order below:
This feature handles the entire flow of each session during Meet Day. It allows event organisers to submit a person’s Squat, Bench, Deadlift attempts, as well as the success of their lifts. It will show the relevant information to prepare for the athletes lift (displaying name, weight, etc). The flow of events, and the commands to facilitate the competition session will be presented in order below:
6.1.1. Get the next lifter in line: next
Retrieves the next lifter according to weight lifted for that attempt, the weights he/she is going for that particular lift and attempt. If there are no more attempts to be made by any lifter, this command will trigger the end of the competition.
Format/Example: next
6.1.2. Updating success or failure of a lift: lift
Updates whether the person (athlete) succeeds in his/her attempt, or fails it. The lift updated will be the one that was just called up.
Format: lift Y/N
Examples:
-
lift N
-
lift Y
6.1.3. Getting the rank of a person (athlete) for a given competition: rank
Retrieves the rank of a person relative other competitors in the competition.
Format: rank n/NAME
Example:
-
rank n/Ho
6.1.4. Getting the rank of a person (athlete) for a given competition, using a specific criterion: ranklist
Retrieves a sorted order of all the participants of a the competition in-session based on the ranking method stipulated in the command. This ranking methods can be broadly categorized as being either the overall score or the maximum weight lifted for a particular exercise. Available ranking methods are by:
-
Squat
-
Deadlift
-
Bench Press
-
Overall (overall score)
Format: ranklist by/RANKING METHOD
Example:
-
ranklist by/overall
-
ranklist by/squat
-
ranklist by/deadlift
-
ranklist by/bench
6.1.5. Ending and exiting the session endSession
Ends the session, and shifts the user back to the out-of-session state. The user now has access to the out-of-session commands once again.
Format: endSession
Example: endSession