Skip to main content

GRADE XII - BINARY BASIC PROJECT - 29 JULY

 

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) #If the record is not the one to delete, it is copied into the 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')


 def editonino():

    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")


 def delitno():

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") #  delitno():

    

        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

Popular posts from this blog

GRADE XII - Python Connectivity with MySQL

  Python Connectivity with MySQL In real-life applications, the data inputted by the user and processed by the application needs to be saved permanently, so that it can be used for future manipulation. Usually, input and output data is displayed during execution but not stored, as it resides in main memory , which is temporary — i.e., it gets erased once the application is closed. This limitation can be overcome by sending the data to be stored in a database , which is made accessible to the user through a Front-End interface . Key Concepts Database A database is an organized collection of data that is stored and accessed electronically from a computer system. DBMS (Database Management System) A DBMS is software that interacts with end-users, applications, and the database to capture and analyze data. Front-End The Front-End is the user interface of the application, responsible for input/output interaction with the user. Back-End The Back-End refe...

GRADE XII - CSV FILE

CSV FILE (COMMA SEPERATED VALUE) CSV NOTES LINK :  CSV NOTES - CLICK HERE Writing data to a CSV file involves the following steps: Import the csv module Open the CSV file in write mode ( "w" ) using open() Create the writer object Write the data into the file using the writer object Close the file using close() writerow() Method This method is used to write a single row to a CSV file. It takes a sequence (list or tuple) as its parameter, and writes the items as a comma-separated line in the file. You do not need to add a newline character (\n) — it automatically places the end-of-line marker.     EXAMPLE 1: import csv  # Importing the csv module # CSV file opened using relative path csv_fobj = open("emp.csv", "w")   # Writer object created wtr_obj = csv.writer(csv_fobj) # Record with field heading is written wtr_obj.writerow(["Empno", "Name", "Salary"]) # Records with data are...