First off I suggest reading the article linked in the 1st solution. It's a pretty good article and helps in thinking about how to come to a solution.
For this specific assignment I would start by defining the classes listed in the specification. You should also define methods to test each class type. You'll need to instantiate the class and populate it and then call each method that returns a value to ensure it returns the expected value. When it doesn't, you'll want to learn how to use the debugger in your IDE if you haven't already. It is an invaluable tool to help determine where errors occur in your logic.
Once you have all the classes defined and tested go back to the top of your specification that details what the overall program is supposed to do. Break each sentence out onto its own line. Add notes to the file where you describe what code each line will turn into.
For example:
Quote:
A league (e.g. English Premier League) consists of a fixed number of clubs.
This sounds like a league has a list of clubs. When you define your League class it should probably contain a list of Club class instances.
Quote:
Throughout a season of the league each club plays each other club and the result is recorded.
You may need a Season class or perhaps a season is merely a list of matches. You'll need to think over what is the best way to meet the rest of your requirements.
Continue on like this for each line in the specification. Some lines inform you on details for one of your defined classes, others describe processing you need to do. Those that describe processing are probably methods you'll need to write to perform that task.
Once all that is done it's time to craft your main program. It has to read in the data (players, leagues, matches, etc.). Then you need to run through all the matches and record all the game results - including that of the players. Finally you need to output the required data. After each new step is added run tests to make sure the new code works. Remember those methods you wrote to test the classes as they were defined? You did write them, didn't you?
Then, after all this is working is when you start looking at what modifications you need to make to accomplish the extensions mentioned at the end of the specification. It's a good idea to keep them in mind as you work on the main solution but it's best to keep the main processing in the forefront. Coded extensions are no good if the main processing is incomplete or doesn't work.
This is a pretty big assignment. Just take it a little at a time. First read in the data. Then the next step, the next, and so on until you've completed it. As the old question goes: How can I possibly eat an entire elephant? Answer: One bite at a time.
This is what OriginalGriff's article in Solution 1 talks about. Give a read.
If you get stuck, ask another question. Show us what you've done and tell us where you're stuck. We're not big on giving away code but we're generally happy and willing to help out someone who puts in the effort. Good luck!