You are on page 1of 69

Visvesvaraya Technological University

Belagavi, Karnataka-590 018

A
MINI PROJECT REPORT ON
“Library Management System”
Submitted in partial fulfilment of the requirements for the DBMS Laboratory with mini project
(18CLS58) course of the 5th semester

BACHELOR OF ENGINEERING
IN
COMPUTER SCIENCE AND ENGINEERING

Submitted by,

SHUBHANKAR SHARMA SANSKRITI SINGH


1JS20CS158 1JS20CS144
Under the guidance of
Mrs. K S Rajeshwari Mrs. Pooja H
Assistant Professor, Dept of CSE Assistant Professor, Dept of CSE
JSSATE, Bengaluru JSSATE, Bengaluru

JSS ACADEMY OF TECHNICAL EDUCATION, BENGALURU


Department of Computer Science and Engineering
2022-2023
JSS MAHAVIDHYAPEETHA, MYSURU

JSS Academy of Technical Education


JSS Campus, Uttrahalli Kengeri Main road, Bengaluru – 560060

Department of Computer Science and Engineering

CERTIFICATE
This is to certify that the mini-project work entitled "LIBRARY SERVICE MANAGEMENT
SYSTEM" is a Bonafide work carried out by SHUBHANKAR SHARMA (1JS20CS144) and
SANSKRITI SINGH (1JS20CS144) in partial fulfilment for the Database Management Systems
Laboratory with Mini Project (18CSL58) of 5th semester Bachelor of Engineering in Computer
Science and Engineering of the Visvesvaraya Technological University, Belgaum during the
academic year 2022-2023. It is certified that all corrections and suggestions indicated for Internal
Assessment have been incorporated in the report deposited in the department library. The project
report has been approved as it satisfies the academic requirements in respect of t h e project work
prescribed for the said degree.

Mrs. K S Rajeshwari Mrs. Pooja H Mr. P B Mallikarjuna


Assistant Professor, Assistant Professor, Associate Professor and Head
Dept of CSE Dept of CSE Dept of CSE
JSSATE, Bengaluru JSSATE, Bengaluru JSSATE, Bengaluru

NAME OF THE EXAMINERS SIGNATURE WITH DATE

1)…………………………………….. ……………………………………..

2)…………………………………….. …………………………………….
ACKNOWLEDGEMENTS

We express my humble pranamas to His Holiness Jagadguru Sri Sri Sri Shivarathri Deshikendra
Mahaswamiji who has showered their blessings on us for framing our career successfully.

We express our sincere thanks to our beloved principal, Dr. Bhimasen Soragaon for having supported
us in our academic endeavors.

We are also indebted to Dr. P B Mallikarjuna, Head of Department of Computer Science and
Engineering for the facilities and support extended towards us.

We are thankful to the resourceful guidance, timely assistance and graceful gesture of our guide Mrs.
K S Rajeshwari, Assistant Professor, Department of Computer Science and Engineering, and Mrs.
Pooja H, Assistant Professor, Department of Computer Science and Engineering, who has helped us
in every aspect of our project work.

And last but not the least, we would be very pleased to express our heart full thanks to all the teaching
and non-teaching staff of CSE department and our friends who have rendered their help, motivation
and support.

The completion of any project involves the efforts of many people. We have been lucky enough to
have received a lot of help and support from all quarters during the making of this project, so with
gratitude, we take this opportunity to acknowledge all those who have given guidance and
encouragement helped us emerge successful.

SHUBHANKAR SHARMA
1JS20CS158

SANSKRITI SINGH
1JS20CS144
TABLE OF CONTENTS

ACKNOWLEDGEMENT 5
CHAPTER1 7
INTRODUCTION 7
INTRODUCTION TO FILE STRUCTURES 7
HISTORY OF DBMS 8
OBJECTIVES 9
ORGANIZATION OF THE REPORT 10
CHAPTER 2 11
LITERATURE SURVEY 11
INTRODUCTION 11
NORMALIZATION 15
CHAPTER 3 17
REQUIREMENT SPECIFICATIONS 17
SOFTWARE SPECFICATION 17
HARDWARE SPECFICATION 17
USER CHARACTERISTICS 17
CHAPTER 4 18
SYSTEM DESIGN 18
INTRODUCTION TO SYSTEM DESIGN 18
ATTRIBUTES 19
SCHEMA DIAGRAM 20
ER DIAGRAM 21
CHAPTER 5 23
PROJECT IMPLIMENTATION 23
INTRODUCTION 23
CREATING TABLES 23
QUERIES 28
PSEUDO CODE 34
CHAPTER 6 41
SYSTEM TESTING 41
INTRODUCTION 41
TYPES OF TESTING 41
CHAPTER 7 43
RESULTS AND DISCUSSIONS 43
CHAPTER 8 48
CONCLUSION AND FUTURE ENHANCEMENTS 48
CONCLUSION 48
FUTURE ENHANCEMENT 48
CHAPTER 9 49
REFRENCES 49
BOOK REFERENCES 49
WEB REFERENCES 49
CHAPTER1
INTRODUCTION
CHAPTER2
DESIGN

E-R DIAGRAM
CHAPTER 3
SYSTEM REQUIREMENTS

3.1 Front End

HTML:
HTML, or Hypertext Markup Language, is the standard language used to create
web pages. It consists of a series of tags and attributes that define the structure and
content of a page. HTML tags are used to create the basic structure of a web page,
such as headings, paragraphs, lists, images, links, and more. Attributes are used to
provide additional information about the elements on a page, such as the source of
an image or the destination of a link. HTML also supports the use of CSS and
JavaScript to add style and interactivity to web pages. HTML is a very simple
language to learn, and it is the foundation of all websites. With a basic
understanding of HTML, you can create your own web pages and even modify
existing ones. For example, the <h1> tag is used to create a heading, while the <p>
tag is used to create a paragraph. There are many different tags available in HTML,
each with its own specific purpose.

