0% found this document useful (0 votes)
4 views39 pages

Ms Dotnet

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views39 pages

Ms Dotnet

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

FOOD DELIVERY WEB APPLICATION

A PROJECT REPORT
Submitted by

MRUTYUNJAY SAHOO

in partial fulfillment for the award of the degree


of
MASTER

in
COMPUTER APPLICATIONS

SCHOOL OF ENGINEERING AND TECHNOLOGY


BHUBANESWAR CAMPUS
CENTURION UNIVERSITY OF TECHNOLOGY AND MANAGEMENT
ODISHA
APRIL 2024

1
DEPARTMENT OF MASTER IN COMPUTER APPLICATIONS SCHOOL
OF ENGINEERING AND TECHNOLOGY
BHUBANESWAR CAMPUS

BONAFIDE CERTIFICATE

Certified that this project report FOOD DELIVERY WEB APPLICATION is the
bonafide work of “MRUTYNJAY SAHOO” who carried out the project work under my
supervision. This is to further certify to the best of my knowledge, that this project has not
been carried out earlier in this institute and the university.

SIGNATURE

(Ass Prof. Mr. Subham Sahu)


Professor of Computer Science and Engineering

Certified that the above-mentioned project has been duly carried out as perthe norms of the
college and statutes of the university.

SIGNATURE
(Prof. Mr. Rakesh Kumar Ray)

HEAD OF THE DEPARTMENT


Professor of Computer Science and Engineering

DEPARTMENT SEAL

2
DECLARATION

I hereby declare that the project entitled “Food Delivery Web Application” submitted
for the “Major Project” of 4th semester MCA in Computer Science and Engineering is my
original work and the project has not formed the basis for the award of any Degree or
any other similar titles in any other University / Institute.

Name of the Student: Mrutyunjay Sahoo


Signature of the Student:
Registration No:220720100118
Place: CUTM, BHUBANESWAR CAMPUS
Date:

3
ACKNOWLEDGEMENT

I wish to express my profound and sincere gratitude to Mr. Subham Sahu,


Department of Computer Science and Engineering, SOET, Bhubaneswar Campus, who
guided me into the intricacies of this project nonchalantly with matchless magnanimity.
I thank Prof. Rakesh Kumar Ray, Head of the Department of Master in Computer
Applications, SOET, Bhubaneswar Campus and Prof. Sujata Chakravarthy, Dean, School
of Engineering and Technology, Bhubaneswar Campus for extending their support
during Course of this investigation.

I am highly grateful to Mr. Subham Sahu who evinced keen interest and invaluable
support in the progress and successful completion of my project work.
I am indebted to Mr. Subham Sahu for their constant encouragement, co- operation
and help. Words of gratitude are not enough to describe the accommodation and fortitude
which they have shown throughout my endeavor.

Name of the Student: Mrutyunjay Sahoo


Signature of the Student:
Registration No: 220720100118
Place: CU TM, BHUBANESWAR CAMPUS

4
TABLE OF CONTENTS

CHAPTER NO. TITLE PAGE NO.


COVER PAGE 1
CERTIFICATE 2
DECLARATION 3
ACKNOWLEDGEMENTS 4
ABSTRACT 6
1. CHAPTER I INTRODUCTION 7
2. CHAPTER II BACKGROUND OF STUDY 7
2.1 PROBLEM STATEMENT 8
2.2 OBJECT OF STUDY 8
3. CHAPTER III RESEARCH METHODOLOGY 9
3.1 SYMBOLS AND NOTATIONS 10
4. CHAPTER IV CODE 12
4.1 INPUT/OUTPUT DESIGN 31
5. CHAPTER V SUMMARY/CONCLUSION 37
REFERENCES 38
ASSESSMENT 39
COURSE OUTCOME ATTAINMENT 40

5
Abstract

It is about creating a website for ordering food online, using a technology called .NET
framework. It's like those apps you use to order food from different restaurants, but this
one will be on a website.

The website will have one main parts: people who order food (User Module). If you're
ordering food, you can go to the website, look at menus, pick what you want and, pay
securely when it's coming. And if you're running the website, you can control users,
restaurants, and how the whole system works.

The website will be easy to use, with clear buttons and menus, and it will keep your
payment information safe. It will also show you where your food is in real-time, so you
know exactly when to expect it. Plus, it will have some fancy features like suggesting
food you might like based on what you've ordered before, and it will give insights to
restaurants about how well they're doing.

I'll build the website using .NET, which is a set of tools for making websites. I'll use
different parts of .NET to make the website look good, work fast, and keep all the
information safe. It will be able to handle lots of people using it at once, and we'll make
sure it's reliable and won't break easily. In the end, we want to make a website that makes
ordering food online easy and fun for everyone.

