DBMS_REPORT[1]
DBMS_REPORT[1]
6 May 2025
1
TABLE OF CONTENTS
1. INTRODUCTION_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ __ _ _ _ _ _3
2.1 Objective
2.2 Scope
6.1 Conclusion
2
1. INTRODUCTION
3
2. OBJECTIVES & SCOPE OF THE PROJECT
2.1 Objectives
• To develop a secure, user-friendly application to manage student data.
• To allow admins to add, edit, delete, and search student records.
• To maintain academic records like attendance and marks.
• To generate reports for individual students.
2.2 Scope
This system is ideal for use in schools, colleges, or coaching institutions. It can be enhanced
further by integrating modules for fee tracking, exam scheduling, and notifications:
• Manages student personal and academic records efficiently.
• Allows administrators to add, update, delete, and search student details.
• Maintains attendance records and academic performance (marks/grades).
• Can be used by schools, colleges, coaching centers, and training institutes.
• Provides secure login and access control for different user roles.
• Can be expanded into a web or mobile-based application in the future.
4
3. SOFTWARE REQUIREMENT SPECIFICATION
The Software Requirement Specification (SRS) defines all the technical and functional needs
of the Department and Course Management System. It describes what the system should do,
how it should perform, and the tools required to build and run the project. This ensures that
developers, users, and stakeholders have a clear understanding of the system.
5
4. TECHNICAL IMPLEMENTATION & CODING
Code:
import tkinter as tk
from tkinter import ttk, messagebox
import sqlite3
6
# === Functions ===
def add_student():
if roll_var.get() == "" or name_var.get() == "":
messagebox.showerror("Error", "Roll No and Name are required")
return
conn = sqlite3.connect("students.db")
cur = conn.cursor()
cur.execute("INSERT INTO students VALUES (?, ?, ?, ?, ?, ?, ?)", (
roll_var.get(), name_var.get(), email_var.get(), gender_var.get(),
contact_var.get(), dob_var.get(), address_text.get('1.0', tk.END)
))
conn.commit()
conn.close()
fetch_data()
clear_fields()
def fetch_data():
conn = sqlite3.connect("students.db")
cur = conn.cursor()
cur.execute("SELECT * FROM students")
rows = cur.fetchall()
student_table.delete(*student_table.get_children())
for row in rows:
student_table.insert('', tk.END, values=row)
conn.close()
def clear_fields():
roll_var.set("")
name_var.set("")
email_var.set("")
gender_var.set("")
contact_var.set("")
dob_var.set("")
address_text.delete("1.0", tk.END)
def update_student():
conn = sqlite3.connect("students.db")
cur = conn.cursor()
7
cur.execute("""
UPDATE students SET name=?, email=?, gender=?, contact=?, dob=?, address=?
WHERE roll=?
""", (
name_var.get(), email_var.get(), gender_var.get(), contact_var.get(),
dob_var.get(), address_text.get('1.0', tk.END), roll_var.get()
))
conn.commit()
conn.close()
fetch_data()
clear_fields()
def delete_student():
conn = sqlite3.connect("students.db")
cur = conn.cursor()
cur.execute("DELETE FROM students WHERE roll=?", (roll_var.get(),))
conn.commit()
conn.close()
fetch_data()
clear_fields()
def search_student():
conn = sqlite3.connect("students.db")
cur = conn.cursor()
cur.execute("SELECT * FROM students WHERE " + search_by.get() + " LIKE ?", ('%' +
search_txt.get() + '%',))
rows = cur.fetchall()
student_table.delete(*student_table.get_children())
for row in rows:
student_table.insert('', tk.END, values=row)
conn.close()
def get_cursor(event):
selected_row = student_table.focus()
content = student_table.item(selected_row)
row = content['values']
if row:
roll_var.set(row[0])
8
name_var.set(row[1])
email_var.set(row[2])
gender_var.set(row[3])
contact_var.set(row[4])
dob_var.set(row[5])
address_text.delete("1.0", tk.END)
address_text.insert(tk.END, row[6])
# Input Fields
tk.Label(manage_frame, text="Roll No", bg="lightblue").grid(row=0, column=0, pady=10, padx=10,
sticky="w")
tk.Entry(manage_frame, textvariable=roll_var).grid(row=0, column=1, pady=10, padx=10)
9
tk.Entry(manage_frame, textvariable=name_var).grid(row=1, column=1, pady=10, padx=10)
# Buttons
btn_frame = tk.Frame(manage_frame, bg="lightblue")
btn_frame.place(x=10, y=370, width=420)
10
# === Detail Frame ===
detail_frame = tk.Frame(root, bd=4, relief=tk.RIDGE, bg="lightgray")
detail_frame.place(x=490, y=100, width=480, height=480)
scroll_x.pack(side=tk.BOTTOM, fill=tk.X)
scroll_y.pack(side=tk.RIGHT, fill=tk.Y)
scroll_x.config(command=student_table.xview)
scroll_y.config(command=student_table.yview)
11
student_table['show'] = 'headings'
student_table.pack(fill=tk.BOTH, expand=True)
student_table.bind("<ButtonRelease-1>", get_cursor)
12
5. PROJECT SCREENSHOTS
Fig5.1
The right section displays student records in a table view and includes a search functionality
that enables filtering based on selected criteria, though it is currently empty awaiting data
input.
Fig5.2 ADD
13
5.3 UPDATED DETAILS
Fig5.3 Update
Fig5.4 Delete
14
6.CONCLUSION & FUTURE WORK
6.1 Conclusion
The Student Management System (SMS) project successfully demonstrates how automation
can simplify the management of student records in educational institutions. By replacing
traditional paper-based systems with a digital database-driven application, the system
improves accuracy, reduces redundancy, and enhances the speed of record management tasks.
Through the integration of a back-end database (MySQL) and a programming interface
(Python, Java, or PHP), the system allows administrators and faculty to perform essential
operations like adding, updating, and viewing student data, as well as maintaining attendance
and marks. The system is flexible, scalable, and can be extended to meet the growing needs of
any school or college.
The project also serves as a practical application of database management, CRUD operations,
and real-world programming skills. While the current version focuses on the core
functionalities, it lays the foundation for further improvements and real-time applications.
15