Hotel Management System Using C# And MySQL Database With Source Code
in this c# project tutorial we will create a simple desktop application to manage hotel reservations using csharp programming language and mysql database.
goals of this project:
- give students / curious persons an example so they can learn from.
- give beginners a step by step project so they can create their own.
- sharing knowledge with others.
tools:
- c# programming language.
- visual studio express 2013.
- mysql database.
- canva.com for images.
Watch The Full Project Tutorial
1 - The Login Form
before getting access to the main form the user need to login first by entering his username and password.
and we will check if the username/password textbox are empty.and if the user enter the wrong username or password ( or this user doesn't exists in the first place )
The Login Button:
the "conn" is an instance of the class "CONNECT" in this w've our connection string and two function to open and close the connection.private void buttonLogin_Click(object sender, EventArgs e)
{
CONNECT conn = new CONNECT();
DataTable table = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter();
MySqlCommand command = new MySqlCommand();
String query = "SELECT * FROM `users` WHERE `username`=@usn AND `password`=@pass";
command.CommandText = query;
command.Connection = conn.getConnection();
command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = textBoxUsername.Text;
command.Parameters.Add("@pass", MySqlDbType.VarChar).Value = textBoxPassword.Text;
adapter.SelectCommand = command;
adapter.Fill(table);
// if the username and the password exists
if(table.Rows.Count > 0)
{
// show the main form
this.Hide();
Main_Form mform = new Main_Form();
mform.Show();
}
else
{
if(textBoxUsername.Text.Trim().Equals(""))
{
MessageBox.Show("Enter Your Username to Login", "Empty Username", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else if (textBoxPassword.Text.Trim().Equals(""))
{
MessageBox.Show("Enter Your Password to Login", "Empty Password", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("This Username Or Password Doesn't Exists", "Wrong Data", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
if the user enter the correct username and password we will show him the main form.
2 - The Main Form
this is a quick and easy from with a menu strip to manage this system forms.
private void Main_Form_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
private void manageClientsToolStripMenuItem_Click(object sender, EventArgs e)
{
ManageClientsForm manageCF = new ManageClientsForm();
manageCF.ShowDialog();
}
private void manageRoomsToolStripMenuItem_Click(object sender, EventArgs e)
{
ManageRoomsForm manageRF = new ManageRoomsForm();
manageRF.ShowDialog();
}
private void manageReservationsToolStripMenuItem_Click(object sender, EventArgs e)
{
ManageReservationsForm manageRSVF = new ManageReservationsForm();
manageRSVF.ShowDialog();
}
}
3 - The Manage Clients Form
this form allow the user to manage the hotel clients.
this form contains a datagridview with all clients data.
we have created a class "ClIENT" with some function to use in the form.
private void ManageClientsForm_Load(object sender, EventArgs e)
{dataGridView1.DataSource = client.getClients();
}
this form contains also an add, edit, delete button + a clear button to remove text from all textboxes
- Add New Client Button
private void buttonAddClient_Click(object sender, EventArgs e)
{
String fname = textBoxFirstName.Text;
String lname = textBoxLastName.Text;
String phone = textBoxPhone.Text;
String country = textBoxCountry.Text;
if (fname.Trim().Equals("") || lname.Trim().Equals("") || phone.Trim().Equals(""))
{
MessageBox.Show("Required Fields - First & Last Name + Phone Number", "Empty Fields", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
Boolean insertClient = client.insertClient(fname, lname, phone, country);
if (insertClient)
{
dataGridView1.DataSource = client.getClients();
MessageBox.Show("New Client Inserted Successfuly", "Add Client", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("ERROR - Client Not Inserted", "Add Client", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
- Edit The Selected Client Button
private void buttonEditClient_Click(object sender, EventArgs e)
{
int id;
String fname = textBoxFirstName.Text;
String lname = textBoxLastName.Text;
String phone = textBoxPhone.Text;
String country = textBoxCountry.Text;
try
{
id = Convert.ToInt32(textBoxID.Text);
if (fname.Trim().Equals("") || lname.Trim().Equals("") || phone.Trim().Equals(""))
{
MessageBox.Show("Required Fields - First & Last Name + Phone Number", "Empty Fields", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
Boolean insertClient = client.editClient(id, fname, lname, phone, country);
if (insertClient)
{
dataGridView1.DataSource = client.getClients();
MessageBox.Show("New Client Updated Successfuly", "Edit Client", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("ERROR - Client Not Updated", "Edit Client", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}catch(Exception ex)
{
MessageBox.Show(ex.Message, "ID Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
- Delete The Selected Client Button
private void buttonRemoveClient_Click(object sender, EventArgs e)
{
try
{
int id = Convert.ToInt32(textBoxID.Text);
if(client.removeClient(id))
{
dataGridView1.DataSource = client.getClients();
MessageBox.Show("Client Deleted Successfuly", "Delete Client", MessageBoxButtons.OK, MessageBoxIcon.Information);
// you can clear all textboxes after the delete if you want
// by calling the clear button
buttonClear.PerformClick();
}
else
{
MessageBox.Show("ERROR - Client Not Deleted", "Delete Client", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}catch(Exception ex)
{
MessageBox.Show(ex.Message, "ID Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
- Clear All TextBoxes Button
private void buttonClear_Click(object sender, EventArgs e)
{
textBoxID.Text = "";
textBoxFirstName.Text = "";
textBoxLastName.Text = "";
textBoxPhone.Text = "";
textBoxCountry.Text = "";
}
4 - The Manage Rooms Form
here the user can add a new room to the hotel system.
when you add a new room you need to select the type of room (single, double, family, suite).
and like the client form you can view all rooms in a datagridview and add, edit, remove the selecte one + a combobx populated with all room's categories.
- Add New Room Button
when you add a new room the "free" column will be set to yes automatically.
private void buttonAddRoom_Click(object sender, EventArgs e)
{
int type = Convert.ToInt32(comboBoxRoomType.SelectedValue.ToString());
string phone = textBoxPhone.Text;
string free = "";
try
{
int number = Convert.ToInt32(textBoxNumber.Text);
if (radioButtonYES.Checked)
{
free = "Yes";
}
else if (radioButtonNO.Checked)
{
free = "No";
}
if (room.addRoom(number, type, phone, free))
{
dataGridView1.DataSource = room.getRooms();
MessageBox.Show("Room Added Successfully", "Add Room", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Room Not Added", "Add Room", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Room Number Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
- Edit The Selected Room Button
private void buttonEditRoom_Click(object sender, EventArgs e)
{
int type = Convert.ToInt32(comboBoxRoomType.SelectedValue.ToString());
String phone = textBoxPhone.Text;
String free = "";
try
{
int number = Convert.ToInt32(textBoxNumber.Text);
if (radioButtonYES.Checked)
{
free = "Yes";
}
else if (radioButtonNO.Checked)
{
free = "No";
}
if (room.editRoom(number, type, phone, free))
{
dataGridView1.DataSource = room.getRooms();
MessageBox.Show("Room Data Updated", "Edit Room", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Room Data NOT Updated", "Edit Room", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}catch(Exception ex)
{
MessageBox.Show(ex.Message, "Room Number Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
- Delete The Selected Room Button
private void buttonRemoveRoom_Click(object sender, EventArgs e)
{
try
{
int number = Convert.ToInt32(textBoxNumber.Text);
if (room.removeRoom(number))
{
dataGridView1.DataSource = room.getRooms();
MessageBox.Show("Room Data Deleted", "Remove Room", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Room Data NOT Deleted", "Remove Room", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Room Number Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
5 - The Manage Reservations Form
This form allow the user to manage the clients room reservations.
to create a reservation you need: 1) enter the reservation id, 2) select the client who will reserve, 3) you need to select the room where the client will stay.
when you add a new reservation the system will check:
- if you entered all required informations.
- if the date in is equal or after the current day.
- if the day out is equal or after the date in day.
- Add a New Reservation Button
private void buttonAddReserv_Click(object sender, EventArgs e)
{
try
{
int clientID = Convert.ToInt32(textBoxClientID.Text);
int roomNumber = Convert.ToInt32(comboBoxRoomNumber.SelectedValue);
DateTime dateIn = dateTimePickerIN.Value;
DateTime dateOut = dateTimePickerOUT.Value;
// date in must be = or > today date
// date out must be = or > date in
if(DateTime.Compare(dateIn.Date,DateTime.Now.Date) < 0)
{
MessageBox.Show("The Date In Must Be = or > To Today Date", "Invalid Date In", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if(DateTime.Compare(dateOut.Date, dateIn.Date) < 0)
{
MessageBox.Show("The Date Out Must Be = or > To Date In", "Invalid Date Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
if (reservation.addReservation(roomNumber, clientID, dateIn, dateOut))
{
// set the room free column to NO
// you can add a message if the room is edited
room.setRoomFree(roomNumber,"No");
dataGridView1.DataSource = reservation.getAllReserv();
MessageBox.Show("New Reservation Added", "Add Reservation", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Reservation NOT Added", "Add Reservation", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Add Reservation Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
- Edit The Selected Reservation Button
private void buttonEditReserv_Click(object sender, EventArgs e)
{
try
{
int rservID = Convert.ToInt32(textBoxReservId.Text);
int clientID = Convert.ToInt32(textBoxClientID.Text);
int roomNumber = Convert.ToInt32(dataGridView1.CurrentRow.Cells[1].Value.ToString());
DateTime dateIn = dateTimePickerIN.Value;
DateTime dateOut = dateTimePickerOUT.Value;
// date in must be = or > today date
// date out must be = or > date in
if (dateIn < DateTime.Now)
{
MessageBox.Show("The Date In Must Be = or > To Today Date", "Invalid Date In", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if (dateOut < dateIn)
{
MessageBox.Show("The Date Out Must Be = or > To Date In", "Invalid Date Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
//rservId
if (reservation.editReserv(rservID,roomNumber, clientID, dateIn, dateOut))
{
// set the room free column to NO
// you can add a message if the room is edited
room.setRoomFree(roomNumber,"No");
dataGridView1.DataSource = reservation.getAllReserv();
MessageBox.Show("Reservation Data Updated", "Edit Reservation", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Reservation NOT Added", "Add Reservation", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Add Reservation Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
- Remove The Selected Reservation Button
private void buttonRemoveReserv_Click(object sender, EventArgs e)
{
try
{
int reservId = Convert.ToInt32(textBoxReservId.Text);
int roomNumber = Convert.ToInt32(dataGridView1.CurrentRow.Cells[1].Value.ToString());
if(reservation.removeReserv(reservId))
{
dataGridView1.DataSource = reservation.getAllReserv();
// after deleting a reservation we need to set free column to 'Yes'
room.setRoomFree(roomNumber, "Yes");
MessageBox.Show("Reservation Deleted", "Delete Reservation", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Delete Reservation Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
5 comments
commentsnice project thanks..
Replycan i get database and tables photos??
ReplyThanks for your sharing meaningful project.
Reply#1 Hotel Booking System Get It Now and Boost Hotel Business" is an innovative and cost-effective solution for streamlining the hotel booking process. It eliminates manual processes, ensuring accuracy and fast response times for both customers and staff.
ReplyInteresting Project. Bunts Sangha’s Ramanath Payyade College of Hotel Management Studies in Mumbai. It’s one of the best institute for hotel management in Mumbai.Bachelor of Science (B.Sc.) in Hospitality Studies degree programme with 3 years duration to educate students for career in hotel management and ministry of tourism and hospitality industry.
Reply