Challenge

Project 1 - English Dictionary App & Library Book Management System

1.

import json

def display_menu():
print("\nMain Menu: ")
print("\n1. Add a new word\n2. Find the meaning\n3. Update a word\n4. Exit")

# User's choice
choice = input("Enter the choice of your own : ")

# If choice is valid, return the selected choice
if(choice == '1' or choice == '2' or choice == '3' or choice == '4'):
return choice

else:
print("Wrong choice!. Please try again after sometime...")
display_menu()

# main method
if __name__ == '__main__':

dictionary = {}

# Append the dictionary to the file
with open("words.txt", 'w') as f:
json.dump(dictionary, f)


while(True):

# Get the User's choice
choice = display_menu()

if(choice == '1'):

# Get the word and meaning from the user
word = input("\nPlease enter a word: ")
meaning = input("Please enter the meaning to the word: ")

# load the dictionary and add the new word and its meaning
with open("words.txt") as f:
dictionary = json.load(f)
dictionary[word] = meaning

# Write the dictionary back to file
with open("words.txt",'w') as f2:
json.dump(dictionary, f2)

elif(choice == '2'):

# let user enter the word
word = input("\nPlease enter a word: ")

# load the dictionary and look for the word
with open("words.txt") as f:
dictionary = json.load(f)

# if word is in the dictionary, print its meaning
if(word in dictionary):
print(f"\nThe meaning of the entered {word} is: {dictionary[word]}")

# Else print "Not found"
else:
print("Word not found...")

elif(choice == '3'):

#Get the word and its meaning
word = input("\nPlease enter a word: ")
meaning = input("Please enter the updated meaning to the word entered: ")

# Load the dictionary and update the meaning
with open("words.txt") as f:
dictionary = json.load(f)
if(word not in dictionary):
print("Entered Word not found! Hurray, New word added to dictionary..")
dictionary[word] = meaning
with open("words.txt",'w') as f2:
json.dump(dictionary, f2)

elif(choice == '4'):
print("\nThank you for using English Dictionary App!\nExiting the app, untill next time!!!!...")
break

2.

import tkinter
from tkinter import *

import sqlite3 as sq

import tkinter.ttk as ttk
from tkinter import messagebox


root = Tk()
root.title('A Library Application')
root.geometry('1200x800')

