Harsh Kumar Project
Harsh Kumar Project
A PROJECT REPORT
ON
CANDIDATE’S DECLARATION
……………………… ………………………….
CERTIFICATE FROM GUIDE
This is to certify that Harsh Kumar has completed the Synopsis Report “QR Attendance
System” under my guidance and supervisor and submitted the report as laid down by the
M.G.K.V.P. The material that has been obtained from other sources is duly acknowledged in
the report. It is further certified that the work or its part has not been submitted to another
University for examination under my supervisor. I consider this work worthily for the award
(H.O.D.)
universities, and other organizations. It uses QR codes to identify students, teachers, and
other staff members, making it a fast and efficient way to keep track of attendance. The
system consists of two main components: the backend and the frontend. The backend is
responsible for managing the database of users, classes, and attendance records. The
frontend is the user interface that allows teachers and students to interact with the system.
Another advantage of the system is its accuracy. Because it relies on individual scanning of
unique QR codes, it eliminates the possibility of proxy attendance, where students mark each
QR-based attendance systems are also highly customizable. Administrators can easily add
new users, classes, and attendance parameters as needed. The system can also be integrated
with other software tools, such as student information systems, to provide a seamless
experience for users. This system uses QR codes to mark attendance for students, employees,
The attendance data is immediately available, making it easy for teachers, supervisors, or
highly secure as each QR code is unique and can only be used once. The system ensures that
only authorized individuals can mark attendance, reducing the risk of fraud or misuse.
sheets or card swiping systems have proven to be inefficient and unreliable, leading to errors
have started using digital methods of attendance tracking, such as biometric systems, RFID
To overcome these challenges, various automated attendance tracking systems have been
developed, including biometric systems, RFID systems, and QR code-based systems. Among
these, QR code-based attendance systems have gained popularity due to their simplicity,
employee is assigned a unique QR code that they can scan using their mobile devices, and the
contains their personal information such as name, ID number, and other relevant data. The
teacher generates a QR code for each class session, which is displayed on a screen or printed
on a sheet of paper. The students then scan the QR code using their smartphones, which
Systems for tracking attendance that use QR codes provide a number of benefits over older
technologies. Since the data is automatically recorded in real-time, they are, first and
foremost, extremely accurate and reliable. By doing this, the chance of mistakes and
faster and more effective than conventional techniques. Both teachers and students benefit
from the time savings, which enables them to concentrate on more crucial duties.
Another advantage of QR code-based attendance systems is that they are highly cost-
effective. Traditional attendance tracking methods require the use of expensive equipment
such as biometric scanners or RFID readers, which can be a significant financial burden for
dedicated QR code scanner, which is much more affordable and widely available.
report. The system architecture, its elements, AND its operation are described in the paper.
The effectiveness, efficiency, and user-friendliness of the system are also evaluated in the
study. The study also addresses the benefits and drawbacks of the QR code-based attendance
QR code
Log date
Arrival time
Departure Time
QR-Code Generation
Student
Staff
MODULES DESCRIPTION:
QR-Code Generation:
In this module, QR code is generated in backend using zxing-javase jar file and send to the
student Email. Student need to verify the QR Code using QR code extractor to validate the
authorized student.
In this module, Student can register their details to the database. After getting approval from
staff then they receive QR-Code by register E-mail. After student passes the authentication
process using QR code, then the student attendance will be registered to the database.
Staff:
In this module, Staff can Approve/Reject Students after student registration and staff can
access student details and view student attendance and also can search students attendance
by date.
SYSTEM REQUIREMENTS :
HARDWARE REQUIREMENTS :
Ram : 4 GB
SOFTWARE REQUIREMENTS:
Coding Language :
Database : MYSQL
1. QR Code Scanning: Students can quickly mark their attendance by scanning a unique QR
2. Real-time Updates: Attendance records are instantly updated in the system, providing
3. Student Management: Easily manage student information, including names, courses, and
sections.
Technologies Used:
1. PHP: The backend scripting language used for server-side logic and database interactions.
2. MySQL: A powerful relational database management system employed for storing and
3. Bootstrap: Incorporates Bootstrap framework for responsive and visually appealing front-
end design.
How to Use:
1. Scan QR Code: Students should launch the QR Code Attendance System and scan their
2. Record Attendance: Upon successful scanning, the system automatically records the
student's attendance.
4. Add and Manage Students: Easily add new students to the system or update existing
5. Generate QR Codes: Generate QR codes for new students and associate them with their
Generate QR Code – this page will allow QR code generation to record the
attendance of the student’s arrival and departure in school.
The following information will be encoded and displayed on the page:
Student ID #
Student Name
QR code
The methodology for a QR code based attendance system involves the following steps:
1. Designing the system architecture and deciding on the required hardware and software
components.
2. Creating a database to store information about students, teachers, classes, and attendance
records.
3. Developing an admin module for managing the system, which includes adding and
removing students and teachers, creating new classes, and generating QR codes for each
class.
4. Developing a teacher module for generating QR codes for each class and taking attendance.
5. Developing a student module for scanning the QR code and marking attendance for each
class.
6. Testing and debugging the system to ensure that it works reliably and efficiently.
7. Deploying the system in a real-world setting and monitoring its performance over time.
8. Collecting feedback from users and making improvements to the system based on their
physiological or behavioural traits, like their fingerprints, their face, or their voice, to track
their attendance. This technique is very secure and does not allow for buddy punching or
use small electronic tags or cards that can be scanned to record attendance. This system is
similar to QR code-based attendance systems but does not require a camera or scanner to
read the tag. RFID attendance systems are suitable for large-scale attendance tracking, but
3. Beacon Attendance System: Beacon technology uses Bluetooth Low Energy (BLE) to
track attendance. It involves placing beacons at different locations around the building, and
when students or employees enter or exit the area, their mobile devices receive a signal from
the beacon, and their attendance is recorded. Beacon attendance systems are more suitable
for large spaces and can work well in areas with poor internet connectivity. However, it
requires the user's mobile device to have Bluetooth enabled and can be more complex to set
through a sign-in sheet or attendance register. This system is the simplest and most cost-
effective approach, but it is prone to errors and can be time-consuming to manage, especially
record attendance. It requires the user's mobile device to have GPS enabled, and when the
user enters or exits the designated location, their attendance is recorded. This system is
suitable for outdoor events and fieldwork but may not be as accurate as other systems, and it
The proposed approach for QR code-based attendance system is a simple yet effective
institutions. The system utilizes QR codes, which can be easily generated and scanned using
The proposed approach involves four main steps: QR code generation, QR code scanning,
Firstly, the system generates unique QR codes for each student or employee, which can be
Secondly, when the student or employee arrives at the designated location for attendance,
the QR code is scanned using a smartphone or other mobile device with a QR code scanner
app. The app reads the information encoded in the QR code and sends it to the system's
Thirdly, the system maintains a record of attendance for each student or employee, which
can be accessed and viewed by authorized personnel. The attendance data can be stored in a
Finally, the system provides a reporting feature that allows authorized personnel to view
attendance records for individual students or employees, as well as generate reports for
entire classes or departments. This feature can be used to monitor attendance patterns and
methods. In the first place, it does away with the necessity for human data entry, which saves
time and lowers the possibility of mistakes. Second, it offers real-time attendance
ALGORITHM
The Reed-Solomon algorithm is commonly used in the creation of QR codes, which are two-
dimensional barcodes that store various forms of data. This algorithm generates parity
symbols that are added to the data symbols to create a code word with redundancy, allowing
the QR code to be scanned even if some symbols are damaged or missing. To achieve this, the
algorithm divides the data into blocks of symbols and generates parity symbols for each
block using polynomial division. The number of parity symbols generated is determined by
the degree of the polynomial, with higher degrees providing better error correction at the
cost of a longer code word that may affect readability. The Reed-Solomon algorithm can
correct up to 30% of damaged or missing data symbols, making QR codes reliable in the
code generation as it ensures data redundancy, making them robust and capable of handling
errors.
2 Teacher Module
A web-based program called the Teacher's Module for QR Code-Based Attendance enables
teachers to create QR codes for each of their classrooms to simplify the process of taking
attendance. The module may be accessed from any device with an internet connection and is
The teacher's module of the QR code-based attendance system is designed to simplify the
attendance taking process. Teachers can easily generate QR codes for each of their classes,
which students can scan using their mobile devices to mark their attendance. This module
aims to save time and effort that would otherwise be spent on traditional attendance
teacher's module. Once logged in, the teacher can choose which class to take attendance for
and create a specific QR code just for that class. For students to scan, this QR code can be
Once the QR code is generated, the teacher can instruct students to scan the code using their
mobile devices. Students can use any QR code scanner app to scan the code, which will
redirect them to a web page where they can mark their attendance. The attendance data is
then automatically uploaded to the system's database for the teacher to view and analyse.
The teacher's module of the QR code-based attendance system is a simple and effective
ADD STUDENTS:-
3 Student Module
The student module for QR code based attendance system provides an efficient and reliable
way for students to mark their attendance in class. This module is designed to work
seamlessly with the teacher's module, which generates unique QR codes for each class.
Students can simply scan the QR code with their smartphones to mark their attendance in
the system.
When a student scans the QR code, the system records the student's attendance, along with
the time and date of the class. This data is then automatically saved and can be accessed by
To use the student module, students must first register with the system using their student
ID or other unique identifier. Once registered, students can access their class schedule and
The student module for QR code based attendance system provides a user-friendly and
efficient way for students to mark their attendance in class. By using this system, students
can avoid the hassle of traditional attendance-taking methods and ensure that their
4 Working
The admin module, teacher module, and student module are the standard components of a
The administrator configures the system and assigns teachers to specific classes in the admin
module. The administrator can check attendance reports for each class as well as access
attendance data. Usually, a web interface is used to access the admin module.
app, and students can scan the QR code to mark their attendance. The teacher can also view
attendance reports for each student and generate reports for the entire class.
In the student module, students can view their attendance records and mark their
attendance by scanning the QR code generated by the teacher. The student module is
The working of the system involves the teacher generating a unique QR code for each class
session. The QR code contains information about the class, such as the class code and the
date and time of the class. The students scan the QR code using their mobile devices, and the
IV. CONCLUSION
taking attendance. The system provides a simple way to track attendance, reducing the time
and effort required to complete attendance tasks manually. It also minimizes the potential
for errors and inaccuracies that can occur when taking attendance manually.
educational institutions, particularly in terms of cost savings. It eliminates the need for costly
attendance tracking equipment and software, as it can be easily implemented using mobile
The system provides an opportunity for students to take responsibility for their own
attendance, as they are required to scan their QR code to confirm their attendance. This helps
instil a sense of accountability among students and promotes a culture of punctuality and
attendance.
approach has many benefits, including improved efficiency, accuracy, and affordability.
While the system might have certain problems, especially with internet connectivity and
security, they can be avoided by taking the right steps. Overall, the QR code-based attendance
system is a promising innovation that could completely change how educational institutions
V. FUTURE SCOPE
The QR code-based attendance system has a bright future scope due to the following reasons:
Improved accuracy: The QR code-based attendance system eliminates the manual recording
of attendance and reduces the possibility of errors. It ensures that the attendance data is
accurate, which is crucial for academic institutions, government organizations, and private
firms.
attendance methods, such as paper-based or biometric systems. It reduces the time required
eliminates the need for paper-based systems and reduces the maintenance costs of biometric
systems.
Integration with other systems: The QR code-based attendance system can be integrated
with other systems such as student management systems, payroll systems, and human
attendance data and allows for easy tracking of the attendance of employees or students.
it reduces the possibility of fake attendance. The system can also be configured to generate a
unique QR code for each class or session, which ensures that the attendance data is accurate.
Customization: The QR code-based attendance system can be customized to meet the specific
needs of the organization. The system can be configured to generate reports, send
Bibliography
Referential Site:
https://www.w3schools.com/
https://www.tutorialspoint.com/
https://www.javatpoint.com/software-engineering/
https://www.geeksforgeeks.org
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>QR Code Attendance System</title>
<style>
@import
url('https://fonts.googleapis.com/css2?family=Poppins:wght@500&display=swap');
*{
margin: 0;
padding: 0;
font-family: 'Poppins', sans-serif;
}
body {
background: linear-gradient(to bottom, rgba(255,255,255,0.15) 0%, rgba(0,0,0,0.15)
100%), radial-gradient(at top center, rgba(255,255,255,0.40) 0%, rgba(0,0,0,0.40) 120%)
#989898;
background-blend-mode: multiply,multiply;
background-attachment: fixed;
background-repeat: no-repeat;
background-size: cover;
}
.main {
display: flex;
justify-content: center;
align-items: center;
height: 91.5vh;
}
.attendance-container {
height: 90%;
width: 90%;
border-radius: 20px;
padding: 40px;
<div class="main">
<div class="attendance-list">
<h4>List of Present Students</h4>
<div class="table-container table-responsive">
<table class="table text-center table-sm" id="attendanceTable">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Course & Section</th>
<th scope="col">Time In</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<?php
include ('./conn/conn.php');
$result = $stmt->fetchAll();
<tr>
<th scope="row"><?= $attendanceID ?></th>
<td><?= $studentName ?></td>
<td><?= $studentCourse ?></td>
<td><?= $timeIn ?></td>
<td>
<div class="action-button">
<button class="btn btn-danger delete-button"
onclick="deleteAttendance(<?= $attendanceID ?>)">X</button>
</div>
</td>
<?php
}
?>
</tbody>
</table>
</div>
</div>
</div>
</div>
<script>
let scanner;
function startScanner() {
scanner = new Instascan.Scanner({ video: document.getElementById('interactive') });
Instascan.Camera.getCameras()
.then(function (cameras) {
if (cameras.length > 0) {
scanner.start(cameras[0]);
} else {
console.error('No cameras found.');
alert('No cameras found.');
}
})
.catch(function (err) {
console.error('Camera access error:', err);
alert('Camera access error: ' + err);
document.addEventListener('DOMContentLoaded', startScanner);
function deleteAttendance(id) {
if (confirm("Do you want to remove this attendance?")) {
window.location = "./endpoint/delete-attendance.php?attendance=" + id;
}
}
</script>
</body>
</html>
--
-- Database: `qr_attendance_db`
--
-- --------------------------------------------------------
--
-- Table structure for table `tbl_attendance`
--
--
-- Dumping data for table `tbl_attendance`
--
-- --------------------------------------------------------
--
-- Dumping data for table `tbl_student`
--
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tbl_attendance`
--
ALTER TABLE `tbl_attendance`
ADD PRIMARY KEY (`tbl_attendance_id`);
--
-- Indexes for table `tbl_student`
--
ALTER TABLE `tbl_student`
ADD PRIMARY KEY (`tbl_student_id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `tbl_attendance`
--
ALTER TABLE `tbl_attendance`
MODIFY `tbl_attendance_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT for table `tbl_student`
--
ALTER TABLE `tbl_student`
MODIFY `tbl_student_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
COMMIT;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>QR Code Attendance System</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@500&display=swap');
*{
margin: 0;
padding: 0;
font-family: 'Poppins', sans-serif;
}
body {
background: linear-gradient(to bottom, rgba(255,255,255,0.15) 0%, rgba(0,0,0,0.15) 100%), radial-
gradient(at top center, rgba(255,255,255,0.40) 0%, rgba(0,0,0,0.40) 120%) #989898;
background-blend-mode: multiply,multiply;
background-attachment: fixed;
background-repeat: no-repeat;
background-size: cover;
}
.main {
display: flex;
justify-content: center;
align-items: center;
height: 91.5vh;
}
.student-container {
height: 90%;
width: 90%;
border-radius: 20px;
padding: 40px;
.title {
display: flex;
justify-content: space-between;
align-items: center;
}
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead >
tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr >
th.sorting_desc_disabled, table.dataTable thead > tr > td.sorting, table.dataTable thead > tr > td.sorting_asc,
table.dataTable thead > tr > td.sorting_desc, table.dataTable thead > tr > td.sorting_asc_disabled,
table.dataTable thead > tr > td.sorting_desc_disabled {
text-align: center;
}
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand ml-4" href="#">QR Code Attendance System</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-
target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-
label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="main">
<div class="student-container">
<?php
include ('./conn/conn.php');
$result = $stmt->fetchAll();
<tr>
<th scope="row" id="studentID-<?= $studentID ?>"><?= $studentID ?></th>
<td id="studentName-<?= $studentID ?>"><?= $studentName ?></td>
<td id="studentCourse-<?= $studentID ?>"><?= $studentCourse ?></td>
<td>
<div class="action-button">
<button class="btn btn-success btn-sm" data-toggle="modal" data-
target="#qrCodeModal<?= $studentID ?>"><img src="https://cdn-icons-
png.flaticon.com/512/1341/1341632.png" alt="" width="16"></button>
<?php
}
?>
</tbody>
</table>
</div>
</div>
</div>
</div>
<script>
$(document).ready( function () {
$('#studentTable').DataTable();
});
function updateStudent(id) {
$("#updateStudentModal").modal("show");
$("#updateStudentId").val(updateStudentId);
$("#updateStudentName").val(updateStudentName);
$("#updateStudentCourse").val(updateStudentCourse);
}
function deleteStudent(id) {
if (confirm("Do you want to delete this student?")) {
window.location = "./endpoint/delete-student.php?student=" + id;
}
}
function generateRandomCode(length) {
const characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
let randomString = '';
return randomString;
}
function generateQrCode() {
const qrImg = document.getElementById('qrImg');
qrImg.src = apiUrl;
document.getElementById('studentName').style.pointerEvents = 'none';
</body>
</html>
conn/conn.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "qr_attendance_db";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
<?php
include("../conn/conn.php");
if ($selectStmt->execute()) {
$result = $selectStmt->fetch();
if ($result !== false) {
$studentID = $result["tbl_student_id"];
$timeIn = date("Y-m-d H:i:s");
} else {
echo "No student found in QR Code";
}
} else {
echo "Failed to execute the statement.";
}
try {
$stmt = $conn->prepare("INSERT INTO tbl_attendance (tbl_student_id, time_in) VALUES
(:tbl_student_id, :time_in)");
$stmt->execute();
header("Location: http://localhost/qr-code-attendance-system/index.php");
exit();
} catch (PDOException $e) {
echo "Error:" . $e->getMessage();
}
} else {
echo "
<script>
alert('Please fill in all fields!');
window.location.href = 'http://localhost/qr-code-attendance-system/index.php';
</script>
";
}
}
?>
<?php
include ('../conn/conn.php');
if (isset($_GET['attendance'])) {
$attendance = $_GET['attendance'];
try {
$stmt = $conn->prepare($query);
$query_execute = $stmt->execute();
if ($query_execute) {
echo "
<script>
alert('Attendance deleted successfully!');
window.location.href = 'http://localhost/qr-code-attendance-system/index.php';
</script>
";
} else {
echo "
<script>
alert('Failed to delete attendance!');
window.location.href = 'http://localhost/qr-code-attendance-system/index.php';
</script>
";
}
?>
<?php
include ('../conn/conn.php');
if (isset($_GET['student'])) {
$student = $_GET['student'];
try {
$stmt = $conn->prepare($query);
$query_execute = $stmt->execute();
if ($query_execute) {
echo "
<script>
alert('Student deleted successfully!');
window.location.href = 'http://localhost/qr-code-attendance-system/masterlist.php';
</script>
";
} else {
echo "
<script>
alert('Failed to delete student!');
window.location.href = 'http://localhost/qr-code-attendance-system/masterlist.php';
</script>
";
}
?>
<?php
include("../conn/conn.php");
try {
$stmt = $conn->prepare("UPDATE tbl_student SET student_name = :student_name, course_section =
:course_section WHERE tbl_student_id = :tbl_student_id");
$stmt->execute();
header("Location: http://localhost/qr-code-attendance-system/masterlist.php");
exit();
} catch (PDOException $e) {
echo "Error:" . $e->getMessage();
}
} else {
echo "
<script>
alert('Please fill in all fields!');
window.location.href = 'http://localhost/qr-code-attendance-system/masterlist.php';
</script>
";
}
}
?>