Online Hotel Reservation System MSE Presentation III Cem Oguzhan.

52
Online Hotel Reservation System MSE Presentation III Cem Oguzhan

Transcript of Online Hotel Reservation System MSE Presentation III Cem Oguzhan.

Online Hotel Reservation System

MSE Presentation IIICem 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.

Customer

firstName : StringlastName : StringcardType : StringcardNumber : longexperationDate : String

createAccount()updateAccount()

Mail

sendMail(e_address : String) : BooleanapproveAccount(e-address : String) : BooleandisApproveAccount(e_address : String) : Boolean

Database

conString()queryLogin()queryIsValidUserName()queryIsValidAgentUserName()queyGetUserInfo()queryGetGuestInfo()querySaveNewCustomer()queyUpdateCustomerAccount()querySaveNewReservation()querySaveAgentReservation()querySaveGuestInfo()queryLoginAdmin()queryNumOfReserv()queryFindHotel()queryGetHotel()queryIsValidHID()querySaveNewHotel()queryUpdateHotel()queryNumberOfRoom()queryIsValidDoorNumber()queryGetAllRoom()getRoomAvl()getRoomAvl()getRoomAvl()queryRoomAvlPrice()queryRoomAvlPrice()queryGetRoom()querySaveNewRoom()queryCreateRoomID()queryUpdateRooml()queryGetReservation()queryCancelReservation()queryDeleteGuest()queryGetWaitingAgent()queryApproveAccount()queryDisApproveAccount()queryTotalSales()queryRequestAccount()

User

userName : Stringemail : Stringpassword : Stringphone : Stringaddress : Stringcity : Stringstate : Stringzip : String

verifyLogin()isValidUserName()getUser()

Room

roomNumber : Integerprice : DoublebedType : Stringsmoking : Stringhandicab_access : StringroomLock : Date

getRoomAvl()getRoomAvl()getRoomAvl()getRoomAvlPrice()getRoomAvlPrice()getRoom()getRoom()getAllRoom()newRoom()updateRoom()isValidDoorNumber()

Reservation

reservationNumber : IntegercheckIn : DatecheckOut : DateresvDate : Dateprice : DoubletotalCost : Double

makeReservation()agentMakeReservation()getReservation()cancelReservation()calculateTotal()calculateTax()

10..*

+allocation

1

+theReservation

0..*0..*

1

+theReservation

0..*

+theUser1

TravelAgent

companyName : Stringstatus : String

requestAccount()totalSales()salesCommission()

1

0..*

Hotel

hotelID : Stringname : Stringaddress : Stringcity : Stringstate : Stringzip : Stringphone : Stringrating : Integer

findHotel()getHotel()newHotel()updateHotel()numberOfRoom()occupancyRate()isValidHotelID()

1..*

1

+theRoom 1..*

+theHotel1

0..*

1

+theReservation

0..*

+theHotel

1

Administrator

userName : Stringpassword : String

verifyLogin()getWaitingAgent()approveAccount()disApproveAccount()occupancyReport()

0..*

1

+requestAccount

0..*

+approveAccount

1

1

0..*

0..*

1+theHotel

0..*

+theAdmin

1

GuestreservationNumber : long

getGuest()reservationNumber()deleteGuest()

ErrorEVENT_LOG_SOURCE : String = "HRS"

Log()

Action Items (Cont)

: User : User : SignIn.aspx : SignIn.aspx : User : User : EditAccount.aspx : EditAccount.aspx : Database : Database

1: user provides requested information

2: verifyLogin()

4: [verifyLogin = true] directRequestedPage

3: queryLogin(User)

Action Items (cont)

Detail View

Action Items (cont)

: User : User : CancelReservation.aspx : CancelReservation.aspx : Reservation : Reservation : ConfirmCancelReservation.aspx : ConfirmCancelReservation.aspx : Database : Database

1: provides requested information

5: cancel

2: getReservation(reservationNumber)

6: cancelReservation(reservationNumber)

8: [cancelReservation = true] directConfirmCancelReservation.aspx

3: queryGetReservation(reservationNumber)

7: queryCancelReservation(reservationNumber)

4: [dataSet.Rows.Count >0 && dataSet.Tables["Reservation"].Rows[0]["UserName"] == Session["User"] ]display()

Action Items (cont)

: Agent : Agent : RequestAccount.aspx : RequestAccount.aspx : TravelAgent : TravelAgent : Database : Database : Mail : Mail : ConfirmRequestAccount.aspx : 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

1: provide requested information

4: [isValid = true] requestAccount()

6: [requestAccount = true] sendMail(e_address)

5: queryInsertAccount()

7: [requestAccount = true] directed ConfirmRequestAccount.aspx

2: isValidUserName(userName)

3: queryIsValidUserName(userName)

Action Items (cont)

: Agent : Agent : SalesReport.aspx : SalesReport.aspx : TravelAgent : TravelAgent : Database : Database

1: provides requested information2: totalSales(userName, startingDate, endingDate)

3: queryTotalSales(userName, startingDate, endingDate)

4: totalSales

5: salesCommussion(totalSales)

6: commussion

Action Items (cont)

Component Design

IIS 5.0 Server

Business LogicComponents

(C# ClassLibrary)

Data Access viaADO.NET

Middle-Tier

CLR

HRSDatabase

MsSQLServer

ASP.NET

Clients

The diagram shows 3-tier type of architecture.

Component Design (cont) Presentation tier

-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)

#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

Hotel::FindHotel

-Page_Load(in sender : object, in e : EventArgs)#OnInit(in e : EventArgs)-InitializeComponent()-BindData()-dg_SelectedIndexChanged(in sender : object, in e : EventArgs)

