Download as pdf or txt
Download as pdf or txt
You are on page 1of 58

RESTAURANT POS

A PROJECT REPORT
2023

Submitted
In partial fulfilment of the requirement for
The Award Of
BACHELOR OF COMPUTER APPLICATION

SUBMITTED BY:
YASH
ROLL NO.: 200718106010

UNDER THE GUIDANCE OF


MISS ANITA
(DEPARTMENT OF BCA)

MILESTONE INSTITUTE OF PROFESSIONAL STUDIES


MORTA, GHAZIABAD
BATCH 2020-2023

RESTAURANT POS 1
MILESTONE INSTITUTE OF PROFESSIONAL STUDIES
MORTA, GHAZIABAD

(DEPARTMENT OF COMPUTER APPLICATION)

CERTIFICATE

This so certify that Mr. YASH have completed the Major project Report on the RESTAURANT POS
under the guidance of Miss Anita for the partial fulfilment of the requirement for the degree of
Bachelor of Computer Application (batch 2020-2023), embodies the Bonafide work done by him
under my supervision

Signature of the Guide

Place:

RESTAURANT POS 2
ACKNOWLEDGEMENT

it gives me a great sense of pleasure to present the report of the Major Project undertaken during BCA-
VIth Sem. I owe special debt of gratitude to Miss Anita, Department of Computer Application,
MIPS, Morta, Ghaziabad for his constant support and guidance throughout the course of my work. His
sincerity. thoroughness and perseverance have been a constant source of inspiration for me. It is only
her cognizant efforts that my endeavours have seen light of the day

i also do not like to miss the opportunity to acknowledge the contribution of all faculty members of the
department for their kind assistance and cooperation during the development of my project

YASH
BCA-VI SEM
Roll No. 200718106010

RESTAURANT POS 3
DECLARATION

YASH hereby declare that the project report title RESTAURANT POS is an original work carried out
by me under the supervision of Miss Anita. I further declare that this work has not been submitted to
any other institute/university for the award of the degree of Bachelor of Computer Applications

YASH
ROLL NO. 200718106010

RESTAURANT POS 4
INDEX

S.no Content Signature


Chapter 1 Introduction

Chapter 2 Software Requirement Specification

Chapter 3 Modules

Chapter 4 Database And Tables

Chapter 5 Data Flow Diagram

Chapter 6 Snapshots

Chapter 7 Coding

Chapter 8 System Testing

Chapter 9 Future scope

Chapter 10 Conclusion

Chapter 11 Bibliography

RESTAURANT POS 5
CHAPTER 1
INTRODUCTION

In today's rapidly evolving digital era, electronic commerce (e-commerce) has revolutionized
traditional business practices, reshaping how transactions occur and businesses engage with
consumers. The seamless interaction between buyers and sellers facilitated by the internet has
propelled e-commerce to the forefront of global trade. This project embarks on an exploration of
the e-commerce landscape, delving into the creation of a practical e-commerce platform that brings
theoretical concepts to life.

1.1 PROJECT AIM AND OBJECTIVES

To design, develop, and analyze an operational e-commerce platform that exemplifies the practical
application of e-commerce theories and principles.

• Design and implement a user-centric interface for intuitive navigation and enhanced user
experience.
• Integrate fundamental e-commerce functionalities, including product catalog, user
authentication, shopping cart, and secure payment gateways.
• Construct a robust backend infrastructure capable of efficiently managing products,
processing orders, and maintaining databases.
• Fortify the platform's security through the implementation of encryption protocols and
secure payment gateway integration.
• Explore and incorporate cutting-edge e-commerce technologies such as artificial
intelligence-powered product recommendations.
• Optimize the platform's performance to ensure seamless functionality even during
periods of high traffic and demand.

RESTAURANT POS 6
CHAPTER 2
SOFTWARE REQUIREMENT SPECIFICATION

The Software Requirement Specification (SRS) is a pivotal document that outlines the detailed
specifications and requirements for the development of the e-commerce platform. This chapter
serves as a comprehensive guide for understanding the scope, functionalities, and constraints of the
project. The SRS acts as a bridge between the conceptualization phase and the actual
implementation, ensuring a clear roadmap for the development team.

2.1 GENERAL DESCRIPTION

2.1.1 PRODUCT DESCRIPTION

The e-commerce platform aspires to create an intuitive and user-friendly online marketplace. Its
core objective is to facilitate seamless product discovery, selection, and purchase for users. The
integration of cutting-edge technologies, such as AI-driven product recommendations, and the
implementation of secure payment gateways aim to enhance user engagement and foster trust in
transaction security.

2.1.2 PROBLEM STATEMENT

The challenge revolves around developing a robust e-commerce platform that effectively addresses
several key issues. These challenges include the complexity of user interfaces, ensuring optimal
performance during peak traffic times, and maintaining stringent data security protocols. The
project's goal is to overcome these challenges and deliver an exceptional online shopping
experience for users.

The subsequent sections of this chapter delve deeper into the specific components of the Software
Requirement Specification. These include functional and non-functional requirements, user
interface specifications, system architecture, and more. Each section contributes to a

RESTAURANT POS 7
comprehensive understanding of the software's objectives, features, and the criteria that will define
its success.

2.2 SYSTEM OBJECTIVES

The system objectives outline the primary goals of the e-commerce platform's development,
emphasizing the core functionalities and outcomes that the software aims to achieve. These
objectives serve as guiding principles for the project's design and implementation.