CSS:
CSS, or Cascading Style Sheets, is a language used to control the layout and design
of web pages. It is used in conjunction with HTML to separate the presentation of
a web page from its content. With CSS, developers can create visually appealing
and consistent designs across multiple web pages.
CSS allows for the control of elements such as font size and color, spacing,
alignment, and more. It also supports the use of selectors, which allow for the
targeting of specific HTML elements on a page to apply styles to. CSS also
supports media queries, which enable developers to create responsive designs that
adjust to the size of the user's device or screen.. CSS makes it easy to maintain and
update the design of a website.
JAVASCRIPT:
JavaScript is a programming language that is primarily used to create interactive
and dynamic elements on web pages. It is used in conjunction with HTML and
CSS to create complex and engaging user interfaces. JavaScript allows for the
creation of things like image sliders, form validation, and interactive maps.
JavaScript is a versatile language that can be used for a wide range of tasks, from
simple form validation to full-fledged web applications. It is supported by all major
browsers, making it a widely-used technology that is essential for creating
interactive and dynamic web pages.

BOOTSTRAP:

Bootstrap is a popular front-end development framework that helps developers


create responsive and mobile-ready websites. It was developed by Twitter in 2010
and has since become one of the most widely used front-end frameworks.
Bootstrap is based on HTML, CSS, and JavaScript and provides a set of pre-
designed components and layout options that can be easily used to create a wide
range of web pages. Some of the key features of Bootstrap include a responsive
grid system, pre-designed UI components like buttons, forms, and tables, and
support for CSS preprocessors like Less and Sass. With Bootstrap, developers can
quickly create professional-looking websites without spending a lot of time on
design and layout. It also makes it easier to maintain consistency across pages and
devices. Overall, Bootstrap is a powerful tool for front-end development that can
save time, improve consistency, and make it easier to create responsive and
mobile-ready websites.

3.2 Back-End
PHP v7.0.0:
PHP is a popular server-side scripting language that is widely used for web
development. PHP version 7, released in 2015, was a major upgrade from the
previous version and introduced several important changes and improvements.
Another important feature of PHP 7 is the introduction of scalar type hints, which
allow developers to specify the data type of function arguments. This improves
code readability and makes it easier to catch errors.

It is a powerful and versatile language that offers many improvements over


previous versions. With its improved performance, enhanced security, and new
features, it is a great choice for web developers and can be used to create a wide
range of web applications.

MySQL Database:
MySQL is a widely-used open-source relational database management system
(RDBMS) that is known for its reliability, performance, and ease of use. It is often
used in combination with the PHP programming language to create dynamic web
applications. MySQL stores and manages data in tables, which are organized into
databases. Each table has a unique structure defined by a set of columns, and each
column has a specific data type, such as integer, string, or date.
One of the key features of MySQL is its support for SQL (Structured Query
Language), which is a standard language for managing and manipulating relational
databases. This allows developers to easily create, read, update, and delete data in a
MySQL database.
MySQL is also highly configurable and can be optimized for different use cases,
such as high-traffic websites or data warehousing. It has a wide range of built-in
functions and can be extended with user-defined functions and stored procedures.
In summary, MySQL is a robust and reliable RDBMS, widely used in web
development. Its support for SQL, wide range of data types and support for large
data sets, and configurability makes it a great option for a wide range of
applications.

3.3 Web Server:


XAMPP v3.3.0: XAMPP is a free, open-source, and cross-platform web server
solution that allows developers to create and test web applications on their local
machines. XAMPP stands for Cross-Platform (X), Apache (A), MariaDB (M),
PHP (P) and Perl (P). It is a package of software components that includes Apache
web server, MariaDB (MySQL) database, PHP, and Perl programming languages.
This bundle allows developers to set up a local web server environment with the
necessary components to run PHP and MySQL-based web applications without the
need for an internet connection. XAMPP is easy to install and use, and it is
particularly popular among developers working on WordPress, Joomla, and other
PHP-based web applications. With XAMPP, developers can test their code and see
how it behaves on a live web server, without having to upload it to a remote web
server. This can save time and money, and it also allows developers to work
offline. my local webserver that has a PHP Version 8.0.7:

3.4 Operating System


Windows 7 and above.

3.5 Functional and non-functional requirements:

Functional requirements for a Library Management System would include


capabilities such as:
Immediate Login must be provided to the user and admin.
Able to access the database of registered user, registered authors, registered books
and registered category.
Must be able to alter the table immediately and reliability must be high for the
issue database table.
The user as well as admin must be able to edit the profile at anytime and anywhere.
The user must be able to read the books issued to them.
The functionality to return the book must be available for the user.

Non-functional requirements for a Library Management System would include


aspects such as:
Performance (e.g. speed of accessing and updating Books, Author, Category
details)
Scalability (e.g. ability to handle a large number of User and Issues at a time on
single database)
Security (e.g. protecting sensitive Users and issued books information from
unauthorized access)
Reliability (e.g. ability to recover from system failures and ensure data integrity)
Usability (e.g. ease of use for service staff and users)

Methods used in back end (PHP) :


Below are some methods used in the backend of our database:

 <?php
if(isset($_POST['add_author'])){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "insert into authors values('','$_POST[author_name]',
$_POST[No_Of_Books],'$_POST[Origin]','$_POST[Gender]')";
$query_run = mysqli_query($connection,$query);
}
?>

 <?php
if(isset($_POST['add_book'])){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "insert into books
values(null,'$_POST[book_name]','$_POST[book_author]','$_POST[book_cat]',
$_POST[book_no],$_POST[book_price])";
$query_run = mysqli_query($connection,$query);
}
?>

 <div>