6
1.0. Introduction

Today, life moves fast, and we all love things that make it easier. Online shopping changed
how we buy stuff, and the food industry caught up too. Now, you can order food online, just
like you shop for clothes or gadgets. This project is about making one of those systems using
a technology called .NET.

Think of it like this: You're hungry, but you don't feel like cooking. Instead of calling a
restaurant, you open a website, browse through menus, pick what you want, and voila! Your
food is on its way to your doorstep. That's what this system does.

I’m using .NET because it's like a toolbox full of tools for building websites. With .NET,
i can make sure the website looks good, works smoothly, and keeps your information safe.

This website will be easy to use, it will keep your payment info safe, and it will even give
you suggestions based on what you've ordered before. Plus, it will help restaurants figure out
what's popular and how they can do better. In short, this project is about making ordering
food online simple and fun for everyone.

1.1. Background of Study


In recent years, the rise of the internet has changed how we do many things, including
how we get food. Instead of calling restaurants, now we can order food online using our
phones or computers. This change has made life more convenient for everyone.

People love online food ordering because it's easy. You can see all the menus and place
orders without leaving your home or office. Plus, there are lots of different restaurants to
choose from, so you can try new foods whenever you want.

That's where the .NET framework comes in. It's like a toolbox that helps developers build
websites and apps. With .NET, we can create a really good online food ordering system
that's easy to use and keeps your information safe. But even though there are already
many online food ordering systems out there, we think there's still room to make them
even better. Some might be missing important features, or they might not be as easy to
use as they could be. So, our project is all about making a new online food ordering
system using .NET. We want to focus on making it really easy for customers use.

7
1.2. Statement of Problem
Complex Interfaces: Some food ordering websites or apps are too complicated, making it
hard for users to find what they want or place an order easily. This can frustrate users
and make them give up, which isn't good for keeping them happy and coming back.
Mistakes in Orders: Sometimes, orders placed online aren't accurate. This could mean
missing items or getting the wrong food altogether. When this happens, customers get
upset and might not want to use the service again, losing trust in it.
Payment Problems: Making payments online should be easy and secure, but sometimes
online food ordering systems have issues with processing payments smoothly. This
could lead to delays or errors, which makes users worried about their money and less
likely to complete their order.

1.3. Objective of Study


The primary objective of this study is to design, develop, and evaluate an online food
delivery system using the .NET framework, aiming to address the identified challenges and
shortcomings in existing systems while enhancing the overall user experience for customers.
Specifically, the study seeks to achieve the following objectives:
• Easy-to-Use Design: Make the website or app simple and easy to navigate so users can find
what they want quickly and easily. This includes making it clear where to browse menus,
place orders, and track deliveries.
• More Choices: Add more types of food to the platform so users have plenty of options to
choose from. This will make the website more appealing and satisfying for users.
• Get Orders Right: Make sure orders are processed accurately and without mistakes. This
means making sure nothing is missing or wrong when the food is delivered, which helps
build trust with users.
• Smooth Payments: Ensure that paying for orders is easy and secure. Fix any problems with
payment processing to avoid delays or errors that could make users worry about their
money.
• Make Users Happy: Test the website or app with real users to see if they like it and if there
are any problems.

8
2.0. Online Food Delivery System
Online food delivery systems are like having a magical food genie in your phone or computer.
With just a few taps, you can order your favorite food and have it delivered right to your
doorstep. It's like having your own personal chef, but way simpler. You get to choose from lots
of types of food without ever leaving your home. And the best part? You can track your food
as it travels to you, so you'll know exactly when it'll arrive. It's super easy, delicious, and
basically the best invention since sliced bread!

2.1.Research Methodology
• Understanding Needs: Start by talking to people who might use the system—customers
and restaurant owners—to find out what they want and need.
• Learning from Others: Look at what other similar systems have done and what
researchers have found about making these kinds of systems work well.
• Planning the System: Figure out how the system will look and work, including what
buttons will be where and how orders will be processed.
• Building the System: Actually create the online food ordering system using a technology
called .NET, making sure everything works like it's supposed to.
• Testing and Fixing: Try out the system to see if it works correctly and fix any problems or
mistakes you find.
• Putting It Out There: Once it's all good, put the system online so people can use it.
• Making It Better: If there are things that could be improved, go back and make changes to
the system to make it even better.

9
3.0 Data Flow Diagram(DFD)

A data flow diagram (DFD) is a graphical representation of the “flow” of data through
an information system, modeling its process aspects. A DFD shows what kind of
information will be input to and output from the system, where the data will come from
and go to and where the data will be stored.

10
3.1 Use Case Diagram For Users and Admin

