IP Synopsis Uddipan
IP Synopsis Uddipan
IP Synopsis Uddipan
I would also like to thank our Principal Father Benoy Joseph for his caring and
encouraging attitude towards us. I look forward to receive valuable suggestions from
peers, teachers and viewers too.
Thank You
This is to certify that Uddipan Kashyap bearing the Roll No.: __________________
is a student of Class XII - Science. He has successfully completed his Informatics Prac-
tices project titled Library Management System as per the guidelines of Central Board
of Secondary Education for the academic year 2023-2024.
It is further certified that this project is the individual and bonafide work of the candi-
date.
2. No Manual Work:
There is no manual work. All the processes are done through computer.
3. Record of users:
There is record of all the users who got registered.
6. User-friendly Software:
The software is be menu-driven and is very easy to use.
7. Flexibility:
The system is more flexible than the manual system being used presently.
8. Beneficial:
The system is easy to use and reduces the users workload a lot. It provides
timely and accurate information and there is automatic generation of reports.
FEASIBILITY STUDY
During the course of completion of this project work, the complete analysis
of prposed system was done. In the analysis task, a complete care about the
feasibility of the proposed system was taken. The following feasibility anal-
yses were carried out during the course of this project work on call manage-
ment system for customer care:
1. Economical feasibility
2. Technical feasibility
3. Operational feasibility Economical Feasibility:-
Economic analysis is the most frequently used method for evaluating the ef-
fectiveness of a candidate system. The proposed system is economically fea-
sible because the benefits and the savings that are expected from a candidate
system outweigh the cost incurred. In this case we are getting the intan- gible
benefits in terms of low cost of maintenance of data, less redundancy and
getting the quick results.
Technical Feasibility:-
The existing Hardware and Software facilities support the proposed system.
Computer
and storage media are available and software can be developed.
Hardware configuration:
Software configuration:-
*to contind...
Operational Feasibility:-
As in the case of present system the entire work is being done manually.
So the data being scattered, information retrieval becomes difficult and
maintaining database is also very tedious. In case of proposed system,
entire work will be done automatically. So the above details regarding
the feasibility study show that the design of the pro- posed system is
very effective.
INTRODUCTION
ABOUT THE PROJECT:
In an era dominated by technological advancements, the Library Management System (LMS) proj-
ect emerges as a pivotal initiative to redefine and enhance the functionalities of our library. This
project seeks to address the evolving needs of library management by introducing a comprehen-
sive and efficient system that seamlessly integrates with contemporary practices.
Key Highlights:
2. Member-Centric Services:
One of the primary goals of the project is to enhance member interaction through simplified regis-
tration processes and personalized member profiles. This approach ensures that library services are
tailored to meet the unique needs of individual members.
3. Accurate Record-Keeping:
The implementation of a robust database forms the backbone of the LMS project, providing a cen-
tralized repository for maintaining real-time records of books, members, and transactions. This
commitment to accuracy ensures a reliable foundation for efficient library management.
5. Data-Driven Decision-Making:
The LMS project incorporates reporting and analytics tools to offer valuable insights into library us-
age and resource popularity. These insights empower librarians with data-driven decision-making
capabilities, allowing for the optimization of library resources.
In essence, the Library Management System project is not merely a technological upgrade but a
strategic initiative to align our library services with the contemporary expectations of our users.
Through this project, we aspire to create an environment that seamlessly integrates technology,
efficiency, and a member-centric approach to elevate the overall library experience.
SOURCE CODE:
This code initializes a Tkinter window for a “Claret BookVault” application, connects
to a MySQL database, sets the window theme, and updates the window state, pos-
sibly maximizing it after a short delay.
(main.py)
self.style = ThemedStyle(self.root)
self.style.set_theme(“adapta”)
self.conn = mysql.connector.connect(host=”localhost”, username=”root”,
password=”root”, database=”library”)
self.cursor = self.conn.cursor()
self.update_final_price()
self.root.update_idletasks()
self.root.state(‘normal’)
self.root.update_idletasks()
delay = 0.1
time.sleep(delay)
self.root.state(‘zoomed’)
This code defines a method `add_data` within a class, which inserts member data
into a MySQL database table named “library.” It validates input fields, establishes
a database connection, constructs an SQL query for insertion, executes the query,
and handles potential errors, displaying appropriate messages using the `message-
box` module. The method also calls `fetch_data` to update displayed data after a
successful insertion. The error handling covers various MySQL error codes, provid-
ing specific messages for each case.
(main.py)
def add_data(self):
if not self.validate_fields():
return
try:
conn = mysql.connector.connect(host=”localhost”, username=”root”, password=”root”, database=”li-
brary”)
my_cursor = conn.cursor()
my_cursor.execute(insert_query, data)
conn.commit()
conn.close()
print(error_msg)
messagebox.showerror(“Error!!”, error_msg)
This code defines a method `fetch_data` within a class, which retrieves all records
from a MySQL database table named “library.” It establishes a database connec-
tion, executes a SELECT query, fetches the resulting rows, and populates a Tkinter
Treeview widget (likely named `self.library_table`) with the retrieved data. The meth-
od then commits the changes and closes the database connection. The purpose is
to display the library data in a graphical interface, presumably for user interaction
or management.
(main.py)
def fetch_data(self):
conn = mysql.connector.connect(host=”localhost”, username=”root”,
password=”root”, database=”library”)
my_cursor = conn.cursor()
my_cursor.execute(“SELECT * FROM LIBRARY”)
rows=my_cursor.fetchall()
if len(rows)!=0:
self.library_table.delete(*self.library_table.get_children())
for i in rows:
self.library_table.insert(“”,END,values=i)
conn.commit()
conn.close()
This method updates the “Final Price” in the “library” table by incrementing it by Rs.
50 for records where the “Book Returned” field is ‘NO’ and the “Date Due” is earli-
er than the current date. In other words, it adds Rs. 50 for records where the book
hasn’t been returned after the due date.
(main.py)
def update_final_price(self):
today = datetime.date.today()
(main.py)
(main.py)
def reset(self):
self.member_var.set(“”),
self.prn_var.set(“”),
self.id_var.set(“”),
self.firstname_var.set(“”),
self.lastname_var.set(“”),
self.address1_var.set(“”),
self.address2_var.set(“”),
self.postcode_var.set(“”),
self.mobile_var.set(“”),
self.bookid_var.set(“”),
self.booktitle_var.set(“”),
self.author_var.set(“”),
self.dateborrowed_var.set(“”),
self.datedue_var.set(“”),
self.daysonbook.set(“”),
self.lateratefine_var.set(“”),
self.bookreturned.set(“”),
self.finalprice.set(“”)
self.txtBox.delete(“1.0”, END)
This method displays a confirmation message box asking if the user is sure they
want to exit the “Claret BookVault” application. If the user clicks “Yes,” the method
closes the Tkinter window (`self.root`) and terminates the application.
(main.py)
def iExit(self):
iExit=tkinter.messagebox.askyesno(“Claret BookVault”,”Are you sure you
want to exit?”)
if iExit>0:
self.root.destroy()
return
This method updates member details in a MySQL database table named “library.” It
validates input fields, connects to the database, executes an SQL UPDATE query, and
handles errors. The success message is displayed, and displayed data is updated.
(main.py)
def update(self):
if not self.validate_fields():
return
try:
conn = mysql.connector.connect(host=”localhost”, username=”root”, password=”root”, database=”library”)
my_cursor = conn.cursor()
sql = “””
UPDATE library
SET `Member Type` = %s, ID = %s, `First Name` = %s, `Last Name` = %s, Address1 = %s, `Address 2` = %s, Post_ID = %s,
Mobile = %s, Book_ID = %s, `Book Title` = %s, Author = %s, `Date Borrowed` = %s, `Date Due` = %s,
`Days on Book` = %s, `Late Return Fine` = %s, `Book Returned` = %s, `Final Price` = %s
WHERE PRN_NO = %s
“””
values = (
self.member_var.get(),
self.id_var.get(),
self.firstname_var.get(),
self.lastname_var.get(),
self.address1_var.get(),
self.address2_var.get(),
self.postcode_var.get(),
self.mobile_var.get(),
self.bookid_var.get(),
self.booktitle_var.get(),
self.author_var.get(),
self.dateborrowed_var.get(),
self.datedue_var.get(),
self.daysonbook.get(),
self.lateratefine_var.get(),
self.bookreturned.get(),
self.finalprice.get(),
self.prn_var.get()
)
my_cursor.execute(sql, values)
conn.commit()
conn.close()
print(error_msg)
messagebox.showerror(“Error!!”, error_msg)
This method deletes a member from a MySQL database table named “library.” It
checks if required fields (PRN and ID) are filled, shows an error message if not, and
prompts for confirmation before deletion. If confirmed, it connects to the database,
executes a DELETE query, commits changes, displays a success message, updates
displayed data, and resets input fields.
(main.py)
def delete(self):
if self.prn_var.get() == “” or self.id_var.get() == “”:
messagebox.showerror(“Error”, “Please select a member!!”)
else:
confirmation = messagebox.askyesno(“Confirmation”, “Are you sure you want
to delete this member?”)
if confirmation:
conn = mysql.connector.connect(host=”localhost”, username=”root”, pass-
word=”root”, database=”library”)
my_cursor = conn.cursor()
query = “DELETE FROM library WHERE PRN_NO=%s”
value = (self.prn_var.get(), )
my_cursor.execute(query, value)
conn.commit()
conn.close()
messagebox.showinfo(“Success!!”, “Member has been deleted!”)
self.fetch_data()
self.reset()
This method handles the return of a book for a selected member in a Tkinter Treeview
(`self.library_table`). It checks if a member is selected, retrieves relevant values, and
updates the “Book Returned” status in a MySQL database table named “library.” It
then fetches updated data, displays a success message, or informs the user if the
book has already been returned or if no member is selected.
(main.py)
def book_returned(self):
selected_item = self.library_table.focus()
if selected_item:
values = self.library_table.item(selected_item)[‘values’]
prn_no = values[1]
book_returned = values[16]
if book_returned == “NO”:
conn = mysql.connector.connect(host=”localhost”, username=”root”, pass-
word=”root”, database=”library”)
cursor = conn.cursor()
conn.close()
self.fetch_data()
messagebox.showinfo(“Success!!”, “Book returned successfully!”)
else:
messagebox.showinfo(“Information”, “Book already returned!”)
else:
messagebox.showinfo(“Information”, “Please select a member!”)
This function validates entered credentials against predefined correct values for a
username and password. If the entered username and password match the correct
ones, it returns `True`; otherwise, it returns `False`. In this example, the correct user-
name and password are “claret24”.
(LoginPage.py)
(library.sql)
Login Page:
Add Data:
For successfully completing my project, I have taken help from the following
wesites links/ books:
• www.geeksforgeeks.org
• www.pypi.org
• www.stackoverflow.com