Sie sind auf Seite 1von 52

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 reservations web
site. Administrator can add/update the hotel and
the room information approve/disapprove a new
travel agents 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 : 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 information
2: 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 Logic
Components
(C# Class
Library)
Data Access via
ADO.NET
Middle-Tier
CLR
HRS
Database
MsSQL
Server
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