Click here to Skip to main content
15,880,543 members
Articles / Desktop Programming / Windows Forms

Hotel Reservation System

Rate me:
Please Sign up or sign in to vote.
3.16/5 (16 votes)
29 Mar 2009GPL36 min read 452.3K   37.2K   62   24
An explanation of the useful code within Hotel Reservation System
Hotel_Management_System_VB

Introduction

In this article I will explain the important procedure or function that I used in Hotel Reservation System. I wrote this article in the purpose that you will be able to use some of the useful code here in my application. May it be a payroll system, inventory system, or any application that have the same concept like filling a Listview or Combobox.

Background

I’ve posted an article before for my Hotel Reservation System here using Visual Basic 6.0. That time, I was thinking that this website is just like www.planet-source-code.com. So I did not bother to explain very well the importance of the program. As a result, that article has been deleted by the moderator of CodeProject.com.
In the past, I received a bad comment for I am using an obsolete version of visual basic. So I made an upgrade with my Hotel Reservation System from VB 6.0 to VB.NET. Just a note though for VB 6.0 programmer –kindly continue with what you are doing right now if you feel you are more productive in version 6.0. But if you want to upgrade your knowledge, then I recommend using the new version which is VB.Net.

Using the Software

My Hotel Reservation System will help you manage a collection of data in your hotel. Moreover, you can record a reservation, check in, check out, payments, etc.
Since the purpose of this article is to teach you the importance of source code within this program, I attached here a link where you can read simple tutorial from my website at http://www.sourcecodester.com/blog/free-hotel-management-system-manual.html.

Using the Code

May be this code isn’t new to all of you but I do believe there are still programmer out there who needs this. I have three important code snippets to share which I used in this program – Hotel Reservation System.

Filling a ListView Control

Overview

The Windows Forms ListView control displays a list of items with icons. You can use a list view to create a user interface like the right pane of Windows Explorer. The control has four view modes: LargeIcon, SmallIcon, List, and Details. Source: Microsoft Visual Studio 2008 Documentation

In the previous paragraph, listview is used to display a list of items. So, in my application I used it to display a list of records from a table with a customize column.
To fill a listview in my program you call it like:

VB
FillListView(lvList, GetData(sSql))

Where lvList in the first parameter is a ListView control in the FillListView procedure. The second parameter – GetData(sSql) will first call the GetData function and returns a data using OleDbDataReader.

Before we call the FillListView procedure, we will call first the procedure named FillList. In this procedure you can customize the number of columns that you want to show in a listview.

Here’s the code for FillList procedure:

VB
Public Sub FillList()
    With lvList
    .Clear()
    
        .View = View.Details
        .FullRowSelect = True
        .GridLines = True
        .Columns.Add("Room Number", 90)
        .Columns.Add("Room Type", 120)
        .Columns.Add("Status", 90)

        FillListView(lvList, GetData(sSql))
    End With
End Sub

This procedure can be found in any form that has a listview control to list all records from a table. The only difference is that you can set the properties for every column in your listview. Of course, FillList procedure is being called at the form load event. So it will load the data from a table into the listview control before the form is displayed totally.

The following is the code for FillListView procedure:

VB
Public Sub FillListView(ByRef lvList As ListView, ByRef myData As OleDbDataReader)
    Dim itmListItem As ListViewItem

    Dim strValue As String

    Do While myData.Read
        itmListItem = New ListViewItem()
        strValue = IIf(myData.IsDBNull(0), "", myData.GetValue(0))
        itmListItem.Text = strValue

        For shtCntr = 1 To myData.FieldCount() - 1
            If myData.IsDBNull(shtCntr) Then
            itmListItem.SubItems.Add("")
        Else
            itmListItem.SubItems.Add(myData.GetValue(shtCntr))
        End If
        Next shtCntr

        lvList.Items.Add(itmListItem)
    Loop
End Sub

Because ListView from the calling procedure is being referenced in this procedure, you do not need to call the name of a form anymore, say form1.lvList. Instead you fill the listview with:

VB
lvList.Items.Add(itmListItem)

Points of interest

Since I am using a listview to retrieve the data from the table especially in my masterfiles, I don’t need to create the same code once again to fill the listview. All you need is to pass the name of a listview in the first parameter and the SQL string returned by OleDbDataReader to fill the listview control.

Filling a Combobox Control

Overview

The Windows Forms ComboBox control is used to display data in a drop-down combo box. By default, the ComboBox control appears in two parts: the top part is a text box that allows the user to type a list item. The second part is a list box that displays a list of items from which the user can select one. Source: Microsoft Visual Studio 2008 Documentation

ComboBox is again another control that needs not to be filled with data using a redundant code. In this code snippet, we can fill the combobox with just one procedure by passing parameters from the calling form.

The procedure is called using this syntax:

VB
FillCombobox(cboCountry, "SELECT * FROM Countries", "Countries", "Country", "CountryID")

Notice that there are 5 parameters that will be passed to the FillCombobox procedure. The first parameter which is cboCountry is the name of a combobox in your form that will be filled with data from Countries table in the second parameter, the third is just a dummy, which is actually the name of the table to be used in the datasource in the FillCombobox procedure, the fourth (Country) is the name of a field that has an actual data. The fifth parameter (CountryID) will be used to tag the actual data in Country field.

The FillCombobox Procedure:

VB
Public Sub FillCombobox(ByVal cboCombo As ComboBox, ByVal sSQL As String, ByVal strTable As String, ByVal strDisplayMember As String, ByVal strValueMember As String)
    Dim cnHotel As OleDbConnection
    cnHotel = New OleDbConnection

    Try
        With cnHotel
            If .State = ConnectionState.Open Then .Close()

            .ConnectionString = cnString
            .Open()
        End With

        Dim da As OleDbDataAdapter = New OleDbDataAdapter(sSQL, cnHotel)
        Dim dt As New DataSet

        da.Fill(dt, strTable)

        cboCombo.DataSource = dt.Tables(strTable).DefaultView
        cboCombo.DisplayMember = strDisplayMember
        cboCombo.ValueMember = strValueMember
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        cnHotel.Close()
    End Try
End Sub

As you can see in this code:

cboCombo.DataSource =  dt.Tables(strTable).DefaultView
  cboCombo.DisplayMember =  strDisplayMember
  cboCombo.ValueMember =  strValueMember

The 3 properties of cboCombo will use the parameter that is being passed from the calling procedure. The best part here is the DisplayMember and ValueMember which actually holds the data. I remember that filling a combobox with data in version 6.0 of visual basic will certainly takes a lot of code. But now it’s a lot easier with vb.net.

DisplayMember is actually the dummy field for this combobox because the actual data that is saved in the database is the value from ValueMember.

Example:

ValueMember (CountyID)         DisplayMember (Country)
1                 United States
2                 India
3                 Canada

This means that only the value of the CountryID will be saved in the table and not the Country.

Counting the Number of Records in a Table

In visual basic 6.0, if you are going to determine the number of records in a recordset, all you have to do is add a code like rs.recordcount, where rs is the name of a variable that holds the data.

However, in VB.NET this functionality has been removed. So, how can we figure out the number of recordset then?

The following is an example again from hotel reservation system.

VB
Dim sqlQRY As String = "SELECT * FROM [Room_Rates] WHERE RoomNumber = " & RoomNumber & " AND RateTypeID = " & cboRateType.SelectedValue
Dim cmd As OleDbCommand = New OleDbCommand(sqlQRY, cnHotel)
Dim RecordCount As Integer

RecordCount = CountRows("SELECT Count(*) FROM [Room_Rates]")

This is very important if you want to determine first if the recordset contains a data to avoid errors later in your code.
This is just a few of the useful code which can be found in Hotel Reservation System.

The following are some of the common question which I found very useful.

  1. How to subtract a date in DatePicker
    dtpDateOut.Value.AddDays(-1)
  2. How to add days in a DatePicker