• Create an intuitive user interface that enables effortless product browsing, selection, and
checkout.
• Implement AI-driven product recommendations to enhance user engagement and
promote personalized shopping experiences.
• Establish a secure payment gateway integration to ensure reliable and safe transactions.
• Optimize system performance to maintain responsiveness during peak traffic periods.
• Develop a scalable architecture that accommodates future enhancements and increased
user load.
• Implement robust data security measures to protect user information and transaction
details.

2.3 SYSTEM REQUIREMENTS

The system requirements delineate the detailed specifications that the e-commerce platform must
adhere to fulfill its objectives effectively. These requirements encompass both functional and non-
functional aspects, forming the basis for design, development, and testing.

RESTAURANT POS 8
2.1.2 OPERATION ENVIRONMENT

PROCESSOR INTEL CORE PROCESSOR FOR BETTER


PERFORMANCE
OPERATING SYSTEM WEB APPLICATION COMPATIBLE ACROSS MAJOR OS
PLATFORMS
DATABASE MySQL

BROWSERS CHROME, FIREFOX, SAFARI, EDGE

WEB SERVERS APACHE

MEMORY 2 GB RAM OR MORE

IDE VS CODE

2.1.3 NON-FUNCTIONAL REQUIREMENTS


Non-functional requirements define the quality attributes and characteristics that the e-commerce
platform must possess. These attributes contribute to the overall user experience, system
performance, and operational effectiveness.

EFFICIENCY REQUIREMENT:
The platform shall ensure that the average page load time for product listings, user account
pages, and checkout processes does not exceed 3 seconds to maintain optimal user engagement.

RELIABILITY REQUIREMENT:
The platform shall have an uptime of at least 99.9% to ensure consistent access for users, with
planned maintenance communicated to users in advance.

USABILITY REQUIREMENT:
The user interface shall be designed to be intuitive, with clear navigation and user-friendly
interactions, reducing the learning curve for new users and enhancing overall usability.

ORGANIZATIONAL REQUIREMENT:

RESTAURANT POS 9
The platform shall allow for role-based access control, enabling administrators to manage user
roles, permissions, and content to ensure smooth organizational management.

IMPLEMENTATION REQUIREMENTS:
The platform's codebase shall adhere to coding standards, best practices, and be thoroughly
documented to facilitate ease of maintenance and future enhancements.
DELIVERY REQUIREMENTS:
The final version of the e-commerce platform shall be delivered to the client by the agreed-upon
deadline, along with comprehensive documentation and training materials for administrators and
end-users.

2.4 FUNCTIONAL REQUIREMENTS


Functional requirements outline the specific functionalities and features that the e-commerce
platform must support to meet user needs and achieve its objectives.

1.1 USER LOGIN


DESCRIPTION:
This feature allows registered users to securely log into the e-commerce platform using their
credentials.
FUNCTIONAL REQUIREMENTS:
• Users shall be prompted to provide their email/username and password to log in.
• The platform shall verify the provided credentials against the stored user database.
• Upon successful validation, users shall be granted access to their personalized accounts.

1.2 REGISTER NEW USER


DESCRIPTION:
This feature enables new users to create accounts on the e-commerce platform, gaining access to
its functionalities.
FUNCTIONAL REQUIREMENTS:
• Users shall be presented with a registration form requiring them to provide their name,
email, password, and other optional details.
• The system shall validate and ensure the uniqueness of the provided email address.
RESTAURANT POS 10
• Upon successful registration, users shall receive a confirmation email containing a
verification link.
• Users shall have the option to recover their password in case of forgotten credentials.

1.3 REGISTER NEW CUSTOMER


DESCRIPTION:
This feature allows the addition of new customer information to the platform's database.

FUNCTIONAL REQUIREMENTS:
• Administrators shall have access to a dedicated section to add new customer
information.
• The system shall prompt administrators to input essential customer details such as name,
contact information, and address.
• Administrators shall be able to designate customer preferences and categorizations.
• Upon submission, the system shall store the customer information securely in the
database.

1.4 CUSTOMER INFORMATION

DESCRIPTION:
This feature aims to provide comprehensive customer information to enhance user engagement
and facilitate personalized interactions.

FUNCTIONAL REQUIREMENTS:
• The system shall maintain a centralized database containing customer profiles and
associated data.
• Administrators shall have access to view and manage customer information through a
dedicated interface.
• Customers shall be able to access and edit their personal information through their user
accounts.
• The platform shall store details such as name, contact information, billing addresses,
shipping addresses, and purchase history.

RESTAURANT POS 11
• Administrators shall be able to segment customers based on purchase history, preferences,
and demographics.
• The platform shall ensure the security and privacy of customer data, adhering to data
protection regulations.
• Customers shall have the option to opt out of data sharing and marketing communications.
• The system shall provide a means to export customer data in compliance with data
portability requirements.

RESTAURANT POS 12
CHAPTER 3
MODULES

1. User Authentication and Access Control:


Implement a secure login system with different user roles (manager, waiter, chef, cashier) to
control access to various parts of the system.

2. Menu Management:
Allow for the addition, editing, and deletion of menu items. Categorize items (appetizers, main
courses, beverages, desserts) and set prices. Accommodate for special requests and dietary
preferences.

3. Order Taking:
Provide a user-friendly interface for waitstaff to take orders. Allow customization of orders, such
as specifying ingredients, cooking preferences, and substitutions.

4. Table Management:
If applicable, create a module to manage tables. Assign tables to customers, track occupancy, and
manage reservations.

5. Order Processing:
Process incoming orders, send them to the kitchen for preparation, and manage order status
(received, in-progress, ready). Support order modification and cancellation.

6. Inventory Management:
Keep track of inventory levels for ingredients and items. Automatically update inventory when
orders are processed, and generate alerts when stock is low.

