Online Airline Reservation System--Detailed design Pingping Ma Oct 19, 2006
Overview • Database design • Activity diagram • Class interface • Fault tolerant issues
Database design • There are mainly 5 entities involved: • Flight info. • Customer info • Reservation • Purchase • Creditcard info. • Please see the entity diagram in the next slides
Major class interface • Authenticate • Search • CreditCard • FlightInfo • ReservationInfo
Authenticate Interface • Variable username, password, email • Boolean Authenticate (String username, String password); • This method checks if the user name and password input is a valid input. • If true, it will return true; otherwise, return false. • Boolean Register (String username, String password, String email) • This method is used to register a new user. • If the register is successful, return true; otherwise, return false. • Boolean IsAlive (String username) • This method checks to see if the user is still active when it doesn’t reponse in a certain amount of time.
Flight Interface • A class about the flight information with the following variables • FlightId • From_City • To_City • Dept_Time • Arr_Time • Num_Of_Seats • Price
Search Interface • This class has only one method Search. Maybe can be combined with the Flight class. • Flight Search_oneway (String from_city, String to_city, Date dept_time, Date arr_time, int num_of_Seat) • Flight Search_round (String from_city, String to_city, Date dept_time, Date return_time, int num_of_Seat) • Given the search criteria, searches the database looking for flights that match the criteria.
Creditcard Interface • A class about the credit card information • Variables • User_id • Card_number • Type • Year • Month • Methods • Boolean IsValid() • String GetNumber() • String GetType() • Number GetYear() • Number GetMonth()
Reservation Info • A class about the reservation information. • Variables • Reservation_id • User_id • Flight • Credit_card • Reservation_date • Num_of_seats • Passenger_name: an String array
ReserveAndPurchase Method • Methods • Boolean Reserve(String Reservation_id, String User_id, Flight flightobj, Creditcard cc, Date Reservation_date, Integer Num_of_seats, String  Passenger_name) • Boolean CancelReservation () • Reservation ReadReservation() • Boolean Purchase() • If the action is successful, return True; otherwise, return False.
Fault Tolerant issues • A failure in any transaction step causes the whole transaction to be lost. • Possible Solution: two phase commit procotol can be used. Or make full use of the COMMIT, ROLLBACK command in the database. • How to identify a client or server failure? • Implement an IsAlive function which ping the client or server to make sure that it is still active.
Fault tolerant issues • Synchronization • Use monitor method in the Reserve method to make sure there is no client reserving the same ticket at the same time • Data replication • Use data replication techniques to improve the reliability of the system. • Use primary copy method to enhance the consistency of the data.