Online Hotel Reservation System MSE Presentation III Cem Oguzhan Outline Project Overview Action Items from Presentation2 Component Design Assessment Evaluation User Manual Code Documentation Project Evaluation Lesson Learnt Demo (Hotel Reservation System) Questions / Comments Project Overview Project Statement The hotel reservation system will provide service to on-line customers, travel agents, and an administrator. On-line customers and travel agents can make searches, reservations and cancel an existing reservation on the hotel reservation’s web site. Administrator can add/update the hotel and the room information approve/disapprove a new travel agent’s account application and generate a monthly occupancy rate report for each hotel. Action Items Use cases for Formal Specification Middle Tier class diagram and Sequence Diagrams “Any” option is added for room preferences Action Items (cont) The class diagram above captures middle-tier, business specific layer, of the Hotel Reservation System. Action Items (Cont) : User : SignIn.aspx : User : Database 1: user provides requested information 2: verifyLogin() 3: queryLogin(User) 4: [verifyLogin = true] directRequestedPage : EditAccount.aspx Action Items (cont) Detail View Action Items (cont) : CancelReservation.aspx : User : Reservation : Database : ConfirmCancelReservation.aspx 1: provides requested information 2: getReservation(reservationNumber) 3: queryGetReservation(reservationNumber) 4: [dataSet.Rows.Count >0 && dataSet.Tables["Reservation"].Rows[0]["UserName"] == Session["User"] ]display() 5: cancel 6: cancelReservation(reservationNumber) 7: queryCancelReservation(reservationNumber) 8: [cancelReservation = true] directConfirmCancelReservation.aspx Action Items (cont) : Agent : RequestAccount.aspx : TravelAgent : Database : Mail 1: provide requested information 2: isValidUserName(userName) 3: queryIsValidUserName(userName) 4: [isValid = true] requestAccount() 5: queryInsertAccount() 6: [requestAccount = true] sendMail(e_address) 7: [requestAccount = true] directed ConfirmRequestAccount.aspx The sequence diagram shows that the travel agent successfully applies to an account. Operation Signature: requestAccount(userName : String, email : String, password : String, companyName : String, status : String, phone : String, address : String, city : String, state : String, zip : String) : Boolean queryInsertAccount (userName : String, email : String, password : String, companyName : String, status : String, phone : String, address : String, city : String, state : String, zip : String) : Boolean : ConfirmRequestAccount.aspx Action Items (cont) : Agent : SalesReport.aspx : TravelAgent : Database 1: provides requested information 2: totalSales(userName, startingDate, endingDate) 3: queryTotalSales(userName, startingDate, endingDate) 4: totalSales 5: salesCommussion(totalSales) 6: commussion Action Items (cont) Component Design Clients IIS 5.0 Server ASP.NET Middle-Tier CLR Business Logic Components (C# Class Library) Data Access via ADO.NET HRS Database MsSQL Server The diagram shows 3-tier type of architecture. Component Design (cont) Presentation tier Hotel::FindHotel #txtCity : TextBox #lstState : DropDownList #btnCalender1 : ImageButton #btnCalander2 : ImageButton #txtCheckIn : TextBox #txtCheckOut : TextBox #calDate1 : Calendar #calDate2 : Calendar #btnFind : Button #RequiredFieldValidator1 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator #RegularExpressionValidator1 : RegularExpressionValidator #RegularExpressionValidator2 : RegularExpressionValidator #RequiredFieldValidator3 : RequiredFieldValidator #ValidationSummary1 : ValidationSummary #lstCountry : DropDownList #txtPrice : TextBox #RegularExpressionValidator3 : RegularExpressionValidator #CompareValidator1 : CompareValidator #lblMessage : Label #Label3 : Label #Label1 : Label #Label2 : Label #holder : PlaceHolder #lstSmoking : DropDownList #lstBed : DropDownList #lstHandicap : DropDownList #lstRoom : DropDownList -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnCalender1_Click(in sender : object, in e : ImageClickEventArgs) -calDate1_SelectionChanged(in sender : object, in e : EventArgs) -btnCalander2_Click(in sender : object, in e : ImageClickEventArgs) -calDate2_SelectionChanged(in sender : object, in e : EventArgs) -validateCheckIn(in checkIn : DateTime) : bool -btnFind_Click(in sender : object, in e : EventArgs) -calDate2_DayRender(in sender : object, in e : DayRenderEventArgs) -calDate1_DayRender(in sender : object, in e : DayRenderEventArgs) Hotel::HotelResult #dg : DataGrid #lblTest : Label #lblMessage : Label #Label3 : Label #Label1 : Label #Label2 : Label #holder : PlaceHolder #dsHotelResult1 : dsHotelResult -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -BindData() -dg_SelectedIndexChanged(in sender : object, in e : EventArgs) Component Design (cont) Presentation Tier Hotel::AvailableRoom #lblHotel : Label #lblCheckIn : Label #lblCheckOut : Label #lblNumRoom : Label #Label3 : Label #Label1 : Label #dsRoom : DataSetAvlRoom #btnReserve : Button #dgRoom : DataGrid #lblMessage : Label #lblBedType : Label #lblSmoking : Label #lblAccessible : Label #btnPreferences : Button #holder : PlaceHolder -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -display() -btnReserve_Click(in sender : object, in e : EventArgs) -btnPreferences_Click(in sender : object, in e : EventArgs) Hotel::RoomPreferences #lblHotel : Label #lblCheckIn : Label #lblNumRoom : Label #lstSmoking : DropDownList #lstBed : DropDownList #lblSmoking : Label #lblBed : Label #btnCheckAval1 : Button #dataSetAvailableRoom1 : DataSetAvailableRoom #dg : DataGrid #dataSetAvlRoom1 : DataSetAvlRoom #lblHandicap : Label #lstHandicap : DropDownList #lblMessage : Label #btnSkip : LinkButton #lblRoom : Label #lblTest : Label #Label3 : Label #Label1 : Label #holder : PlaceHolder #lblContinue : Label #lnkCont : LinkButton #lblCheckOut : Label -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnCheckAval1_Click(in sender : object, in e : EventArgs) -checkAvailability() -dg_SelectedIndexChanged(in sender : object, in e : EventArgs) -btnSkip_Click(in sender : object, in e : EventArgs) -lnkCont_Click(in sender : object, in e : EventArgs) Component Design (cont) Presentation Tier Secure::Reservation Hotel::SignIn #txtUserName : TextBox #txtPassword : TextBox #btnSignIn : Button #lblMessage : Label #Label3 : Label #Label1 : Label #Label2 : Label #RequiredFieldValidator1 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator #btnRegister : Button -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnSignIn_Click(in sender : object, in e : EventArgs) -btnRegister_Click(in sender : object, in e : EventArgs) #lblHotel : Label #lblName : Label #lblCheckIn : Label #lblAddress : Label #lblCityStateZip : Label #lblSubTotal : Label #lblTax : Label #lblCheckOut : Label #lblDay : Label #btnReserve : Button #dsGetRoom : DataSetAvlRoom #lblMessage : Label #dgReservation : DataGrid #lblTest : Label #lblNumRoom : Label #Label3 : Label #Label1 : Label #Label2 : Label #lblTotalAmount : Label -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -userInfo() -reservInfo() -FillTheReservation() -removeRoom(in rid : string, in sessionVar : string) : string -dgReservation_SelectedIndexChanged(in sender : object, in e : EventArgs) +GetRandom(in seed : int) : Random -btnReserve_Click(in sender : object, in e : EventArgs) -createRsrvNum() : string +GetRandom() : Random Component Design (cont) Presentation Tier Secure::CancelReservation Secure::ConfirmReservation #lblRsrvNum1 : Label #lblConfNum1 : Label #lblConfNum2 : Label #lblConfNum3 : Label #lblRsrvNum2 : Label #lblTest : Label #Label3 : Label #Label1 : Label #Label2 : Label #lblRsrvNum3 : Label -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -confirmationNumber() -display(in i : int, in reservNumber : string) #lblMessage : Label #btnFind : Button #txtRsrvNumber : TextBox #RegularExpressionValidator1 : RegularExpressionValidator #RequiredFieldValidator1 : RequiredFieldValidator #lblErrorMessage : Label #Label3 : Label #Label1 : Label #Label2 : Label #lblHotelInfo : Label #lblHotelPhone : Label #lblPhone : Label #lblHotelAddress : Label #lblAddress : Label #lblHotelName : Label #lblHotel : Label #lblRoom : Label #panel : Panel #lblAccessible : Label #lblHandicap : Label #lblSmokingType : Label #lblSmoking : Label #lblBedType : Label #lblBed : Label #lblRsrv : Label #dgReservation : DataGrid #dataSetReservation1 : DataSetReservation -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnFind_Click(in sender : object, in e : EventArgs) -display() -dgReservation_SelectedIndexChanged(in sender : object, in e : EventArgs) Component Design (cont) Presentation Tier Hotel::CreateNewAccount Secure::Edit #lblTest : Label #RegularExpressionValidator4 : RegularExpressionValidator #RegularExpressionValidator2 : RegularExpressionValidator #RegularExpressionValidator1 : RegularExpressionValidator #RequiredFieldValidator1 : RequiredFieldValidator #ValUserID : RequiredFieldValidator #btnSubmit : Button #txtUserID : TextBox #txtPassword : TextBox #txtEmail : TextBox #txtFirstName : TextBox #txtLastName : TextBox #txtHAddress : TextBox #txtHCity : TextBox #txtHPhone : TextBox #lstHState : DropDownList #RequiredFieldValidator3 : RequiredFieldValidator #RequiredFieldValidator4 : RequiredFieldValidator #RequiredFieldValidator5 : RequiredFieldValidator #RequiredFieldValidator6 : RequiredFieldValidator #RequiredFieldValidator7 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator #RequiredFieldValidator9 : RequiredFieldValidator #txthzip : TextBox #lstCardType : DropDownList #lstExpMonth : DropDownList #lstExpYear : DropDownList #RegularExpressionValidator3 : RegularExpressionValidator #txtCCNumber : TextBox #Label3 : Label #Label1 : Label #Label2 : Label #holder : PlaceHolder #RequiredFieldValidator10 : RequiredFieldValidator -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnSubmit_Click(in sender : object, in e : EventArgs) #RegularExpressionValidator3 : RegularExpressionValidator #lblTest : Label #RegularExpressionValidator4 : RegularExpressionValidator #RegularExpressionValidator1 : RegularExpressionValidator #btnSubmit : Button #txtFirstName : TextBox #txtLastName : TextBox #txtAddress : TextBox #txtCity : TextBox #txtPhone : TextBox #txtCCNumber : TextBox #lstState : DropDownList #lstCardType : DropDownList #RequiredFieldValidator3 : RequiredFieldValidator #RequiredFieldValidator4 : RequiredFieldValidator #RequiredFieldValidator5 : RequiredFieldValidator #RequiredFieldValidator6 : RequiredFieldValidator #RequiredFieldValidator7 : RequiredFieldValidator #RequiredFieldValidator9 : RequiredFieldValidator #txtZip : TextBox #RequiredFieldValidator10 : RequiredFieldValidator #lstExpMonth : DropDownList #lblUserName : Label #Label3 : Label #Label1 : Label #Label2 : Label #lstExpYear : DropDownList -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -userInfo() -SelectListItem(in list : DropDownList, in text : string) -btnSubmit_Click(in sender : object, in e : EventArgs) Component Design (cont) Presentation Tier Hotel::RequestAccount #lblTest : Label #RegularExpressionValidator4 : RegularExpressionValidator #RegularExpressionValidator2 : RegularExpressionValidator #RegularExpressionValidator1 : RegularExpressionValidator #RequiredFieldValidator1 : RequiredFieldValidator #ValUserID : RequiredFieldValidator #btnSubmit : Button #txtUserID : TextBox #txtPassword : TextBox #txtEmail : TextBox #txtHAddress : TextBox #txtHCity : TextBox #txtHPhone : TextBox #lstHState : DropDownList #RequiredFieldValidator3 : RequiredFieldValidator #RequiredFieldValidator5 : RequiredFieldValidator #RequiredFieldValidator6 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator #RequiredFieldValidator9 : RequiredFieldValidator #txthzip : TextBox #txtCompanyName : TextBox #Label3 : Label #Label1 : Label #holder : PlaceHolder #RequiredFieldValidator10 : RequiredFieldValidator -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnSubmit_Click(in sender : object, in e : EventArgs) Hotel::SignOut -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() Component Design (cont) Presentation Tier TravelAgent::SalesReport TravelAgent::GuestInformation #calDate1 : Calendar #btnCalender1 : ImageButton #btnCalander2 : ImageButton #btnReport : Button #pnlReport : Panel #lblSales : Label #lblComm : Label #lblEnding : Label #lblStarting : Label #lbltitle : Label #Label3 : Label #Label2 : Label #txtStarting : TextBox #txtEnding : TextBox #RequiredFieldValidator1 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator #CompareValidator1 : CompareValidator #ValidationSummary1 : ValidationSummary #calDate2 : Calendar -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnCalender1_Click(in sender : object, in e : ImageClickEventArgs) -btnCalander2_Click(in sender : object, in e : ImageClickEventArgs) -calDate1_SelectionChanged(in sender : object, in e : EventArgs) -calDate2_SelectionChanged(in sender : object, in e : EventArgs) -btnReport_Click(in sender : object, in e : EventArgs) #Label1 : Label #RegularExpressionValidator3 : RegularExpressionValidator #lblTest : Label #RegularExpressionValidator4 : RegularExpressionValidator #RegularExpressionValidator1 : RegularExpressionValidator #btnSubmit : Button #txtFirstName : TextBox #txtLastName : TextBox #txtHAddress : TextBox #txtHCity : TextBox #txtHPhone : TextBox #txtCCNumber : TextBox #lstHState : DropDownList #lstCardType : DropDownList #RequiredFieldValidator3 : RequiredFieldValidator #RequiredFieldValidator4 : RequiredFieldValidator #RequiredFieldValidator5 : RequiredFieldValidator #RequiredFieldValidator6 : RequiredFieldValidator #RequiredFieldValidator7 : RequiredFieldValidator #RequiredFieldValidator9 : RequiredFieldValidator #txthzip : TextBox #RequiredFieldValidator10 : RequiredFieldValidator #lstExpMonth : DropDownList #lstExpYear : DropDownList #RegularExpressionValidator2 : RegularExpressionValidator #txtEmail : TextBox #RequiredFieldValidator2 : RequiredFieldValidator #Label3 : Label -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnSubmit_Click(in sender : object, in e : EventArgs) Component Design (cont) Presentation Tier Administrator::AddHotel Administrator::AddRoom #txtHotelName : TextBox #txtPhoneNumber : TextBox #txtAddress : TextBox #txtCity : TextBox #txtZip : TextBox #lstStar : DropDownList #btnAdd : Button #Label1 : Label #txtHotelID : TextBox #CompareValidator1 : CompareValidator #RequiredFieldValidator1 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator #RegularExpressionValidator1 : RegularExpressionValidator #RequiredFieldValidator3 : RequiredFieldValidator #RequiredFieldValidator4 : RequiredFieldValidator #RequiredFieldValidator5 : RequiredFieldValidator #RequiredFieldValidator6 : RequiredFieldValidator #RegularExpressionValidator2 : RegularExpressionValidator #lblMessage : Label #Label2 : Label #Label3 : Label #lblTitle : Label #lstState : DropDownList -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnAdd_Click(in sender : object, in e : EventArgs) #btnAdd : Button #lblHName : Label #RequiredFieldValidator7 : RequiredFieldValidator #CompareValidator2 : CompareValidator #Label3 : Label #Label1 : Label #Label2 : Label #btnFind : Button #txtHID : TextBox #lblDoorNumber : Label #lblBedType : Label #lblSmoking : Label #lblAccessible : Label #lblPrice : Label #txtDoorNumber : TextBox #txtPrice : TextBox #RequiredFieldValidator1 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator #CompareValidator1 : CompareValidator #CompareValidator3 : CompareValidator #ValidationSummary1 : ValidationSummary #lblMessage : Label #lstBed : DropDownList #lstSmoking : DropDownList #lstAccessible : DropDownList #lblMessage1 : Label -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnFind_Click(in sender : object, in e : EventArgs) -display(in hotel : Hotel) -btnAdd_Click(in sender : object, in e : EventArgs) Component Design (cont) Presentation Tier Administrator::Report Administrator::ApproveTravelAgent #Label1 : Label #Label2 : Label #lblTitle : Label #dataSetTravelAgent1 : DataSetTravelAgent #lblMessage : Label #dgAgent : DataGrid #Label3 : Label -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -display() -DataGrid1_SelectedIndexChanged(in sender : object, in e : EventArgs) -disApprove(in source : object, in e : DataGridCommandEventArgs) #ValidationSummary1 : ValidationSummary #btnReport : Button #txtEnding : TextBox #calDate1 : Calendar #btnCalender1 : ImageButton #btnCalander2 : ImageButton #txtStarting : TextBox #calDate2 : Calendar #CompareValidator1 : CompareValidator #RequiredFieldValidator1 : RequiredFieldValidator #pnlReport : Panel #lbltitle : Label #lblEnding : Label #lblStarting : Label #lblName : Label #txtHotelID : TextBox #RequiredFieldValidator3 : RequiredFieldValidator #CompareValidator2 : CompareValidator #lblMessage : Label #lblAddress : Label #lblOccupancy : Label #Label3 : Label #Label1 : Label #RequiredFieldValidator2 : RequiredFieldValidator -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -calDate1_SelectionChanged(in sender : object, in e : EventArgs) -calDate2_SelectionChanged(in sender : object, in e : EventArgs) -btnCalender1_Click(in sender : object, in e : ImageClickEventArgs) -btnCalander2_Click(in sender : object, in e : ImageClickEventArgs) -btnReport_Click(in sender : object, in e : EventArgs) Component Design (cont) Presentation Tier Administrator::UpdateHotel #lblMessage : Label #RegularExpressionValidator2 : RegularExpressionValidator #RequiredFieldValidator5 : RequiredFieldValidator #RegularExpressionValidator1 : RegularExpressionValidator #RequiredFieldValidator1 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator #RequiredFieldValidator3 : RequiredFieldValidator #RequiredFieldValidator4 : RequiredFieldValidator #Label1 : Label #Label3 : Label #btnUpdate : Button #Label2 : Label #txtHID : TextBox #RequiredFieldValidator7 : RequiredFieldValidator #CompareValidator2 : CompareValidator #btnFind : Button #txtHotelName : TextBox #txtPhoneNumber : TextBox #lstStar : DropDownList #txtAddress : TextBox #txtCity : TextBox #txtZip : TextBox #lblHotelID : Label #lblHotelName : Label #lblPhone : Label #lblRating : Label #lblAddress : Label #lblCity : Label #lblZip : Label #lstState : DropDownList #lblState : Label #lblHotelInfo : Label #lblHID : Label #lblMessage1 : Label -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnFind_Click(in sender : object, in e : EventArgs) -display(in hotel : Hotel) -SelectListItem(in list : DropDownList, in text : string) -btnUpdate_Click(in sender : object, in e : EventArgs) Administrator::UpdateRoom #Label1 : Label #Label2 : Label #btnFind : Button #txtHID : TextBox #RequiredFieldValidator7 : RequiredFieldValidator #CompareValidator2 : CompareValidator #lblMessage1 : Label #lblMessage : Label #dataSetRoom1 : DataSetRoom #dgRoom : DataGrid #lblTitle : Label #Label3 : Label -Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs) -InitializeComponent() -btnFind_Click(in sender : object, in e : EventArgs) -display(in hotelID : string) -OnEdit(in source : object, in e : DataGridCommandEventArgs) -OnCancel(in source : object, in e : DataGridCommandEventArgs) -OnUpdate(in source : object, in e : DataGridCommandEventArgs) -validEntries(in price : string) : bool -ChangePage(in source : object, in e : DataGridPageChangedEventArgs) -sortDoorNumber(in source : object, in e : DataGridSortCommandEventArgs) -PreSelect(in sender : object, in e : DataGridItemEventArgs) Component Design (cont) Middle Tier User -m_userName : string -m_email : string -m_password : string -m_phone : string -m_address : string -m_city : string -m_state : string -m_zip : string +User() +VerifyLogin(in user : User) : bool +isValidUserName(in userName : string) : bool +getUser(in user : User) +userName() : string +email() : string +password() : string +address() : string +city() : string +state() : string +zip() : string +phone() : string Component Design (cont) Middle Tier TravelAgent -m_companyName : string -m_status : string +TravelAgent() +requestAccount(in userName : string, in email : string, in password : string, in companyName : string, in phone : string, in address : string, in city : string, in state : string, in zip : string) : bool +totalSales(in userName : string, in startingDate : string, in endingDate : string) : string +salesCommussion(in totalSales : double) : double +companyName() : string +status() : string Component Design (cont) Middle Tier Customer -m_firstName : string -m_lastName : string -m_cardType : string -m_cardNumber : long -m_experationDate : string +Customer() +createAccount(in userName : string, in email : string, in password : string, in firstName : string, in lastName : string, in cardType : string, in cardNumber : long, in experation : string, in phone : string, in address : string, in city : string, in state : string, in zip : int) : bool +updateAccount(in userName : string, in firstName : string, in lastName : string, in cardType : string, in cardNumber : long, in experationDate : string, in phone : string, in address : string, in city : string, in state : string, in zip : string) : bool +firstName() : string +lastName() : string +cardType() : string +cardNumber() : long +experationDate() : string Component Design (cont) Middle Tier Administrator -m_userName : string -m_password : string +Administrator() +VerifyLogin(in userName : string, in password : string) : bool +getWaitingAgent() : DataSetTravelAgent +approveAccount(in userName : string) : bool +disApproveAccount(in userName : string) : bool +occupancyReport(in hotelID : string, in startingDate : string, in endingDate : string) : string +userName() : string +password() : string Mail +Mail() +sendMail(in e_address : string) : bool +approveAccount(in e_address : string) : bool +disApproveAccount(in e_address : string) : bool Component Design (cont) Middle Tier Hotel -m_hotelID : string -m_name : string -m_street : string -m_city : string -m_state : string -m_zip : string -m_phone : string -m_rating : int +Hotel() +isValidHID(in hotelID : string) : bool +findHotel(in city : string, in state : string) : dsHotelResult +getHotel(in hotelID : string) : bool +newHotel(in hotelID : string, in name : string, in address : string, in city : string, in state : string, in zip : string, in phone : string, in rating : int) : bool +updateHotel(in hotelID : string, in name : string, in address : string, in city : string, in state : string, in zip : string, in phone : string, in rating : int) : bool +numberOfRoom(in hotelID : string) : int +occupancyRate(in hotelID : string, in startingDate : string, in endingDate : string) : double +hotelID() : string +name() : string +street() : string +city() : string +state() : string +zip() : string +phone() : string +rating() : int Component Design (cont) Middle Tier Room -m_roomNumber : int -m_price : double -m_bedType : string -m_smoking : string -m_handicap_access : string -m_roomLock : string +Room() +isValidDoorNumber(in doorNumber : string, in hotelID : string) : bool +getRoomAvl(in hotelID : string, in bed : string, in smoking : string, in handicap_access : string, in checkIn : string, in checkOut : string) : DataSetAvlRoom +getRoomAvl(in hotelID : string, in bed : string, in smoking : string, in handicap_access : string, in checkIn : string, in checkOut : string, in price : double) : DataSetAvlRoom +getRoomAvl(in hotelID : string, in bed : string, in smoking : string, in handicap_access : string, in checkIn : string, in checkOut : string, in price : double, in ds : DataSetAvlRoom) : DataSetAvlRoom +getRoomAvlPrice(in hotelID : string, in price : string, in checkIn : string, in checkOut : string) : DataSetAvlRoom +getRoomAvlPrice(in hotelID : string, in bed : string, in smoking : string, in handicap_access : string, in checkIn : string, in checkOut : string, in price : double) : DataSetAvlRoom +getRoom(in roomNumber : string) : DataSetAvlRoom +getRoom(in roomNumber : string, in ds : DataSetAvlRoom) : DataSetAvlRoom +getAllRoom(in hotelID : string) : DataSetRoom +newRoom(in hotelID : string, in doorNumber : string, in price : double, in bedType : string, in smoking : string, in handicap_access : string) : bool +updateRoom(in roomNumber : int, in price : double, in bedType : string, in smoking : string, in handicap_access : string) : bool +roomNumber() : int +price() : double +bedType() : string +smoking() : string +handicap_access() : string +roomLock() : string Component Design (cont) Middle Tier Reservation -m_reservationNumber : int -m_checkIn : string -m_checkOut : string -m_resvDate : string -m_price : double -m_totalCost : double -m_roomNumber : int -m_userName : string -m_hotelID : string +Reservation() +makeReservation(in r : Reservation) : bool +agentMakeReservation(in r : Reservation, in guest : Customer) : bool +getReservation(in reservationNumber : int) : DataSetReservation +cancelReservation(in reservationNumber : int) : bool +calculateTotal(in r : Reservation) : double +calculateTax(in r : Reservation) : double +reservationNumber() : int +checkIn() : string +checkOut() : string +resvDate() : string +price() : double +totalCost() : double +roomNumber() : int +userName() : string +hotelID() : string Component Design (cont) Middle Tier Database Guest -m_reservationNumber : long +Guest() +getGuest(in guest : Guest) +reservationNumber() : long +deleteGuest(in reservationNumber : int) : bool Error -EVENT_LOG_SOURCE : string = "HRS" +Log(in message : string) +Database() -conString() +queryLogin() +queryIsValidUserName() +queryIsValidAgentUserName() +queryGetUserInfo() +queryGetGuestInfo() +querySaveNewCustomer() +queryUpdateCustomerAccount() +querySaveNewReservation() +querySaveAgentReservation() +querySaveGuestInfo() +queryLoginAdmin() +queryNumOfRsrv() +queryFindHotel() +queryGetHotel() +queryIsValidHID() +querySaveNewHotel() +queryUpdateHotel() +queryNumberOfRoom() +queryIsValidDoorNumber() +queryGetAllRoom() +getRoomAvl() +getRoomAvl() +getRoomAvl() +queryRoomAvlPrice() +queryRoomAvlPrice() +queryGetRoom() +queryGetRoom() +querySaveNewRoom() -queryCreateRoomID() +queryUpdateRoom() +queryGetReservation() +queryCancelReservation() +queryDeleteGuest() +queryGetWaitingAgent() +queryApproveAccount() +queryDisApproveAccount() +queryTotalSales() +queryRequestAccount() Component Design (cont) Data Tier Assessment Evaluation Test Case Results Assessment Evaluation (cont) Performance Testing with JMeter Test Scenario Search hotel List hotels for particular search Select an hotel List available rooms Reserve rooms Login Place the reservation Display confirmation numbers Assessment Evaluation (cont) 1 user, 14 http request, 5 repeat Deviation = 17 ms Throughput = 1606.73 /min Average = 33 ms CPU usage = 30 % Assessment Evaluation (cont) 10 user, 14 http request, 5 repeat Deviation = 113 ms Throughput = 1548.72 /min Average = 372 ms CPU usage = 100 % Assessment Evaluation (cont) 30 user, 14 http request, 5 repeat Deviation = 123 ms Throughput = 2792.24 /min Average = 526 ms CPU usage = 100 % Assessment Evaluation (cont) Performance Testing Result Summary Assessment Evaluation (cont) Performance Analyze VTune Performance Analyzers is used to profile of performance of the customer site Test Scenario Search hotel List hotels for particular search Select an hotel List available rooms Reserve rooms Login Place the reservation Display confirmation numbers Assessment Evaluation (cont) 1 user , 14 http request and 5 repeat CPU usage 100 % Assessment Evaluation (cont) Assessment Evaluation (cont) 10 user , 14 http request and 5 repeat CPU usage 100 % User Manual The installation and set up guide and a detailed walkthrough of the project is provided in the user manual. Code Documentation MSDN-online style web pages Project Evaluation SLOC (Actual) Line of C# code = 3039 Line of auto generated C# code = 741 Line of XML code = 281 Line of HTML code = 120 Line of SQL code = 90 Line of CSS code = 53 Total 4324 SLOC (Predicted) Phase I (similar examples) = 2400 Phase II (Prototype) = 3200 Project Evaluation (cont) Project duration (actual) Phase I = 108.4 hrs Phase II = 122.84 hrs Phase III = 257.83 hrs Total = 489.17 hrs Project duration (estimate) = 382 hrs Project Evaluation (cont) Break Down for Each Phase Phase I, 108.4, 22% Phase I Phase II Phase III Phase III, 257.83, 53% Phase II, 122.84, 25% Project Evaluation (cont) Phase I Break Down Documentation, 27.6, 25% Testing, 0, 0% Research Design Coding Coding, 18, 17% Research, 60.8, 56% Design, 2, 2% Testing Documentation Project Evaluation (cont) Phase II Break Down Research, 19.08, 16% Research Documentation, 50.7, 40% Design, 21.5, 18% Design Coding Testing Documentation Testing, 0, 0% Coding, 31.56, 26% Project Evaluation (cont) Phase III Break Down Documentation, 38, 15% Research, 18.58, 7% Design, 6, 2% Testing, 34, 13% Research Design Coding Testing Documentation Coding, 161.25, 63% Lesson Learnt Learning new technologies Importance of design Working on project that had 4300 SLOC Demo Questions / Comments