Saint Louis University |
Computer Science 290
|
Dept. of Math & Computer Science |
Topic: Airline Reservation System
Related Reading: review asgn01
Due:
Wednesday, 5 November 2008, 11:59pm
This assignment is a followup to the earlier ne in which teams proposed designs for an airline reservatino system. At this point, I am standardizing a new design for the system and having teams implement the new design. For this particular assignment, the goal is to focus on the implementation of the system back-end (we'll revisit the user-interface in a later assignment).
For this assignment, you are allowed to work in groups of three. I presume that you will work with the same group that you did for the first assignment (but please feel free to speak with me if there is reason for a change).
Please make sure you adhere to the policies on academic integrity in this regard.
This project will require coordination of your team and the sharing of files. If working on turing, please note that individual home directories are not accessible by other students by default. However, it is possible to create a "shared" directory as outlined on our department webpage.
After creating a shared directory and changing everyone's default umask, it should be possible to create an Eclipse workspace within that share, so that all files are readable and writable within the team. One warning: while Eclipse is robust, it is not designed to support simultaneous editing of files by multiple users. That is, if you and a teamate are both working on the project in the single shared directory, there may be unexpected consequences. I suspect that it will do okay as long as you are sure to be editing different source files, but there is no guarantee.
Based on the experience of the original assignment, I have created a new design for the system that all groups should use. The design is outlined in three forms:
UML overview
This is the same page that was handed out in class.
"public" view of the documentation
This set of documentation only covers portions of the project
that have public accessibility in the formal sense.
This is typical of the documentation that would be seen by
developers of the package regarding each other's components.
This does not provide any details about the encapsulated
implementations of the individual components. For example, it
shows the public interface for the
AirlineSystem
class, yet it does not tell you that we decided to use private
inner classes UserDB and FlightDB in our own
implementation.
"private" view of the documentation
This is a more complete set of documentation that intentionally
uncovers many (but not all) of the encapsulated details for the
components. For example, the corresponding documentation for the
AirlineSystem
class shows the private aspects of our design.
Note: You are certainly welcome to add additional private details to your design, but you are not to modify any existing aspects of our design without express advanced approval. If you feel there is good reason for a change of the design, please provide a written proposal for the change, details the advantages of the new design versus the existing design.
For this assignment, you are to provide a full implementation of the back-end components of our design (i.e., AirlineSystem, User, Administrator, Customer, Flight, Flight.Ticket, Reservation, ProvisionalReservation).
You are also to provide a driver named BackendTester that has a main routine that tests the band-end system. Minimally, your test should produce a system with an administrator, at least two users, and at least 3 flights (each with a different seating configuration).
There should be multiple reservations in the system and at least one failed attempt to purchase a reservation for a flight that does not have sufficient seating available.
You must also demonstate the ability to export your system to a file and then to subsequently import the system from that file.
Read the chapter on Serialization in our book (Ch. 7.5).
Please submit a single "jar" file that contains all relevant code for your project. If using Eclipse, you can export your entire project to a Jar file through the "File/Export" menu option. If working on the command line, do "man jar" for more information.