A
Mini Project Report
Data Structures Laboratory
on
“Student Database Management System”
Submitted to
Department of Computer Engineering
Vidya Niketan College of Engineering, Bota
Submitted By
name Roll no
1. 342
2. 347
3. 348
Year: 2025-26 (Sem-I)
INDEX
Sr. No. Title of the Content Page No.
1 Certificate
2 Acknowledgement
3 Index
4 Abstract
5 Objective of the Project
6 Tools and Technologies Used
7 Problem Statement
8 System Design and Architecture
9 Data Structures Used
10 Algorithm and Flowcharts
11 Implementation (Code Snippets & Explanation)
12 Sample Input and Output
13 Testing and Validation
14 Conclusion
15 Future Enhancements
16 References
Department of Computer Engineering
Vidya Niketan College of Engineering, Bota
CERTIFICATE
This is to certify that the mini project entitled
“Student Database Management System” has
been successfully completed and
submitted by:
in partial fulfillment of the requirements for
the
Data Structures Laboratory, for the academic
year 2025–26 (Semester – I). The project work
has been carried out under the guidance of
Walke A B.
We hereby certify that this mini project is
original and has not been submitted elsewhere
for any academic purpose.
Guide:
Walke A B, Dept. of Computer Engineering
HOD:
Bhagwat O V, Dept. of Computer Engineering
Principal:
Dr. P A Phatangare
ACKNOWLEDGEMENT
We are deeply grateful to our guide, Walke A B, for
her invaluable guidance, suggestions and encouragement
throughout the course of our project work. Her support has been
instrumental in helping us develop this application on a topic
that combines data structures .
We also extend our sincere thanks to the staff and faculty of
VNCOE for providing the necessary resources, infrastructure
and an environment conducive to learning and implementation.
Special appreciation goes to our fellow team members -
(Team Member names) for their dedication,
collaboration and enthusiasm which turned our vision into
reality.
Finally, we acknowledge with gratitude our families and friends
for their patience, understanding and moral support throughout
this project.
Date:
Team: (Team Member names)
Abstract
In today’s information-driven era, efficient management of
student records is crucial for educational institutions. This
project presents a console-based Student Database Management
System developed using C++ that simulates core database
operations without relying on external relational systems.
Instead, it harnesses fundamental data structures such as arrays,
linked lists, binary search trees and hash tables to store, retrieve,
update and delete student records including name, roll number,
marks . Object-oriented programming principles—
encapsulation, inheritance and polymorphism—are applied to
modularize system functionalities and support multiple user
roles Admin, Teacher, Student with appropriate access controls.
Persistent storage is achieved through file handling
mechanisms, and efficient searching and sorting algorithms
hashing, binary search, quick sort ensure high performance
when managing large volumes of data. Security features include
role-based login, input validation and basic password hashing
to prevent unauthorized access. The resulting system offers an
efficient, reliable and scalable alternative to traditional manual
or database-driven student record systems. It demonstrates how
data structures and OOP concepts can be leveraged to build a
mini database system tailored for educational use, thereby
offering institutions a lightweight, self-contained solution for
student data management.
Project Objectives
1. To design and implement a modular student database
management system in C++ that can store, retrieve,
update, and delete student records including Name, Roll
Number, Marks, Course
2. To employ fundamental data structures arrays, linked lists,
binary search trees, hash tables in order to achieve efficient
data insertion, deletion, search and sorting operations.
3. To design a role-based access control mechanism so that
each user-type Admin, Teacher, Student gets appropriate
permissions ensuring data security and privacy.
4. To implement efficient searching hashing or binary search
and sorting quick sort algorithms in the system to ensure
fast and reliable performance with larger student datasets.
5. To validate input and incorporate basic password‐hashing
mechanisms to ensure unauthorized access is prevented
and the system remains secure.
Tools & Technologies Used
Programming Language: C++ — for implementing the core
application logic using object-oriented programming
classes, inheritance, polymorphism.
Data Structures & Algorithms: Arrays, Linked Lists, Hash
Tables, Sorting Algorithms (Quick Sort, Merge Sort),
Searching Techniques (Binary Search, Hashing).
File Handling: C++ file I/O for persistent storage of
student records in text files across program executions.
Documentation Tools: Use of document editors (e.g.,
Microsoft Word or Google Docs) for preparing project
report, index, abstract, acknowledgement and certificate.
Problem Statement
Many educational institutes still rely on manual or
basic systems to manage student records, which
often leads to data redundancy, slow lookup,
inconsistent updates and weak access control.
This project aims to develop a self-contained system
in C++ using data structures arrays, linked lists, BSTs,
hash tables and OOP principles to store, retrieve,
update and delete student records efficiently, while
providing role-based access Teacher, Student and
persistent storage via file handling — thus
overcoming the drawbacks of manual systems and
providing a fast, reliable, secure student database
solution.
System Design and architecture
Presentation Layer: The console interface where roles
Teacher / Student log in and select operations.
Logic / Business Layer: Modules like Authentication,
Record Management, Data Structure Handler, Sorting &
Searching Logic.
Data Layer: In-memory data structures arrays, linked lists,
BST, hash table + file persistence for data storage Data
Flow: User → Presentation → Logic → Data Storage →
Back.
Security & Roles: Role-based checks occur in Logic layer
before accessing Data layer.
Data Structure used:
Arrays - storing a collection of student records if you know
approximate size and fast direct access by index.
Linked Lists -Useful for dynamic addition and deletion of
student records without large shifts in memory.
Binary Search Tree -Ideal for organized search of records
Hash Table-Excellent for very fast search, insert and delete
operations locating a student by roll number or name.
Algorithm
Algorithm StudentDatabaseSystem
Begin
Loop
Display Menu:
1. Add Student Record
2. Display All Records
3. Search Student
4. Delete Student
5. Exit
Input choice
Switch(choice)
Case 1: // Add Student
Prompt Roll No, Name, Course, Marks
Open file “students.txt” in append mode
Write record: rollNo, name, course, marks
Close file
Print “Record added successfully”
Break
Case 2: // Display All
Open file “students.txt” in read mode
If file not found then
Print “No records found”
Else
While (read each line from file) do
Print line
End While
End If
Close file
Break
Case 3: // Search Student
Prompt roll number to search
Open file “students.txt” in read mode
If file not found then
Print “No records found”
Else
found ← false
While (read each line from file) do
Extract roll no from line
If roll no == input roll then
Print “Record found:” and the line
found ← true
Break loop
End If
End While
If found == false then
Print “Student not found”
End If
End If
Close file
Break
Case 4: // Delete Student
Prompt roll number to delete
Open “students.txt” in read mode
Open “temp.txt” in write mode
If read-file not found then
Print “No records found”
Else
deleted ← false
While (read each line from read-file) do
Extract roll no from the line
If roll no != input roll then
Write line to temp file
Else
deleted ← true
End If
End While
Close both files
Remove file “students.txt”
Rename “temp.txt” to “students.txt”
If deleted == true then
Print “Record deleted successfully”
Else
Print “Roll number not found”
End If
End If
Break Case 5:
Print “Exiting…”
Exit loop Default:
Print “Invalid choice! Please try again.”
End Switch
End Loop
End
#include <iostream> #include
<string>
using namespace std;
// Student node struct
Student {
int roll;
string name;
float marks;
Student* next;
};
// Hash table size
const int SIZE = 10;
// Hash table (array of linked lists)
Student* table[SIZE];
// Hash Function → O(1) int
hashFunction(int key) {
return key % SIZE;
}
// Insert record → O(1) average
void insertStudent() {
Student* s = new Student();
cout << "\nEnter Roll No: ";
cin >> s->roll;
cin.ignore(); cout <<
"Enter Name: ";
getline(cin, s->name);
cout << "Enter Marks: ";
cin >> s->marks;
s->next = NULL;
int index = hashFunction(s->roll);
// Insert at beginning s-
>next = table[index];
table[index] = s;
cout << "\n Student added successfully!\n";
}
// Search using hashing → O(1) average
void searchStudent() {
int roll;
cout << "\nEnter Roll No to Search: ";
cin >> roll;
int index = hashFunction(roll);
Student* temp = table[index];
while (temp != NULL) { if (temp->roll ==
roll) { cout << "\n Record Found:\n";
cout << "Roll: " << temp->roll << "\n";
cout << "Name: " << temp->name << "\n";
cout << "Marks: " << temp->marks << "\n";
return;
}
temp = temp->next;
}
cout << "\n Student not found!\n";
}
// Display all records void
displayAll() {
cout << "\n------ HASH TABLE ------\n";
for (int i = 0; i < SIZE; i++) {
cout << "Index " << i << ": ";
Student* temp = table[i];
if (temp == NULL) {
cout << "EMPTY\n";
continue;
}
while (temp != NULL) { cout << "[Roll:
" << temp->roll << ", Name: " << temp-
>name << ", Marks: " << temp->marks
<< "] -> "; temp = temp->next;
}
cout << "NULL\n";
}
}
// Delete record void
deleteStudent() {
int roll;
cout << "\nEnter Roll No to Delete: ";
cin >> roll;
int index = hashFunction(roll);
Student* temp = table[index];
Student* prev = NULL;
while (temp != NULL) { if
(temp->roll == roll) { if (prev
== NULL) { table[index] =
temp->next;
} else {
prev->next = temp->next;
}
delete temp;
cout << "\n Record Deleted!\n";
return;
}
prev = temp;
temp = temp->next;
}
cout << "\n Roll No not found!\n";
}
int main() { for (int i = 0; i
< SIZE; i++)
table[i] = NULL;
int choice;
do {
cout << "\n===== HASH TABLE MENU =====\n";
cout << "1. Insert Student\n"; cout << "2. Search
Student\n"; cout << "3. Display All\n"; cout <<
"4. Delete Student\n";
cout << "5. Exit\n";
cout << "Enter choice: ";
cin >> choice;
switch (choice) { case 1:
insertStudent(); break; case 2:
searchStudent(); break; case 3:
displayAll(); break; case 4:
deleteStudent(); break; case 5: cout <<
"\nExiting...\n"; break;
default: cout << "\nInvalid choice!\n";
}
} while (choice != 5);
return 0;
}
Sample Input
====== Student Database Management System ======
1. Add Student Record
2. Display All Records
3. Search Student
4. Delete Student
5. Exit
Enter your choice: 1
Enter Roll No: 101
Enter Name: John Doe
Enter Course: Computer Science
Enter Marks: 85.5
Student record added successfully!
====== Student Database Management System ======
1. Add Student Record
2. Display All Records
3. Search Student
4. Delete Student 5. Exit
Enter your choice: 1
Enter Roll No: 102
Enter Name: Jane Smith
Enter Course: Information Technology
Enter Marks: 90.0
Student record added successfully!
====== Student Database Management System ======
1. Add Student Record
2. Display All Records
3. Search Student
4. Delete Student
5. Exit
Enter your choice: 2
Sample Output
--- All Student Records ---
101,John Doe,Computer Science,85.5
102,Jane Smith,Information
Technology,90.0
====== Student Database
Management System ======
1. Add Student Record
2. Display All Records
3. Search Student
4. Delete Student
5. Exit
Enter your choice: 3
Enter Roll No to Search: 101
Record Found:
101,John Doe,Computer Science,85.5
====== Student Database
Management System ======
1. Add Student Record
2. Display All Records
3. Search Student
4. Delete Student 5. Exit
Enter your choice: 4
Enter Roll No to Delete: 102
Record deleted successfully!
====== Student Database
Management System ======
1. Add Student Record
2. Display All Records
3. Search Student
4. Delete Student 5. Exit
Enter your choice: 2
--- All Student Records ---
101,John Doe,Computer Science,85.5
====== Student Database
Management System ======
1. Add Student Record
2. Display All Records
3. Search Student
4. Delete Student
5. Exit
Enter your choice: 5
Exiting... Thank you!
Testing
• Execute the program with different operations
Add, Display, Search, Delete to check whether
each works correctly.
• Try valid inputs adding a student record and
invalid or edge inputs searching for a nonexistent
roll number, deleting from an empty list.
• Confirm the outputs match expectations record
appears after addition, “Student not found”
appears when appropriate).
Validation
• Ensure the system meets the requirements:
storing student data roll number, name, course,
marks searching by roll number, deleting records,
displaying records.
• Check that the system is fit for purpose: users
(Admin/Teacher/Student roles) get correct
access; the console-interface is intuitive; file
storage works so records persist.
Conclusion
This project has successfully developed
consolebased Student Database Management
System in C++ that uses core data structures
(arrays, linked lists, trees, hash tables). It meets
the objectives of record addition, retrieval,
deletion, display and persistent storage. The
system delivers a lightweight, reliable solution for
student record management.
Future Enhancement
Integrate a graphical user interface or
webbased front end to make the system
more user-friendly and accessible.
Enable mobile or cloud access, so data and
operations can be used remotely and on
multiple devices.
Add advanced search, sorting and filtering
capabilities
Employ machine-learning or predictive
analytics to identify at-risk students,
forecast outcomes, or personalise learning
paths
Refrences
Student Data Management in C++ —
GeeksforGeeks. GeeksforGeeks
C++ Program to Store Information of a
Student in a Structure” — Programiz.
Programiz
Student Database Management System in
C++(Project PDF) — Sathyabama
University. SIST Sathyabama
Student Management System Using C++ —
Scribd document. Scribd
Student-Management-System-with-Data-
Structures” — GitHub repository