<script>
function printFunction() {
var printContents = document.getElementById('PrintTable').innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
</script>
<input type="button" value="Print" onclick="printFunction()">

</div>

 <?php
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "delete from authors where author_id = $_GET[aid]";
$query_run = mysqli_query($connection,$query);
?>

 <?php
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query1 = "select s_no,book_name,book_author,book_no,student_id,issue_date, returned_date
from issued_books where book_no = $_GET[bn]";

$query_run = mysqli_query($connection,$query1);
while($row = mysqli_fetch_assoc($query_run)){
$s_no = $row['s_no'];
$book_name = $row['book_name'];
$book_author = $row['book_author'];
$book_no = $row['book_no'];
$student_id = $row['student_id'];
$student_name = $row['name'];
}
$query2 = "insert into returned_table values($_POST[s_no],
$_POST[book_no],'$_POST[book_name]','$_POST[book_author]',
$_POST[student_id],1,'$_POST[issue_date]',null)";
$query_run = mysqli_query($connection,$query2);
?>
<?php

$query = "delete from issued_books where book_no = $_GET[bn]";


$query_run = mysqli_query($connection,$query);
?>

 <?php
require('functions.php');
session_start();
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$author_name = "";
$author_id = "";
$query = "select * from authors where author_id = $_GET[aid]";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$author_name = $row['author_name'];
$No_Of_Books = $row['No_Of_Books'];
$Origin = $row['Origin'];
$Gender = $row['Gender'];
}
?>
<?php
if(isset($_POST['update'])){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "update authors set
author_name='$_POST[author_name]',No_Of_Books=$_POST[No_Of_Books],
Origin='$_POST[Origin]', Gender='$_POST[Gender]' where author_id = $_GET[aid]";
$query_run = mysqli_query($connection,$query);
header("location:manage_author.php");
}
?>

 <?php
require('functions.php');
session_start();
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$book_no = "";
$book_name = "";
$author_id = "";
$cat_id = "";
$book_price = "";
$query = "select * from books where book_no = $_GET[bn]";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$book_name = $row['book_name'];
$book_no = $row['book_no'];
$author_id = $row['author_id'];
$cat_id = $row['cat_id'];
$book_price = $row['book_price'];
}
?>

 <?php
function get_user_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$user_count = "";
$query = "select count(*) as user_count from users";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$user_count = $row['user_count'];
}
return($user_count);
}
 function get_book_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$book_count = "";
$query = "select count(*) as book_count from books";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$book_count = $row['book_count'];
}
return($book_count);
}

 function get_category_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$cat_count = "";
$query = "select count(*) as cat_count from category";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$cat_count = $row['cat_count'];
}
return($cat_count);
}

 function get_author_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$author_count = "";
$query = "select count(*) as author_count from authors";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$author_count = $row['author_count'];
}
return($author_count);
}

 function get_issued_book_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$issued_book_count = "";
$query = "select count(*) as issued_book_count from issued_books";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$issued_book_count = $row['issued_book_count'];
}
return($issued_book_count);
}
?>

 <?php
session_start();
if(isset($_POST['login'])){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "select * from admins where email =
'$_POST[email]'";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
if($row['email'] == $_POST['email']){
if($row['password'] ==
$_POST['password']){
$_SESSION['name'] = $row['name'];
$_SESSION['email'] = $row['email'];

header("Location:admin_dashboard.php");
}
else{
?>
<br><br><center><span
class="alert-danger">Wrong Password</span></center>
<?php
}
}
}
}
?>

 <?php
session_unset();
session_destroy();
header("Location:admin/index.php");
?>

 <?php
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "select * from books";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
?>
<tr>
<td><?php echo$row['book_name'];?></td>
<td><?php echo $row['author_id'];?></td>
<td><?php echo $row['cat_id'];?></td>
<td><?php echo $row['book_no'];?></td>
<td><?php echo $row['book_price'];?></td>
<td>
<button class="btn" name=""><a
href="edit_book.php?bn=<?php echo $row['book_no'];?>">Edit</a></button>
<button class="btn" name=""><a
href="delete_book.php?bn=<?php echo $row['book_no'];?>">Delete</a></button>
</td>
</tr>
<?php
}
?>

 <?php
session_start();
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$password = "";
$query = "select * from admins where email = '$_SESSION[email]'";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$password = $row['password'];
}
if($password == $_POST['old_password']){
$query = "update admins set password = '$_POST[new_password]' where email =
'$_SESSION[email]'";
$query_run = mysqli_query($connection,$query);
}
?>

3.6 CLASS DIAGRAM


A class diagram is a type of diagram in software engineering that
describes the structure of a system by showing the classes, attributes,
and relationships between them.
The Fig describes a class diagram for our database system. The class
diagram has eight classes: admins, authors, books, Category,
issued_books, logs, returned_table, users. Each class has a set of
attributes, such as id, name, and status, and a primary key.
Additionally, there are several foreign key relationships between the
classes. For example, The ‘id’ in log table is foreign key in ‘logs’ from
the user table.And similarly the foreign key relation is available between
‘issued_book’ table and ‘returned_table’
CHAPTER 4
IMPLEMENTATION

4.1 CODE SNIPPET


LOGIN PAGE CODE SNIPPET
<div class="col-md-8" id="main_content">
<center><h3>User Login Form</h3></center>
<form action="" method="post">
<div class="form-group">
<label for="name">Email ID:</label>
<input type="text" name="email" class="form-control"
required>
</div>
<div class="form-group">
<label for="name">Password:</label>
<input type="password" name="password" class="form-
control" required>
</div>
<button type="submit" name="login" class="btn btn-
primary">Login</button>
</form>

<?php
session_start();
if(isset($_POST['login'])){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "select * from users where email =
'$_POST[email]'";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
if($row['email'] == $_POST['email']){
if($row['password'] ==
$_POST['password']){
$_SESSION['name'] = $row['name'];
$_SESSION['email'] = $row['email'];
$_SESSION['id'] = $row['id'];

header("Location:user_dashboard.php");
}
else{
?>
<br><br><center><span
class="alert-danger">Wrong Password</span></center>
<?php
}
}
}
}
?>
</div>

