Hotel Reservation System

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