Earth, sun, and moon system

I'm trying to make a program which makes use of Newton's law of universal gravitation to model planetary motion.

I've set up a system very similar to the earth-sun system (i.e., masses and distances are similar to the actual earth-sun system). When I run the simulation, the "earth" orbits the "sun" just as it should.

Likewise, I made a earth-moon system, and the moon orbits the Earth just as it should.

However, when I put the two systems together and make the earth orbit the sun while the moon is orbiting the earth, the moon slingshots around the earth and doesn't return.

To determine the initial velocity of the satellite (in both systems), I use the equation for acceleration from uniform circular motion:
[tex]a = \frac{v^2}{r}[/tex]

Substituting this into Newton's law of universal gravitation (using "m a" for "F"), and solving for v yields:
[tex]v = \sqrt{\frac{G \cdot m}{r}}[/tex]

I suspect that the moon needs a different initial velocity since its motion must be a spiral around the sun... but I can't figure it out.

I'd greatly appreciate any help anyone can give... or if someone can point me in the right direction.

First, [itex]v=\sqrt{Gm/r}[/itex] is the velocity of an object of inconsequential mass relative to center of the Earth. You need to make that a velocity relative to the Sun to get even close to the proper motion.

Second, the Moon does not have an inconsequential mass compared to that of the Earth. A better solution is to make the Earth-Moon system (i.e., the Earth-Moon center of mass) orbit the Sun, and then make the Earth and Moon orbit about each other their common center of mass. You will have to add the center of mass velocity to the velocities resulting from this computation to get the velocities of relative to the Sun.

For even better results, do the same thing with the Earth+Moon and Sun orbiting about their center of mass.