LOGOUT CODE SNIPPET


<?php
session_unset();
session_destroy();
header("Location:admin/index.php");
?>

REGISTRATION PAGE CODE SNNIPPET


<div class="col-md-8" id="main_content">
<center><h3>User Registration Form</h3></center>
<form action="register.php" method="post">
<div class="form-group">
<label for="name">Full Name:</label>
<input type="text" name="name" class="form-control"
required>
</div>
<div class="form-group">
<label for="name">Email ID:</label>
<input type="text" name="email" class="form-control"
required>
</div>
<div class="form-group">
<label for="name">Password:</label>
<input type="password" name="password" class="form-
control" required>
</div>
<div class="form-group">
<label for="name">Mobile Number:</label>
<input type="text" name="mobile" class="form-control"
required>
</div>
<div class="form-group">
<label for="name">Address:</label>
<textarea rows="3" cols="40" class="form-control"
name="address"></textarea>
</div>
<button type="submit" class="btn btn-primary">Register</button>
</form>
</div>

USER DASHBOARD CODE SNIPPET (WITHOUT NAVIGATION BAR


CODE)

<?php
session_start();
function get_user_issue_book_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$user_issue_book_count = 0;
$query = "select count(*) as user_issue_book_count from issued_books where
student_id = $_SESSION[id]";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$user_issue_book_count = $row['user_issue_book_count'];
}
return($user_issue_book_count);
}
?>
<div class="row">
<div class="col-md-3">
<div class="card bg-light" style="width: 300px">
<div class="card-header">Issued Books:</div>
<div class="card-body">
<p class="card-text">No. of Issued Books: <?php echo
get_user_issue_book_count();?> </p>
<a href="view_issued_book.php" class="btn btn-danger"
target="_blank">View Issued Books</a>
</div>
</div>
</div>
<div class="col-md-3"></div>
<div class="col-md-3"></div>
<div class="col-md-3"></div>
</div>

ADMIN DASHBOARD CODE SNIPPET (WITHOUT NAVIGATION BAR


CODE)
<?php
require('functions.php');
session_start();
?>
<div class="row">
<div class="col-md-3">
<div class="card bg-light" style="width: 300px">
<div class="card-header">Registered Users:</div>
<div class="card-body">
<p class="card-text">No. of total users: <?php echo
get_user_count();?></p>
<a href="regusers.php" class="btn btn-danger"
target="_blank">View Registered Users</a>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-light" style="width: 300px">
<div class="card-header">Registered Books:</div>
<div class="card-body">
<p class="card-text">No. of availbale books: <?php echo
get_book_count();?></p>
<a href="regbooks.php" class="btn btn-primary"
target="_blank">View Registered Books</a>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-light" style="width: 300px">
<div class="card-header">Registered Category:</div>
<div class="card-body">
<p class="card-text">No. of book's category: <?php echo
get_category_count();?></p>
<a href="regcat.php" class="btn btn-info"
target="_blank">View Categories</a>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-light" style="width: 300px">
<div class="card-header">Registered Authors:</div>
<div class="card-body">
<p class="card-text">No. of availbale authors: <?php echo
get_author_count();?></p>
<a href="regauth.php" class="btn btn-primary"
target="_blank">View Authors</a>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-light" style="width: 300px">
<div class="card-header">Issued Books:</div>
<div class="card-body">
<p class="card-text">No. Issued Books: <?php echo
get_issued_book_count();?></p>
<a href="view_issued_book.php" class="btn btn-success"
target="_blank">View Issued books</a>
</div>
</div>
</div>
</div>

NAVIGATION BAR CODE SNIPPET(ADMIN)


<!DOCTYPE html>
<html>
<head>
<title>User Dashboard</title>
<meta charset="utf-8" name="viewport" content="width=device-width,intial-scale=1">
<link rel="stylesheet" type="text/css" href="../bootstrap-4.4.1/css/bootstrap.min.css">
<script type="text/javascript" src="../bootstrap-4.4.1/js/juqery_latest.js"></script>
<script type="text/javascript" src="../bootstrap-4.4.1/js/bootstrap.min.js"></script>
<style type="text/css">
#side_bar{
background-color: whitesmoke;
padding: 50px;
width: 300px;
height: 450px;
}
</style>
</head>

<body>

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">


<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="index.php">Library Management
System(LMS)</a>
</div>
<font style="color: white"><span><strong>Welcome: <?php echo
$_SESSION['name'];?></strong></span></font>
<font style="color: white"><span><strong>Email: <?php echo
$_SESSION['email'];?></strong></span></font>
<ul class="nav navbar-nav navbar-right">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-
toggle="dropdown">My Profile</a>
<div class="dropdown-menu">
<a class="dropdown-item"
href="view_profile.php">View Profile</a>
<a class="dropdown-item" href="edit_profile.php">
Edit Profile</a>
<a class="dropdown-item"
href="change_password.php">Change Password</a>
</div>
</li>
<li class="nav-item"><a class="nav-link"
href="../logout.php">Logout</a></li>
</ul>
</div>
</nav>
<nav class="navbar navbar-expand-lg navbar-light" style="background-color: #e3f2fd">
<div class="container-fluid">
<ul class="nav navbar-nav navbar-center">
<li class="nav-item">
<a href="admin_dashboard.php" class="nav-link">Dashboard</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-
toggle="dropdown">Book</a>
<div class="dropdown-menu">
<a href="add_book.php" class="dropdown-item">Add
New Book</a>
<a href="manage_book.php" class="dropdown-
item">Manage Books</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-
toggle="dropdown">Category</a>
<div class="dropdown-menu">
<a href="add_cat.php" class="dropdown-item">Add New
Category</a>
<a href="manage_cat.php" class="dropdown-
item">Manage Category</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-
toggle="dropdown">Author</a>
<div class="dropdown-menu">
<a href="add_author.php" class="dropdown-item">Add
New Author</a>
<a href="manage_author.php" class="dropdown-
item">Manage Authors</a>
</div>
</li>
<li class="nav-item">
<a href="issue_book.php" class="nav-link">Issue Book</a>
</li>
<li class="nav-item">
<a href="return.php" class="nav-link">Return</a>
</li>
<li class="nav-item">
<a href="delay_display.php" class="nav-link">Delay Record</a>
</li>
</ul>
</div>
</nav>
</body>

