Got something more :::
Some Design
Patterns are a must for proper code :
1. Adapter Pattern / Factory :: for deciding between the TYPE of Connection :: Remote / Socket / Local / CORBA
2. MVC Pattern : For the GUI :: There is a MODEL to handle Data; a VIEW to create actual gui elements; and a CONTROLLER to control the actions - all the action Listeners report here and the actionPerformed happens here( the methods like bookTicket(), getClientID(), exit(), searchFlight(), etc)
3. Proxy Pattern : as used by RMI inherently
4. Reader / Writer Pattern for LOCKS
WARNING : Singleton pattern is the most debated - maybe most misused :: BUT almost all agree that it is really not required in this assignment.