I am not more in the coding this idea than just give a hand with decision of physics of it + a bit of implementation help. Which I am sure benchmashine will be able to do without me.
I have got a few questions for you, which are :
1) What do you want for the flying to be able to do? Meaning how it will fly?
a) Jet-plane style
b) Helicopter style
c) mix of both
d) Jetpack style
X-axis is going from back to front
Y - side to side
Z - top bottom
a) Jet plane style will mean that alien will not be able to stop in the air and only proceed with flight or fall down
In this case your controls are :
W - S trottle control (X-axis speed)
A - D roll control (X-axis turn)
Mouse left-right steering (Z-axis turn)
Mouse up-down steering (Y-axis turn)
In this case the trottle control has to be fixed since otherwise you will not be able to adjust your speed.
b) Helicopter approach
W-S trottle control (Z-axis)
A-D steering (Z-axis turn)
M left-right roll (X-axis turn)
up-down steering (Y-axis turn)
or same as in case of a.
c) Mix of jetplane and helicopter
The approach is the same as helicopter but the rightclick activates a booster in X-axis direction.
d) same as human jetpack.
In case of d there is no need for coding at whatsoever.
Case A is a bit more interesting, since you have to account a few forces, but its just a simple physics model, which C++ can handle with ease (if you need code for this one I can provide it, but without debugging, since I havent coded in C++ for about 2 years)
Case B is simpler than case A, but the principle is the same.
Case C is A+B coding :roll:

Personally Id loved to see the flight model as in case C, since it will give a huge range for dogfights and tricks that can be done.
Another thing which you might consider is having the max-speed checks not only for Z axis (falling down) but for all 3 dimensions, meaning that if you will fly into the wall on a high speed, the only thing will be left is a bit of green blood there ).