A case is a description of a system’s behaviour as it responds to a request that originates


from outside of that system(the user). In figure a use case of the activities in a food
Delivery is shown.

In other words, It describes “who” can do “what” with the system in question. The use
case technique is used to capture a system’s behavioural requirements by detailing
scenario driven threads through the functional requirements.
11
4.0 CODE

Ticketing is the most important module in this Project which uses all the tables together
and calculates fare for the passengers. Venting the tickets is done using the route
number, bus type, beginning stop, end stop, ticket number, persons(Adult/child)rate,
date and time also we want to print the all these information. In order to do the
calculation data has to be pulled out from stops, bus, trip and route. Number of
passengers & the states are entered by the Venter and to produce the tickets.
Steps:
1. In Visual Studio select new project
2. Select ASP.Net web application template
3. Name the project as FoodApplication

4.1 LAYOUT.ASPX
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - Food Application</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/FoodApplication.styles.css" asp-append-
version="true" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-
awesome/6.5.1/css/all.min.css" integrity="sha512-
DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9
QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous"
referrerpolicy="no-referrer" />
<link rel="stylesheet" href="~/css/jquery-ui.min.css" />
</head>
<body>
<header class="position-sticky top-0">
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-
white border-bottom box-shadow mb-3">
<div class="container-fluid">
<a class="navbar-brand text-pink fw-bold" asp-area="" asp-controller="Home"
asp-action="Index">Food Application</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-
target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
12
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-pink fw-bold" asp-area="" asp-controller="Home" asp-
action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-pink fw-bold" asp-area="" asp-controller="HomeController1" asp-
action="Index">Recipes</a>
</li>
</ul>
@if (User.Identity!.IsAuthenticated)
{
<div class="d-flex justify-content-center align-content-center">
<div class="text-center">
<span class="p-4" id="cartListIcon"><i class="fa-solid fa-cart-shopping text-pink fs-
4"></i></span>
<div id="showCartList" class="position-absolute shadow rounded p-2 bg-white">
</div>
</div>
<div>
<a class="nav-link fw-bold text-pink" asp-controller="Account" asp-
action="LogOut">LogOut</a>
</div>
</div>
}
else
{
<div>
<a class="nav-link fw-bold text-pink" asp-controller="Account" asp-
action="Login">LogIn</a>
</div>
}
</div>
</div>
</nav>
</header>
<div class="container-fluid">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>

<footer class="border-top text-white p-3">


<div class="container mt-2">
<div class="row">
<div class="col-sm-4 col-md-4 col-lg-4 col-xl-4">
13
<h4>Food Application</h4>
<p>Healthy, Save and Fastest</p>
</div>
<div class="col-sm-4 col-md-4 col-lg-4 col-xl-4">
<h4>Contact US</h4>
<div class="mt-3">
<span><i class="fa-brands fa-instagram fs-5"></i></span>
<span class="fs-6 mx-1">Instagram</span>
</div>
<div class="mb-2">
<span><i class="fa-brands fa-whatsapp fs-5"></i></span>
<span class="fs-6 mx-1">Whatsapp</span>
</div>
<div class="mb-2">
<span><i class="fa-brands fa-facebook fs-5"></i></span>
<span class="fs-6 mx-1">Facebook</span>
</div>
<div class="mb-2">
<span><i class="fa-regular fa-envelope fs-5"></i></span>
<span class="fs-6 mx-1">Mail</span>
</div></div>
<div class="col-sm-4 col-md-4 col-lg-4 col-xl-4">
<h4>Address</h4>
<pre>New Mumbai, Maharashtra, India 102459</pre>
</div></div>
<div>
<h4 class="text-center pb-3">Powered By Group-7</h4>
</div>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/js/jquery-ui.min.js"></script>
@if (User.Identity!.IsAuthenticated)
{
<script type="text/javascript">
$(document).ready(function () {
getAddedCarts();
getCartList();
})
</script>
}
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>

14
4.2 INDEX.ASPX

@{
ViewData["Title"] = "Home Page";
}

<div class="container">
<div class="row shadow rounded">
<div class="col-sm-12 col-md-6 col-lg-6 col-xl-6">
<div id="carouselExampleSlidesOnly" class="carousel slide " data-bs-ride="carousel">
<div class="carousel-inner h-100">
<div class="carousel-item h-100 active">
<img src="/Images/NewFolder/food.jpg" class="d-block w-100 h-100" alt="Recipes">
</div>
<div class="carousel-item h-100 ">
<img src="/Images/NewFolder/food2.jpg" class="d-block w-100 h-100" alt="Recipes">
</div>
<div class="carousel-item h-100 ">
<img src="/Images/NewFolder/food3.jpg" class="d-block w-100 h-100" alt="Recipes">
</div>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6 col-lg-6 col-xl-6">
<div class="mb-3">
<h2>Get The Best<span class="text-success fst-italic"> Food</span> From <span
class="text-success">The Best Restrurants</span></h2>
</div>

