Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 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 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)
User
userName : String Administrator
email : String userName : String
password : String password : String
phone : String Hotel
address : String 1
verifyLogin() hotelID : String
city : String +approveAccount getWaitingAgent() +theAdmin name : String
state : String 1 approveAccount() address : String
zip : String disApproveAccount() 1 city : String
Mail 0..* occupancyReport() +theHotel state : String
verifyLogin() zip : String
isValidUserName() 0..* phone : String
sendMail(e_address : String) : Boolean
getUser() rating : Integer
approveAccount(e-address : String) : Boolean
1 +theUser disApproveAccount(e_address : String) : Boolean
+theHotel findHotel()
getHotel()
0..* 1 newHotel()
updateHotel()
numberOfRoom()
occupancyRate()
0..* isValidHotelID()
Customer
+requestAccount 1+theHotel
firstName : String
lastName : String TravelAgent
cardType : String companyName : String
cardNumber : long +theRoom 1..*
status : String 1
experationDate : String Room
requestAccount() roomNumber : Integer
createAccount() totalSales() +theReservation price : Double
Reservation
updateAccount() salesCommission() bedType : String
reservationNumber : Integer smoking : String
checkIn : Date 0..*
handicab_access : String
checkOut : Date roomLock : Date
resvDate : Date
price : Double +allocation getRoomAvl()
Guest +theReservation totalCost : Double +theReservation
getRoomAvl()
reservationNumber : long 0..* 1 getRoomAvl()
0..*
makeReservation() Database getRoomAvlPrice()
getGuest() agentMakeReservation() getRoomAvlPrice()
reservationNumber() getReservation() conString() getRoom()
deleteGuest() cancelReservation() queryLogin() getRoom()
calculateTotal() queryIsValidUserName() getAllRoom()
calculateTax() queryIsValidAgentUserName() newRoom()
queyGetUserInfo() updateRoom()
queryGetGuestInfo() isValidDoorNumber()
querySaveNewCustomer()
queyUpdateCustomerAccount()
querySaveNewReservation()
querySaveAgentReservation()
querySaveGuestInfo()
queryLoginAdmin()
queryNumOfReserv()
queryFindHotel()
queryGetHotel()
queryIsValidHID()
querySaveNewHotel()
Error queryUpdateHotel()
EVENT_LOG_SOURCE : String = "HRS" queryNumberOfRoom()
queryIsValidDoorNumber()
Log() queryGetAllRoom()
getRoomAvl()
getRoomAvl()
getRoomAvl()
queryRoomAvlPrice()
queryRoomAvlPrice()
queryGetRoom()
querySaveNewRoom()
queryCreateRoomID()
queryUpdateRooml()
queryGetReservation()
queryCancelReservation()
queryDeleteGuest()
queryGetWaitingAgent()
queryApproveAccount()
queryDisApproveAccount()
queryTotalSales()
queryRequestAccount()

The class diagram above captures middle-tier, business specific


layer, of the Hotel Reservation System.
Action Items (Cont)
: SignIn.aspx : User : Database : EditAccount.aspx
: User

1: user provides requested information


2: verifyLogin()
3: queryLogin(User)

4: [verifyLogin = true] directRequestedPage


Action Items (cont)

Detail View
Action Items (cont)
: CancelReservation.aspx : Reservation : Database : ConfirmCancelReservation.aspx
: User

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

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
Action Items (cont)

: SalesReport.aspx : TravelAgent : Database


: Agent

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
 The diagram shows
3-tier type of
Clients
IIS 5.0 Server

ASP.NET
architecture.
Middle-Tier

CLR
Business Logic
Components
(C# Class
Library)

Data Access via


ADO.NET

HRS
Database