RESTAURANT POS 13
7. Billing and Payment:
Calculate the total bill based on ordered items and apply taxes and discounts. Process various
payment methods, including cash, credit/debit cards, and digital wallets.

8. Receipt Generation:
Generate and print or email receipts for customers. Include order details, total amount, payment
method, and any applicable discounts.

9. Reporting and Analytics:


Provide reports on sales, revenue, popular menu items, employee performance, and customer
feedback. These insights help in making informed business decisions.

10.Employee Management:
Manage employee profiles, roles, shifts, and schedules. This module might include features for
clocking in/out and tracking hours worked.

11.Customer Management:
Maintain a database of customer information for loyalty programs, targeted marketing, and
personalized service.

12.Integration with Kitchen Displays:


If possible, integrate with kitchen display systems to streamline communication between
waitstaff and the kitchen staff.

13.Offline Mode:
Implement an offline mode that allows the system to continue processing orders and accepting
payments even if the internet connection is temporarily lost.

RESTAURANT POS 14
14.Settings and Configuration:
Provide settings for configuring taxes, currencies, tipping options, receipt formats, and other
customizable features.

15.Security and Audit Logs:


Implement security measures to protect customer data and transaction information. Maintain
audit logs of important actions taken within the system.

16.System Administration:
Include an administrative module for managing system settings, user accounts, and updates.

17.Help and Support:


Include a help section or support feature where users can find answers to common questions and
access support resources.

RESTAURANT POS 15
CHAPTER 4
DATABASE AND TABLE

RESTAURANT POS 16
RESTAURANT POS 17
CHAPTER 5
DATA FLOW DIGRAM

RESTAURANT POS 18
CHAPTER 6
SNAPSHOTS

RESTAURANT POS 19
RESTAURANT POS 20
RESTAURANT POS 21
RESTAURANT POS 22
CHAPTER 7
CODING
Index.php:
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<!-- For more projects: Visit -->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Restro POS System</title>

<!-- Fonts -->


<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

<!-- Styles -->


<style>
html,
body {
background-color: #fff;
color: #636b6f;
font-family: 'Nunito', sans-serif;
font-weight: 200;
height: 100vh;
margin: 0;
}

.full-height {

RESTAURANT POS 23
height: 100vh;
}

.flex-center {
align-items: center;
display: flex;
justify-content: center;
}

.position-ref {
position: relative;
}

.top-right {
position: absolute;
right: 10px;
top: 18px;
}

.content {
text-align: center;
}

.title {
font-size: 84px;
}

.links>a {

RESTAURANT POS 24
color: #636b6f;
padding: 0 25px;
font-size: 13px;
font-weight: 600;
letter-spacing: .1rem;
text-decoration: none;
text-transform: uppercase;
}

.m-b-md {
margin-bottom: 30px;
}
</style>
</head>
<!-- For more projects: Visit -->
<body>
<div class="flex-center position-ref full-height">
<div class="content">
<div class="title m-b-md">
Restaurant POS
</div>

<div class="links">
<!-- For more projects: Visit -->
<a href="Restro/admin/">Admin Log In</a>
<a href="Restro/cashier/">Cashier Log In</a>
<a href="Restro/customer">Customer Log In</a>
</div>

RESTAURANT POS 25
</div>
</div>
</body>
<!-- For more projects: Visit -->
</html>

Change profile:

<?php

session_start();

include('config/config.php');

include('config/checklogin.php');

include('config/code-generator.php');

check_login();