dtpDateOut.Value = dtpDateIn.Value.AddDays(1)

To Do List

  1. Add Login Form
  2. Add Toolbar
  3. Fix Room Inventory
  4. Reports
    • Folio Report
    • Reservation Report
    • Account Receivable Report
    • Check In Guest Report
    • Check Out Report
    • Guest List Report
    • Other Charges Report
    • Room History

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)


Written By
Software Developer (Senior)
United States United States
Jomar Pabuaya is a computer programmer and currently working as an IT Head in the government. He is also a computer instructor teaching computer programming. You can visit his website at www.sourcecodester.com

Comments and Discussions

 
Questionneed help Pin
Member 1472384222-Jan-20 5:12
Member 1472384222-Jan-20 5:12 
BugSQL Injection Pin
CHill6014-Nov-18 4:37
mveCHill6014-Nov-18 4:37 
QuestionHotel Management System Pin
Member 1287506628-Nov-16 6:42
Member 1287506628-Nov-16 6:42 
QuestionExcellent work Pin
Mustafa_ub201629-Jan-16 13:40
professionalMustafa_ub201629-Jan-16 13:40 
QuestionData base password Pin
Member 1095327817-Jul-14 5:26
Member 1095327817-Jul-14 5:26 
AnswerRe: Data base password Pin
rashidnk29-Aug-14 21:40
rashidnk29-Aug-14 21:40 
GeneralRe: Data base password Pin
Member 114918432-Mar-15 5:01
Member 114918432-Mar-15 5:01 
AnswerRe: Data base password Pin
Member 1169825817-May-15 20:26
Member 1169825817-May-15 20:26 
Questionsending database password Pin
Member 1076014219-Apr-14 1:19
Member 1076014219-Apr-14 1:19 
AnswerRe: sending database password Pin
Member 124839812-Sep-16 10:50
Member 124839812-Sep-16 10:50 
Questionpassword? Pin
Member 1074998014-Apr-14 22:27
Member 1074998014-Apr-14 22:27 
AnswerRe: password? Pin
Member 1178831226-Jun-15 2:51
Member 1178831226-Jun-15 2:51 
Questionpassword Pin
Member 1074675913-Apr-14 18:58
Member 1074675913-Apr-14 18:58 
QuestionPassword Pin
Member 1051706810-Jan-14 17:59
Member 1051706810-Jan-14 17:59 
Questiondatabase in this system Pin
Quratul Ain Aini23-Apr-13 23:15
Quratul Ain Aini23-Apr-13 23:15 
Questionrequest password Pin
harishleon27-Feb-13 4:19
harishleon27-Feb-13 4:19 
Questionvb.net Room Reserve Query Pin
bhaveshkawade9-Dec-12 20:47
bhaveshkawade9-Dec-12 20:47 
Sir please help me i m also developing hotel application but i have problem about reserve the room from datein to dateout how should i lock that room for particular date. I want room should not display in my combobox if i select date which is already reserve for that particular datein and dateout. Please clear my concept. Please help me!!!!!!!!
Questionjava code Pin
divu.kana7-Jun-12 19:30
divu.kana7-Jun-12 19:30 
AnswerRe: java code Pin
Member 1006103517-May-13 22:13
Member 1006103517-May-13 22:13 
AnswerRe: java code Pin
Member 115741299-Aug-15 2:05
Member 115741299-Aug-15 2:05 
General[My vote of 1] www.FreeHotelSoftware.com Pin
Pat V24-Aug-10 16:35
Pat V24-Aug-10 16:35 
GeneralMy vote of 1 Pin
Pete Souza IV30-Mar-09 2:46
professionalPete Souza IV30-Mar-09 2:46 
GeneralRe: My vote of 1 Pin
Jomar Pabuaya30-Mar-09 17:38
Jomar Pabuaya30-Mar-09 17:38 
GeneralRe: My vote of 1 Pin
P. Ganesh Kumar26-Aug-09 3:16
professionalP. Ganesh Kumar26-Aug-09 3:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.