Problem description: I have to design a system, using C++, that must make provision for handling the reservation of a seat or seats (i.e. group booking) on a particular flight, identified by a unique flight number, as well as payment for the tickets(s). First of all the availability of seats on a given flight is checked, then the price of a given seat. Next the following is recorded for a reservation and accompanying payment (we assume that tickets are paid for at the time that the reservation is done): the name of the passenger, the departure date, the scheduled departure and arrival times, the departure and arrival airports. It also records the cost of the ticket(airfare plus airport duty), and the credit card number (we make provision for credit card payments only). For simplicity sake we also assume that this system does not make provision for enquiries on the availability of alternative flights to a particular destination. Furthermore, we begin with a single airline, and later extend it to include more than one airline. What needs to be done is to create application objects to provide services to client programs. These objects co-operate to provide an overall service to a client. E.g., a reservation object may use an available-seats object, a ticket-fare object, and a payment object to process a user's transaction to purchase an airline ticket. Within the CORBA framework, we thus have to create application objects (i.e. object implementation) for each of the "services" mentioned above , as well as clients of these objects, and then use the ORB for communication between these clients and server objects. The IDL interface definitions of these server components inform the clients exactly what operations are supported, the types of their parameters, and what return types to expect. Each operation has a signature, expresses in IDL, that contains the following mandatory elements: 1. An operation identifier (also called an operation name) 2. The type of the value returned by the operation 3. A (possibly empty) list of parameters, each with a name, type, and direction indication. The direction will be one of in, out, or inout, stating that the parameters are being transmitted from the client to the object, are being returned as a result from the operation, or is client data to be modified by the operation, respectively.
On the client side only the IDL is needed to write client code that can invoke operations on these server objects. The corresponding programming language constructs (in this case C++) are then generated by the IDL compiler supplied by the ORB vendor (in this case Mico) The IDL compiler also generates stub code that the client links to and this translates, or marshals, the programming language data types into a message format for transmission as a request to an object implementation. The object implementation also has linked to it similar marshalling code, i.e. a skeleton, that unmarshalls the request into programming language data types. The skeleton can be generated by a different IDL compiler with a different language mapping. Programming steps: The following programming steps are typically required to write a distributed client-server system in CORBA and an application programming language (say C++): 1. Define the interface, using the standard IDL 2. Implement these interfaces with C++ classes 3. Write a server main function which creates instances of these classes 4. Write a client main function to connect to the server and to use the server's objects On the server side, the aim is to create a server, called ReservationOfficeSrv, which contains a ReservationOffice object with the following methods: 1. ListAvailableSeats 2. GetPrice (for a specified seat) 3. makeReservation (includes credit card payment) 4. makeGroupReservation (also includes credit card payment) --Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.--
## Deadline information
Must be completed by 12h00 04-08-2002 GMT +02:00. Coders from anywhere in the world welcome.