There are 5 airlines flying between JNB and CPT:
SAA (flysaa.com)
BA (a franchise operated by Comair) - ba.com
Nationwide - flynationwide.co.za
Kulula - kulula.com
1time - 1time.co.za
All offer very competitive fares, kulula and 1time are 'budget airlines', but the other three often have specials which are just as economical.
Train? Unless you use the Blue Train or Rovos rail (not sure if the still operate)-(both very special but also very expensive), I would advise against it. Although the part of the journey through the Hex River valley (a few hours outside Cape Town) is very scenic, the rest is uninteresting, it takes over 24 hours (the train is slow) and the 'ambiance' is not all that good!