NAVIGATION BAR CODE SNIPPET(USER)


<?php
session_start();
function get_user_issue_book_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$user_issue_book_count = 0;
$query = "select count(*) as user_issue_book_count from issued_books where
student_id = $_SESSION[id]";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$user_issue_book_count = $row['user_issue_book_count'];
}
return($user_issue_book_count);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>User Dashboard</title>
<meta charset="utf-8" name="viewport" content="width=device-width,intial-scale=1">
<link rel="stylesheet" type="text/css" href="bootstrap-4.4.1/css/bootstrap.min.css">
<script type="text/javascript" src="bootstrap-4.4.1/js/juqery_latest.js"></script>
<script type="text/javascript" src="bootstrap-4.4.1/js/bootstrap.min.js"></script>
<style type="text/css">
#side_bar{
background-color: whitesmoke;
padding: 50px;
width: 300px;
height: 450px;
}
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="index.php">Library Management
System(LMS)</a>
</div>
<font style="color: white"><span><strong>Welcome: <?php echo
$_SESSION['name'];?></strong></span></font>
<font style="color: white"><span><strong>Email: <?php echo
$_SESSION['email'];?></strong></span></font>
<ul class="nav navbar-nav navbar-right">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-
toggle="dropdown">My Profile</a>
<div class="dropdown-menu">
<a class="dropdown-item"
href="view_profile.php">View Profile</a>
<a class="dropdown-item" href="address.php">
Edit Profile</a>
<a class="dropdown-item"
href="change_password.php">Change Password</a>
</div>
</li>
<li class="nav-item"><a class="nav-link"
href="logout.php">Logout</a></li>
</ul>
</div>
</nav><br>
</body>

ISSUE BOOK CODE SNIPPET


<?php
require('functions.php');
session_start();

?>
<!DOCTYPE html>
<html>
<head>
<title>User Dashboard</title>
<meta charset="utf-8" name="viewport" content="width=device-width,intial-scale=1">
<link rel="stylesheet" type="text/css" href="../bootstrap-4.4.1/css/bootstrap.min.css">
<script type="text/javascript" src="../bootstrap-4.4.1/js/juqery_latest.js"></script>
<script type="text/javascript" src="../bootstrap-4.4.1/js/bootstrap.min.js"></script>
<style type="text/css">
#side_bar{
background-color: whitesmoke;
padding: 50px;
width: 300px;
height: 450px;
}
</style>
</head>
<body>

<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4">
<form action="" method="post">
<div class="form-group">
<label>Book Name:</label>
<input type="text" name="book_name" class="form-
control" required="">
</div>
<div class="form-group">
<label>Book Author:</label>
<select class="form-control" name="book_author">
<option>-Select author-</option>
<?php
$connection =
mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "select author_name from
authors";
$query_run = mysqli_query($connection,
$query);
while($row =
mysqli_fetch_assoc($query_run)){
?>
<option><?php echo
$row['author_name'];?></option>
<?php
}
?>
</select>
<div class="form-group">
<label>Book Number:</label>
<input type="text" name="book_no" class="form-control"
required="">
</div>
<div class="form-group">
<label>Student ID:</label>
<input type="text" name="student_id" class="form-
control" required="">
</div>
<div class="form-group">
<label>Issue Date:</label>
<input type="text" name="issue_date" class="form-
control" value="<?php echo date("Y-m-d");?>" required="">

</div>
</div>
<button class="btn btn-primary" name="issue_book">Issue
Book</button>

</form>
</div>
<div class="col-md-4"></div>
</div>
</body>
</html>

<?php
if(isset($_POST['issue_book'])){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "insert into issued_books values(null,
$_POST[book_no],'$_POST[book_name]','$_POST[book_author]',
$_POST[student_id],1,'$_POST[issue_date]')";
$query_run = mysqli_query($connection,$query);
}
?>

DELETE ANY RECORD CODE SNIPPET (BUT IMPLEMENTED WITH THE


CHANGES (HERE IT IS BASIC CONCEPT ONLY FUNCTIONAL PART))

<?php
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$query = "delete from books where book_no = $_GET[bn]";
$query_run = mysqli_query($connection,$query);
?>
<script type="text/javascript">
alert("Book Deleted...");
window.location.href = "manage_book.php";
</script>
FUNCTIONS BUNCH FILE CODE SNIPPET

<?php
function get_user_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$user_count = "";
$query = "select count(*) as user_count from users";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$user_count = $row['user_count'];
}
return($user_count);
}

function get_book_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$book_count = "";
$query = "select count(*) as book_count from books";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$book_count = $row['book_count'];
}
return($book_count);
}

function get_category_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$cat_count = "";
$query = "select count(*) as cat_count from category";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$cat_count = $row['cat_count'];
}
return($cat_count);
}

function get_author_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$author_count = "";
$query = "select count(*) as author_count from authors";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$author_count = $row['author_count'];
}
return($author_count);
}

function get_issued_book_count(){
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection,"lms");
$issued_book_count = "";
$query = "select count(*) as issued_book_count from issued_books";
$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
$issued_book_count = $row['issued_book_count'];
}
return($issued_book_count);
}
?>

PRINTING FUNCTION CODE SNIPPET (CODE SNIPPET OF RETURN


LIST)

