The project is to implement an on-line travel reservation application with a web front-end for both the travelers and the reservation manager. The customer should be able to register him/herself with the reservation site, enter personal profile information (name, address, email, and credit card
... [More]
information), prepare for itineraries, and book flights. The reservation manager should be able to publish and update flight information, and generate inventory report.
The project uses Apache Tomcat Server version 6.0 and Java SE version 5.x.
RequirementsThe following functionalities are provided for the reservation manager or administrator: A web page for the manager to log in with username and password. One or more web pages for the user to add/cancel/list flights with the following information: airline code/name, flight number, departure location, departure day of the week/time, arrival location, arrival day of the week/time, cost of business class and cost of economy class ticket. The flight number is a 3-digit number, prefixed with 0’s if less the actual number is less than 100. For simplicity reasons, it is predefined that there are 10 seats of business class and 30 seats of economy class seats in each flight. The airline code is a two-letter code defined in http://www.tvlon.com/resources/airlinecodes.htm. The airport location is one of airport with a three-letter code defined in http://www.orbitz.com/App/global/airportCodes.jsp. When a flight is canceled in the application, then all itineraries that are reserved and booked will become canceled as well.The inventory report will contain a summary of all fights in the reservation system that still have any unsold seats, the total number of unsold seats of business class and economy class. The user is able to log out at any stage during his/her session. The following functionalities are provided for on-line consumers: A web page for a traveler to register him/herself with name, address, username and password, email address, as well as credit card information (optional), including a 16-digit card number and a 4-digit expiration date. As a convenience for this project, a valid combination of credit card number and expiration date is defined in such a way that the 4-digit expiration date is defined with a valid mmdd format, and as an integer is a denominator of the 16-digit card number. A web page for a traveler to log in with username and password. Once a traveler is logged in, he/she will be shown with a list of travel itineraries along with the status of each itinerary (reserved, booked, or canceled). A travel itinerary is a travel arrangement with one or more flights. It has the status reserved when it is created by a traveler, booked when it is paid, and canceled when it is deleted by the traveler from his/her itinerary list, or one of the flights in the itinerary becomes canceled by the reservation manager, or payment not received after 2 minutes (simulating the 24 hours holding period in the real world). A web page that allows the user to view airport information on Google map. A traveler is able to create and book an travel itinerary by going through the following steps: Search for flight information by providing departure/arrival date/time and location, number of passengers, one-way or round trip, and the max number of legs. A list of available itinerary options will be shown to the on-line traveler, with departure/arrival and cost information. The departure time will be plus or minus hours within the specified departure time. It is possible that one itinerary contains one or more flights from one or more different airlines. Once the traveler selected an itinerary from the list, he or she has the option to reserve it. Before the traveler can reserve the selected itinerary, he or she must be logged in. Once the traveler reserved an itinerary, he or she has the option to book it by providing payment information via credit card. If the credit card information is not on-file for the traveler, he or she will be prompt to enter the credit card information (number and expiration date). The credit card information has to be validated first before booking. The validation is done via a validation service, which will be provided by the instructor. Once the credit card is validated, the traveler will be shown with the actual ticket information. The ticket number is automatically generated by the application in the format of XX-FFF-YYYYYY-ZZZ, where XX is the airline code, FF is the 3-digit flight number, YYYYYY is the traveler’s login name, and ZZZ is a 3-digit sequence number generated by the application. The sequence number is unique for each traveler. If the credit card number is invalid, a web page with an error message will be displayed to the user and ask the user to re-enter the credit card information. A traveler is able to cancel an itinerary from his/her itinerary list if it has not been paid. Cancellation after payment is not permitted. The traveler should be log out at any stage during his/her session. If the traveler is logged out during the preparation of an itinerary without completing the purchase, all itinerary information will be lost. The next time when the traveler is logged in, he or she will have to start a new selection process. The application is developed in a multi-tier architecture with each tier implemented using the technologies and free software defined as follows: The presentation tier is a web application consisting of a combination of HTML/JavaScripts/GoogleMaps and JSP components. The JSPs may contain JavaScripts functions for validating input fields with predefined string and/or number format (e.g. credit card number and expiration date). The business tier of the application contains the business logic and processes with connections to the backend database via JDBC, implemented using Java Servlets. The database tier of the application is a database server used to store all relevant data of the application. The HyperSonic database (HSQL, version 1.8), a lightweight database written in Java, should be used to support the application. The software is freely downloadable from http://hsqldb.org. The in-process mode of HSQL should be used for the application. The database files shall be located in a designated location in the Web Archive (war) hierarchy and the application should not hard-wired to specific data file location. It shall find the location of the data files dynamically. In addition to the database, the backend of the application also contains a credit card validation server (provided by the instructor). The validation server application is implemented as a Servlet application and provided by the instructor. Detailed usage and access APIs will be given during the class. A Web service is implemented to provide flight inventory information via standard Web Service interfaces that supports two query operations. One is to get the total number of seats for both business class and economic class for a given date; the other is to get the total number of seats of both business and economic class for a date range from the current date. [Less]