<div class="mb-1 p-3">


<span><i class="fa-solid fa-seedling text-success mx-2 fs-4"></i></span>
<span class="fs-5 text-dark fst-italic">Fresh Food</span>
</div>
<div class="mb-1 p-3">
<span><i class="fa-solid fa-wheat-awn text-success mx-2 fs-4"></i></span>
<span class="fs-5 text-dark fst-italic">Healthy Meal</span>
</div>
<div class="mb-1 p-3">
<span><i class="fa-solid fa-person-biking text-success mx-2 fs-4"></i></span>
<span class="fs-5 text-dark fst-italic">Fastest Delivery</span>
<p class = "py-2">We Promise Deliver Order within 30 Mins</p>
</div>
</div>
</div>
<div class="row mt-3">
<div class=" col-12 mb-3">
<h2 class="text-dark fst-italic">Today's Special</h2>
</div>
<div id="todaySpecial" class="row">
<div class="col-sm-4 col-md-4 col-lg-4 col-xl-4">
<div id="shadow-rounded dishCard" class="card">
<img class="card-img-top h-75" src="http://forkify-
15
api.herokuapp.com/images/BBQChickenPizzawithCauliflowerCrust5004699695624ce.j
pg" alt="dish" />
<div class="card-body">
<h4 class="card-title text-dark">Pizza</h4>
<div class="d-flex flex-wrap justify-content-between">
<a href="/HomeController1/Order?id=5ed6604591c37cdc054bcc13" class="btn btn-sm
bg-black text-white shadow rounded p-2">Order</a>
<span class="addToCartIcon" onclick="cart.call(this)" data-
recipeId="5ed6604591c37cdc054bcc13"><i class="fa-regular fa-heart fs-
3"></i></span>

</div>

</div>
</div>
</div>
<div class="col-sm-4 col-md-4 col-lg-4 col-xl-4">
<div id="shadow-rounded dishCard" class="card">
<img class="card-img-top h-75" src="http://forkify-
api.herokuapp.com/images/gelatin_poke_cake2d07.jpg" alt="dish" />
<div class="card-body">
<h4 class="card-title text-dark">Cake</h4>
<div class="d-flex flex-wrap justify-content-between">
<a href="/HomeController1/Order?id=5ed6604591c37cdc054bcd9e"
class="btn btn-sm bg-black text-white shadow rounded p-2">Order</a>
<span class="addToCartIcon" onclick="cart.call(this)" data-
recipeId="5ed6604591c37cdc054bcd9e"><i class="fa-regular fa-heart fs-
3"></i></span>
</div>

</div>
</div>
</div>
<div class="col-sm-4 col-md-4 col-lg-4 col-xl-4">
<div id="shadow-rounded dishCard" class="card">
<img class="card-img-top h-75" src="http://forkify-
api.herokuapp.com/images/5091364415_b1058dec47_o78aa.jpg" alt="dish" />
<div class="card-body">
<h4 class="card-title text-dark">Chicken</h4>
<div class="d-flex flex-wrap justify-content-between">
<a href="/HomeController1/Order?id=5ed6604591c37cdc054bced8" class="btn btn-sm
bg-black text-white shadow rounded p-2">Order</a>
<span class="addToCartIcon" onclick="cart.call(this)" data-
16
recipeId="5ed6604591c37cdc054bced8"><i class="fa-regular fa-heart fs-
3"></i></span>
</div>

</div>
</div>
</div>
</div>
</div>
</div>

4.3 SEARCHBAR.ASPX

<div class="shadow rounded">


<div class="p-2">
<form autocomplete="off">
<div class="mb-2 row">
<div class="col-11 text-center ui-widget p-1">
<input type="text" id="tags" placeholder="Search Recipe" class="form-control"
name="recipe" />
</div>
<div class="col-1 p-1">
<button type="submit" class="btn btn-sm btn-success p-2">Search</button>
</div>
</div>
</form>
</div>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script>
$(function () {
var availableTags = [
"Mushrooms","Pumpkin","Tomato","Apple","Banana","Blackberry",
"Blueberry","Coconut","Grape", "Kiwifruit","Mango",
"Orange","Papaya","Pineapple", "Strawberry",
"Watermelon","Salad","Pizza","Pasta","Popcorn","Hamburger","Pie",
"Cake","Sausage","Kebab","Poutine","Seafood",
"Chips","Fries","Masala","Chicken",
"Chocolate","Sushi","Ice-cream"
];
$("#tags").autocomplete({
source: availableTags,
minLength:2
17
});
});
</script>