#dg : DataGrid#lblTest : Label#lblMessage : Label#Label3 : Label#Label1 : Label#Label2 : Label#holder : PlaceHolder#dsHotelResult1 : dsHotelResult

Hotel::HotelResult

Component Design (cont)Presentation Tier

-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)

#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

Hotel::AvailableRoom

-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)

#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

Hotel::RoomPreferences

Component Design (cont)Presentation Tier

-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)

#txtUserName : TextBox#txtPassword : TextBox#btnSignIn : Button#lblMessage : Label#Label3 : Label#Label1 : Label#Label2 : Label#RequiredFieldValidator1 : RequiredFieldValidator#RequiredFieldValidator2 : RequiredFieldValidator#btnRegister : Button

Hotel::SignIn

-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

#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

Secure::Reservation

Component Design (cont)Presentation Tier

-Page_Load(in sender : object, in e : EventArgs)#OnInit(in e : EventArgs)-InitializeComponent()-confirmationNumber()-display(in i : int, in reservNumber : string)

#lblRsrvNum1 : Label#lblConfNum1 : Label#lblConfNum2 : Label#lblConfNum3 : Label#lblRsrvNum2 : Label#lblTest : Label#Label3 : Label#Label1 : Label#Label2 : Label#lblRsrvNum3 : Label

Secure::ConfirmReservation

-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)

#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

Secure::CancelReservation

Component Design (cont)Presentation Tier

-Page_Load(in sender : object, in e : EventArgs)#OnInit(in e : EventArgs)-InitializeComponent()-btnSubmit_Click(in sender : object, in e : EventArgs)

#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

Hotel::CreateNewAccount

-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)

#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

Secure::Edit

Component Design (cont)Presentation Tier

-Page_Load(in sender : object, in e : EventArgs)#OnInit(in e : EventArgs)-InitializeComponent()-btnSubmit_Click(in sender : object, in e : EventArgs)

#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

Hotel::RequestAccount

-Page_Load(in sender : object, in e : EventArgs)#OnInit(in e : EventArgs)-InitializeComponent()

Hotel::SignOut

Component Design (cont)Presentation Tier

-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)

#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

TravelAgent::SalesReport

-Page_Load(in sender : object, in e : EventArgs)#OnInit(in e : EventArgs)-InitializeComponent()-btnSubmit_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

TravelAgent::GuestInformation

Component Design (cont)Presentation Tier

-Page_Load(in sender : object, in e : EventArgs)#OnInit(in e : EventArgs)-InitializeComponent()-btnAdd_Click(in sender : object, in e : EventArgs)

#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

Administrator::AddHotel

-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)

#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

Administrator::AddRoom

Component Design (cont)Presentation Tier

-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)

#Label1 : Label#Label2 : Label#lblTitle : Label#dataSetTravelAgent1 : DataSetTravelAgent#lblMessage : Label#dgAgent : DataGrid#Label3 : Label

Administrator::ApproveTravelAgent

-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)

#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

Administrator::Report

Component Design (cont)Presentation Tier

-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)

#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

Administrator::UpdateHotel

-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)

#Label1 : Label#Label2 : Label#btnFind : Button#txtHID : TextBox#RequiredFieldValidator7 : RequiredFieldValidator#CompareValidator2 : CompareValidator#lblMessage1 : Label#lblMessage : Label#dataSetRoom1 : DataSetRoom#dgRoom : DataGrid#lblTitle : Label#Label3 : Label

Administrator::UpdateRoom

Component Design (cont)Middle Tier

+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

-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

Component Design (cont)Middle Tier

+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

-m_companyName : string-m_status : string

TravelAgent

Component Design (cont)Middle Tier

+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

-m_firstName : string-m_lastName : string-m_cardType : string-m_cardNumber : long-m_experationDate : string

Customer

Component Design (cont)Middle Tier

+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

-m_userName : string-m_password : string

Administrator

+Mail()+sendMail(in e_address : string) : bool+approveAccount(in e_address : string) : bool+disApproveAccount(in e_address : string) : bool

Mail

Component Design (cont)Middle Tier

+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

-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

Component Design (cont)Middle Tier

+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

-m_roomNumber : int-m_price : double-m_bedType : string-m_smoking : string-m_handicap_access : string-m_roomLock : string

Room

Component Design (cont)Middle Tier

+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

-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

Component Design (cont)Middle Tier

+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()

Database

+Guest()+getGuest(in guest : Guest)+reservationNumber() : long+deleteGuest(in reservationNumber : int) : bool

-m_reservationNumber : long

Guest

+Log(in message : string)

-EVENT_LOG_SOURCE : string = "HRS"

Error

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 II, 122.84, 25%

Phase III, 257.83, 53%

Phase I

Phase II

Phase III

Project Evaluation (cont)Phase I Break Down

Documentation, 27.6, 25%

Research, 60.8, 56%Design, 2, 2%

Coding, 18, 17%

Testing, 0, 0%

Research

Design

Coding

Testing

Documentation

Project Evaluation (cont)Phase II Break Down

Research, 19.08, 16%

Design, 21.5, 18%

Coding, 31.56, 26%Testing, 0, 0%

Documentation, 50.7, 40%

Research

Design

Coding

Testing

Documentation

Project Evaluation (cont)Phase III Break Down

Research, 18.58, 7%

Coding, 161.25, 63%

Documentation, 38, 15%

Testing, 34, 13%

Design, 6, 2%

Research

Design

Coding

Testing

Documentation

Lesson Learnt

Learning new technologies Importance of design Working on project that had 4300

SLOC

Demo

Questions / Comments