Exercise Tracking/Planning System : Project Description
CSA348, Fall 2007
This project will have you building an Exercise Tracking/Planning System to be implemented in Java. The process used will be more formal than would normally be done for a project of this size but is intended to support the course learning objectives.
If any of you are regular exercisers, or have attempted in the past to be regular exercisers, you know that one of the hardest things is staying on track with your program. It's easy to miss a workout session (or two, or three...) because you get caught up in doing other things and before you know it, you haven't darkened the door of the rec center in nearly a month. To help in planning a workout program and making sure that the exerciser sticks to it, the imaginary organization Keep-Fit-Miami would like to create an application that individual exercisers can use to plan and track their workouts and that trainers can use to keep tabs on how the exercisers they are responsible for are doing. This system should have the following features/capabilities:
1. A weekly calendar with times un-available for exercise blocked out. This calendar must go from 6 am until 11 pm, seven days a week.
2. A "Fitness Goals Planner" where the exerciser (the person who's activities are being planning and tracked) indicates how many hours per week they want to devote to the following activities: strength, flexibility, cardio.
3. An "Activity Chooser" where the exerciser can select a time-slot and select the type of activity. For each activity, they will be given two options: solo or group. If they select solo, they will be asked to describe the type of activity (for example, for cardio they could say "running" or "swimming" or "elliptical", etc. ), if they select group, the system will look up candidate group fitness classes and allow the exerciser to select one from a list of activities occurring in time slots that are available for that day that occur at or after the time-slot indicated and that do not conflict with the times marked as "busy."
4. A "Group Fitness Definer" that can be used to enter data about the times, locations, names, and activity type for the group fitness activities offered at the Miami Recreational Sports Center. For simplicity, we will assume one set schedule and will not worry about holidays, etc. Each class will need to be assigned one of the three activity types: strength (muscle works, pilate's, etc.), flexibility (yoga), or cardio (bosu, kick-boxing, etc.).
5. For each weekly schedule, there will be two status indicators given. One will indicate if the activities scheduled meet the fitness goals. For example, if someone is supposed to do three hours of cardio, two hours of strength, and one hour of flexibility and all they have scheduled is one yoga class and one hour of running the schedule should indicate that the schedule is not complete. The second status message will indicate if they have actually *completed* all of their scheduled activities. This will indicate how close they are to meeting their goals for the week.
6. An hour before each activity, an alert will be displayed to remind them to hit the gym (road, or pool). Optionally, allow the exerciser to specify a different alert time (two hours before? a day before?) on either a global or an individual activity level.
7. The exerciser will indicate when they have completed an activity.
8. The exerciser will also have the option to "re-schedule" a planned activity. This will be similar to the "Activity Chooser" except that the only type choices offered to the exerciser will be solo or group (they can't substitute cardio for flexibility). If they select solo, the system will offer them a list of possible days and times (after the current time). If they select group, the system will propose a list of classes occurring after the current time. The system will not provide time or class options that violate Training Constraints (see below).
9. The system will provide a Constraints page that can be used to provide the following information: a) minimum number of hours between strength sessions and b) maximum numbers of each type of activity per week and c) maximum hours of total exercise. Exercise sessions that violate these constraints can not be scheduled.
10. This is a multi-user system and will need to maintain schedules and constraints for multiple clients. There will be a log-in.
11. There will also be a statistics interface where the client can find out how well they have done at meeting their goals. This interface will give the percentage for the total number of weeks they've been using the system and the past month.
12. There will be a Trainer interface where the trainer can get statistics for all their clients.
On this project, the above information is a starting point but it is not necessarily complete, consistent, or unambiguous. You will need to work with your client (Dr. Burge, representing Keep-Fit-Miami) to clarify the requirements and to elicit any that seem to be missing. The modeling that you do during requirements elicitation (use case modeling) is intended to help to clarify the requirements. If you are not sure of something ASK - asking is encouraged, attempting to read the mind of your client (or professor) is typically not a winning strategy.