4.4 SHOWORDER.ASPX
@model FoodApplication.Models.OrderRecipeDetails

<div class="container-fluid shadow-rounded">


<div class="row">
<div class="col-12">
<img src="@Model.Image_url" class="w-100" id="order-img" />
</div>
</div>
<div class="row mt-2">
<div class="col-sm-10 col-md-10 col-lg-10 col-xl-10">
<h2 class="text-dark">@Model.Title</h2>
</div>
</div>
<div class="row">
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-6">
<div class="table-responsive p-2">
<table class="table table-bordered">
<thead>
<tr>
<th>Description</th>
<th>Quantity</th>
<th>unit</th>
</tr>
</thead>
<tbody>
@foreach(var ing in Model.Ingredients)
{
<tr>
<td>@ing.Description.</td>
<td>@ing.Quantity</td>
<td>@ing.unit</td>
</tr>
}
</tbody>
</table>
</div>
</div>
18
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-6">
<form autocomplete="off" method="post">
<input type="hidden" value="@Model.Id" name="RecipeId"/>
<input type="hidden" value="@Model.Title" name="RecipeName"/>
<input type="hidden" value="@ViewBag.UserId" name="UserId"/>
<div class="p-2">
<p class="text-dark">Bill Details</p>
<div class="row border-bottom text-muted">
<lable class="col-10 col-form-label">Price</lable>
<div class="col-2">
<i class="fa-solid fa-indian-rupee-sign"></i>
<input type="text" id="price" value="@ViewBag.Price" name="Price" readonly />
</div>
</div>
<div id="qtySection" class="row border-bottom">
<lable class="col-10 col-form-label text-muted">Quantity</lable>
<div class="col-2 border border-success border-3 p-1 text-center rounded">
<span onclick="quantity('inc')"><i class="fa-solid fa-plus text-success"></i></span>
<input type="text" id="qty" class="bg-white text-center text-success fw-bold" value="1"
name="Quantity" readonly />
<span onclick="quantity('dec')"><i class="fa-solid fa-minus text-success"></i></span>
</div>
</div>
<div class="row border-bottom">
<lable class="col-10 col-form-label text-muted">Delivery Charge</lable>
<lable class="col-2 col-form-label text-success fw-bold">Free</lable>
</div>
<div class="px-1 mb-2">
<label class="form-label text-muted">Delivary Address</label>
<input type="text" class="form-control" name="Address" value="@ViewBag.Address"/>
@Html.ValidationMessage("Address")
</div>
<div class="row border-top border-dark boeder-1">
<lable class="col-10 col-form-label fs-5 fw-bold">Total</lable>
<div class="col-2">
<i class="fa-solid fa-indian-rupee-sign"></i>
<input id="totalAmount" type="text" name="TotalAmount" readonly
value="@ViewBag.Price">
</div>
</div>
<div>
<p>Delivery Time: 30 - 40 Mins </p>
<a href="\Home" class="btn btn-primary">Confirm Order</a>
19
</div>
</div>
</div>
</div>
</div>

4.5 INDEX.ASPX
@{
ViewData["Title"] = "Recipe";
}
<div class="container-fluid">
<div class="row mb-4">
<div class="col-12">
@Html.Partial("_SearchBar")
</div>
</div>
<div class="row">
<div class="col-2">
<div class="shadow rounded position-sticky" id="recipe-list">
<div class="border-bottom border-3 p-2">
<h4 class="text-pink text-center fst-italic">Recipes</h4>
@Html.Partial("Index1")
</div>
</div>
</div>
<div class="col-10">
<div class="mb-3">
<h4 class="text-dark">Pizza</h4>
<div class="row" id="pizzaRecipe"></div>
</div>
<div class="mb-3">
<h4 class="text-dark">Cake</h4>
<div class="row" id="cakeRecipe"></div>
</div>
<div class="mb-3">
<h4 class="text-dark">Chicken</h4>
<div class="row" id="chickenRecipe"></div>
</div>
<div class="mb-3">
<h4 class="text-dark">Chocolate</h4>
<div class="row" id="chocolateRecipe"></div>
20
</div>
</div>
</div>
</div>

<script src="/lib/jquery/dist/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
GetRecipes("Pizza", "pizzaRecipe", false);
GetRecipes("Cake", "cakeRecipe", false);
GetRecipes("Chicken", "chickenRecipe", false);
GetRecipes("Chocolate", "chocolateRecipe", false);
})
</script>