if (isset($_POST['ChangeProfile'])) {

//Prevent Posting Blank Values

if (empty($_POST["customer_phoneno"]) || empty($_POST["customer_name"]) ||
empty($_POST['customer_email'])) {

$err = "Blank Values Not Accepted";

} else {

$customer_name = $_POST['customer_name'];

$customer_phoneno = $_POST['customer_phoneno'];

$customer_email = $_POST['customer_email'];

$customer_id = $_SESSION['customer_id'];

//Insert Captured information to a database table

$postQuery = "UPDATE rpos_customers SET customer_name =?, customer_phoneno =?,


customer_email =?, customer_password =? WHERE customer_id =?";

$postStmt = $mysqli->prepare($postQuery);

RESTAURANT POS 26
//bind paramaters

$rc = $postStmt->bind_param('sssss', $customer_name, $customer_phoneno, $customer_email,


$customer_password, $customer_id);

$postStmt->execute();

//declare a varible which will be passed to alert function

if ($postStmt) {

$success = "Profile Updated" && header("refresh:1; url=dashboard.php");

} else {

$err = "Please Try Again Or Try Later";

if (isset($_POST['changePassword'])) {

//Change Password

$error = 0;

if (isset($_POST['old_password']) && !empty($_POST['old_password'])) {

$old_password = mysqli_real_escape_string($mysqli, trim(sha1(md5($_POST['old_password']))));

} else {

$error = 1;

$err = "Old Password Cannot Be Empty";

if (isset($_POST['new_password']) && !empty($_POST['new_password'])) {

$new_password = mysqli_real_escape_string($mysqli, trim(sha1(md5($_POST['new_password']))));

} else {

$error = 1;

$err = "New Password Cannot Be Empty";

if (isset($_POST['confirm_password']) && !empty($_POST['confirm_password'])) {

RESTAURANT POS 27
$confirm_password = mysqli_real_escape_string($mysqli,
trim(sha1(md5($_POST['confirm_password']))));

} else {

$error = 1;

$err = "Confirmation Password Cannot Be Empty";

if (!$error) {

$customer_id = $_SESSION['customer_id'];

$sql = "SELECT * FROM rpos_customers WHERE customer_id = '$customer_id'";

$res = mysqli_query($mysqli, $sql);

if (mysqli_num_rows($res) > 0) {

$row = mysqli_fetch_assoc($res);

if ($old_password != $row['customer_password']) {

$err = "Please Enter Correct Old Password";

} elseif ($new_password != $confirm_password) {

$err = "Confirmation Password Does Not Match";

} else {

$new_password = sha1(md5($_POST['new_password']));

//Insert Captured information to a database table

$query = "UPDATE rpos_customers SET customer_password =? WHERE customer_id =?";

$stmt = $mysqli->prepare($query);

//bind paramaters

$rc = $stmt->bind_param('si', $new_password, $customer_id);

$stmt->execute();

//declare a varible which will be passed to alert function

if ($stmt) {

RESTAURANT POS 28
$success = "Password Changed" && header("refresh:1; url=dashboard.php");

} else {

$err = "Please Try Again Or Try Later";

require_once('partials/_head.php');

?>

<body>

<!-- Sidenav -->

<?php

require_once('partials/_sidebar.php');

?>

<!-- Main content -->

<div class="main-content">

<!-- Top navbar -->

<?php

require_once('partials/_topnav.php');

$customer_id = $_SESSION['customer_id'];

//$login_id = $_SESSION['login_id'];

$ret = "SELECT * FROM rpos_customers WHERE customer_id = '$customer_id'";

$stmt = $mysqli->prepare($ret);

$stmt->execute();

$res = $stmt->get_result();

while ($customer = $res->fetch_object()) {

?>

RESTAURANT POS 29
<!-- Header -->

<div class="header pb-8 pt-5 pt-lg-8 d-flex align-items-center" style="min-height: 600px;


background-image: url(../admin/assets/img/theme/restro00.jpg); background-size: cover; background-
position: center top;">

<!-- Mask -->

<span class="mask bg-gradient-default opacity-8"></span>

<!-- Header container -->

<div class="container-fluid d-flex align-items-center">

<div class="row">

<div class="col-lg-7 col-md-10">

<h1 class="display-2 text-white">Hello <?php echo $customer->customer_name;


?></h1>

<p class="text-white mt-0 mb-5">This is your profile page. You can customize your
profile as you want And also change password too</p>

</div>

</div>

</div>

</div>

<!-- Page content -->

<div class="container-fluid mt--8">

<div class="row">

<div class="col-xl-4 order-xl-2 mb-5 mb-xl-0">

<div class="card card-profile shadow">

<div class="row justify-content-center">

<div class="col-lg-3 order-lg-2">

<div class="card-profile-image">

<a href="#">

<img src="../admin/assets/img/theme/user-a-min.png" class="rounded-circle">

</a>

</div>

RESTAURANT POS 30
</div>

</div>

<div class="card-header text-center border-0 pt-8 pt-md-4 pb-0 pb-md-4">

<div class="d-flex justify-content-between">

</div>

</div>

<div class="card-body pt-0 pt-md-4">

<div class="row">

<div class="col">

<div class="card-profile-stats d-flex justify-content-center mt-md-5">

<div>

</div>

<div>

</div>

<div>

</div>

</div>

</div>

</div>

<div class="text-center">

<h3>

<?php echo $customer->customer_name; ?></span>

</h3>

<div class="h5 font-weight-300">

<i class="fas fa-envelope mr-2"></i><?php echo $customer->customer_email; ?>

</div>

<div class="h5 font-weight-300">

<i class="fas fa-phone mr-2"></i><?php echo $customer->customer_phoneno; ?>

</div>

RESTAURANT POS 31
</div>

</div>

</div>

</div>

<div class="col-xl-8 order-xl-1">

<div class="card bg-secondary shadow">

<div class="card-header bg-white border-0">

<div class="row align-items-center">

<div class="col-8">

<h3 class="mb-0">My account</h3>

</div>

<div class="col-4 text-right">

</div>

</div>

</div>

<div class="card-body">

<form method="post">

<h6 class="heading-small text-muted mb-4">User information</h6>

<div class="pl-lg-4">

<div class="row">

<div class="col-lg-6">

<div class="form-group">

<label class="form-control-label" for="input-username">Full Name</label>

<input type="text" name="customer_name" value="<?php echo


$customer->customer_name; ?>" id="input-username" class="form-control form-control-alternative" ">

</div>

</div>

<div class=" col-lg-6">

<div class="form-group">

RESTAURANT POS 32
<label class="form-control-label" for="input-email">Phone Number</label>

<input type="text" id="input-email" value="<?php echo $customer-


>customer_phoneno; ?>" name="customer_phone" class="form-control form-control-alternative">

</div>

</div>

<div class="col-lg-12">

<div class="form-group">

<label class="form-control-label" for="input-email">Email address</label>

<input type="email" id="input-email" value="<?php echo $customer-


>customer_email; ?>" name="customer_email" class="form-control form-control-alternative">

</div>

</div>

</div>

<div class="col-lg-12">

<div class="form-group">

<input type="submit" id="input-email" name="ChangeProfile" class="btn btn-


success form-control-alternative" value="Submit"">

</div>

</div>

</div>

</form>

<hr>

<form method =" post">

<h6 class="heading-small text-muted mb-4">Change Password</h6>

<div class="pl-lg-4">

<div class="row">

<div class="col-lg-12">

<div class="form-group">

<label class="form-control-label" for="input-username">Old


Password</label>

RESTAURANT POS 33
<input type="password" name="old_password" id="input-username"
class="form-control form-control-alternative">

</div>

</div>

<div class="col-lg-12">

<div class="form-group">

<label class="form-control-label" for="input-email">New


Password</label>

<input type="password" name="new_password" class="form-control


form-control-alternative">

</div>

</div>

<div class="col-lg-12">

<div class="form-group">

<label class="form-control-label" for="input-email">Confirm New


Password</label>

<input type="password" name="confirm_password" class="form-control


form-control-alternative">

</div>

</div>

<div class="col-lg-12">

<div class="form-group">

<input type="submit" id="input-email" name="changePassword"


class="btn btn-success form-control-alternative" value="Change Password">

</div>

</div>

</div>

</div>

RESTAURANT POS 34
</div>

</form>

</div>

</div>

</div>

</div>

<!-- Footer -->

<?php

require_once('partials/_footer.php');

?>

</div>

</div>

<!-- Argon Scripts -->

<?php

require_once('partials/_sidebar.php');

?>

</body>

</html>

Create account :

<?php

session_start();

include('config/config.php');

//login

if (isset($_POST['addCustomer'])) {

//Prevent Posting Blank Values

if (empty($_POST["customer_phoneno"]) || empty($_POST["customer_name"]) ||
empty($_POST['customer_email']) || empty($_POST['customer_password'])) {

RESTAURANT POS 35
$err = "Blank Values Not Accepted";

} else {

$customer_name = $_POST['customer_name'];

$customer_phoneno = $_POST['customer_phoneno'];

$customer_email = $_POST['customer_email'];

$customer_password = sha1(md5($_POST['customer_password'])); //Hash This

$customer_id = $_POST['customer_id'];

//Insert Captured information to a database table

$postQuery = "INSERT INTO rpos_customers (customer_id, customer_name, customer_phoneno,


customer_email, customer_password) VALUES(?,?,?,?,?)";

$postStmt = $mysqli->prepare($postQuery);

//bind paramaters

$rc = $postStmt->bind_param('sssss', $customer_id, $customer_name, $customer_phoneno,


$customer_email, $customer_password);

$postStmt->execute();

//declare a varible which will be passed to alert function

if ($postStmt) {

$success = "Customer Account Created" && header("refresh:1; url=index.php");

} else {

$err = "Please Try Again Or Try Later";

require_once('partials/_head.php');

require_once('config/code-generator.php');

?>

<body class="bg-dark">

RESTAURANT POS 36
<div class="main-content">

<div class="header bg-gradient-primar py-7">

<div class="container">

<div class="header-body text-center mb-7">

<div class="row justify-content-center">

<div class="col-lg-5 col-md-6">

<h1 class="text-white">Restaurant Point Of Sale</h1>

</div>

</div>

</div>

</div>

</div>

<!-- Page content -->

<div class="container mt--8 pb-5">

<div class="row justify-content-center">

<div class="col-lg-5 col-md-7">

<div class="card bg-secondary shadow border-0">

<div class="card-body px-lg-5 py-lg-5">

<form method="post" role="form">

<div class="form-group mb-3">

<div class="input-group input-group-alternative">

<div class="input-group-prepend">

<span class="input-group-text"><i class="fas fa-user"></i></span>

</div>

<input class="form-control" required name="customer_name" placeholder="Full


Name" type="text">

<input class="form-control" value="<?php echo $cus_id;?>" required


name="customer_id" type="hidden">

</div>

RESTAURANT POS 37
</div>

<div class="form-group mb-3">

<div class="input-group input-group-alternative">

<div class="input-group-prepend">

<span class="input-group-text"><i class="fas fa-phone"></i></span>

</div>

<input class="form-control" required name="customer_phoneno"


placeholder="Phone Number" type="text">

</div>

</div>

<div class="form-group mb-3">

<div class="input-group input-group-alternative">

<div class="input-group-prepend">

<span class="input-group-text"><i class="ni ni-email-83"></i></span>

</div>

<input class="form-control" required name="customer_email"


placeholder="Email" type="email">

</div>

</div>

<div class="form-group">

<div class="input-group input-group-alternative">

<div class="input-group-prepend">

<span class="input-group-text"><i class="ni ni-lock-circle-open"></i></span>

</div>

<input class="form-control" required name="customer_password"


placeholder="Password" type="password">

</div>

</div>

<div class="text-center">

RESTAURANT POS 38
</div>

<div class="form-group">

<div class="text-left">

<button type="submit" name="addCustomer" class="btn btn-primary my-


4">Create Account</button>

<a href="index.php" class=" btn btn-success pull-right">Log In</a>

</div>

</div>

</form>

</div>

</div>

<div class="row mt-3">

<div class="col-6">

<a href="../admin/forgot_pwd.php" target="_blank" class="text-light"><small>Forgot


password?</small></a>

</div>

</div>

</div>

</div>

</div>

</div>

<!-- Footer -->

<?php

require_once('partials/_footer.php');

?>

<!-- Argon Scripts -->

<?php

require_once('partials/_scripts.php');

RESTAURANT POS 39
?>

</body>

</html>

Dashboard .php:

<?php

session_start();

include('config/config.php');

include('config/checklogin.php');

check_login();

require_once('partials/_head.php');

require_once('partials/_analytics.php');

?>

<!-- For more projects: Visit -->

<body>

<!-- Sidenav -->

<?php

require_once('partials/_sidebar.php');

?>

<!-- Main content -->

<div class="main-content">

<!-- Top navbar -->

<?php

require_once('partials/_topnav.php');

?>

<!-- Header -->

<div style="background-image: url(../admin/assets/img/theme/restro00.jpg); background-size: cover;"


class="header pb-8 pt-5 pt-md-8">

RESTAURANT POS 40
<span class="mask bg-gradient-dark opacity-8"></span>

<div class="container-fluid">

<div class="header-body">

<!-- Card stats -->

<div class="row">

<div class="col-xl-4 col-lg-6">

<a href="orders.php">

<div class="card card-stats mb-4 mb-xl-0">

<div class="card-body">

<div class="row">

<div class="col">

<h5 class="card-title text-uppercase text-muted mb-0">Available Items</h5>

<span class="h2 font-weight-bold mb-0"><?php echo $products; ?></span>

</div><!-- For more projects: Visit -->

<div class="col-auto">

<div class="icon icon-shape bg-purple text-white rounded-circle shadow">

<i class="fas fa-utensils"></i>

</div>

</div>

</div>

</div>

</div>

</a>

</div><!-- For more projects: Visit -->

<div class="col-xl-4 col-lg-6">

<a href="orders_reports.php">

<div class="card card-stats mb-4 mb-xl-0">

<div class="card-body">

<div class="row">

RESTAURANT POS 41
<div class="col">

<h5 class="card-title text-uppercase text-muted mb-0">Total Orders</h5>

<span class="h2 font-weight-bold mb-0"><?php echo $orders; ?></span>

</div>

<div class="col-auto">

<div class="icon icon-shape bg-warning text-white rounded-circle shadow">

<i class="fas fa-shopping-cart"></i>

</div>

</div>

</div>

</div>

</div>

</a><!-- For more projects: Visit -->

</div>

<div class="col-xl-4 col-lg-6">

<a href="payments_reports.php">

<div class="card card-stats mb-4 mb-xl-0">

<div class="card-body">

<div class="row">

<div class="col">

<h5 class="card-title text-uppercase text-muted mb-0">Total Money Spend</h5>

<span class="h2 font-weight-bold mb-0">$<?php echo $sales; ?></span>

</div>

<div class="col-auto">

<div class="icon icon-shape bg-green text-white rounded-circle shadow">

<i class="fas fa-wallet"></i>

</div>

</div><!-- For more projects: Visit -->

</div>

RESTAURANT POS 42
</div>

</div>

</a>

</div>

</div>

</div>

</div><!-- For more projects: Visit -->

</div>

<!-- Page content -->

<div class="container-fluid mt--7">

<div class="row mt-5">

<div class="col-xl-12 mb-5 mb-xl-0">

<div class="card shadow">

<div class="card-header border-0">

<div class="row align-items-center">

<div class="col">

<h3 class="mb-0">Recent Orders</h3>

</div>

<div class="col text-right">

<a href="orders_reports.php" class="btn btn-sm btn-primary">See all</a>

</div>

</div>

</div>

<div class="table-responsive">

<!-- Projects table -->

<table class="table align-items-center table-flush">

<thead class="thead-light">

<tr><!-- For more projects: Visit -->

<th class="text-success" scope="col">Code</th>

RESTAURANT POS 43
<th scope="col">Customer</th>

<th class="text-success" scope="col">Product</th>

<th scope="col">Unit Price</th>

<th class="text-success" scope="col">#</th>

<th scope="col">Total Price</th>

<th scop="col">Status</th>

<th class="text-success" scope="col">Date</th>

</tr>

</thead>

<tbody>

<?php

$customer_id = $_SESSION['customer_id'];

$ret = "SELECT * FROM rpos_orders WHERE customer_id = '$customer_id' ORDER BY


`rpos_orders`.`created_at` DESC LIMIT 10 ";

$stmt = $mysqli->prepare($ret);

$stmt->execute();

$res = $stmt->get_result();

while ($order = $res->fetch_object()) {

$total = ($order->prod_price * $order->prod_qty);

?>

<tr>

<th class="text-success" scope="row"><?php echo $order->order_code; ?></th>

<td><?php echo $order->customer_name; ?></td>

<td class="text-success"><?php echo $order->prod_name; ?></td>

<td>$<?php echo $order->prod_price; ?></td>

<td class="text-success"><?php echo $order->prod_qty; ?></td>

<td>$<?php echo $total; ?></td>

<td><?php if ($order->order_status == '') {

RESTAURANT POS 44
echo "<span class='badge badge-danger'>Not Paid</span>";

} else {

echo "<span class='badge badge-success'>$order->order_status</span>";

} ?></td>

<td class="text-success"><?php echo date('d/M/Y g:i', strtotime($order->created_at));


?></td>

</tr>

<?php } ?>

</tbody>

</table>

</div>

</div>

</div>

</div>

<!-- For more projects: Visit -->

<div class="row mt-5">

<div class="col-xl-12">

<div class="card shadow">

<div class="card-header border-0">

<div class="row align-items-center">

<div class="col">

<h3 class="mb-0">My Recent Payments</h3>

</div>

<div class="col text-right">

<a href="payments_reports.php" class="btn btn-sm btn-primary">See all</a>

</div>

</div>

</div>

<div class="table-responsive">

RESTAURANT POS 45
<!-- Projects table -->

<table class="table align-items-center table-flush">

<thead class="thead-light">

<tr>

<th class="text-success" scope="col">Code</th>

<th scope="col">Amount</th>

<th class='text-success' scope="col">Order Code</th>

</tr>

</thead>

<tbody>

<?php

$ret = "SELECT * FROM rpos_payments WHERE customer_id ='$customer_id' ORDER BY


`rpos_payments`.`created_at` DESC LIMIT 10 ";

$stmt = $mysqli->prepare($ret);

$stmt->execute();

$res = $stmt->get_result();

while ($payment = $res->fetch_object()) {

?>

<tr>

<th class="text-success" scope="row">

<?php echo $payment->pay_code; ?>

</th>

<td>

$<?php echo $payment->pay_amt; ?>

</td>

<td class='text-success'>

<?php echo $payment->order_code; ?>

</td>

</tr>

RESTAURANT POS 46
<?php } ?>

</tbody>

</table>

</div>

</div>

</div>

</div>

<!-- Footer -->

<?php require_once('partials/_footer.php'); ?>

</div>

</div>

<!-- Argon Scripts -->

<?php

require_once('partials/_scripts.php');

?>

</body>

<!-- For more projects: Visit -->

</html>

Make_orde.php:

<?php

session_start();

include('config/config.php');

include('config/checklogin.php');

include('config/code-generator.php');

check_login();

if (isset($_POST['make'])) {

//Prevent Posting Blank Values

RESTAURANT POS 47
if (empty($_POST["order_code"]) || empty($_POST["customer_name"]) ||
empty($_GET['prod_price'])) {

$err = "Blank Values Not Accepted";

} else {

$order_id = $_POST['order_id'];

$order_code = $_POST['order_code'];

$customer_id = $_SESSION['customer_id'];

$customer_name = $_POST['customer_name'];

$prod_id = $_GET['prod_id'];

$prod_name = $_GET['prod_name'];

$prod_price = $_GET['prod_price'];

$prod_qty = $_POST['prod_qty'];

//Insert Captured information to a database table

$postQuery = "INSERT INTO rpos_orders (prod_qty, order_id, order_code, customer_id,


customer_name, prod_id, prod_name, prod_price) VALUES(?,?,?,?,?,?,?,?)";

$postStmt = $mysqli->prepare($postQuery);

//bind paramaters

$rc = $postStmt->bind_param('ssssssss', $prod_qty, $order_id, $order_code, $customer_id,


$customer_name, $prod_id, $prod_name, $prod_price);

$postStmt->execute();

//declare a varible which will be passed to alert function

if ($postStmt) {

$success = "Order Submitted" && header("refresh:1; url=payments.php");

} else {

$err = "Please Try Again Or Try Later";

require_once('partials/_head.php');

RESTAURANT POS 48
?>

<body>

<!-- Sidenav -->

<?php

require_once('partials/_sidebar.php');

?>

<!-- Main content -->

<div class="main-content">

<!-- Top navbar -->

<?php

require_once('partials/_topnav.php');

?>

<!-- Header -->

<div style="background-image: url(../admin/assets/img/theme/restro00.jpg); background-size:


cover;" class="header pb-8 pt-5 pt-md-8">

<span class="mask bg-gradient-dark opacity-8"></span>

<div class="container-fluid">

<div class="header-body">

</div>

</div>

</div>

<!-- Page content -->

<div class="container-fluid mt--8">

<!-- Table -->

<div class="row">

<div class="col">

<div class="card shadow">

<div class="card-header border-0">

RESTAURANT POS 49
<h3>Please Fill All Fields</h3>

</div>

<div class="card-body">

<form method="POST" enctype="multipart/form-data">

<div class="form-row">

<div class="col-md-6">

<label>Customer Name</label>

<?php

//Load All Customers

$customer_id = $_SESSION['customer_id'];

$ret = "SELECT * FROM rpos_customers WHERE customer_id = '$customer_id' ";

$stmt = $mysqli->prepare($ret);

$stmt->execute();

$res = $stmt->get_result();

while ($cust = $res->fetch_object()) {

?>

<input class="form-control" readonly name="customer_name" value="<?php


echo $cust->customer_name; ?>">

<?php } ?>

<input type="hidden" name="order_id" value="<?php echo $orderid; ?>"


class="form-control">

</div>

<div class="col-md-6">

<label>Order Code</label>

<input type="text" readonly name="order_code" value="<?php echo $alpha; ?>-


<?php echo $beta; ?>" class="form-control" value="">

</div>

</div>

<hr>

RESTAURANT POS 50
<?php

$prod_id = $_GET['prod_id'];

$ret = "SELECT * FROM rpos_products WHERE prod_id = '$prod_id'";

$stmt = $mysqli->prepare($ret);

$stmt->execute();

$res = $stmt->get_result();

while ($prod = $res->fetch_object()) {

?>

<div class="form-row">

<div class="col-md-6">

<label>Product Price ($)</label>

<input type="text" readonly name="prod_price" value="$ <?php echo $prod-


>prod_price; ?>" class="form-control">

</div>

<div class="col-md-6">

<label>Product Quantity</label>

<input type="text" name="prod_qty" class="form-control" value="">

</div>

</div>

<?php } ?>

<br>

<div class="form-row">

<div class="col-md-6">

<input type="submit" name="make" value="Make Order" class="btn btn-success"


value="">

</div>

</div>

</form>

</div>

RESTAURANT POS 51
</div>

</div>

</div>

<!-- Footer -->

<?php

require_once('partials/_footer.php');

?>

</div>

</div>

<!-- Argon Scripts -->

<?php

require_once('partials/_scripts.php');

?>

</body>

</html>

Logout.php:

<?php

session_start();

unset($_SESSION['customer_id']);

session_destroy();

header("Location: ../../index.php");

exit;

RESTAURANT POS 52
CHAPTER 8
SYSTEM TESTING

System testing is a crucial phase in the development lifecycle that ensures the e-commerce
platform's functionalities operate as intended, both independently and collectively. This chapter
delves into the testing methodologies employed to validate the system's performance, security,
and user-friendliness. The testing phase aims to identify and rectify any issues before the
platform's deployment, guaranteeing a seamless and reliable user experience.

4.1 SYSTEM TESTING OVERVIEW

System testing involves several distinct types of testing, each focusing on specific aspects of the
platform's functionality and user interactions. These testing methodologies ensure that the e-
commerce platform meets the established requirements and operates as expected across different
scenarios.

4.1.1 UNIT TESTING


Unit testing is the initial phase of system testing, where individual components or modules of the
platform are tested in isolation. The objective is to validate that each unit performs its intended
functions accurately. This testing helps identify and rectify errors in code logic and ensures that
the building blocks of the platform function reliably.

4.1.2 INTEGRATION TESTING


Integration testing assesses the interactions between different modules and components of the
platform. It ensures that the integrated system functions cohesively and that data flows
seamlessly between different parts. Integration testing aims to uncover issues related to data
transfer, communication, and compatibility.

4.1.3 SYSTEM TESTING


System testing evaluates the entire e-commerce platform, examining its behavior and
performance in a comprehensive environment. This testing verifies that all functionalities,
including user interactions, data processing, and system responses, operate as expected. System

RESTAURANT POS 53
testing identifies potential glitches and ensures that the platform's overall functionality aligns
with user requirements.

4.1.4 USABILITY TESTING


Usability testing focuses on assessing the platform's user-friendliness and user experience. It
involves real users interacting with the system to identify any difficulties in navigation, clarity of
information, and overall usability. This testing aims to enhance user satisfaction by refining the
interface and addressing user-centric issues.

4.1.5 ACCEPTANCE TESTING


Acceptance testing is the final phase of system testing, where the e-commerce platform is
evaluated against predefined acceptance criteria. This testing ensures that the platform meets the
expectations and requirements set by both the client and end-users. Successful acceptance testing
signifies that the platform is ready for deployment.

RESTAURANT POS 54
CHAPTER 9
FUTURE SCOPE

The future scope of the e-commerce platform encompasses potential enhancements, expansions,
and improvements that can be undertaken beyond the current development phase. This chapter
explores the avenues for extending the application's functionalities and the potential for its
software scope.

5.1 FUTURE SCOPE OF APPLICATION


The e-commerce platform offers a promising foundation that can be augmented and expanded to
meet evolving user needs and industry trends. The future scope of the application includes the
following areas of potential development:

ENHANCED PERSONALIZATION:
Implement advanced machine learning algorithms to provide more accurate and personalized
product recommendations based on user behaviors and preferences.

MULTILINGUAL SUPPORT:
Introduce multilingual capabilities to cater to a broader audience, enabling users from diverse
regions to interact with the platform in their preferred language.

MOBILE APPLICATION:
Develop a dedicated mobile application to provide users with a seamless shopping experience on
smartphones and tablets, enhancing accessibility and user engagement.

AUGMENTED REALITY (AR) INTEGRATION:


Incorporate AR technology to allow users to visualize products in real-world settings before
making a purchase decision, offering an immersive shopping experience.

5.2 SOFTWARE SCOPE


The software scope of the e-commerce platform outlines its potential for adaptability, reusability,
comprehensibility, and cost-effectiveness in the long term.

RESTAURANT POS 55
EXTENSIBILITY:
The modular architecture of the platform enables the addition of new features and functionalities
without disrupting the existing system. This extensibility ensures that the platform can evolve to
accommodate changing user requirements and industry trends.

REUSABILITY:
The well-structured codebase and clear architectural design promote code reusability. This
reusability simplifies the process of incorporating existing components into new modules or
features, saving time and resources in future development.

UNDERSTANDABILITY:
The platform's documentation and organized codebase facilitate ease of understanding for
developers who might join the project in the future. This clarity aids in maintaining, debugging,
and enhancing the system over time.

COST-EFFECTIVENESS:
The platform's architecture and modular design reduce the cost of future enhancements and
upgrades. The ability to integrate new features without extensive code changes contributes to
cost-effective maintenance and scalability.

RESTAURANT POS 56
CHAPTER 10
CONCLUSION

In the ever-evolving landscape of e-commerce, this project has embarked on a journey to design,
develop, and analyze a comprehensive e-commerce platform that bridges theoretical concepts
with practical implementation. Throughout this endeavor, we have explored the fundamental
aspects of e-commerce, from the intricacies of user interfaces to the integration of cutting-edge
technologies. The project has succeeded in creating an intuitive and dynamic platform that
empowers users to discover, select, and purchase products seamlessly, while also addressing
challenges related to performance, security, and user experience.

As the project culminates, it is evident that the journey has been marked by dedication,
innovation, and collaboration. The e-commerce platform's modular architecture lays the
foundation for future enhancements, ensuring its adaptability to meet evolving market trends and
user preferences. By addressing the complexities of design, development, and testing, this project
offers a tangible example of how theoretical knowledge can be transformed into practical
solutions that impact the modern world of online commerce. The insights gained from this
project contribute not only to academic understanding but also to the broader landscape of digital
business transactions, reinforcing the significance of technology in shaping the future of
commerce.

RESTAURANT POS 57
CHAPTER 11
BIBLIOGRAPHY

BOOKS:
• Laudon, K. C., & Traver, C. G. (2020). RESTAURANT 2020: Business, Technology,
Society. Pearson.
• Kalakota, R., & Whinston, A. B. (1997). RESTAURANT MANAGEMENT : A
Manager's Guide. Pearson Education.

WEB SITES:
• W3Schools. (https://www.w3schools.com/)

• MDN Web Docs. (https://developer.mozilla.org/)

• Nielsen Norman Group. (https://www.nngroup.com/)

• Smashing Magazine. (https://www.smashingmagazine.com/)

RESTAURANT POS 58

You might also like