Professional Documents
Culture Documents
Table Booking System
Table Booking System
PROPOSAL
(Note:All entries of the proforma of approval should be filled up with appropriate and
complete information. Incomplete proforma of approval in any respect will be
summarily rejected.)
PNR No.: …………………… Roll no: _____________
1. Name of the Student
Date: …………………….
TABLE BOOKING MANAGEMENT SYSTEM
A Project Report
S.I.W.S
&
2022 – 2023
S.I.W.S
&
CERTIFICATE
College Seal
I am also thankful to Mumbai University for providing me with all the latest
technologies, thus, comforting me with project.
I take this opportunity to express my deep gratitude towards all the members of the
Information Technology Department, for helping me in the completion of the project. Finally,
I am thanking to all my Friends for their encouragement & support throughout the period of
completion.
Again, I owe my profound gratitude to my project guide, for not only helping me with the
project but also developing a keen interest in the same during its progress.
DECLARATION
I hereby declare that the project entitled “Table Booking Management System”
done at S.I.W.S. N.R. Swamy college of Commerce and Economics &
Smt.Thirumalai College of Science, has not been in any case duplicated to submit to
any other university for the award of any degree. To the best of my knowledge other
than me, no one has submitted to any other university.
The project is done in partial fulfillment of the requirements for the award of degree
of BACHELOR OF SCIENCE (INFORMATION TECHNOLOGY) to be submitted as
final semester project as part of our curriculum.
Chapter 1
Introduction
1.1 Background:
The project is developing because; many restaurants have a lot difficult to manage the
business such as customer ordering and reservation table. If the customer book. an order
and later wants to cancel the order, he is permitted to do this only within a specific time
period. By using manual customer ordering it is difficult for the waiter to keep the correct
customer information and may lose the customer information. The customer is also given
the facility to view the status of the order to determine if it is ready...
Online Restaurant management system is the system for manage the restaurant business.
After successful login the customer can access the menu page with the items listed
according to the desired time. The main point of developing this system is to help
restaurant administrator manage the restaurant business and help customer for online
ordering and reserve table. In proposed system user can search for a menu according to
his choice i.e. according to price range and category of food and later he can order a
meal.
1.2 Objective:
To determine the nature of on-line restaurant.
To manage the restaurant more effectively and efficiently by computerizing meal
ordering,billing and inventory control.
To determine the Documentation for online table booking Management system.
1.3.1Purpose:
The restaurant reservation system is a software solution that offers consumers the convenience of
booking a table and ordering food in advance. Customers can use a designated website or mobile
application to place orders even before they set foot in a restaurant.
1.3.2 Scope:
The scope of this project is to build an application for reserving tables for restaurants.
Through restaurant reservation system online, user can be allowed to take reservations
quickly and easily. These reservations are completely under users' control. The user can
choose and update their reservation as per their preference of location and time. The
manager doesn't have to maintain a guest book anymore. The managers can see who is
coming and at what time. In that they are aware about which tables have been booked.
This method also makes it easy to change the status of a reservation once your guests
walks in. Time management becomes simple. You can also inform your restaurant staff
about who has arrived as you have the information about the customer from the database
and how to take care of them. It also makes it easy to let them know in case of cancelled
reservations or no shows.
1.3.3 Applicability
The table booking system can be used by restaurants, bars, hotels, pubs, cafes, and food
trucks. The biggest advantage of the online restaurant reservation app is that tables will
always be available for booking by the users, and there will not be any instances of
wrong reservations.
1.3.4 Achievements:
The table booking system can be used by restaurants, bars, hotels, pubs, cafes, and food
trucks. The biggest advantage of the online restaurant reservation app is that tables will
always be available for booking by the users, and there will not be any instances of
wrong reservations.
Chapter 2
System Analysis
2.1 Existing System:
There are many computerised Table booking management systems available but for each system
there exist disadvantages or missing features. The most common type of table booking
management system contains a static order entry computer system usually in the shape of a
desktop computer with a touch screen. Typically this common approach is adequate to the
restaurants requirements but still requires handwritten orders to be relayed to the order entry
computer system.
Many of the existing solutions to POS (Point-of-Sale) systems are sold with the required
expensive hardware so for any business looking to work to a budget, the more enriched software
solutions are just out of their range.
Python:
The python language is one of the most accessible programming languages available because it
has simplified syntax and not complicated, which gives more emphasis on natural language.
Due to its ease of learning and usage, python codes can be easily written and executed much
faster than other programming languages.
PHP:
PHP is an open-source server-side scripting language that many devs use for web development.
It is also a general-purpose language that you can use to make lots of projects, including
Graphical User Interfaces (GUIs)
PHP is platform-independent. You don't have to have a particular OS to use it because it runs on
every platform, whether it's Mac, Windows, or Linux.
PHP is open source. The original code is made available to everyone who wants to build upon it.
This is one of the reasons why one of its frameworks, Laravel, is so popular.
Easy to learn: PHP is not hard to learn for absolute beginners. You can pick it up pretty if you
already have programming knowledge.
MySQL:
MySQL is relational database management system(RDBMS) developed by oracle that is based
on structured query language (SQL). A database is a structured collection of data. It may be
anything from simple shopping list to a picture or a place to hold a vast amounts of information
in a corporate network.
Machine Learning:
Machine learning is a field of inquiry devoted to understanding and building methods that 'learn', that
is, methods that leverage data to improve performance on some set of tasks. It is seen as a part of
artificial intelligence.
Chapter 3
System Design
3.1 Module Division:
Payment gateway
Login and User inputs: User can login to the app and book table at desired restaurant and
select menu.
Privacy and Security : Privacy refers to the users ability to control, access, and regulate their
personal information and Security refers to the system that protects the data from getting into
wrong hands, through a breach, leak, or cyber attack.
Payment gateway : Payment gateway is required because the user has to pay the required
amount while booking the table.
3.3 ER Diagram:
Fig.3.2: Entity Relationship Diagram
Class diagram in the Unified Modeling Language (UML) is a type of static structure diagram
that describes the structure of a system by showing the system’s classes, their attributes,
operations and the relationships among objects
A use case diagram is a graphical depiction of user’s possible interactions with a system.
A use cases and different types of users the system has.
State Transition Diagrams describe all of the states that an object can have, the events
under which an object changes state, the conditions that must be fulfilled before the transition
occur and the activities undertakes during the life of an object.
Activity Diagram are graphical representation of workflows of stepwise activities and actions
with support for choice, iteration and concurrency.
<div class="ftco-section-reservation">
<div class="container">
<div class="row">
<div class="col-md-12 reservation pt-5 px-5">
<p style="font-size: 20px; color: #000;font-weight: bold;margin-top: -
30px">Make a Reservation</p>
<div class="block-17" style="min-height: 100px;">
We will of course continue to monitor the situation, and adapt as quickly and
as sensitively as possible. In terms of our social media and email, you won’t
hear the same messaging from us that you’re used to. Right now, we’re solely
focused on what’s best for both diners and restaurants.<br/>
You can access the most up to date information surrounding COVID-19 via the
World Health Organization, as well as the government's website. We’d urge our
entire dining community to keep themselves informed at this time.
</div>
</section>
<script src="dashboard/assets/vendor/jquery/jquery.js"></script>
<script src="dashboard/assets/vendor/select2/select2.js"></script>
<script src="dashboard/assets/vendor/bootstrap-multiselect/bootstrap-
multiselect.js"></script>
</body>
</html>
login.php
<!-- signin.php -->
<?php include 'template/header.php'; ?>
<body>
</div>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['login'])) {
$email = $_POST['email'];
$password = $_POST['password'];
include 'dbCon.php';
$con = connect();
$emailResult = $con->query($emailSQL);
$passwordResult = $con->query($passwordSQL);
if ($emailResult->num_rows <= 0) {
echo '<script>alert("This Email Does Not Exist.")</script>';
echo '<script>window.location="login.php"</script>';
}else if ($passwordResult->num_rows <= 0) {
echo '<script>alert("This Password is Incorrect.")</script>';
echo '<script>window.location="login.php"</script>';
}else{
$_SESSION['isLoggedIn'] = TRUE;
$result = $con->query($SQL);
<!--register as customer-->
<div class="tab-content py-5" id="v-pills-tabContent">
<div class="tab-pane fade show active" id="v-pills-home"
role="tabpanel" aria-labelledby="v-pills-home-tab">
<div class="row">
<div class="col-lg-2"></div>
<div class="col-lg-8">
<div class="menus d-flex ftco-animate" style="background:
white;">
<div class="row" style="width: 100%">
<div class="col-md-12">
<!--register as restaurant-->
<div class="tab-pane fade" id="v-pills-profile" role="tabpanel"
aria-labelledby="v-pills-profile-tab">
<div class="row">
<div class="col-lg-2"></div>
<div class="col-lg-8">
<div class="menus d-flex ftco-animate" style="background:
white;">
<div class="row" style="width: 100%">
<div class="col-md-12">
<form action="manage-insert.php" method="POST"
enctype="multipart/form-data">
<div class="form-group">
<input type="text" name="fullname" class="form-
control" required="" placeholder="Restaurant Name">
</div>
<div class="form-group">
<input type="email" name="email" class="form-control"
required="" placeholder="Restaurant Email">
</div>
<div class="form-group">
<input type="text" name="phone" class="form-control"
required="" placeholder="Restaurant Phone">
</div>
<!-- <div class="form-group">
<input type="text" name="bkashnumber" class="form-
control" required="" placeholder="Restaurant Bkash Number">
</div> -->
<div class="form-group">
<select class="form-control " name="area" required="">
<option value=""> -Select Restaurant Area- </option>
<?php
include 'dbCon.php';
$con = connect();
$sql = "SELECT * FROM `locations`;";
$result = $con->query($sql);
foreach ($result as $r) {
?>
<option value="<?php echo $r['id']; ?>"><?php echo
$r['location_name']; ?></option>
<?php } ?>
</select>
</div>
<div class="form-group">
<textarea name="address" id="" cols="30" rows="2"
class="form-control" placeholder="Restaurant Address"></textarea>
</div>
<div class="form-group">
<input type="password" name="password" class="form-
control" required="" placeholder="Password">
</div>
<div class="form-group">
<input type="file" name="image" class="form-control"
required="" >
</div>
<div class="form-group">
<input type="submit" value="Register" name="regasres"
class="btn btn-primary py-3 px-5">
</div>
</form>
<p class="text-center">For Login <a href="login.php">Click
Here</a> </p>
</div>
</div>
</div>
</div>
</div>
</div><!-- END -->
</div>
</div>
</div>
</div>
</section>
Book.php
<!-- select-menu.php -->
<?php
if (isset($_POST['confirm'])) {
include 'dbCon.php';
$con = connect();
$res_id = $_POST['res_id'];
$reservation_name = $_POST['reservation_name'];
$reservation_phone = $_POST['reservation_phone'];
$reservation_date = $_POST['reservation_date'];
$reservation_time = $_POST['reservation_time'];
$bkashnumber = '';
$Rinsql = "SELECT * from restaurant_info WHERE id = '$res_id';";
$Rinresult = $con->query($Rinsql);
foreach ($Rinresult as $rri) {
$bkashnumber = $rri['bkashnumber'];
}
$table = $_POST["table"];
$chair = $_POST["chair"];
</thead>
<tbody>
<?php
$total_price = 0;
for($i = 0; $i < count($_POST["item"]);
$i++){
$i_id = $_POST['item'][$i];
$qty = $_POST["qty"][$i];
//echo $qty;
$c = 1;
$Itmsql = "SELECT * FROM `menu_item`
WHERE id = '$i_id';";
$Itmresult = $con->query($Itmsql);
foreach ($Itmresult as $itmr) {
//echo $itmr['price'];
$total_price = $total_price + ($qty *
$itmr['price']);
?>
<tr>
<td><img style="height: 40px;width:
40px;" src="dashboard/item-image/<?php echo $itmr['image']; ?>" >
</td>
<td><?php echo $itmr['item_name'];
?></td>
<td><?php echo $itmr['price']; ?></td>
<td><?php echo $qty; ?></td>
<td><?php echo $qty * $itmr['price']; ?
></td>
</tr>
<?php $c++; } } ?>
</tbody>
</table>
</div>
</div>
<div class="col mb-3 d-flex py-4 border" style="background:
white;">
<div class="align-self-center">
<p class="mb-0"><span>Total Price:</span> <a
href=""><?php echo $total_price; ?> ₹</a></p>
</div>
</div>
</div>
</div>
<!-- <div class="col-md-12">
<div class="col mb-3 border" style="background: white;">
<h3 class="text-center">Pay First</h3>
<div class="row">
<div class="col-md-6" style="text-align: center;">
<img style="height: 100px; width: 152px;"
src="images/bkash-logo.png">
<p class="text-center">Account Number:</p>
<h6 class="text-center"><?php echo $bkashnumber; ?></h6>
</div>
<div class="col-md-6">
<h6>Procedure:</h6>
<ol>
<li>send money</li>
<li>netbanking</li>
<li>upi</li>
<li>wallet</li>
<li>paytm</li>
<li>Enter transaction number</li>
</ol>
</div>
</div>
</div>
</div> -->
</body>
</html>
<?php } ?>
Choose-table.php
<!-- choose-table.php -->
<?php
if (isset($_POST['reservation'])) {
$res_id = $_POST['res_id'];
$reservation_name = $_POST['reservation_name'];
$reservation_phone = $_POST['reservation_phone'];
$reservation_date = $_POST['reservation_date'];
$reservation_time = $_POST['reservation_time'];
<body style="background-image:url('images/squares.png')">
</body>
</html>
<?php }else{
}
?>
<script type="text/javascript">
// $(".restTable").click(function() {
// // body...
// var id = $(this).data("id");
// var tbl = document.getElementById("restTable"+id);
// var btnmenu = document.getElementById("viewMenu");
// // alert(tbl.checked);
// if (tbl.checked == true){
// btnmenu.style.display = "block";
// } else {
// btnmenu.style.display = "none";
// }
// });
$(document).ready(function(){
$('input[type="checkbox"]').click(function(){
// alert($('.menu:checked').length);
});
});
</script>
Reservation.php
<!-- reservation.php -->
<?php include 'template/header.php';
include 'dbCon.php';
if (!isset($_SESSION['isLoggedIn'])) {
echo '<script>alert("You need to login first.")</script>';
echo '<script>window.location="login.php"</script>';
}
?>
<body>
</body>
</html>
Select-menu.php
<!-- select-menu.php -->
<?php
if (isset($_POST['selectChair'])) {
$res_id = $_POST['res_id'];
$reservation_name = $_POST['reservation_name'];
$reservation_phone = $_POST['reservation_phone'];
$reservation_date = $_POST['reservation_date'];
$reservation_time = $_POST['reservation_time'];
$table = $_POST["table"];
$chair = $_POST["chair"];
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<body>
</div>
<div class="col-md-4">
<h2 class="h4 mb-4">Reservation Information</h2>
<div class="d-flex ftco-animate">
<div class="col-md-12 flex-column">
<div class="row d-block flex-row">
<div class="col mb-2 d-flex py-4 border" style="background:
white;">
<div class="align-self-center">
<p class="mb-0"><span>Reservation Date:</span> <a
href=""><?php echo $reservation_date; ?></a></p>
</div>
</div>
<div class="col mb-2 d-flex py-4 border" style="background:
white;">
<div class="align-self-center">
<p class="mb-0"><span>Reservation Time:</span> <a
href=""><?php echo $reservation_time; ?></a></p>
</div>
</div>
<div class="col mb-2 d-flex py-4 border" style="background:
white;">
<div class="align-self-center">
<p class="mb-0"><span>Table No:</span>
<?php for($p = 0; $p < count($_POST["table"]); $p++){
$t_id = $_POST['table'][$p];
$sql4 = "SELECT * FROM `restaurant_tables` WHERE id =
'$t_id';";
$result4 = $con->query($sql4);
foreach ($result4 as $r4) {
?>
<a style="color: #FFB911;"><?php echo $r4['table_name'];
?></a>
<?php } } ?>
</p>
<p class="mb-0"><span>Chair No:</span>
<?php for($q = 0; $q < count($_POST["chair"]); $q++){
$c_id = $_POST['chair'][$q];
$sql5 = "SELECT * FROM `restaurant_chair` WHERE id =
'$c_id';";
$result5 = $con->query($sql5);
foreach ($result5 as $r5) {
?>
<a style="color: #FFB911;"><?php echo $r5['chair_no']; ?
>,</a>
<?php } } ?>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-12" style="text-align: center;">
<input type="hidden" name="res_id" value="<?php echo $res_id; ?
>">
<input type="hidden" name="reservation_name" value="<?php echo
$reservation_name; ?>">
<input type="hidden" name="reservation_phone" value="<?php echo
$reservation_phone; ?>">
<input type="hidden" name="reservation_date" value="<?php echo
$reservation_date; ?>">
<input type="hidden" name="reservation_time" value="<?php echo
$reservation_time; ?>">
<?php for($r = 0; $r < count($_POST["table"]); $r++){
$tbl_id = $_POST['table'][$r]; ?>
<input type="hidden" name="table[]" value="<?php echo $tbl_id; ?
>">
<?php } for($s = 0; $s < count($_POST["chair"]); $s++){
$chr_id = $_POST['chair'][$s]; ?>
<input type="hidden" name="chair[]" value="<?php echo $chr_id; ?
>">
<?php } ?>
<p style="display: none" id="confirm"><input type="submit"
value="Confirm" name="confirm" class="btn btn-primary py-3 px-5" ></p>
</div>
</div>
</div>
</section>
</form>
</body>
</html>
<?php } ?>
<script type="text/javascript">
$(document).ready(function(){
$('input[type="checkbox"]').click(function(){
// alert($('.menu:checked').length);
});
});
</script>
4.2 Testing Approach
4.2.1 Unit Testing
Unit testing concentrates on the tiniest aspects of software development. This is where we
measure a single unit or a group of interconnected units. In this, registering the user, getting
user logged in and if the user is able to access the pdf or not is checked module wise one by one
.
Output Output
1 User login Email id and Homepage open Homepage open Pass
Password
2 User login Email id and Homepage open Error message Fail
Password “Incorrect Email id or
password”.
3. User Status 1.Active Access to homepage When verified Pass
through Database
2.Inactive
4. User Status 1.Active Access denied to When not verified Fail
homepage through Database
2.Inactive
2.Inactive
6. Menu-items 1.Active Access denied to webpage When not verified Fail
through admin
2.Inactive
7. Book table 1.Active Access to webpage When verified Pass
through admin
2.Inactive
8. Book table 1.Active Access denied to webpage When not verified Fail
through admin
2.Inactive
5.2 Outputs
Login page:
User Login: The will log in with the credentials that are provided by the
Admin.
Register page:
Home page:
This is the home page, where you can see a sliding background
image.
Restaurants-list:
In this page we can find different lists of restros, and the user
can select as per their convient time and place nearby.
Chapter 6: Conclusion and Future Work
Conclusion:
The project has concluded that if a customer is willing to visit any restaurant and
finds no table is available for the meal then the customer has to wait long
for the table availability. With the help of this application the customer can
choose the desired table according to the location. E.g. Table can be
reserved as according to number of members. Moreover, the customer can
easily see pictures of interior from the Application.
Future Work:
Keeping in view the demand of proposed project that gives a series of
services and provides the customer to book a table and menu without waiting
for a long time through an android application. This application will get its
importance as day by day people are getting into android and fast life.