4.6 INDEX1.aspx
<ul class="list-group-flush px-0 vh-100 overflow-auto">
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=mushrooms">Mushrooms</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=pumpkin">Pumpkin</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=apple">Apple</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=banana">Banana</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=blackberry">Blackberry</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=blueberry">Blueberry</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=grape">Grape</a>
</li>
<li class="recipe-item list-group-item">
21
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=mango">Mango</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=orange">Orange</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=papaya">Papaya</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=pineapple">Pineapple</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=strawberry">Strawberry</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=watermelon">Watermelon</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=pizza">Pizza</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=pasta">Pasta</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=popcorn">Popcorn</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=hamburger">Hamburger</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=pie">Pie</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=cake">Cake</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=sausage">Sausage</a>
22
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=kebab">Kebab</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=poutine">Poutine</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=seafood">Seafood</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=chips">Chips</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=fries">Fries</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=masala">Masala</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=chicken">Chicken</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=chocolate">Chocolate</a>
</li>
<li class="recipe-item list-group-item">
<a class="text-decoration-none text-dark"
href="/HomeController1/Search?recipe=sushi">Sushi</a>
</li>
</ul>

4.7 ORDER.ASPX
@{
ViewData["Title"] = "Order";
}

<div class="container-fluid">
<div class="row mb-4">
<div class="col-12">
@Html.Partial("_SearchBar")
23
</div>
</div>
<div class="row">
<div class="col-2">
<div class="shadow rounded position-sticky" id="recipe-list">
<div class="border-bottom border-3 p-2">
<h4 class="text-pink text-center fst-italic">Recipes</h4>
@Html.Partial("Index1")
</div>
</div>
</div>
<div class="col-10">
<div class="mb-3">
<div class="row" id="recipeDetails"></div>
</div>
</div>
</div>
</div>

<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function (){
getOrderRecipe('@ViewBag.Id', 'recipeDetails');
})
</script>

4.8 RECIPECARD.ASPX
@model IEnumerable<FoodApplication.Models.Recipe>

@foreach (var recipe in Model)


{
<div class="col-sm-4 col-md-4 col-lg-4 col-xl-4 mb-3">
<div class="shadow rounded p-2">
<div class="card dishCard">
<img src="@recipe.Image_url" class="card-img-top h-75" />
<div class="card-body">
<p class="card-title fw-bold fs-6 text-dark">
@recipe.Title
</p>
<span class="card-text">@recipe.Publisher</span>
<div class="d-flex flex-wrap justify-content-between">
<a href="/HomeController1/[email protected]" class="btn btn-sm bg-black text-
white shadow rounded p-2">Order</a>
<span class="addToCartIcon" onclick="cart.call(this)" data-recipeId="@recipe.Id">
<i class="fa-regular fa-heart fs-3"></i>
</span>

24
</div>
</div>
</div>
</div>
</div>
}

4.9 SEARCH.ASPX
@{
ViewData["Title"] = "Search";
}
<div class="container-fluid">
<div class="row">
<div class="col-12">
@Html.Partial("_SearchBar")
</div>
</div>
<div class="row">
<div class="col-2">
<div class="shadow rounded position-sticky" id="recipe-list">
<div class="border-bottom border-3 p-2">
<h4 class="text-pink text-center fst-italic">Recipes</h4>
@Html.Partial("Index1")
</div>
</div>
</div>
<div class="col-10">
<h2 class="text-dark">Search Recipes</h2>
<div id="searchRecipes" class="row"></div>
</div>
</div>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
GetRecipes('@ViewBag.Recipe', 'searchRecipes', true);
})
</script>
4.10 CARTLIST.ASPX
@model IEnumerable<FoodApplication.Models.Cart>

@foreach(var cart in Model)


{
<div class="border-bottom p-2 d-flex">
<img src="@cart.Image_url" class="cartListing"/>
<a class="fw-bold text-dark text-decoration-none px-2"
href="/HomeController1/[email protected]">@(cart.Title?.Length >= 15 ?
cart.Title.Substring(0,14)+"...": cart.Title)</a>
25
</div>
}
<div class="text-center bg-black p-1">
<a href="/Cart" class=" text-white fs-5 text-decoration-none">Go To Cart</a>
</div>
5.0 CART-INDEX
@model IEnumerable<FoodApplication.Models.Cart>

@{
ViewData["Title"] = "Cart";
}

<div class="container">
<div class="row">
<div class="col-12">
<div class="border-bottom">
<h4 class="text-dark">Recipe Cart</h4>
<p class="text-muted fst-italic">@Model.Count() Recipes in Cart</p>
</div>
</div>
@foreach(var cart in Model)
{
<div class="border-bottom d-flex flex-wrap p-2">
<img src="@cart.Image_url" class="cartImage"/>
<a href="/HomeController1/[email protected]" class="text-decoration-none text-
dark px-2 cartTitle fw-bold">@cart.Title</a>
<span onclick="removeCartFromList('@cart.RecipeId')" class="text-danger fw-bold p-2
removeCartBTN">Remove</span>
</div>
}
@if(Model.Count() == 0)
{
<div class="text-center">
<i class="fa-solid fa-cart-shopping emptyCart"></i>
<p class="fw-bold fs-4">Your Cart is Empty</p>
</div>
}
</div>
</div>

