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.

Ui

4. Features

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.

  • Items in square brackets are optional e.g n/NAME [t/TAG] can be used as n/John Doe t/friend or as n/John Doe.

  • Items with ​ after them can be used multiple times including zero times e.g. [t/TAG]…​ can be used as   (i.e. 0 times), t/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)

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:

  1. COMPETITION NAME

  2. START DATE OF COMPETITION

  3. 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

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:

  1. NAME

  2. DATEOFBIRTH

  3. GENDER

Format: editPerson INDEX (must be a positive integer) [n/NAME] [dob/DATEOFBIRTH] [g/GENDER]

Examples:

  1. When all fields are supplied:

    • editPerson 1 n/John Doe dob/12/02/1995 g/male

  2. 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

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:

  1. Squat

  2. Bench

  3. 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.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:

  1. Squat

  2. Deadlift

  3. Bench Press

  4. 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