There is little you can do to alter this behavior. Over time your son will likely be better able to tolerate the ups and downs of life. For now, do not yell at him - this only vents your frustration, and there really is no reason to be angry with him. If he is crying at home as you describe, simply tell him to go to his room to cry. This is not as punishment, but simply as a way of preventing others in the family from having to be exposed to it. You would not do this, of course, if he is crying about something that prompts legitimate, 'normal' sadness. He mat display a certain amount of perfectionism and cannot tolerate the disappointment that occurs when things do not turn out as he expected. Sometimes a short course of therapy can help with this, both in regard to achieving more flexibility in his thinking and being better able to tolerate/express frustration.
It seems to me like your child is at the phase mental development where they begin to understand action and reaction a little more, and at that age, it isn't uncommon for some children to begin understanding what works or what doesn't. For whatever reason, he may have developed the understanding that crying is an appropriate reaction to frustration or dismay, and that it effectively makes him feel better, or atleast somewhat alleviates his distress. In that regard, crying may just have been a habit he developed as his default response to the aforementioned situations. It's likely something that he will grow out of sooner rather than later; once he is exposed to more social situations and begins to ponder the notion that crying openly "too much" may not be very socially acceptable and will begin to alter that behavior on his own.
If you would like to expedite the process, I imagine it'd have to be more of a weening process where everytime he cries, the people around him may suggest that this isn't an appropriate course of action, and in a simple manner, suggest to him why. Punishing him for crying is too much of a causal and direct imposed consequence, so I don't believe that'd really be an appropriate way to alter the behavior. I think your best bet would simply be to consult a Child Psychologist, and that specialist would then be able to suggest an appropriate course of action. Good luck! :-)
Read P.E.T (Parent Effectiveness Training). It has helped solve so many problems with our kids - two sons and a daughter. Sometimes if we want to change our children's behavior, we have to change our own. I'd handle your son with lots of patience and understanding. "You're upset about losing the game. You're frustrated when your grades aren't as high as you'd like them." Acknowledge what he's feeling and be a good listener. The crying will take care of itself.
A related discussion,
10 year cries alot was started.