MsSQL
Server
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 Hotel::HotelResult
#RegularExpressionValidator1 : RegularExpressionValidator
#RegularExpressionValidator2 : RegularExpressionValidator #dg : DataGrid
#RequiredFieldValidator3 : RequiredFieldValidator #lblTest : Label
#ValidationSummary1 : ValidationSummary #lblMessage : Label
#lstCountry : DropDownList
#txtPrice : TextBox
#Label3 : Label
#RegularExpressionValidator3 : RegularExpressionValidator #Label1 : Label
#CompareValidator1 : CompareValidator #Label2 : Label
#lblMessage : Label #holder : PlaceHolder
#Label3 : Label #dsHotelResult1 : dsHotelResult
#Label1 : Label
#Label2 : Label -Page_Load(in sender : object, in e : EventArgs)
#holder : PlaceHolder #OnInit(in e : EventArgs)
#lstSmoking : DropDownList -InitializeComponent()
#lstBed : DropDownList
#lstHandicap : DropDownList
-BindData()
#lstRoom : DropDownList -dg_SelectedIndexChanged(in sender : object, in e : EventArgs)
-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)
Component Design (cont)
Presentation Tier
Hotel::RoomPreferences
Hotel::AvailableRoom
#lblHotel : Label
#lblHotel : Label #lblCheckIn : Label
#lblNumRoom : Label
#lblCheckIn : Label #lstSmoking : DropDownList
#lblCheckOut : Label #lstBed : DropDownList
#lblSmoking : Label
#lblNumRoom : Label #lblBed : Label
#Label3 : Label #btnCheckAval1 : Button
#Label1 : Label #dataSetAvailableRoom1 : DataSetAvailableRoom
#dg : DataGrid
#dsRoom : DataSetAvlRoom #dataSetAvlRoom1 : DataSetAvlRoom
#btnReserve : Button #lblHandicap : Label
#lstHandicap : DropDownList
#dgRoom : DataGrid #lblMessage : Label
#lblMessage : Label #btnSkip : LinkButton
#lblBedType : Label #lblRoom : Label
#lblTest : Label
#lblSmoking : Label #Label3 : Label
#lblAccessible : Label #Label1 : Label
#holder : PlaceHolder
#btnPreferences : Button #lblContinue : Label
#holder : PlaceHolder #lnkCont : LinkButton
#lblCheckOut : Label
-Page_Load(in sender : object, in e : EventArgs) -Page_Load(in sender : object, in e : EventArgs)
#OnInit(in e : EventArgs) #OnInit(in e : EventArgs)
-InitializeComponent() -InitializeComponent()
-btnCheckAval1_Click(in sender : object, in e : EventArgs)
-display() -checkAvailability()
-btnReserve_Click(in sender : object, in e : EventArgs) -dg_SelectedIndexChanged(in sender : object, in e : EventArgs)
-btnSkip_Click(in sender : object, in e : EventArgs)
-btnPreferences_Click(in sender : object, in e : EventArgs) -lnkCont_Click(in sender : object, in e : EventArgs)
Component Design (cont)
Presentation Tier
Secure::Reservation
#lblHotel : Label
#lblName : Label
#lblCheckIn : Label
Hotel::SignIn #lblAddress : Label
#lblCityStateZip : Label
#txtUserName : TextBox #lblSubTotal : Label
#lblTax : Label
#txtPassword : TextBox #lblCheckOut : Label
#btnSignIn : Button #lblDay : Label
#btnReserve : Button
#lblMessage : Label #dsGetRoom : DataSetAvlRoom
#Label3 : Label #lblMessage : Label
#dgReservation : DataGrid
#Label1 : Label #lblTest : Label
#Label2 : Label #lblNumRoom : Label
#Label3 : Label
#RequiredFieldValidator1 : RequiredFieldValidator #Label1 : Label
#RequiredFieldValidator2 : RequiredFieldValidator #Label2 : Label
#btnRegister : Button #lblTotalAmount : Label
-Page_Load(in sender : object, in e : EventArgs)
-Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs)
#OnInit(in e : EventArgs) -InitializeComponent()
-userInfo()
-InitializeComponent() -reservInfo()
-btnSignIn_Click(in sender : object, in e : EventArgs) -FillTheReservation()
-removeRoom(in rid : string, in sessionVar : string) : string
-btnRegister_Click(in sender : object, in e : EventArgs) -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
#lblMessage : Label
#btnFind : Button
Secure::ConfirmReservation #txtRsrvNumber : TextBox
#RegularExpressionValidator1 : RegularExpressionValidator
#lblRsrvNum1 : Label #RequiredFieldValidator1 : RequiredFieldValidator
#lblErrorMessage : Label
#lblConfNum1 : Label #Label3 : Label
#Label1 : Label
#lblConfNum2 : Label #Label2 : Label
#lblHotelInfo : Label
#lblConfNum3 : Label #lblHotelPhone : Label
#lblRsrvNum2 : Label #lblPhone : Label
#lblHotelAddress : Label
#lblTest : Label #lblAddress : Label
#lblHotelName : Label
#Label3 : Label #lblHotel : Label
#lblRoom : Label
#Label1 : Label #panel : Panel
#Label2 : Label #lblAccessible : Label
#lblHandicap : Label
#lblRsrvNum3 : Label #lblSmokingType : Label
#lblSmoking : Label
-Page_Load(in sender : object, in e : EventArgs) #lblBedType : Label
#lblBed : Label
#OnInit(in e : EventArgs) #lblRsrv : Label
#dgReservation : DataGrid
-InitializeComponent() #dataSetReservation1 : DataSetReservation
-confirmationNumber() -Page_Load(in sender : object, in e : EventArgs)
#OnInit(in e : EventArgs)
-display(in i : int, in reservNumber : string) -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 #RegularExpressionValidator3 : RegularExpressionValidator
#RegularExpressionValidator4 : RegularExpressionValidator
#lblTest : Label
#RegularExpressionValidator2 : RegularExpressionValidator
#RegularExpressionValidator1 : RegularExpressionValidator #RegularExpressionValidator4 : RegularExpressionValidator
#RequiredFieldValidator1 : RequiredFieldValidator #RegularExpressionValidator1 : RegularExpressionValidator
#ValUserID : RequiredFieldValidator #btnSubmit : Button
#btnSubmit : Button #txtFirstName : TextBox
#txtUserID : TextBox #txtLastName : TextBox
#txtPassword : TextBox #txtAddress : TextBox
#txtEmail : TextBox
#txtCity : TextBox
#txtFirstName : TextBox
#txtLastName : TextBox #txtPhone : TextBox
#txtHAddress : TextBox #txtCCNumber : TextBox
#txtHCity : TextBox #lstState : DropDownList
#txtHPhone : TextBox #lstCardType : DropDownList
#lstHState : DropDownList #RequiredFieldValidator3 : RequiredFieldValidator
#RequiredFieldValidator3 : RequiredFieldValidator #RequiredFieldValidator4 : RequiredFieldValidator
#RequiredFieldValidator4 : RequiredFieldValidator
#RequiredFieldValidator5 : RequiredFieldValidator
#RequiredFieldValidator5 : RequiredFieldValidator
#RequiredFieldValidator6 : RequiredFieldValidator #RequiredFieldValidator6 : RequiredFieldValidator
#RequiredFieldValidator7 : RequiredFieldValidator #RequiredFieldValidator7 : RequiredFieldValidator
#RequiredFieldValidator2 : RequiredFieldValidator #RequiredFieldValidator9 : RequiredFieldValidator
#RequiredFieldValidator9 : RequiredFieldValidator #txtZip : TextBox
#txthzip : TextBox #RequiredFieldValidator10 : RequiredFieldValidator
#lstCardType : DropDownList #lstExpMonth : DropDownList
#lstExpMonth : DropDownList
#lblUserName : Label
#lstExpYear : DropDownList
#RegularExpressionValidator3 : RegularExpressionValidator #Label3 : Label
#txtCCNumber : TextBox #Label1 : Label
#Label3 : Label #Label2 : Label
#Label1 : Label #lstExpYear : DropDownList
#Label2 : Label
-Page_Load(in sender : object, in e : EventArgs)
#holder : PlaceHolder
#RequiredFieldValidator10 : RequiredFieldValidator
#OnInit(in e : EventArgs)
-InitializeComponent()
-Page_Load(in sender : object, in e : EventArgs)
#OnInit(in e : EventArgs) -userInfo()
-InitializeComponent() -SelectListItem(in list : DropDownList, in text : string)
-btnSubmit_Click(in sender : object, in e : EventArgs) -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 Hotel::SignOut
#txtHCity : TextBox
#txtHPhone : TextBox
#lstHState : DropDownList
#RequiredFieldValidator3 : RequiredFieldValidator -Page_Load(in sender : object, in e : EventArgs)
#RequiredFieldValidator5 : RequiredFieldValidator
#RequiredFieldValidator6 : RequiredFieldValidator #OnInit(in e : EventArgs)
#RequiredFieldValidator2 : RequiredFieldValidator
#RequiredFieldValidator9 : RequiredFieldValidator
-InitializeComponent()
#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)
Component Design (cont)
Presentation Tier
TravelAgent::SalesReport TravelAgent::GuestInformation
#Label1 : Label
#calDate1 : Calendar
#RegularExpressionValidator3 : RegularExpressionValidator
#btnCalender1 : ImageButton #lblTest : Label
#btnCalander2 : ImageButton #RegularExpressionValidator4 : RegularExpressionValidator
#btnReport : Button #RegularExpressionValidator1 : RegularExpressionValidator
#pnlReport : Panel #btnSubmit : Button
#lblSales : Label #txtFirstName : TextBox
#txtLastName : TextBox
#lblComm : Label
#txtHAddress : TextBox
#lblEnding : Label #txtHCity : TextBox
#lblStarting : Label #txtHPhone : TextBox
#lbltitle : Label #txtCCNumber : TextBox
#Label3 : Label #lstHState : DropDownList
#Label2 : Label #lstCardType : DropDownList
#RequiredFieldValidator3 : RequiredFieldValidator
#txtStarting : TextBox
#RequiredFieldValidator4 : RequiredFieldValidator
#txtEnding : TextBox #RequiredFieldValidator5 : RequiredFieldValidator
#RequiredFieldValidator1 : RequiredFieldValidator #RequiredFieldValidator6 : RequiredFieldValidator
#RequiredFieldValidator2 : RequiredFieldValidator #RequiredFieldValidator7 : RequiredFieldValidator
#CompareValidator1 : CompareValidator #RequiredFieldValidator9 : RequiredFieldValidator
#ValidationSummary1 : ValidationSummary #txthzip : TextBox
#RequiredFieldValidator10 : RequiredFieldValidator
#calDate2 : Calendar
#lstExpMonth : DropDownList
-Page_Load(in sender : object, in e : EventArgs) #lstExpYear : DropDownList
#OnInit(in e : EventArgs) #RegularExpressionValidator2 : RegularExpressionValidator
-InitializeComponent() #txtEmail : TextBox
#RequiredFieldValidator2 : RequiredFieldValidator
-btnCalender1_Click(in sender : object, in e : ImageClickEventArgs)
#Label3 : Label
-btnCalander2_Click(in sender : object, in e : ImageClickEventArgs)
-Page_Load(in sender : object, in e : EventArgs)
-calDate1_SelectionChanged(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs)
-calDate2_SelectionChanged(in sender : object, in e : EventArgs) -InitializeComponent()
-btnReport_Click(in sender : object, in e : EventArgs) -btnSubmit_Click(in sender : object, in e : EventArgs)
Component Design (cont)
Presentation Tier
Administrator::AddHotel Administrator::AddRoom
#btnAdd : Button
#txtHotelName : TextBox
#lblHName : Label
#txtPhoneNumber : TextBox #RequiredFieldValidator7 : RequiredFieldValidator
#txtAddress : TextBox #CompareValidator2 : CompareValidator
#txtCity : TextBox #Label3 : Label
#txtZip : TextBox #Label1 : Label
#lstStar : DropDownList #Label2 : Label
#btnFind : Button
#btnAdd : Button
#txtHID : TextBox
#Label1 : Label #lblDoorNumber : Label
#txtHotelID : TextBox #lblBedType : Label
#CompareValidator1 : CompareValidator #lblSmoking : Label
#RequiredFieldValidator1 : RequiredFieldValidator #lblAccessible : Label
#RequiredFieldValidator2 : RequiredFieldValidator #lblPrice : Label
#txtDoorNumber : TextBox
#RegularExpressionValidator1 : RegularExpressionValidator
#txtPrice : TextBox
#RequiredFieldValidator3 : RequiredFieldValidator #RequiredFieldValidator1 : RequiredFieldValidator
#RequiredFieldValidator4 : RequiredFieldValidator #RequiredFieldValidator2 : RequiredFieldValidator
#RequiredFieldValidator5 : RequiredFieldValidator #CompareValidator1 : CompareValidator
#RequiredFieldValidator6 : RequiredFieldValidator #CompareValidator3 : CompareValidator
#RegularExpressionValidator2 : RegularExpressionValidator #ValidationSummary1 : ValidationSummary
#lblMessage : Label
#lblMessage : Label
#lstBed : DropDownList
#Label2 : Label #lstSmoking : DropDownList
#Label3 : Label #lstAccessible : DropDownList
#lblTitle : Label #lblMessage1 : Label
#lstState : DropDownList -Page_Load(in sender : object, in e : EventArgs)
-Page_Load(in sender : object, in e : EventArgs) #OnInit(in e : EventArgs)
-InitializeComponent()
#OnInit(in e : EventArgs) -btnFind_Click(in sender : object, in e : EventArgs)
-InitializeComponent() -display(in hotel : Hotel)
-btnAdd_Click(in sender : object, in e : EventArgs) -btnAdd_Click(in sender : object, in e : EventArgs)
Component Design (cont)
Presentation Tier
Administrator::Report
#ValidationSummary1 : ValidationSummary
#btnReport : Button
#txtEnding : TextBox
#calDate1 : Calendar
#btnCalender1 : ImageButton
#btnCalander2 : ImageButton
#txtStarting : TextBox
Administrator::ApproveTravelAgent #calDate2 : Calendar
#CompareValidator1 : CompareValidator
#Label1 : Label #RequiredFieldValidator1 : RequiredFieldValidator
#Label2 : Label #pnlReport : Panel
#lblTitle : Label #lbltitle : Label
#dataSetTravelAgent1 : DataSetTravelAgent #lblEnding : Label
#lblMessage : Label #lblStarting : Label
#lblName : Label
#dgAgent : DataGrid
#txtHotelID : TextBox
#Label3 : Label #RequiredFieldValidator3 : RequiredFieldValidator
-Page_Load(in sender : object, in e : EventArgs) #CompareValidator2 : CompareValidator
#OnInit(in e : EventArgs) #lblMessage : Label
-InitializeComponent() #lblAddress : Label
#lblOccupancy : Label
-display() #Label3 : Label
-DataGrid1_SelectedIndexChanged(in sender : object, in e : EventArgs) #Label1 : Label
-disApprove(in source : object, in e : DataGridCommandEventArgs) #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 Administrator::UpdateRoom
#RequiredFieldValidator2 : RequiredFieldValidator
#RequiredFieldValidator3 : RequiredFieldValidator
#Label1 : Label
#RequiredFieldValidator4 : RequiredFieldValidator #Label2 : Label
#Label1 : Label #btnFind : Button
#Label3 : Label #txtHID : TextBox
#btnUpdate : Button
#Label2 : Label #RequiredFieldValidator7 : RequiredFieldValidator
#txtHID : TextBox #CompareValidator2 : CompareValidator
#RequiredFieldValidator7 : RequiredFieldValidator #lblMessage1 : Label
#CompareValidator2 : CompareValidator
#btnFind : Button
#lblMessage : Label
#txtHotelName : TextBox #dataSetRoom1 : DataSetRoom
#txtPhoneNumber : TextBox #dgRoom : DataGrid
#lstStar : DropDownList #lblTitle : Label
#txtAddress : TextBox
#txtCity : TextBox #Label3 : Label
#txtZip : TextBox -Page_Load(in sender : object, in e : EventArgs)
#lblHotelID : Label
#OnInit(in e : EventArgs)
#lblHotelName : Label
#lblPhone : Label -InitializeComponent()
#lblRating : Label -btnFind_Click(in sender : object, in e : EventArgs)
#lblAddress : Label -display(in hotelID : string)
#lblCity : Label
#lblZip : Label
-OnEdit(in source : object, in e : DataGridCommandEventArgs)
#lstState : DropDownList -OnCancel(in source : object, in e : DataGridCommandEventArgs)
#lblState : Label -OnUpdate(in source : object, in e : DataGridCommandEventArgs)
#lblHotelInfo : Label -validEntries(in price : string) : bool
#lblHID : Label
#lblMessage1 : Label -ChangePage(in source : object, in e : DataGridPageChangedEventArgs)
-Page_Load(in sender : object, in e : EventArgs) -sortDoorNumber(in source : object, in e : DataGridSortCommandEventArgs)
#OnInit(in e : EventArgs) -PreSelect(in sender : object, in e : DataGridItemEventArgs)
-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)
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 Mail
-m_userName : string
-m_password : string
+Administrator()
+VerifyLogin(in userName : string, in password : string) : bool
+getWaitingAgent() : DataSetTravelAgent +Mail()
+approveAccount(in userName : string) : bool
+disApproveAccount(in userName : string) : bool
+sendMail(in e_address : string) : bool
+occupancyReport(in hotelID : string, in startingDate : string, in endingDate : string) : string
+userName() : string
+approveAccount(in e_address : string) : bool
+password() : string +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
+Database()
-m_reservationNumber : long -conString()
+queryLogin()
+Guest() +queryIsValidUserName()
+getGuest(in guest : Guest) +queryIsValidAgentUserName()
+reservationNumber() : long +queryGetUserInfo()
+queryGetGuestInfo()
+deleteGuest(in reservationNumber : int) : bool +querySaveNewCustomer()
+queryUpdateCustomerAccount()
+querySaveNewReservation()
+querySaveAgentReservation()
+querySaveGuestInfo()
+queryLoginAdmin()
+queryNumOfRsrv()
Error +queryFindHotel()
+queryGetHotel()
-EVENT_LOG_SOURCE : string = "HRS"
+queryIsValidHID()
+Log(in message : string) +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, 257.83, 53% Phase III

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% Testing
Design, 2, 2% Documentation
Project Evaluation (cont)
Phase II Break Down

Research, 19.08, 16%


Documentation, 50.7, Research
40% Design, 21.5, 18% Design
Coding
Testing
Documentation
Testing, 0, 0% Coding, 31.56, 26%
Project Evaluation (cont)
Phase III Break Down

Research, 18.58, 7%
Documentation, 38, 15%
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

You might also like