BINARY BASIC PROJECT
"""
Created on Mon Jul 28 11:34:41 2025
@author: Kirti Hora
"""
import pickle
from os import remove, rename
# OS is a built-in Python module that allows you to interact with the operating system
# remove
and rename
: These functions help in deleting and renaming files.
def createfile():
file = open("item.dat","wb")
ans = "y"
while ans == "y":
ino = int(input("\nitem no -"))
name = input("\nName- ")
price = float(input("\nPrice -"))
qty = int(input("\nQuantity -"))
itdets = [ino,name,price,qty]
pickle.dump(itdets,file)
ans = input("add more ?(y/n) - ")
file.close()
def display_count():
totrec = 0
try:
with open("item.dat", "rb") as fin:
while True:
try:
itrec = pickle.load(fin)
print(itrec)
totrec += 1
except EOFError:
break
except FileNotFoundError:
print("File not found.")
print("No. of records in the file:", totrec)
def srchino():
sino = int(input("Enter item no -"))
try:
with open("item.dat","rb") as fin:
while True:
itrec = pickle.load(fin)
if itrec[0] == sino:
print("item name - ",itrec[1])
print("Price - ",itrec[2])
print("Stock - ",itrec[3])
break
else:
print("Record not found")
except EOFError:
pass
def srchinm():
sinm = input("Enter item name -")
found="n"
try:
with open("item.dat","rb") as fin:
while True:
itrec = pickle.load(fin)
if itrec[1] == sinm:
print("item no - ",itrec[0])
print("Price - ",itrec[2])
print("Stock - ",itrec[3])
found = "y"
if found == "n":
print("Record not found")
except EOFError:
pass
def sumitemvalues():
totsum = 0
try:
with
open("item.dat", "rb") as fin:
while
True:
itrec
= pickle.load(fin)
totsum
+= itrec[2] * itrec[3] # price *
quantity
except EOFError:
pass
print("Total
value of all items -", totsum)
def delnth():
file =
open("item.dat", "rb")
temp = open("temp.dat", "wb") # Creates a temporary file temp.dat in write binary mode ("wb"), which will store all records except the one to delete.
recno = int(input("Enter record number
to delete: "))
ctr = 0
try:
while True:
itrec =
pickle.load(file)
ctr += 1
if ctr ==
recno:
print("Record to be deleted:")
print(itrec)
else:
pickle.dump(itrec, temp) #temp.dat
except EOFError:
file.close()
temp.close()
remove("item.dat")
rename("temp.dat", "item.dat")
print("Record deleted successfully.")
#Closes both files.
#Deletes the original item.dat.
#Renames temp.dat to item.dat — so it now becomes the
updated file with the selected record removed.
#Prints success message.
def insertatnth():
file = open("item.dat", "rb")
temp = open("temp.dat", "wb")
recno = int(input("Enter record no position - "))
ctr = 0
ino = int(input("\nEnter item no - "))
name = input("Enter name - ")
price = float(input("Enter Price - "))
qty = int(input("Enter Stock Quantity - "))
newrec = [ino, name, price, qty] # Record to be inserted
try:
while True:
itrec = pickle.load(file)
ctr += 1
if ctr == recno:
pickle.dump(newrec, temp) # new record written
pickle.dump(itrec, temp)
except EOFError:
file.close()
temp.close()
remove('item.dat')
rename('temp.dat', 'item.dat')
file =
open("item.dat", "rb")
temp =
open("temp.dat", "wb")
sino =
int(input("Enter Item no to edit - "))
found =
"n"
cnt = 0
try:
while True:
itrec =
pickle.load(file)
cnt += 1
temprec =
itrec
if
itrec[0] == sino:
print("Editing record "
+ str(cnt) + ": " + str(itrec))
temprec[1] = input("Enter edited name -
")
temprec[2] =
float(input("Enter edited Price - "))
temprec[3] =
int(input("Enter edited quantity in stock - "))
found = "y"
pickle.dump(temprec, temp)
except EOFError:
file.close()
temp.close()
if found ==
"n":
print("No such record")
remove('temp.dat')
else:
remove('item.dat')
rename('temp.dat', 'item.dat')
print("Record updated successfully.")
def editname():
file =
open("item.dat", "rb")
temp =
open("temp.dat", "wb")
sinm =
input("Enter Item name to edit - ")
found =
"n"
try:
while True:
itrec =
pickle.load(file)
temprec =
itrec
if
itrec[1] == sinm:
temprec[2] = float(input("Enter edited Price - "))
temprec[3] = int(input("Enter edited Quantity - "))
found
= "y"
pickle.dump(temprec, temp)
except EOFError:
file.close()
temp.close()
if found ==
"n":
print("No such record")
remove("temp.dat")
else:
remove("item.dat")
rename("temp.dat", "item.dat")
file = open("item.dat", "rb")
temp = open("temp.dat", "wb")
sino = int(input("Enter Item no to delete - "))
found = "n"
try:
while True:
itrec =
pickle.load(file)
if itrec[0] ==
sino:
print("Record to be deleted:")
print(itrec)
found =
"y"
else:
pickle.dump(itrec, temp)
except EOFError:
file.close()
temp.close()
if found ==
"y":
remove('item.dat')
rename('temp.dat', 'item.dat')
print("Record deleted successfully.")
else:
remove('temp.dat')
print("No
such record found.")
while True:
print("\n1. Create Item details File")
print("2. Show and count all records")
print("3. Search on item number")
print("4. Search on item name")
print("5. Display total values") #sumitemvalues():
print("6. Edit on item number") #editonino():
print("7. Edit on item name") # editname()
print("8. Insert at nth position") # insertatnth()
print("9. Delete nth record") #delnth()
print("10. Delete on item number") #
ch = int(input("\nEnter your choice: "))
if ch == 1:
createfile()
elif ch == 2:
display_count()
elif ch==3:
srchino()
elif ch==4:
srchinm()
else:
print("Wrong choice")
ans = input("\nWant to continue (y/n)? ")
if ans in "nN":
break
Comments
Post a Comment