how the following many common form cases can be accomplished:

case 1)
I have an application, which can allow people to register classes:

Class Name, class id. ...
_________ ____ ____
_________ ____ ____
_________ ____ ____

in the bottom, there is a button, add_more_class, so it will allow people
to add extra lines, how this can be easily accomplished in CCK or any module?

case 2)
In addition, I have a drop-down menu that has 4 items, like Red, Green, Blue, other color,
once user selects other color , an text input field will be shown.

case 3) I also have a drop-down menu that has 2 items, like teacher, student.
if teacher is selected, teacher tab with its content is shown,
if student is selected, student tab with its content is shown.

if you have any suggestion, please let me know..