Allright. You got your car so far that it drives somewhat into the right direction. Not bad for a beginning.
Your problem is, that the car is oscillating around the keyframe spline. Well - that's something I can only partly help you with because it's an effect that is inherent to the problem. Even humands oscillate around a line that they assume is the perfect line. The only thing I can help you is to make the effect so small that noone will ever notice it.
I've spent 5 years of my live to write race game AI, I hope I don't sound like an ass, but I know and I can tell you how it works.
Step 1: The first thing you should change is your steering-control. You have a "button"-like steering control, e.g. either the car gets a "left" or "right" steering order. Get rid of this. You need something analog once you want to drive your car using a steering-wheel controller anyways. You need inbetweens. I suggest you change your steering to accept values between -1 (maximum left steering) to 1 (maximum right steering).
Step 2: Forget about steering for a moment and write a code that controls the gas/brake thing. Let your AI-car drive at a reasonable speed. like 50 mph or so. You'll get faster later..
Step3: Get into the PID-controllers (http://en.wikipedia....PID_controller)
. That's the key-ingredient to get this oscillation down to a minimum. There is _no_ shortcut around this. If you don't get the math ask someone who does. I would be glad to do it myself, but I can't express/explain this thing in a foreign language. I even struggle with my own language when it comes down to this thing. It *is* the key ingredient to solve your problem.
Step4: Assuming your car is driving nice at a medium pace. You want to let it drive at faster and slower speeds as well. What you need to do now is to change your steering mechanism. I suggested to change your max left/right to -1 to 1. That's fine. What you now do is to make your maximum steering relative to the current speed of the car. E.g. doing a turn at 30° is fine if you're driving with 5mph, but it will instantly kill each one in the car if you do it on a highway. This will not only make driving easier for players but for your AI as well.
Step5: (that's really an funny one):
Let your car drive a couple of rounds and make statistics what kind of curves it can drive with what speed and go around the corner safely. Just collect data for half a day.
Once you have collected that data: Add some prediction to your AI that it looks like 3 or 5 seconds into the future, estimates the curvature and car-speed and lower/raise it's speed-goal for the car, so you get around the corners. You always want to be on the edge of the possible maximum that takes your cars savely through the curves. Game testes are a god-sent in this situation. Record their game inputs and adjust your PID-controller to compete with them.
Rinse, rise, repeat.
Once you've done all the steps I've described, you should have a very dumb but nearly unbeatable opponent car-AI.
Then starts fun part one: make your AI aware of other cars. Let them drive in opponents slip-stream and let them avoid obstacles and break out. That's what make up the fun of the game: The difference between opponents that act like bots and opponents that act like humands.
How to take this into a game that makes fun for the players I may answer another day...
Hope that helps,