5.1 LOGIN.ASPX
@model FoodApplication.Models.LoginViewModel

26
@{
ViewData["Title"] = "Login";
}
<div class="container">
<div class="row shadow-rounded">
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-6">
<div>
<img src="~/Images/french-fries.jpg" class="w-100" />
</div>
</div>
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-6">
<form autocomplete="off" method="post" class="m-3 p-3">
<div class="mb-3">
<h2 class="text-pink fst-italic">Login</h2>
<span class="fst-italic text-muted">Login into your account</span>
</div>
<div class="mb-3">
@Html.ValidationSummary()
</div>
<div class="form-floating mb-3">
@Html.TextBoxFor(m => m.Email, new {@class = "form-control", placeholder="Email" })
<label for="Email">Email</label>
</div>
<div class="form-floating mb-3">
@Html.TextBoxFor(m => m.Password, new { @class = "form-control", placeholder =
"Email", type = "password" })
<label for="Password">Password</label>
</div>
<div class="mb-3">
<button class="btn btn-sm btn-dark w-100 p-2 shadow-lg rounded"
type="submit">Login</button>
</div>
<div class="mb-3">
<span>Don't have an account?</span><a asp-controller="Account" asp-action="Register"
class="text-decoration none text-dark">Register here</a>
</div>
</form>
</div>
</div>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>

5.2 REGISTER
@model FoodApplication.Models.RegisterViewModel
@{
ViewData["Title"] = "Register";
27
}
<div class="container">
<div class="row shadow rounded">
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-6">
<div>
<img src="/Images/Thali.jpg" class="w-100 h-100" alt="Thali" />
</div>
</div>
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-6">
<form autocomplete="off" method="post" class="m-3 p-3" action="/Account/Register">
<div class="mb-3">
<h2 class="text-pink fst-italic">Register</h2>
<span class="fst-italic text-muted">Create your account</span>
</div>
<div class="mb-3">
@Html.ValidationSummary()
</div>
<div class="form-floating mb-3">
@Html.TextBoxFor(m => m.Name, new { @class = "form-control", placeholder = "Name" })
<label for="Name">Name</label>
</div>
<div class="form-floating mb-3">
@Html.TextAreaFor(m => m.Address, new { @class = "form-control", placeholder =
"Address"})
<label for="Address">Address</label>
</div>
<div class="form-floating mb-3">
@Html.TextBoxFor(m => m.Email, new { @class = "form-control", placeholder = "Email" })
<label for="Email">Email</label>
</div>
<div class="form-floating mb-3">
@Html.TextBoxFor(m => m.Password, new { @class = "form-control", placeholder =
"Email", type = "password" })
<label for="Password">Password</label>
</div>
<div class="mb-3">
<button class="btn btn-sm btn-dark w-100 p-2 shadow rounded"
type="submit">Register</button>
</div>
</form>
</div>
</div>

5.3 PROGRAM.CS
using FoodApplication.ConnectDBConfig;
28
using FoodApplication.Models;
using FoodApplication.Repository;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);


var dbconnectoin = builder.Configuration.GetConnectionString("dbconnection");

// Add services to the container.


builder.Services.AddControllersWithViews();
builder.Services.AddDbContext<FoodApplicationDBContext>(options =>
options.UseSqlServer(dbconnectoin));

builder.Services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<FoodApplicationDBContext>();

builder.Services.AddTransient<IData, Data>();

var app = builder.Build();

// Configure the HTTP request pipeline.


if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios,
see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthentication();

app.UseAuthorization();

app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
29
app.Run();

5.4 FOOD_DB CONTEXT


using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using FoodApplication.Models;

namespace FoodApplication.ConnectDBConfig
{
public class FoodApplicationDBContext:IdentityDbContext<ApplicationUser>
{
public FoodApplicationDBContext(DbContextOptions<FoodApplicationDBContext>
options) : base(options)
{

}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
public DbSet<Order> Orders { get; set; }
public DbSet<Cart> Carts { get; set; }
}
}

30
6.0 Input and Output Design
The input design is the link between the information system and the user. It comprises
of the developing specification and procedures for data preparation and those steps are
necessary to put transaction data into a usable form for processing data entry while an
output design is a processing data entry while an output design is a process that involves
designing necessary outputs in the form of reports that should be given to the users
according to the requirements. Below are some screenshots which comprises of both
input and output designs of the proposed system.

