COMPUTER SCIENCE INVESTIGATORY PROJECT (2026-
2027)
CLASS:- XII-A
PROJECT TITLE :- PATIENT MANAGEMENT SYSTEM
PREPARED BY :- xxxxxxxxxxxx,
Yyyyyyyyyyyyy,
zzzzzzzzzzz
All India Senior Secondary Certificate
Examination [AISSCE]
BONAFIDE CERTIFICATE
Certified to be the bonafide record of project work done by
___________________________ at HINDU GLOBAL SCHOOL,
Mamarathupalayam, Erode – 638004, during the year 2026 – 2027, in partial
fulfilment of the study of Class XII AISSCE Examination in
________________ under our guidance.
PRINCIPAL
Internal Examiner External Examiner
CERTIFICATE BY GUIDE
This is to certify that _________________________ of class XII, 2026-
2027 Batch of HINDU GLOBAL SCHOOL, Mamarathupalayam, Erode –
638004 has completed this project file under my guidance. The student has
shown great interest and commitment in shaping up and completing the
project.
I certify that this project is up to our expectations and as per the
guidelines issued by Central Board of Secondary Education.
Name of the Teacher : _____________________________
Department : _____________________________
[Signature]
DECLARATION
I ..................................................................... Student of Class XII of HINDU
GLOBAL SCHOOL, Mamarathupalayam, Erode – 638004 hereby declare
that this project work was done by me for the partial fulfilment of the study of
class XII Project Assessment AISSCE 2026-2027 in
.....................................................
Name of the student :
Roll No :
[Signature] :
ACKNOWLEDGEMENT
I would like to convey my sincere thanks to
________________________________, in-charge of the department of
____________________________in Hindu Global School, for her immense
help and guidance throughout the project.
I would also like to convey our thanks to our Principal
Mrs. _____________________ and our School Management for providing
necessary materials.
I would like to extend our gratitude to everyone who helped me complete
this project.
Name of the Student : ________________________________
Roll No. : ________________________________
TABLE OF CONTENTS
SL. No. DESCRIPTION
01 INTRODUCTION
02 SOURCE CODE
03 OUTPUT
04 HARDWARE AND SOFTWARE REQUIREMENTS
05 BIBLIOGRAPHY
06 TEACHER’S OBSERVATION
INTRODUCTION
Python:-
Python is a general-purpose, high-level, interpreted, interactive and object-oriented
scripting language. Python is designed to be highly readable. It has fewer syntactical
constructions than other languages.
Characteristics of Python
Following are important characteristics of Python Programming −
It supports functional and structured programming methods as well as OOP.
It can be used as a scripting language or can be compiled to byte-code for building
large applications.
It provides very high-level dynamic data types and supports dynamic type
checking.
It supports automatic garbage collection.
It can be easily integrated with C, C++, COM, ActiveX, CORBA, and Java.
Applications of Python
As mentioned before, Python is one of the most widely used language over the web. I'm
going to list few of them here:
Easy-to-learn − Python has few keywords, simple structure, and a clearly defined
syntax. This allows the student to pick up the language quickly.
Easy-to-read − Python code is more clearly defined and visible to the eyes.
Easy-to-maintain − Python's source code is fairly easy-to-maintain.
A broad standard library − Python's bulk of the library is very portable and
cross-platform compatible on UNIX, Windows, and Macintosh.
Interactive Mode − Python has support for an interactive mode which allows
interactive testing and debugging of snippets of code.
Portable − Python can run on a wide variety of hardware platforms and has the
same interface on all platforms.
Extendable − You can add low-level modules to the Python interpreter. These
modules enable programmers to add to or customize their tools to be more
efficient.
Databases − Python provides interfaces to all major commercial databases.
GUI Programming − Python supports GUI applications that can be created and
ported to many system calls, libraries and windows systems, such as Windows
MFC, Macintosh, and the X Window system of Unix.
Scalable − Python provides a better structure and support for large programs than
shell scripting.
It contains so many modules as well as libraries like
1. Python Satndard Library which contains modules like Math, Cmath, Random,
URLlib ,
2. Numpy,
3. SciPyplot,
4. Tkinter
5. Matplotlib.
As well as various data structures like list, queue, stack.
Mysql:
Databse is defined as collection of interrelated data stored together to serve multiple
applications. And MySQL is the most popular Open Source Relational SQL Database
Management System. MySQL is one of the best RDBMS being used for developing
various web-based software applications.
We use SQL in mysql in order to access data, manipulate data. SQL stands
for Structured Query Language SQL is a database computer language designed for the
retrieval and management of data in a relational database. And has clearly established
itself as a standard relational database language.
SQL is divided into Data Definition Language (DDL), Data Manipulation
Language(DML), Transaction Control Language(TCL).
“SOURCE CODE ”
import tkinter
import [Link]
import [Link]
import sqlite3
import [Link]
class Database:
def __init__(self):
[Link] = [Link]("[Link]")
[Link] = [Link]()
[Link]("CREATE TABLE IF NOT EXISTS patient_info (id
PRIMARYKEY text, fName text, lName text, dob text, mob text, yob text, gender text,
address text, phone text, email text, bloodGroup text, history text, doctor text)")
def __del__(self):
[Link]()
[Link]()
def Insert(self, id, fName, lName, dob, mob, yob, gender, address, phone, email,
bloodGroup, history, doctor):
[Link]("INSERT INTO patient_info VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?)", (id, fName, lName, dob, mob, yob, gender, address, phone, email, bloodGroup,
history, doctor))
[Link]()
def Update(self, fName, lName, dob, mob, yob, gender, address, phone, email,
bloodGroup, history, doctor, id):
[Link]("UPDATE patient_info SET fName = ?, lName = ?, dob = ?, mob
= ?, yob = ?, gender = ?, address = ?, phone = ?, email = ?, bloodGroup = ?, history = ?,
doctor = ? WHERE id = ?", (fName, lName, dob, mob, yob, gender, address, phone,
email, bloodGroup, history, doctor, id))
[Link]()
def Search(self, id):
[Link]("SELECT * FROM patient_info WHERE id = ?", (id, ))
searchResults = [Link]()
return searchResults
def Delete(self, id):
[Link]("DELETE FROM patient_info WHERE id = ?", (id, ))
[Link]()
def Display(self):
[Link]("SELECT * FROM patient_info")
records = [Link]()
return records
class Values:
def Validate(self, id, fName, lName, phone, email, history, doctor):
if not ([Link]() and (len(id) == 3)):
return "id"
elif not ([Link]()):
return "fName"
elif not ([Link]()):
return "lName"
elif not ([Link]() and (len(phone) == 10)):
return "phone"
elif not ([Link]("@") == 1 and [Link](".") > 0):
return "email"
elif not ([Link]()):
return "history"
elif not ([Link]()):
return "doctor"
else:
return "SUCCESS"
class InsertWindow:
def __init__(self):
[Link] = [Link]()
[Link].wm_title("Insert data")
# Initializing all the variables
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = ["Male", "Female", "Transgender", "Other"]
[Link] = list(range(1, 32))
[Link] = ["January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"]
[Link] = list(range(1900, 2020))
[Link] = ["A+", "A-", "B+", "B-", "O+", "O-", "AB+", "AB-"]
# Labels
[Link]([Link], text = "Patient ID", width = 25).grid(pady = 5, column = 1,
row = 1)
[Link]([Link], text = "First Name", width = 25).grid(pady = 5, column = 1,
row = 2)
[Link]([Link], text = "Last Name", width = 25).grid(pady = 5, column = 1,
row = 3)
[Link]([Link], text = "D.O.B", width = 25).grid(pady = 5, column = 1, row =
4)
[Link]([Link], text = "M.O.B", width = 25).grid(pady = 5, column = 1, row
= 5)
[Link]([Link], text = "Y.O.B", width = 25).grid(pady = 5, column = 1, row =
6)
[Link]([Link], text = "Gender", width = 25).grid(pady = 5, column = 1, row
= 7)
[Link]([Link], text = "Home Address", width = 25).grid(pady = 5, column =
1, row = 8)
[Link]([Link], text = "Phone Number", width = 25).grid(pady = 5, column =
1, row = 9)
[Link]([Link], text = "Email ID", width = 25).grid(pady = 5, column = 1,
row = 10)
[Link]([Link], text = "Blood Group", width = 25).grid(pady = 5, column = 1,
row = 11)
[Link]([Link], text = "Patient History", width = 25).grid(pady = 5, column =
1, row = 12)
[Link]([Link], text = "Doctor", width = 25).grid(pady = 5, column = 1, row
= 13)
# Fields
# Entry widgets
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link](pady = 5, column = 3, row = 1)
[Link](pady = 5, column = 3, row = 2)
[Link](pady = 5, column = 3, row = 3)
[Link](pady = 5, column = 3, row = 8)
[Link](pady = 5, column = 3, row = 9)
[Link](pady = 5, column = 3, row = 10)
[Link](pady = 5, column = 3, row = 12)
[Link](pady = 5, column = 3, row = 13)
# Combobox widgets
[Link] = [Link]([Link], values = [Link], width = 20)
[Link] = [Link]([Link], values = [Link], width = 20)
[Link] = [Link]([Link], values = [Link], width = 20)
[Link] = [Link]([Link], values = [Link], width =
20)
[Link] = [Link]([Link], values = [Link],
width = 20)
[Link](pady = 5, column = 3, row = 4)
[Link](pady = 5, column = 3, row = 5)
[Link](pady = 5, column = 3, row = 6)
[Link](pady = 5, column = 3, row = 7)
[Link](pady = 5, column = 3, row = 11)
# Button widgets
[Link]([Link], width = 20, text = "Insert", command = [Link]).grid(pady
= 15, padx = 5, column = 1, row = 14)
[Link]([Link], width = 20, text = "Reset", command = [Link]).grid(pady
= 15, padx = 5, column = 2, row = 14)
[Link]([Link], width = 20, text = "Close", command =
[Link]).grid(pady = 15, padx = 5, column = 3, row = 14)
[Link]()
def Insert(self):
[Link] = Values()
[Link] = Database()
[Link] = [Link]([Link](), [Link](),
[Link](), [Link](), [Link](),
[Link](), [Link]())
if ([Link] == "SUCCESS"):
[Link]([Link](), [Link](), [Link](),
[Link](), [Link](), [Link](), [Link](),
[Link](), [Link](), [Link](),
[Link](), [Link](), [Link]())
[Link]("Inserted data", "Successfully inserted the above data in the
database")
else:
[Link] = "Invalid input in field " + [Link]
[Link]("Value Error", [Link])
def Reset(self):
[Link](0, [Link])
[Link](0, [Link])
[Link](0, [Link])
[Link]("")
[Link]("")
[Link]("")
[Link]("")
[Link](0, [Link])
[Link](0, [Link])
[Link](0, [Link])
[Link]("")
[Link](0, [Link])
[Link](0, [Link])
class UpdateWindow:
def __init__(self, id):
[Link] = [Link]()
[Link].wm_title("Update data")
# Initializing all the variables
[Link] = id
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = ["Male", "Female", "Transgender", "Other"]
[Link] = list(range(1, 32))
[Link] = ["January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"]
[Link] = list(range(1900, 2020))
[Link] = ["A+", "A-", "B+", "B-", "O+", "O-", "AB+", "AB-"]
# Labels
[Link]([Link], text = "Patient ID", width = 25).grid(pady = 5, column = 1,
row = 1)
[Link]([Link], text = id, width = 25).grid(pady = 5, column = 3, row = 1)
[Link]([Link], text = "First Name", width = 25).grid(pady = 5, column = 1,
row = 2)
[Link]([Link], text = "Last Name", width = 25).grid(pady = 5, column = 1,
row = 3)
[Link]([Link], text = "D.O.B", width = 25).grid(pady = 5, column = 1, row =
4)
[Link]([Link], text = "M.O.B", width = 25).grid(pady = 5, column = 1, row
= 5)
[Link]([Link], text = "Y.O.B", width = 25).grid(pady = 5, column = 1, row =
6)
[Link]([Link], text = "Gender", width = 25).grid(pady = 5, column = 1, row
= 7)
[Link]([Link], text = "Home Address", width = 25).grid(pady = 5, column =
1, row = 8)
[Link]([Link], text = "Phone Number", width = 25).grid(pady = 5, column =
1, row = 9)
[Link]([Link], text = "Email ID", width = 25).grid(pady = 5, column = 1,
row = 10)
[Link]([Link], text = "Blood Group", width = 25).grid(pady = 5, column = 1,
row = 11)
[Link]([Link], text = "Patient History", width = 25).grid(pady = 5, column =
1, row = 12)
[Link]([Link], text = "Doctor", width = 25).grid(pady = 5, column = 1, row
= 13)
# Set previous values
[Link] = Database()
[Link] = [Link](id)
[Link]([Link], text = [Link][0][1], width = 25).grid(pady = 5,
column = 2, row = 2)
[Link]([Link], text = [Link][0][2], width = 25).grid(pady = 5,
column = 2, row = 3)
[Link]([Link], text = [Link][0][3], width = 25).grid(pady = 5,
column = 2, row = 4)
[Link]([Link], text = [Link][0][4], width = 25).grid(pady = 5,
column = 2, row = 5)
[Link]([Link], text = [Link][0][5], width = 25).grid(pady = 5,
column = 2, row = 6)
[Link]([Link], text = [Link][0][6], width = 25).grid(pady = 5,
column = 2, row = 7)
[Link]([Link], text = [Link][0][7], width = 25).grid(pady = 5,
column = 2, row = 8)
[Link]([Link], text = [Link][0][8], width = 25).grid(pady = 5,
column = 2, row = 9)
[Link]([Link], text = [Link][0][9], width = 25).grid(pady = 5,
column = 2, row = 10)
[Link]([Link], text = [Link][0][10], width = 25).grid(pady = 5,
column = 2, row = 11)
[Link]([Link], text = [Link][0][11], width = 25).grid(pady = 5,
column = 2, row = 12)
[Link]([Link], text = [Link][0][12], width = 25).grid(pady = 5,
column = 2, row = 13)
# Fields
# Entry widgets
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link] = [Link]([Link], width = 25, textvariable = [Link])
[Link](pady = 5, column = 3, row = 2)
[Link](pady = 5, column = 3, row = 3)
[Link](pady = 5, column = 3, row = 8)
[Link](pady = 5, column = 3, row = 9)
[Link](pady = 5, column = 3, row = 10)
[Link](pady = 5, column = 3, row = 12)
[Link](pady = 5, column = 3, row = 13)
# Combobox widgets
[Link] = [Link]([Link], values = [Link], width = 20)
[Link] = [Link]([Link], values = [Link], width = 20)
[Link] = [Link]([Link], values = [Link], width = 20)
[Link] = [Link]([Link], values = [Link], width =
20)
[Link] = [Link]([Link], values = [Link],
width = 20)
[Link](pady = 5, column = 3, row = 4)
[Link](pady = 5, column = 3, row = 5)
[Link](pady = 5, column = 3, row = 6)
[Link](pady = 5, column = 3, row = 7)
[Link](pady = 5, column = 3, row = 11)
# Button widgets
[Link]([Link], width = 20, text = "Update", command =
[Link]).grid(pady = 15, padx = 5, column = 1, row = 14)
[Link]([Link], width = 20, text = "Reset", command = [Link]).grid(pady
= 15, padx = 5, column = 2, row = 14)
[Link]([Link], width = 20, text = "Close", command =
[Link]).grid(pady = 15, padx = 5, column = 3, row = 14)
[Link]()
def Update(self):
[Link] = Database()
[Link]([Link](), [Link](), [Link](),
[Link](), [Link](), [Link](), [Link](),
[Link](), [Link](), [Link](),
[Link](), [Link](), [Link])
[Link]("Updated data", "Successfully updated the above data in
the database")
def Reset(self):
[Link](0, [Link])
[Link](0, [Link])
[Link]("")
[Link]("")
[Link]("")
[Link]("")
[Link](0, [Link])
[Link](0, [Link])
[Link](0, [Link])
[Link]("")
[Link](0, [Link])
[Link](0, [Link])
class DatabaseView:
def __init__(self, data):
[Link] = [Link]()
[Link].wm_title("Database View")
# Label widgets
[Link]([Link], text = "Database View Window", width =
25).grid(pady = 5, column = 1, row = 1)
[Link] = [Link]([Link])
[Link](pady = 5, column = 1, row = 2)
[Link]["show"] = "headings"
[Link]["columns"] = ("id", "fName", "lName", "dob", "mob", "yob",
"gender", "address", "phone", "email", "bloodGroup", "history", "doctor")
# Treeview column headings
[Link]("id", text = "ID")
[Link]("fName", text = "First Name")
[Link]("lName", text = "Last Name")
[Link]("dob", text = "D.O.B")
[Link]("mob", text = "M.O.B")
[Link]("yob", text = "Y.O.B")
[Link]("gender", text = "Gender")
[Link]("address", text = "Home Address")
[Link]("phone", text = "Phone Number")
[Link]("email", text = "Email ID")
[Link]("bloodGroup", text = "Blood Group")
[Link]("history", text = "History")
[Link]("doctor", text = "Doctor")
# Treeview columns
[Link]("id", width = 40)
[Link]("fName", width = 100)
[Link]("lName", width = 100)
[Link]("dob", width = 60)
[Link]("mob", width = 60)
[Link]("yob", width = 60)
[Link]("gender", width = 60)
[Link]("address", width = 200)
[Link]("phone", width = 100)
[Link]("email", width = 200)
[Link]("bloodGroup", width = 100)
[Link]("history", width = 100)
[Link]("doctor", width = 100)
for record in data:
[Link]('', 'end', values=(record))
[Link]()
class SearchDeleteWindow:
def __init__(self, task):
window = [Link]()
window.wm_title(task + " data")
# Initializing all the variables
[Link] = [Link]()
[Link] = [Link]()
[Link] = [Link]()
[Link] = "Please enter Patient ID to " + task
# Labels
[Link](window, text = [Link], width = 50).grid(pady = 20, row = 1)
[Link](window, text = "Patient ID", width = 10).grid(pady = 5, row = 2)
# Entry widgets
[Link] = [Link](window, width = 5, textvariable = [Link])
[Link](pady = 5, row = 3)
# Button widgets
if (task == "Search"):
[Link](window, width = 20, text = task, command = [Link]).grid(pady = 15,
padx = 5, column = 1, row = 14)
elif (task == "Delete"):
[Link](window, width = 20, text = task, command = [Link]).grid(pady = 15,
padx = 5, column = 1, row = 14)
def Search(self):
[Link] = Database()
[Link] = [Link]([Link]())
[Link] = DatabaseView([Link])
def Delete(self):
[Link] = Database()
[Link]([Link]())
class HomePage:
def __init__(self):
[Link] = [Link]()
[Link].wm_title("Patient Information System")
[Link]([Link], text = "Home Page", width = 100).grid(pady = 20,
column = 1, row = 1)
[Link]([Link], width = 20, text = "Insert", command =
[Link]).grid(pady = 15, column = 1, row = 2)
[Link]([Link], width = 20, text = "Update", command =
[Link]).grid(pady = 15, column = 1, row = 3)
[Link]([Link], width = 20, text = "Search", command =
[Link]).grid(pady = 15, column = 1, row = 4)
[Link]([Link], width = 20, text = "Delete", command =
[Link]).grid(pady = 15, column = 1, row = 5)
[Link]([Link], width = 20, text = "Display", command =
[Link]).grid(pady = 15, column = 1, row = 6)
[Link]([Link], width = 20, text = "Exit", command =
[Link]).grid(pady = 15, column = 1, row = 7)
[Link]()
def Insert(self):
[Link] = InsertWindow()
def Update(self):
[Link] = [Link]()
[Link].wm_title("Update data")
# Initializing all the variables
[Link] = [Link]()
# Label
[Link]([Link], text = "Enter the ID to update", width =
50).grid(pady = 20, row = 1)
# Entry widgets
[Link] = [Link]([Link], width = 5, textvariable = [Link])
[Link](pady = 10, row = 2)
# Button widgets
[Link]([Link], width = 20, text = "Update", command =
[Link]).grid(pady = 10, row = 3)
[Link]()
def updateID(self):
[Link] = UpdateWindow([Link]())
[Link]()
def Search(self):
[Link] = SearchDeleteWindow("Search")
def Delete(self):
[Link] = SearchDeleteWindow("Delete")
def Display(self):
[Link] = Database()
[Link] = [Link]()
[Link] = DatabaseView([Link])
homePage = HomePage()
“output for the home page”
“Output for the inserting info”
“Output for updating database”
“Output for search in database”
2
Output for delete data
Output for display data
HARDWARE AND SOFTWARE REQUIREMENTS
Hardware Requirements:
Intel Pentium Processor
4 GB RAM
160 GB Hard Disk
15.6” Led Monitor
Keyboard
Mouse
Software requirements:
OS - Windows 7 or above
Python 3.7
MySQL 5.1
BIBLIOGRAPHY
[Link]
2. REFERENCE BOOK – Think Python
The complete reference - MySQL
3. ONLINE TUTORIALS- [Link]
[Link]
[Link]
[Link] VISUAL REFERNCES- [Link]
[Link]
TEACHER’S OBSERVATION
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
Student Management System: Manage student records, including names, roll numbers, and
marks.
Gym Membership System: Manages member details, trainer assignments, and subscription
plans.
Resort Management: Handles room bookings or menu ordering, billing, and inventory tracking.
Booking & Information Systems
These focus on specific transactional logic and seat/availability management.
Bus Ticket Booking: Manages seat availability, bookings, and ticket cancellations.
Movie Ticket Booking System: Schedules shows across different screens and tracks seat
counts.
Vehicle Parking Booking System: Tracks parked vehicles, available slots, and calculates fees
based on duration.