<form id="PrintTable">
// Code for the details receiving
</form>
<script>
function printFunction() {
var printContents = document.getElementById('PrintTable').innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
</script>
<input type="button" value="Print" onclick="printFunction()">
4.2 Table descriptions
Table name:
Admin

Author

Books
Category

Issued_books

Logs

Returned_table
Users

4.3 Commands
-- Indexes for table `admins`
ALTER TABLE `admins`
ADD PRIMARY KEY (`id`);

-- Indexes for table `authors`


ALTER TABLE `authors`
ADD PRIMARY KEY (`author_id`);

-- Indexes for table `books`


ALTER TABLE `books`
ADD PRIMARY KEY (`book_id`);

-- Indexes for table `category`


ALTER TABLE `category`
ADD PRIMARY KEY (`cat_id`);
-- Indexes for table `issued_books`
ALTER TABLE `issued_books`
ADD PRIMARY KEY (`s_no`);

-- Indexes for table `logs`


ALTER TABLE `logs`
ADD PRIMARY KEY (`id`);

-- Indexes for table `users`


ALTER TABLE `users`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `Unk` (`email`);

-- AUTO_INCREMENT for dumped tables


-- AUTO_INCREMENT for table `admins`
--
ALTER TABLE `admins`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

-- AUTO_INCREMENT for table `authors`


ALTER TABLE `authors`
MODIFY `author_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=111;

-- AUTO_INCREMENT for table `books`


ALTER TABLE `books`
MODIFY `book_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

-- AUTO_INCREMENT for table `category`


ALTER TABLE `category`
MODIFY `cat_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

-- AUTO_INCREMENT for table `issued_books`


ALTER TABLE `issued_books`
MODIFY `s_no` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=114;

-- AUTO_INCREMENT for table `users`


ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;
COMMIT;

Foreign Keys:

 Constraints for table `issued_books`


ALTER TABLE `issued_books`
ADD CONSTRAINT `pqr` FOREIGN KEY (`book_no`) REFERENCES
`returned_table` (`s_no`) ON DELETE NO ACTION ON UPDATE NO ACTION;

 Constraints for table `logs`


ALTER TABLE `logs`
ADD CONSTRAINT `abc` FOREIGN KEY (`email`) REFERENCES `users` (`email`)
ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;
4.4 Insertion of tuples
INSERT INTO `admins` (`id`, `name`, `email`, `password`, `mobile`) VALUES
(1, 'admin', 'admin@gmail.com', 'admin@1234', 1148458757);

INSERT INTO `authors` (`author_id`, `author_name`, `No_Of_Books`, `Origin`, `Gender`)


VALUES
(101, ' jaishankar', 5, 'INDIA', 'M'),
(102, 'M D Guptaa', 3, 'INDIA', 'M'),
(103, 'Chetan Bhagat', 4, 'INDIA', 'M'),
(104, 'Munshi Prem Chand', 10, 'INDIA', 'M'),
(110, 'Dr. APJ Abdul Kalam', 6, 'INDIA', 'M');

INSERT INTO `books` (`book_id`, `book_name`, `author_id`, `cat_id`, `book_no`,


`book_price`) VALUES
(1, 'Software engineering', 102, 1, 4518, 270),
(2, 'Data structure', 102, 2, 6541, 300),
(9, 'The Indian Way', 101, 1, 8, 700),
(10, 'Lectures from Colombo to Almora', 0, 0, 1100, 101);

INSERT INTO `category` (`cat_id`, `cat_name`) VALUES


(1, 'Computer Science Engineering '),
(2, 'Novel'),
(4, 'Motivational'),
(5, 'Story'),
(10, 'Autobiography');

INSERT INTO `issued_books` (`s_no`, `book_no`, `book_name`, `book_author`, `student_id`,


`stat`, `issue_date`) VALUES
(113, 500, 'Wings Of Fire', 'Dr. APJ Abdul Kalam', 12, 1, '2023-01-20');
INSERT INTO `logs` (`id`, `email`, `address`) VALUES
(1, 'user@gmail.com', ' Jaipur'),
(2, 'hemant@gmail.com', 'Hubli'),
(8, 'shubhankarsharma22@gmail.com', 'Bilekahalli,blr'),
(11, 'shravanthmr9602@gmail.com', 'Bengaluru'),
(12, 'sanskriti123@gmail.com', 'kengeri,Bengaluru\r\n');

INSERT INTO `returned_table` (`s_no`, `book_no`, `book_name`, `book_author`, `student_id`,


`stat`, `issue_date`, `returned_date`) VALUES
(28, 500, 'The Indian Way', 'jaishankar', 8, 1, '2023-01-14', '2023-01-24'),
(19, 465, 'The Indian Way', 'jaishankar', 11, 1, '2323-01-13', '2023-01-14'),
(18, 7845, 'half Girlfriend', 'Chetan Bhagat', 2, 1, '2020-04-22', '2020-05-21),
(110, 22, 'Data Structures', 'M D Guptaa', 12, 1, '2023-01-18', '2023-01-20');

INSERT INTO `users` (`id`, `name`, `email`, `password`, `mobile`, `address`) VALUES
(1, 'user', 'user@gmail.com', 'hi', 2147483644, ' Jaipur'),
(2, 'hemant', 'hemant@gmail.com', 'bengalore', 2147483644, 'Hubli'),
(8, 'shubhankar', 'shubhankarsharma22@gmail.com', 'delhi', 2147483647, 'Bilekahalli,blr'),
(11, 'shravanthmr9602@gmail.com', 'shravanthmr9602@gmail.com', 'yo', 544652351,
'Bengaluru'),
(12, 'Sanskriti Singh', 'sanskriti123@gmail.com', '123', 1112223334, 'kengeri,Bengaluru\r\n');

4.5 Queries
The below mentioned queries are all embedded in the PHP scripting language in
our database:
 $query = "insert into authors values('','$_POST[author_name]',
$_POST[No_Of_Books],'$_POST[Origin]','$_POST[Gender]')";
This query is meant to insert the data into the author table from the use, using the POST
method.
 $query = "insert into books
values(null,'$_POST[book_name]','$_POST[book_author]','$_POST[book_cat]',
$_POST[book_no],$_POST[book_price])";
This query is running to insert the details of the new book added by the admin into the
books table.

 $query = "insert into category values('','$_POST[cat_name]')";


Inserting the category name by the admin.

 $query = "select * from returned_table";


Simply selecting/ fetching all the details from returned_table by the admin and later
displayed and publish on the screen and as well as in the form of PDF.

 $query = "delete from authors where author_id = $_GET[aid]";


Deleting all the details of the author_id received through the GET command.

 $query = "delete from books where book_no = $_GET[bn]";


Deleting all the details of the book_no received through the GET command.

 $query = "delete from category where cat_id = $_GET[cid]";


Deleting all the details of the cat_id received through the GET command.

 $query1 = "select s_no,book_name,book_author,book_no,student_id,issue_date,


returned_date from issued_books where book_no = $_GET[bn]";
$query2 = "insert into returned_table values($_POST[s_no],
$_POST[book_no],'$_POST[book_name]','$_POST[book_author]',
$_POST[student_id],1,'$_POST[issue_date]',null)";
Here in the first query the all the date is getting selected from issued_books. And later in
the second it is inserted with the current date into returned_table.

 $query = "select * from authors where author_id = $_GET[aid]";


$query = "update authors set
author_name='$_POST[author_name]',No_Of_Books=$_POST[No_Of_Books],
Origin='$_POST[Origin]', Gender='$_POST[Gender]' where author_id = $_GET[aid]";
Here first all the data of the row where the author_id is same to the passed id by GET is
selected. Then update query is run to edit the details that are needed to be updated for
author.

 $query = "select * from books where book_no = $_GET[bn]";


$query = "update books set book_name =
'$_POST[book_name]',author_id=$_POST[author_id],cat_id=$_POST[cat_id],book_pric
e = $_POST[book_price] where book_no = $_GET[bn]";
The first query will select all the details from the row where book_no is qual to the one
which is received by GET method. Then in the second query is ude to update all the
details which are received and assigned it with the newer values provided by the admin.

 $query = "select * from category where cat_id = $_GET[cid]";


$query = "update category set cat_name = '$_POST[cat_name]' where cat_id =
$_GET[cid]";
The first query is made to select all the details of the row having the cat_id as received
from the get method, while the second query is made to update the cat_name of the
received cat_id .

 $query = "select * from admins where email = '$_SESSION[email]'";


$query = "update admins set
name='$_POST[name]',email='$_POST[email]',mobile='$_POST[mobile]'";
Here the query is made to received the already available details of the admin and later can
be edited by the admin and will be stored in the admins table.

 $query = "select * from admins where email = '$_POST[email]'";


$query_run = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($query_run)){
if($row['email'] == $_POST['email']){
if($row['password'] =$_POST['password']){
$_SESSION['name'] = $row['name'];
$_SESSION['email'] = $row['email'];

header("Location:admin_dashboard.php");
}
The above lines of code contains the query where according to inserted email id the
password is fetched and verified to let the admin have the access.

 $query = "insert into issued_books values(null,


$_POST[book_no],'$_POST[book_name]','$_POST[book_author]',
$_POST[student_id],1,'$_POST[issue_date]')";
This query is made to insert the details of issuer and the book needed to be issued to the
user.

 $query = "select * from admins where email = '$_SESSION[email]'";


$query = "update admins set password = '$_POST[new_password]' where email =
'$_SESSION[email]'";
The first query use to select all the details from the row where email is taken using the
SESSION method. Then it is passed to the next query where password is updated for the
admin for admin login.

 $address = $_POST["address"];
$query = "update users set password = '".$address."' where email =
'$_SESSION[email]'";
This query is in continuation is connected to trigger. Where here the password updation is
taking place provided by the user. Then the trigger passes the details of the user who
changed the password to the logs table.

And many more queries are present for the user for login, retrieving which may be
repetitive for the report as well indirectly listed above.

4.6 TRIGGERS

CREATE TRIGGER `logs`

AFTER

UPDATE ON `users`

FOR EACH ROW

INSERT INTO logs VALUES(OLD.id,OLD.email,NEW.address);

This is a MySQL trigger that is activated after an update on the "users" table.
The trigger will execute a query that inserts a new row into a table called
"logs", with the values of the "id", "email" and "address" fields from the old
and new versions of the updated row in the "users" table. In other words, this
trigger will keep a log of the updates made to the user's table on the logs
table for auditing purposes.
This will take place when the user will update it password to their profile
and it becomes necessary for the admin to know the people who opted to
change their password.
CHAPTER 5
RESULT

Screenshots
Here the address interface for different pages are shown in images which are made on php.

Admin Login Page

User Login Page


Registration Login Page

 The above 3 screenshots are Admin, Login, Registration which are made to address two
characters ADMIN and the USER.
 For the new USER registration page is provided which collects (Full Name, Email ID,
Password, Mobile Number, Address) and save it to SQL table called “users”.
 And for the login purpose the ‘USER LOGIN’ and ‘ADMIN LOGIN’ pages are made
which takes email and the password as the detail and it verifies the details from ‘users’
and ‘admin’ table. And provide them the access.

Admin Dashboard
 The admin dashboard is provided with the navigation bar which provides access to the
features as Books, Category, Author, Issue Book, Return Record.
 And the card through which we can access list of ‘Registered Users’, ‘Registered Books’,
‘Registered Categories’, ‘Registered Authors’, ‘View Issued Books’.
Registered Users

 Registered User provides the details of user ('Name’, ’Email’, ’Mobile Number’,
’Address’).
Registered Books

 This registered book page provides the details of book(Name, Author, Price, Number).

Registered Categories
 This page shows the categories name.
Registered Authors

 The registered author page provides the details regarding author as (‘Author id’, ’Name’,
’No. Of Books’, ’Origin’, ’Gender’)

Issued Books

 The issued books provide the details of the issued books only as (‘Name’, ’Author’,
’Number’, ’Student Name’).
Add Books

Manage Books

 In the navigation bar ‘books’ it’s a rollout menu which lists the ‘Add Book’, and
‘Manage book’.
 As in the Add Book name suggest it is the place to list up the details of new book (‘New
Book’, ‘Book Author’, ‘Category Name’, ‘No. Of Books’, ‘Book Price’).
 In the Manage Book it is the place where the deletion and editing of the details(‘Name’,
‘Author’, ‘Category’, ‘Number’, ‘Price’, ‘Action’) of book can be managed.
Add Categories

Manage Categories

 In the navigation bar the next rollout menu is ‘Category’ which has ‘Add Category’ and
‘Manage Category’ of books.
 In the Add Category we takes only ’category name’.
 In the Manage Category we have ability to edit and delete the Category which are derived
from the ‘Category Table’.
Add Author

Manage Author
 In the navigation bar the menu button with ‘Author’ also provide the list of operations
such as ‘Add Author’ and ‘Manage Author’.
 In the ‘Add Author’ page we can add the ‘Author Name’ ,’No. Of Books’, ‘Origin’,
’Gender’ and it get placed in ‘Author’ Table.
 In the ‘Manage Author’ page the details are received from the Author table and it also
provide the action with ‘edit’ and ‘delete’.

Issue Book Tab

 In the Issue Book option the main functionality of the project start where the user details
are taken to issue the book and the details which are taken are ‘Book Name’, ‘Book
Author(Which are meant to lest out all the authors in the database)’,’Book Number’ ,
‘Student ID’, ‘Issue Date(Which can be modified and also by default it is the current day
date)’
Return File

 Here all the issue books will be listed with the name of the borrower and also is
scheduled with the Book Number as book number must be unique.
 Here the feature of returning the book is also provided. With the printing list feature
which provide the PDF formate of the list of the issued books.

Returned Record
 Here the last functionality of complete cycle takes place where the returned books with
the borrower is published and also the issue date and return date is also provided which
helps to find out the return date as well.
 Also it has the printing feature which can reflect the list of books returned as well in the
PDF format.

User Dashboard

 For the purpose of user uses the project is provided with the separate login for
user and it has the dashboard.
 The user is provided with only capability of viewing the book issued by him/her.
 And the user is not having access to alter the database.
User Issued Book
 Edit-Profile

Here the user is having capability to provide the change the password for one’s and it is
supported by the trigger which helps in generating a record related the user who changed the
password. And the table in which all the details of the person who changed the record is ‘logs’
table.
 View Profile

 Here the user can check the details provided by him/her at the time of account creation.

 Issued Book List(For each user)

 Here the user can check what are the books issued on his/her name. And also can check
the ‘Book Number’ which is issued, ’Author Name’ and the ‘Book Name’.
CHAPTER 6
CONCLUSION

SUMMARY:

The project is made to address the management of the Library and the activities which are
necessary to be addressed. This project is made under the shadow of the DBMS mini-project.
The project is made to be commonplace for both the admin as well as for the user.
Here the user will be provided to make a registration for creating an account. After the username
and password, the user will be able to log in to the account. The account is meant necessary for
the issuing of the book. And to check the available books in the library. Also, the books are
categorized on the bases of their jonares. Through those categories, the user will be able to
explore more books. The portal will also give other details about the books available in the
library.
The portal will provide to add the new admin for the library staff. Through which the books can
be issued to the user in their name. Also, it will show the list of books under the status of the
issue. The admin will be able to add the books to the collection and add the details regarding the
books. The advantage of this portal is that it needs no separate machine and software to run the
portal. But just requires the basic computer installed with XAMPP and a browser.

Limitations:

Limited performance: Both PHP and MySQL can be less performant than other languages and
databases when handling large amounts of data or performing complex calculations, particularly
when dealing with high concurrency.

Limited scalability: While MySQL and PHP can handle large amounts of data, they may not
scale as well as other languages and databases in terms of handling a large number of concurrent
users or requests. Also it is not necessary for this project to use only MySQL but also NoSQL.

Security vulnerabilities: As with any system, if the PHP code and MySQL database are not
properly secured, there may be security vulnerabilities that can be exploited by attackers. Also
with just the php page path we can manipulate data and so it can be tempered with just the page
path.

Limited support for modern features: Both PHP and MySQL are older technologies and may not
have built-in support for newer technologies and features, such as machine learning or web
assembly. Also the lack of version continuity and also the legacy features are suddenly
terminated in php v5.0 to v7.0.
Future Enhancement
In a nutshell, it can be summarized that the future scope of the project circles around maintaining
information regarding:

● Going through library books and their availability as and where we are.

● Reading a book online can be added.

● The platform can be hosted on the online servers to make it accessible worldwide.

● Integrate multiple load balancers to distribute the loads of the system.

● Implement a backup mechanism for taking backup of database on regular basis on

different servers.

The above-mentioned points are the enhancements which can be done to increase the
applicability and usage of this project.
CHAPTER 7
Bibliography

Web References
1. https://www.w3schools.in/dbms/intro/
2. https://www.youtube.com/
3. https://getbootstrap.com/
4. https://developer.mozilla.org/en-US/
5. https://www.erdplus.com/
6. https://www.google.com/
7. Https://mysql.com/

Book References
1. Fundamentals of Database Systems, RamezElmasri and Shamkant B. Navathe, 7th Edition,
2017, Pearson

You might also like