Now from here you can create your own project or you just open it in your visual studio.
Database query is also available there.
Now execute your project by setting Layout.aspx webform as startup page...
• So this is our startup page:

31
• Now Users who do not have an account are required to register.

• After registering successfully you will get a username and password then login using
it.

32
• Now by clicking on Login button you will redirect to Home section , you will get
Menu and Recipes page.

• Then Click on Recipe page you will get many types of foods are available

33
• You can found your food by searching the food name at Search Bar and select the
Product form Menu bar.
Menubar:

SearchBar:

• You Can add your favorite product by clicking the addToCart button(Heart Symbol).

34
• You can see all the favorite item in addToCart by clicking the Add To Cart Button.

• You can Order your Food by clicking the Order Button .

35
• Now you Can see all the OrderRecipe Details and Increase and Decrease the quantity of
the product.

• We can see all the Order data and Cart Data In database .
Order data:

Cart Data

36
5.0 Summery
❖ User Interface: Clean, intuitive design for ease of navigation, with user-friendly
features such as menus, cart, and order tracking.
❖ Authentication: Secure login system for users, restaurants, and delivery personnel,
utilizing .NET’s Identity framework for authentication and authorization.
❖ Database Management: Utilization of Entity Framework for efficient database
operations, supporting CRUD (Create, Read, Update, Delete) operations for
handling data related to users, orders, and menu items.
❖ API Integration: Development of RESTful APIs to allow seamless data exchange
between the front-end UI and the back-end server, enhancing modularity and
scalability.
❖ Mobile Responsiveness: Ensuring the application is fully responsive and functional
across various devices and platforms, improving accessibility.
❖ Performance Optimization: Focus on optimizing load times and improving the
overall performance using .NET’s caching and asynchronous programming
features.
❖ Scalability and Maintenance: Building the application to support scalability,
handling increased traffic and data load, with easy maintenance and updates.

6.0 Conclusion
In conclusion, the development of a food delivery web application using .NET
technology offers a robust, secure, and efficient solution that meets the needs of a fast-
paced culinary market. By leveraging the powerful features of .NET, such as its
comprehensive frameworks for both front-end and back-end services, secure
authentication, and efficient data management with Entity Framework, this project
ensures a seamless, responsive, and user-friendly experience. The incorporation of
real-time tracking and secure payment options enhances user trust and satisfaction.
Additionally, the application's design for scalability and performance ensures that it
can adapt to growing user demands and changing market conditions without
compromising on service quality. Overall, this food delivery application stands as a
testament to the capabilities of modern web development with .NET, providing a
competitive edge in the burgeoning food delivery industry.

37
6.0 References
❖ Microsoft Documentation: Start by exploring the official Microsoft
documentation for ASP.NET Core, which is the recommended framework for
building modern web applications with .NET.
❖ ASP.NET Core documentation
Entity Framework Core: Learn about Entity Framework Core for data access,
essential for handling your database operations.
❖ Entity Framework Core documentation
Build a Simple CRUD App with ASP.NET Core: This tutorial by Okta
developer blogs is a great starting point for understanding basic web app
development in
ASP.NET Core.
❖ Simple CRUD App with ASP.NET Core
Flick, U. (2009): An Introduction to Qualitative Research. London: SAGE
Hevner A., March S., Park J., and Ram, S. (2004): Design Science in
Information Systems Research. MIS Quarterly.
❖ Kevin O. C., (2012): Web-Based Bus Reservation and Ticketing System:
College of Computer Studies, Ateneo de Naga University, Naga City,
Philippines February 26, 2012 March S., and Smith, S. (1995): Decision
Support Systems. Pp 251-266.

ASSESSMENT
Internal:

SL FULL REMARK S
RUBRICS MARKS
NO MARK
OBTAINED
Understanding the relevance, scope
1 10
and dimension of the project
2 Methodology 10
3 Quality of Analysis and Results 10
4 Interpretations and Conclusions 10
5 Report 10
Total 50

Date: Signature of the Faculty

38
COURSE OUTCOME (COs) ATTAINMENT

➢ Expected Course Outcomes (COs):


(Refer to COs Statement in the Syllabus)
_
_
_
_

➢ Course Outcome Attained:


How would you rate your learning of the subject based on the specified COs?

1 2 3 4 5 6 7 8 9 10
LOW HIGH
➢ Learning Gap (if any):

➢ Books / Manuals Referred:


_
_
_
_

Date: Signature of the Student


➢ Suggestions / Recommendations:
(By the Course Faculty)
_
_
_
_

Date: Signature of the Faculty

39

You might also like