4. 1
1. Introduction
1.1 Purpose
The purpose of this document is to outline requirements that define a point of sales and
financial managementsystem used in tracking reservations, payments, profits, and expenses for
a small bed & breakfast (B&B) establishment. This document is developed for use during the
design and implementation phases of the software development.
1.2 Scope
The software will be named Bed & Breakfast Reservation and Management System, or BBRMS.
The BBRMS is designed to function as a point of sales and financial management system for a
small bed & breakfast establishment. The scope of the application and its intended functionality
should be kept small and specific to the problem set. The software should simplify the
workflow of the establishment by using a calendar graphical user interface (GUI) to view
vacancies and initiate the reservation process. GUIs should be used for all application process
to simplify data entry. The system should also automate the process of determining if a
reservation guarantee is no longer valid and return the room to a vacant status.
1.3 Definitions
Term Definition
Concurrent Process A process that runs continuously
Domain Object Object that holds information for a specific function
Expense Cost occurred by the business
Guarantee A contract between the owners of the B&B and the potential guest
Guest Person(s) who occupy a room, or who have previously occupied or will
occupy a room
Hotkey A key on the keyboard that performs a specific programmed function
Income All money collected by the business
Payment Transfer of money between guest an establishment
Price of Reservation Calculated by multiplying rate by number of nights in the reservation
Profit Money left after subtracting all expenses from income
Rate The cost of a specific room for one night
Reservation The assignment of a room to a guest for a specified date range
Service A function related to the conduct of business
Tax Calculated by multiplying Price of Reservation by the local tax rate
Total Price Calculated by adding tax to Price of Reservation
User Interface Any element that allows the user to interact with the system
Vacancy The availability of a room
Workflow A sequence of steps necessary to perform a task
5. 2
2. References
References for this document include the following:
IEEE Std. 1016-1998: IEEE RecommendedPractice for Software Design Descriptions
IEEE Std 610.12-1990, IEEE StandardGlossary of Software Engineering Terminology
IEEE Std 730-1998, IEEE Standard for Software Quality Assurance Plans.
IEEE Std 828-1998, IEEE Standard for Software Configuration Management Plans.
IEEE Std 830-1998, IEEE RecommendedPractice for Software Requirements
Specifications
6. 3
3. Decomposition Description
The complete relationship between all entities of the BBRMS is represented in the Figure 1
entity relationship diagram (ERD). The ERD shows the relationship between the domain
objects (blue), their services (purple), and the concurrent process used to remove reservations
with a past-due guarantee date.
+setguestID()
+getguestID()
+setlastName()
+getlastName()
+setfirstName()
+getfirstName()
+setaddress()
+getaddres()
+setphoneNumber()
+getphoneNumber()
+seteMail()
+geteMail()
+setcreditCardNumber()
+getcreditCardNumber()
+setcreditCardExpiration()
+getcreditCardExpiration()
+setcreditCardCode()
+getcreditCardCode()
-guestID
-lastName
-firstName
-address
-phoneNumber
-eMail
-creditCardNumber
-creditCardExpiration
-creditCardCode
Guest
+setreservationID()
+getreservationID()
+setstartDate()
+getstartDate()
+setendDate()
+getendDate()
+settotalNights()
+gettotalNights()
+setrate()
+getrate()
+setprice()
+getprice()
+settax()
+gettax()
+settotalPrice()
+gettotalPrice()
+toggleGuaranteed()
+isGuaranteed()
+setguaranteeDate()
+getguaranteeDate()
+setguestID()
+getguestID()
+setroomID()
+getroomID()
+setpaymentID()
+getpaymentID()
-reservationID
-startDate
-endDate
-totalNights
-rate
-price
-tax
-totalPrice
-isGuaranteed
-guaranteeDate
-guestID
-roomID
-paymentID
Reservation
+setroomID()
+getroomID()
+togglevacancy()
+isVacant()
+setroomNumber()
+getroomNumber()
-roomID
-isVacant
-roomNumber
Room
+setpaymentID()
+getpaymentID()
+setamountPaid()
+getamountPaid()
+setamountDue()
+getamountDue()
+setpaymentDate()
+getpaymentDate()
+isPaid()
+setguestID()
+getguestID()
-paymentID
-amountPaid
-amountDue
-paymentDate
-isPaid
-guestID
Payment
+setincome()
+getincome()
+setexpense()
+getexpense()
+setexpenseType()
+getexpenseType()
+expenseAccount()
+setexpenseTotal()
+getexpenseTotal()
+setprofit()
+getprofit()
-assets
-income
-expense
-expenseType
-expenseTotal
-profits
Finances
*1
+ReservationfoundExpiredRreservation()
+scan()()
+stop()()
-Reservation[]reservation
ReservationQuery
*
1
+Room getRoom()
+deleteRoom()
+createRoom()
-Room[]rooms
RoomReservation
+makePayment()
+assignGuest()
-Payment[]payments
-Finance[]finaces
MakePayment
+Room getRoom()
+deleteRoom()
+createRoom()
-Reservatio[]reservations
-RoomReservation roomreservation
-Guest[]guests
-MakePayment makepayment
-TakeGuestInformation guestinformation
GuestReservation
+Reservation[]checkDates()
+assignReservation()
-GuestReservation guestreservation
CalendarQuery
+takeGuestInfo()
-Guest[]guests
TakeGuestInformation
* 1
1
1
*
1
*
1
*
1
*
1
1
1
1
1
1
Figure 1. Entity Relationship Diagram
This section outlines the entities and their relationships, which are divided into modules,
continuous processes, and data.
7. 4
3.1 Module Decomposition
The BBRMS is comprised of four different components that provide specific functionality in the
system. Figure 2 shows a high level architectural context diagram (ACD) of the system. The
overall system is composed of four primary functions:
1. User Interface
2. Services
3. Domain Objects
4. Database
The following representation and design specification will cover numbers 1-3. The database
persistence is covered in the description of each service. A database entity is included in the
diagram as a generic reference which summarizes persistence activities.
The architectural context diagram illustrates the human-computer interface (HCI) for users of
the BBRMS through the user interface, and interaction between domain objects and the user
interface through the service layer. This design enables data to be abstracted from the views in
the services component, through functional business logic, reducing system complexity.
Services
1.1 Room
Reservation
1.2
Calendar
Query
1.3 Make
Payment 1.4 Guest
Reservation
Store Data
2.0 User
Interface
2.1 Room
Reservation
2.2 Make
Payement
2.3 Guest
Reservation
2.4 Guest
Information
2.5 Calendar
Query
3.0 Domain
Objects
3.1 Guest
1.5 Take
Guest
Information
1.6
Reservation
Query
3.2 Finances
3.3 Payment
3.4 Room
3.5 Reservation
Out: RoomNumber, In: isVacant
Out: startDate, endDate, in: Room In: Payment In: Reservation
<<delete>>
In: Guest
<<manages>>
<<store>>
<<retrieve>>
<<interacts>>
<<interacts>>
<<interacts>>
<<interacts>>
<<interacts>>
<<interacts>> <<interacts>>
<<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>> <<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>>
Figure 2. High Level Architectural Context Diagram
8. 5
3.1.1 User Interface
This module is for end users of the system at the bed and breakfast. The users are able to
interact with the system exclusively through this interface. The only external interface needed to
access to this user interface is a keyboard and mouse with a single-user view set.
Services
User Interface
Calendar Query
Room
Reservation
Make
Payement
Guest
Reservation
Guest
Information
Domain ObjectsStore Data
<<interacts>>
<<interacts>>
<<interacts>>
<<interacts>> <<interacts>>
<<interacts>>
<<interacts>>
<<manages>><<stores>
<<retrieves>>
Figure 3. Architectural Context Diagram – User Interface
3.1.1.1 Calendar Query
This object displays a calendar layout with information aboutroom vacancies reservations. The
design for the calendar lookup is represented in section 5.1.
3.1.1.2 Room Reservation
This object displays information about a room, and a data entry GUI to reserve a room. The
design for the room reservation is represented in section 5.2.
3.1.1.3 Make Payment
This object displays information about payments related to a specific guest. The design for
making a payment is represented in section 5.3.
3.1.1.4 Guest Reservation
This object displays information about a guest’s reservation for a specific room in a specified
date range. The design for the guest reservation is represented in section 5.4.
3.1.1.5 Take Guest Information
This object displays a data entry GUI to enter guest contact and payment information. If the
guest has been a guest previously, a database query can be performed using the guest’s name
and/or phone number. If the guest’s information is found during the query, the remaining
9. 6
fields in the GUI will be auto-filled by the system. The design for take guest information is
represented in section 5.5.
3.1.2 Services
This module contains the business logic for the processes that the BBRMS needs to conduct in
which domain objects are involved, such as looking up a reservation date or saving a payment.
The service module provides output to the user interface, and manages the domain objects
through input from the user interface. The service module also manages persistence of the
domain objects to the database.
Services
1.1 Room
Reservation
1.2
Calendar
Query
1.3 Make
Payment 1.4 Guest
Reservation
Store Data
2.0 User
Interface
3.0 Domain
Objects
1.5 Take
Guest
Information
1.6
Reservation
Query
Out: RoomNumber, In: isVacant
Out: startDate, endDate, in: Room In: Payment In: Reservation
<<delete>>
In: Guest
<<manages>>
<<store>>
<<retrieve>>
<<interacts>>
<<interacts>>
Figure 4. Architectural Context Diagram – Services
3.1.2.1 RoomReservation Entity
This service entity handles the reservation of rooms function, and manages the Room object.
3.1.2.2 CalendarQuery Entity
This service entity handles the function to search for rooms in a date range, and return a room
that is vacant.
3.1.1.3 MakePayment Entity
This service entity component handles the business logic for receiving a payment, and adjusting
a Finances balance, as well as association to a room reservation and guest.
3.1.1.4 GuestReservation Entity
This service entity assigns guest information to a vacant room, and holds other data, such as
guarantee dates and associated payments.
10. 7
3.1.1.5 TakeGuestInformation Entity
This service entity records guest information, such as name, contact information, and credit
card information.
3.2 Concurrent Process Decomposition
This module describes any services that act independent of the user, including processes that
create, manage, update, or delete any domain object within the system. Figure 5 depicts an
ACD representing all Domain Objects.
Services
Store Data
2.0 User
Interface
3.0 Domain
Objects
3.1 Guest
3.2 Finances
3.3 Payment
3.4 Room
3.5 Reservation
<<manages>>
<<store>>
<<retrieve>>
<<interacts>>
<<interacts>>
<<create>>
<<delete>>
<<edit>> <<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>>
Figure 5. Architectural Context Diagram – Domain Objects
3.2.1 ReservationQuery Entity
This service entity scans all Reservation objects searching for those with a guarantee date that
equals the current date. Any reservation that meets this criterion is deleted and the room status
is changed to vacant.
3.3 Data Decomposition
This module covers all entities that hold data about a specific function in the BBRMS system.
The term Domain Objects will be used to refer to these objects.
3.3.1 Guest Entity
This entity stores all information about a guest that has made a reservation. This information
includes data such as name, contact information, and credit card information.
11. 8
3.3.2 Room Entity
This entity holds information related to an individual room in the establishment. This
information is used in relation to reservations.
3.3.3 Reservation Entity
This entity holds all information about an active reservation. This information includes data
such as start date, end date, guest information, guarantee date, and payment information. M
This entity is the hub between other domain objects within the BBRMS.
3.3.4 Payment Entity
This entity holds information about a payment that relates a guest to a specific room
reservation.
3.3.5 Finances Entity
This entity stores information about all payments made through the BBRMS.
12. 9
4. Dependency Description
Service modules edit, save and delete domain objects directly through the database
module entries. The user interface module interacts with the service module. The
service module controls and manages the domain objects. The level 1 data flow
diagram (DFD) in Figure 6 illustrates these dependencies. These dependencies for
modules, services, and data are explained in more detail below.
Services
1.1 Room
Reservation
1.2
Calendar
Query
1.3 Make
Payment 1.4 Guest
Reservation
Store Data
2.0 User
Interface
2.1 Room
Reservation
2.2 Make
Payement
2.3 Guest
Reservation
2.4 Guest
Information
2.5 Calendar
Query
3.0 Domain
Objects
3.1 Guest
1.5 Take
Guest
Information
1.6
Reservation
Query
3.2 Finances
3.3 Payment
3.4 Room
3.5 Reservation
Out: RoomNumber, In: isVacant
Out: startDate, endDate, in: Room In: Payment In: Reservation
<<delete>>
In: Guest
<<manages>>
<<store>>
<<retrieve>>
<<interacts>>
<<interacts>>
<<interacts>>
<<interacts>>
<<interacts>>
<<interacts>> <<interacts>>
<<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>> <<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>>
<<create>>
<<delete>>
<<edit>>
Figure 6. Level 1 Data Flow Diagram
13. 10
4.1 Inter-module Dependencies
There are 4 core modules for the BBRMS software. These include the user interface, services,
domain objects, and database.For the scope of this document, the database module is accessed
directly by the service modules as, and will not be described in the core modules description.
Figure 7 illustrates these dependencies, with the added interaction between the user and the
user interface.
Services
Store Data
2.0 User
Interface
3.0 Domain
Objects
<<manages>>
<<store>>
<<retrieve>>
<<interacts>>
<<interacts>>
Figure 7. Inter-module Dependency Diagram
1. The User Interface module is dependent on the service module. The user interface is
responsible for displaying information from the BBRMS to the user. This dependency
allows the business logic from the services module to be represented in the user
interface view. Additionally, the user is dependent on the user interface to interact with
the system.
2. The Services module is dependent on both the user interface module to display
information, as well as the domain objects module to store information. Because
business logic is represented in the service module, but information is stored in the
domain objects, this dependency is critical to represent the state of actions and
information within the system.
3. The Domain Objects module is dependent on the services module to process information
using business logic, as explained in dependency #2.
14. 11
4.2 Inter-process Dependencies
There are six process dependencies in the BBRMS, which are represented in Figure 8. The
domain object in the inter-process dependency diagram is essential to describe the relationship
between the RoomReservation service and a Room domain object, and how these relate to the
ReservationQuery concurrent service.
+setroomID()
+getroomID()
+togglevacancy()
+isVacant()
+setroomNumber()
+getroomNumber()
-roomID
-isVacant
-roomNumber
Room
*1
+ReservationfoundExpiredRreservation()
+scan()()
+stop()()
-Reservation[]reservation
ReservationQuery
+getRoom()
+deleteRoom()
+createRoom()
-Room[]rooms
RoomReservation
+makePayment()
+assignGuest()
-Payment[]payments
-Finance[]finaces
MakePayment
+Room getRoom()
+deleteRoom()
+createRoom()
-Reservatio[]reservations
-RoomReservation roomreservation
-Guest[]guests
-MakePayment makepayment
-TakeGuestInformation guestinformation
GuestReservation
+Reservation[]checkDates()
+assignReservation()
-GuestReservation guestreservation
CalendarQuery
+takeGuestInfo()
-Guest[]guests
TakeGuestInformation
* 1
1
1
1
1
1
1
1
Figure 8. Inter-process Dependency Diagram
1. GuestReservation is dependent on several other services, which include:
a. RoomReservation – Defines the room information for a guest reservation.
b. CalendarQuery – This relationship is defined by the link between a date range,
and the corresponding guest reservation at the establishment.
c. TakeGuestInformation – This dependency drives the collection of information to
instantiate a Guest object, which corresponds to a reservation.
d. MakePayment – The relationship is defined as the payment by a guest that is
linked to a room reservation
2. The ReservationQuery process is weakly related to the RoomReservation service.
Because this process is a concurrent service, it scans reservations continuously and
removes any in which the guarantee date has been exceeded.
15. 12
4.3 Data Dependencies
Data dependencies in the BBRMS are weakly linked through process dependencies to services.
This allows for the abstraction of business logic away from both the user interface module, and
the domain object model. Because of this, there is no direct relation between any of the domain
objects. Instead, the dependencies are shared by the services and process to assist in managing
business logic needs and abstraction between modules. The data dependency diagram is
displayed in Figure 9.
+setguestID()
+getguestID()
+setlastName()
+getlastName()
+setfirstName()
+getfirstName()
+setaddress()
+getaddres()
+setphoneNumber()
+getphoneNumber()
+seteMail()
+geteMail()
+setcreditCardNumber()
+getcreditCardNumber()
+setcreditCardExpiration()
+getcreditCardExpiration()
+setcreditCardCode()
+getcreditCardCode()
-guestID
-lastName
-firstName
-address
-phoneNumber
-eMail
-creditCardNumber
-creditCardExpiration
-creditCardCode
Guest
+setreservationID()
+getreservationID()
+setstartDate()
+getstartDate()
+setendDate()
+getendDate()
+settotalNights()
+gettotalNights()
+setrate()
+getrate()
+setprice()
+getprice()
+settax()
+gettax()
+settotalPrice()
+gettotalPrice()
+toggleGuaranteed()
+isGuaranteed()
+setguaranteeDate()
+getguaranteeDate()
+setguestID()
+getguestID()
+setroomID()
+getroomID()
+setpaymentID()
+getpaymentID()
-reservationID
-startDate
-endDate
-totalNights
-rate
-price
-tax
-totalPrice
-isGuaranteed
-guaranteeDate
-guestID
-roomID
-paymentID
Reservation
+setroomID()
+getroomID()
+togglevacancy()
+isVacant()
+setroomNumber()
+getroomNumber()
-roomID
-isVacant
-roomNumber
Room
+setpaymentID()
+getpaymentID()
+setamountPaid()
+getamountPaid()
+setamountDue()
+getamountDue()
+setpaymentDate()
+getpaymentDate()
+isPaid()
+setguestID()
+getguestID()
-paymentID
-amountPaid
-amountDue
-paymentDate
-isPaid
-guestID
Payment
+setincome()
+getincome()
+setexpense()
+getexpense()
+setexpenseType()
+getexpenseType()
+expenseAccount()
+setexpenseTotal()
+getexpenseTotal()
+setprofit()
+getprofit()
-assets
-income
-expense
-expenseType
-expenseTotal
-profits
Finances
*1
+ReservationfoundExpiredRreservation()
+scan()()
+stop()()
-Reservation[]reservation
ReservationQuery
*
1
+getRoom()
+deleteRoom()
+createRoom()
-Room[]rooms
RoomReservation
+makePayment()
+assignGuest()
-Payment[]payments
-Finance[]finaces
MakePayment
+Room getRoom()
+deleteRoom()
+createRoom()
-Reservatio[]reservations
-RoomReservation roomreservation
-Guest[]guests
-MakePayment makepayment
-TakeGuestInformation guestinformation
GuestReservation
+takeGuestInfo()
-Guest[]guests
TakeGuestInformation
* 1
*
1
*
1
*
1
*
1
Figure 9. Data Dependency Diagram
16. 13
5. Interface Description
5.1 User Interface Description
The user interface allows the user to interact with the BBRMS system. It facilitates the user in
creating records, reservations, and associations that culminate in a successful business
transaction between a guest and the establishment. Figure 10 below illustrates the workflow
from a HCI perspective, and how a daily user of the BBRMS interacts with the system to create
a reservation for a guest.
Figure 10. User Interface Workflow
17. 14
5.1 CalendarQuery
CalendarQuery is the primary interface for the user handling phone calls for reservations at bed
and breakfast. This screen provides three capabilities:
1. Calendar – This displays a calendar in month view, or in a specified date range.
2. Room Vacancy Status – Displays room vacancies for a given date.
3. Make Reservation – Takes the room information and date range to create a room
reservation.
The CalendarQuery user interface provides the user with the ability to start workflow while
communicating with a guest. The user of the BBRMS can start the process of guaranteeing a
room for a guest and creating a reservation by selecting a date range that the guest inquires
about and determining if an acceptable room is vacant within that range. The CalenderQuery
GUI is shown in Figure 11.
Figure 11. CalendarQuery GUI
18. 15
5.2 RoomReservation
The RoomReservation GUI is used to update vacancy statuses of rooms within the bed &
breakfast establishment. This is a simple GUI which only gives information specific to the room
for a number and vacancy status. Two buttons are provided to save and delete the rooms based
on user choices. The RoomReservation GUI is shown in Figure 12.
Figure 12. RoomReservation GUI
19. 16
5.3 MakePayment
The payment element of the user interface captures all elements of a guest’s payment for a
reservation. The total amount of the stay is entered, along with a current payment amount. The
guest list is displayed to associate the payment to the correct credit card provided by the guest
when their information was entered. The buttons allow the user to process the payment, or
cancel the transaction. The MakePayment GUI is shown in Figure 13.
Figure 13. MakePayment GUI
20. 17
5.4 GuestReservation
The GuestReservation GUI allows the user to input information specific to a guest’s intended
stay at the bread & breakfast. This includes start and end dates, price per day, guaranteed
status and date, and options to input information related to the reservation.
The buttons at the bottom of the GUI, allow the user to make a payment associated with the
reservation, input guest information, and options to save and delete the reservation. The
GuestReservation GUI is shown in Figure 14.
Figure 14. Guest Reservation GUI
21. 18
5.5 GuestInformation
In order to guarantee and/or reserve a room for a guest, the user must be able to record the
guest’s information. This GUI provides data entry fields for guest name, address, phone
number, and credit card to be used in all payment transactions. Buttons to either save guest
information or cancel the transaction are included. The GuestInformation GUI is shown in
Figure 15.
Figure 15. Guest Information GUI
22. 19
5.6 Service Interface Description
Information about service interface (domain object, service, and concurrent service)
relationships is located in the ERD in section 3 (Decomposition Description). Detailed interface
descriptions and class models is located in in section 6.1 (Module Detailed Design) and section
6.2 (Data Detailed Design)
23. 20
6. Detailed Design
6.1 Module Detailed Design
6.1.1 RoomReservation Entity
The RoomReservation entity is a service that manages the business logic for a collection of
Room domain objects. The class diagram for RoomReservation is displayed in Figure 16.
Three methods are present in this entity:
1. getRoom() – Returns the Room object for a given room number.
2. deleteRoom() – Deletes the Room object from the collection for a given room number.
3. createRoom() – Adds a Room object to the collection.
This entity has on attribute:
1. Room[] rooms – Represents a collection of Room objects.
+getRoom()
+deleteRoom()
+createRoom()
-Room[]rooms
RoomReservation
Figure 16. RoomReservation Class
6.1.2 CalendarQuery Entity
The CalendarQuery entity is a service containing a single object, GuestReservation. It is used to
define the relationship between a date range, and an available reservation for a vacant room.
The class diagram for CalendarQuery is displayed in Figure 17.
This entity has two methods:
1. Reservation[] checkDates() – Returns a valid Reservation object that that is available
between the start date and the end date.
2. assignReservation() – Assigns a reservation between a start date and an end date.
24. 21
This entity has one attribute:
1. GuestReservation[]guestReservation – This is an instance of GuestReservation . It is
used to collect information about the guest, room, and payment for the reservation.
+Reservation[]checkDates()
+assignReservation()
-GuestReservation guestreservation
CalendarQuery
Figure 17. CalendarQuery Class
6.1.3 MakePayment Entity
The MakePayment entity is a service containing a collection of Payment objects, a Finances
object for tracking total payments, and methods to make a payment and assign a guest. The
class diagram for MakePayment is displayed in Figure 18.
This entity contains two methods:
1. makePayment() – Parses a payment object and adds it to the total income of the
establishment.
2. assignGuest() – Assigns a guest object to a payment in corresponding to a reservation.
This entity contains two attributes:
1. Payments[] payments – A collection of payment.
2. Finances []finances – A utility to track all financial balances for the establishment.
+makePayment()
+assignGuest()
-Payment[]payments
-Finance[]finaces
MakePayment
Figure 18. MakePayment Class
6.1.4 GuestReservation Entity
The GuestReservation entity is a service that representing a bulk of the business logic for the
BBRMS. This service contains object instances which manage most of the domain objects. The
class diagram for GuestReservation is displayed in Figure 19.
25. 22
This entity contains five methods:
1. createReservation() – Adds a Reservation object to the collection.
2. deleteReservation() – Removes the Reservation object from the collection.
3. takeGuestInformation() – Performs the service management for the
TakeGuestInformation service entity.
4. takeRoomReservation() - Performs the service management for the RoomReservation
service entity.
5. takePayment() – Performs the service management for the MakePayment service entity.
This entity has five attributes:
1. Reservation[] reservation – Collection of Reservation domain objects.
2. RoomReservation roomReservation – Instance of the RoomReservation service entity.
3. Guest[] guests – Collection of Guest domain objects.
4. MakePayment makePayment – Instance of the MakePayment service entity.
5. TakeGuestInformation guestInformation– Instance of the TakeGuestInformation service
entity.
+Room getRoom()
+deleteRoom()
+createRoom()
-Reservatio[]reservations
-RoomReservation roomreservation
-Guest[]guests
-MakePayment makepayment
-TakeGuestInformation guestinformation
GuestReservation
Figure 19. GuestReservation Class
26. 23
6.1.5 TakeGuestInformation Entity
The TakeGuestInformation entity is a service to enter or retrieve information about a specific
guest. This service retrieves information, and creates a Guest domain object from its result. The
class diagram for TakeGuestInformation is displayed in Figure 20.
This entity contains one method:
1. takeGuestInfo() – Creates a Guest object using relevant guest information, such as start
date, end date, price, guarantee,and guarantee date.
This entity contains one attribute:
1. Guest[] guests – Collection of Guest domain objects.
+takeGuestInfo()
-Guest[]guests
TakeGuestInformation
Figure 20. TakeGuestInformation Class
6.1.6 ReservationQuery Entity
The ReservationQuery entity is a concurrent service that scans the collection of Reservation
objects, removes those with expired guaranteed dates, and sets the room status back to vacant.
This service differs from the others in that it is constantly scansthe collection, and runs in the
background without other interaction. The class diagram for ReservationQuery is displayed in
Figure 21.
This entity contains three methods:
1. Reservation foundExpiredReservation() – Polling function call that returns a
Reservation with an expired guarantee date.
2. scan() – Starts the scanning/polling of all Reservation objects.
3. stop() – Stops the scanning/polling of all Reservation objects.
This entity contains one attribute:
1. Reservation[] reservations – Collection of Reservation domain objects.
27. 24
+ReservationfoundExpiredRreservation()
+scan()()
+stop()()
-Reservation[]reservation
ReservationQuery
Figure 21. ReservationQuery Class
6.2 Data Detailed Design
6.2.1 Guest Entity
The Guest entity is a domain object used to represent information about a guest. This domain
object stores information about a guest, and is primarily composed of attributes and accessory
methods. The class diagram for Guest is displayed in Figure 23.
This entity contains eighteen methods:
1. setguestID() - Sets the unique ID of the guest.
2. getguestID() - Returns the unique ID of the guest.
3. getlastName() - Returns the last name of the guest.
4. setlastName() - Sets the last name of the guest.
5. getfirstName() - Returns the first name of the guest.
6. setfirstName() - Sets the first name of the guest.
7. getaddress() - Returns the address of the guest.
8. setaddress () - Sets the address of the guest.
9. getphoneNumber() - Returns the phone number of the guest.
10. setPhoneNumber() - Sets the phone number of the guest.
11. seteMail() - Sets the eMail of the guest.
12. geteMail() - Returns the eMail of the guest.
13. getcreditCardNumber() - Returns the credit card number of the guest.
14. setcreditCardNumber() - Sets the credit card number of the guest.
15. setcreditCardExpiration() - Sets the credit card expiration date.
28. 25
16. getcreditCardNumber() - Returns the credit card expiration.
17. setcreditCardCode() - Sets the credit card security code.
18. getcreditCardCode() - Returns the credit card security code.
This entity contains nine attributes:
1. guestID - This is an integer representing a unique instance of a guest.
2. lastName - This is a string representing the last name of a guest.
3. firstName -This is a string representing the first name of a guest.
4. Address - This is a string representing the address of a guest. This is a complex attribute
consisting of street address, city, state, and zip code.
5. phoneNumber - This is an integer representing the phone number of a guest. A guest
can have more than one phone number making this a multivalued attribute.
6. eMail - This is a string representing the email address of the guest
7. creditCardNumber - This is an integer representing the credit card number used for
payment by a guest.
8. creditCardExpiration - This is an integer representing the expiration date of the credit
card.
9. creditCardCode - This is an integer representing the 3 digit security code on the back of
the credit card.
30. 27
8. getpaymentDate() - Returns the date value for paymentDate.
9. isPaid() - Boolean value set to true if the amountDue is equal to zero.
10. setguestID() - Sets the guestID associated with the payment.
11. getguestID() - Returns the guestID associated with the payment.
This entity contains six attributes:
1. paymentID - This is an integer that represents a specific payment.
2. amountPaid - Double precision point number representing the dollar amount paid at the
time of transaction.
3. amountDue - The remaining dollar amount determined by subtracting the payment
from the totalPrice of the reservation.
4. paymentDate() - Date value for the date of payment.
5. isPaid() - Boolean value to determine if the bill is paid in full.
6. guestID - Reference to a specific guestID.
+setpaymentID()
+getpaymentID()
+setamountPaid()
+getamountPaid()
+setamountDue()
+getamountDue()
+setpaymentDate()
+getpaymentDate()
+isPaid()
+setguestID()
+getguestID()
-paymentID
-amountPaid
-amountDue
-paymentDate
-isPaid
-guestID
Payment
Figure 23. Payment Class
31. 28
6.2.3 Reservation Entity
The Reservation entity is a domain used to represent information for a reservation. This domain
object stores information about a reservation, and is primarily composed of attributes and
accessory methods. The class diagram for Reservation is displayed in Figure 24.
This entity contains twenty-six methods:
1. int setreservationID() -Sets the unique integer ID representing a specific reservation.
2. int getreservationID() -Returns the unique integer ID representing a specific reservation.
3. setstartDate() - Sets the startDate of the reservation.
4. getstartDate() - Returns the startDate of the reservation.
5. setendDate() - Sets the endDate of the reservation.
6. getendDate() - Returns the endDateof the reservation.
7. settotalNights() - Calculates the total nights of the reservation by subtracting the
startDate from the endDate.
8. gettotalNights() - Returns the totalNights of the reservation.
9. setrate() - Sets the daily rate of the reservation.
10. getrate() - Returns the rate of the reservation.
11. setprice() - Sets the price of the reservation of the reservation.
12. getprice() - Returns the price of the reservation.
13. settax() - Sets the tax of the reservation.
14. gettax() - Returns the tax of the reservation.
15. settotalPrice() - Calculates the totalPrice of the reservation by adding the tax to the price.
16. gettotalPrice() - Returns the totalPrice of the reservation.
17. toggleGuaranteed() - Toggles the guaranteed status of the Reservation, and returns the
current value.
18. isGuaranteed() - Returns the guaranteed status of the Reservation.
19. setguaranteeDate() - Sets the guarantee date of the reservation.
32. 29
20. getGuaranteeDate() - Returns the guaranteeDate of the reservation.
21. setguestId(int) - Sets the guestID associated with the reservation.
22. getGuestId() - Returns the guestID associated with the reservation.
23. setroomID() - Sets the roomID associated with the reservation.
24. getRoomId() - Returns the roomID associated with the reservation.
25. setpaymentId(i) - Sets the paymentID associated with the reservation.
26. getpaymentId() - Returns the paymentID associated with the reservation.
This entity contains thirteen attributes:
1. reservationID - This is an integer ID representing the specific record of a reservation.
2. startDate - This is a date object representing the starting date of a reservation.
3. endDate - This is a date object representing the ending date of a reservation.
4. totalNights - This is an integer representing the total number of nights of a reservation.
5. Rate - Double precision point number representing the dollar amount of the room rate.
6. Price - Double precision point number representing the dollar amount of the room rate
multiplied by the totalNights.
7. Tax - Double precision point number representing the local sales tax rate.
8. totalPrice - Double precision point number representing the dollar amount of the room
price plus the tax.
9. isGuaranteed - This is a Boolean value representing the guaranteed status of a
reservation. This value is determined by a payment or a guarantee date, which
guarantees a room’s reservation status.
10. guaranteeDate - This is a date object representing the ending date of guarantee for the
reservation. It would be set to the endDate of the reservation if a payment has been
made, or to the guarantee date entered for the reservation if no payment has been made.
11. guestID - Reference to the unique guestID.
12. roomID - Integer representing the specific room.
13. paymentID - Integer representing this specific payment.
34. 31
3. togglevacancy() - Toggles the vacancy status of a Room, and returns the current value.
4. isVacant() - Returns the current vacancy status of a Room.
5. setroomNumber() - Sets the roomNumber associated with the room.
6. getroomNumber() - Returns the room number associated with the room.
This entity contains three attributes:
1. roomID - This is an integer ID that represents a specific room.
2. isVacant - Boolean value specifying if the room is vacant (true) or not (false).
3. roomNumber - Integer value of the room number.
+setroomID()
+getroomID()
+togglevacancy()
+isVacant()
+setroomNumber()
+getroomNumber()
-roomID
-isVacant
-roomNumber
Room
Figure 25. Room Class
6.2.5 Finances Entity
The Finances entity is a domain object that is used to represent financial information for the
totality of the establishment. This domain object stores information about a total finances, and is
primarily composed of attributes and accessory methods. Figure 26 represents the class diagram
for Finances.
This entity contains eleven methods:
1. setincome() - Totals all payments.
2. getincome() - Returns the income value.
3. setexpense() - Sets expense amount.
4. getexpense() - Returns expense amount.
5. setexpenseType() - Sets expenseType.
35. 32
6. getexpenseType() - Returns expense amount.
7. expenseAccount() - Decrements money from the establishments account.
8. setexpenseTotal() - Totals all expense objects.
9. getexpenseTotal() - Returns expenseTotal.
10. setprofit() - Calculates the profit amount by subtracting expenseTotal from income.
11. getprofit() - Returns profit amount.
This entity contains six attributes:
1. assets - Total amount of money in the establishments account determined by a starting
value and accounting for all income and expenses.
2. income - This is a collection of payment objects that represent income.
3. expense - Any money that is debited from the establishments account.
4. expenseType - String value categorizing an expense (ie. Rent, utilities, food, beverage,
salaries, maintenance).
5. expenseTotal - Total value of all expenses.
6. profits - Amount of money that is determined by subtracting expenseTotal from income.
+setincome()
+getincome()
+setexpense()
+getexpense()
+setexpenseType()
+getexpenseType()
+expenseAccount()
+setexpenseTotal()
+getexpenseTotal()
+setprofit()
+getprofit()
-assets
-income
-expense
-expenseType
-expenseTotal
-profits
Finances
Figure 26. Finances Class