A computer-implemented method for generating an exercise plan from a plurality of exercises for a user, each exercise of the plurality of exercises being associated with a parameter for indicating the status of said each exercise of the plurality of exercises, the method comprising the steps of: a) initializing the parameter of each exercise of the plurality of exercises into a first value for indicating that the associated exercise has not been selected to be part of the exercise plan; b) selecting a subset of exercises from the plurality of exercises to generate the exercise plan and updating the associated parameter of each selected exercise in the plurality of exercises into a second value for indicating said each selected exercise has been selected to be part of the exercise plan; and c) after the user finishes doing the exercise plan, updating the exercise plan based on the user's performance resulting from the execution of the exercise plan and the parameter associated with each exercise of the plurality of exercises, wherein the step c) comprises: c1) deleting at least one exercise from the exercise plan based on the user's performance resulting from the execution of the exercise plan and updating the parameter of each deleted exercise in the plurality of exercises into a third value for indicating said each deleted exercise has been performed by the user; and c2) adding at least one exercise with the first value from the plurality of exercises into the exercise plan and updating the parameter of each added exercise in the plurality of exercises into the second value, and wherein the step c) further comprises a step c4) after the step c2): determining whether a predefined condition is met, and updating the parameter of each of the exercises with the third value into the first value if the predefined condition is met. a) initializing the parameter of each exercise of the plurality of exercises into a first value for indicating that the associated exercise has not been selected to be part of the exercise plan; b) selecting a subset of exercises from the plurality of exercises to generate the exercise plan and updating the associated parameter of each selected exercise in the plurality of exercises into a second value for indicating said each selected exercise has been selected to be part of the exercise plan; and c) after the user finishes doing the exercise plan, updating the exercise plan based on the user's performance resulting from the execution of the exercise plan and the parameter associated with each exercise of the plurality of exercises, wherein the step c) comprises: c1) deleting at least one exercise from the exercise plan based on the user's performance resulting from the execution of the exercise plan and updating the parameter of each deleted exercise in the plurality of exercises into a third value for indicating said each deleted exercise has been performed by the user; and c2) adding at least one exercise with the first value from the plurality of exercises into the exercise plan and updating the parameter of each added exercise in the plurality of exercises into the second value, and wherein the step c) further comprises a step c4) after the step c2): determining whether a predefined condition is met, and updating the parameter of each of the exercises with the third value into the first value if the predefined condition is met. c1) deleting at least one exercise from the exercise plan based on the user's performance resulting from the execution of the exercise plan and updating the parameter of each deleted exercise in the plurality of exercises into a third value for indicating said each deleted exercise has been performed by the user; and c2) adding at least one exercise with the first value from the plurality of exercises into the exercise plan and updating the parameter of each added exercise in the plurality of exercises into the second value, and