def Database():
global conn,cursor
conn = sq.connect('books.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS mybooks(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,title TEXT,author TEXT,year INTEGER,isbn INTEGER)")

def Add():
if TITLE.get()=='' or AUTHOR.get()=='' or YEAR.get()=='':
txt_result.config(text="Please Enter all the fields",fg='red')
else:
Database()
cursor.execute("INSERT INTO mybooks(title,author,year,isbn) VALUES(?,?,?,?)",(TITLE.get(),AUTHOR.get(),YEAR.get(),ISBN.get()))
conn.commit()
TITLE.set('')
AUTHOR.set('')
YEAR.set('')
ISBN.set('')
cursor.close()
conn.close()
txt_result.config(text="Record Added !",fg="green")
def Search():
if TITLE.get()=='' and AUTHOR.get()=='' and YEAR.get()=='' and ISBN.get()=='':
txt_result.config(text="Please Enter any of the details to search",fg='red')
else:
tree.delete(*tree.get_children())
Database()
cursor.execute('SELECT * FROM mybooks WHERE title=? OR author=? OR year=? OR isbn=?',(TITLE.get(),AUTHOR.get(),str(YEAR.get()),str(ISBN.get())))
rows = cursor.fetchall()
for data in rows:
tree.insert("",'end',values=(data[1],data[2],data[3],data[4]))
TITLE.set('')
AUTHOR.set('')
YEAR.set('')
ISBN.set('')
cursor.close()
txt_result.config(text="Search completed and results displayed !",fg='green')


def Display():
tree.delete(*tree.get_children())
Database()
cursor.execute('SELECT * FROM mybooks')
fetch = cursor.fetchall()
for data in fetch:
tree.insert("",'end',values=(data[1],data[2],data[3],data[4]))
cursor.close()
txt_result.config(text="Successfully fetched data !",fg='blue')

def Delete():
if TITLE.get()=='' and AUTHOR.get()=='' and YEAR.get()=='' and ISBN.get()=='':
txt_result.config(text="Please Enter any of the details to delete",fg='red')
else:
Database()
cursor.execute('DELETE FROM mybooks WHERE title=? OR author=? OR year=? OR isbn=?',(TITLE.get(),AUTHOR.get(),YEAR.get(),str(ISBN.get())))
conn.commit()
TITLE.set('')
AUTHOR.set('')
YEAR.set('')
ISBN.set('')
cursor.close()
conn.close()
txt_result.config(text="Successfully deleted data and removed completely from the system !",fg='blue')



def Issue():
if TITLE.get()=='' or AUTHOR.get()=='' or YEAR.get()=='':
txt_result.config(text="Please Enter all the above fields",fg='red')
else:
TITLE.set('')
AUTHOR.set('')
YEAR.set('')
ISBN.set('')
txt_result.config(text="Successfully Issued the Book...!",fg="black")

def Exit():
if messagebox.askokcancel("Quit", "Do you want to Really Exit?"):
root.destroy()
exit()

## Variable Declaration:
TITLE = StringVar()
AUTHOR = StringVar()
YEAR = StringVar()
ISBN = StringVar()

## Frame :
Top = Frame(root,width=1200,height=100,bg='blue', bd=8, relief='raise')
Top.pack(side=TOP)
Left = Frame(root, width=1000, height=800,bg='red', bd=8, relief='raise')
Left.pack(side=LEFT)
Right = Frame(root,width=300,height=800,bg='yellow', bd=8,relief='raise')
Right.pack(side=RIGHT)

Forms = Frame(Left,width=1000,height=800)
Forms.pack(side=TOP)

Buttons = Frame(Left,width=1000,height=100,bd=8,relief='raise')
Buttons.pack(side=BOTTOM)

## Label:
main_title =Label(Top,width=1000,font=('arial',24),text=" !!!!!Library Management Application!!!!!")
main_title.pack()

txt_title = Label(Forms, text="Booktitle:",font=('arial',16),bd=15)
txt_title.grid(row=0, stick="e")
txt_author = Label(Forms, text="Author:",font=('arial',16),bd=15)
txt_author.grid(row=1, stick="e")
txt_year = Label(Forms, text="Year:",font=('arial',16),bd=15)
txt_year.grid(row=2, stick="e")
txt_isbn = Label(Forms, text="ISBN:",font=('arial',16),bd=15)
txt_isbn.grid(row=3, stick="e")

txt_result = Label(Buttons)
txt_result.pack()

## Entry:
title = Entry(Forms,textvariable=TITLE, width=30)
title.grid(row=0,column=1)
author = Entry(Forms,textvariable=AUTHOR, width=30)
author.grid(row=1,column=1)
year = Entry(Forms,textvariable=YEAR, width=30)
year.grid(row=2,column=1)
isbn = Entry(Forms,textvariable=ISBN, width=30)
isbn.grid(row=3,column=1)

## Buttons:
btn_display = Button(Buttons, width=10, text="Display", command=Display)
btn_display.pack(side=LEFT)
btn_search = Button(Buttons,width=10,text="Search", command=Search)
btn_search.pack(side=LEFT)
btn_add = Button(Buttons, width=10, text="Add",command=Add)
btn_add.pack(side=LEFT)
btn_issue = Button(Buttons, width=10, text ="Issue",command=Issue)
btn_issue.pack(side=LEFT)
btn_delete = Button(Buttons,width=10,text="Delete",command=Delete)
btn_delete.pack(side=LEFT)
btn_exit = Button(Buttons,width=10,text="Exit",command = Exit)
btn_exit.pack(side=LEFT)

## List:
scrollbary = Scrollbar(Right, orient=VERTICAL)
scrollbarx = Scrollbar(Right, orient = HORIZONTAL)

tree = ttk.Treeview(Right, columns=("Booktitle","Author","Year","ISBN"))

scrollbary.config(command=tree.yview)
scrollbary.pack(side=RIGHT, fill=Y)
scrollbarx.config(command=tree.xview)
scrollbarx.pack(side=BOTTOM, fill=X)

tree.heading('Booktitle', text="Booktitle", anchor = W)
tree.heading('Author', text="Author", anchor = W)
tree.heading('Year', text="Year", anchor = W)
tree.heading('ISBN', text="ISBN", anchor = W)

tree.column('#0', stretch=NO, minwidth=0, width=0)
tree.column('#1', stretch=NO, minwidth=0, width=200)
tree.column('#2', stretch=NO, minwidth=0, width=100)
tree.column('#3', stretch=NO, minwidth=0, width=50)
tree.column('#4', stretch=NO, minwidth=0, width=100)


tree.pack()

if __name__=='__main__':
root.mainloop()

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.