0% found this document useful (0 votes)
8 views

PROECT_hhhh HHHHHWUIQIPQWIH (1)

The document is a project file for an Inventory Management System submitted by Arnav Grover for his Informatics Practices course at Bluebells School International. It outlines the problems with the current manual inventory system, objectives for improvement, system requirements, and detailed modules and functionalities of the proposed solution. The project includes coding examples and aims to enhance inventory accuracy, streamline order fulfillment, and reduce operational costs.

Uploaded by

9j5xf8nh6b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

PROECT_hhhh HHHHHWUIQIPQWIH (1)

The document is a project file for an Inventory Management System submitted by Arnav Grover for his Informatics Practices course at Bluebells School International. It outlines the problems with the current manual inventory system, objectives for improvement, system requirements, and detailed modules and functionalities of the proposed solution. The project includes coding examples and aims to enhance inventory accuracy, streamline order fulfillment, and reduce operational costs.

Uploaded by

9j5xf8nh6b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

Informatics Practices

Project File

Printing Press Inventory


Management System

SUBMITTED TO:
SUBMITTED BY:

Ms V K Remya ARNAV
Grover
Class - XII C

Roll No. -
Bluebells School International
CERTIFICATE

This is to certify that the Informatics Practices project on Inventory Management


System has been successfully completed by Arnav Grover of Class XII - C,
BLUEBELLS SCHOOL INTERNATIONAL for consideration in partial fulfilment of
curriculum of Central Board of Secondary Education (CBSE) of Informatics
Practices for the award of AISSCE Practical Examination 2024-25. I certify that
this project is up to my expectation and as per the guidelines issued by the CBSE.

Ms V.K. Remya
ACKNOWLEDGEMENT

I take this opportunity to express my deep sense of gratitude to all those who
have been instrumental in preparation of this project. I am sincerely grateful to
Ms. V.K. Remya for her encouragement and valuable guidance during the entire
period of work. Last but not least, I would like to thank my peers and classmates
for their helpful input and well-timed advice.

Arnav Grover
Class XII-C
TABLE OF CONTENTS

SR
TOPIC PG NO SIGN
NO

1 Certficate

2 Acknowledgement

Introduction
A. Problem Statement
3
B. Objectives
C. System Requirements

4. Modules And Functionalities

Coding :
4. A. Source Code
B. Outputs Screenshots

5. Future Scope

6. Bibliography
INTRODUCTION
PROBLEM STATEMENT

Drawbacks of the Current Manual System:


 Inaccurate Inventory Records:
o Manual tracking is prone to human error, leading to inaccurate stock counts.
o Delays in recording transactions can cause discrepancies between actual stock
and recorded levels.
o Difficulty in tracking stock movements accurately, especially for fast-moving
items like paper, ink, and consumables.

 Lack of Real-time Visibility:


o Limited access to real-time inventory data hinders timely decision-making.
o Difficulties in identifying stockouts and preventing production delays.
o Inability to track stock usage efficiently, making it challenging to identify areas
of wastage or inefficiency.

 Poor Order Fulfillment:


o Manual order processing can be slow and error-prone, leading to delays in
fulfilling customer orders.
o Difficulty in tracking order progress and ensuring timely delivery.

 Inefficient Purchasing:
o Lack of data on stock usage and consumption patterns makes it difficult to
optimize purchasing decisions.
o Potential for overstocking or understocking, leading to increased costs and lost
revenue.

 Limited Reporting Capabilities:


o Difficulty in generating accurate and timely reports on inventory levels, sales
trends, and supplier performance.
o Lack of data analysis tools to identify areas for improvement and optimize
inventory management strategies.

 Increased Operational Costs:


o Manual tracking requires significant manual effort, leading to increased labor
costs.
o Potential for increased costs due to stockouts, overstocking, and inefficient
purchasing decisions.
OBJECTIVES

 Improve Inventory Accuracy:


o Minimize human error and ensure accurate stock counts in real-time.
o Track stock movements efficiently to maintain accurate inventory records.

 Enhance Real-time Visibility:


o Provide real-time access to inventory data for all relevant stakeholders.
o Enable proactive identification and resolution of stock-related issues.

 Streamline Order Fulfillment:


o Accelerate order processing and reduce order fulfillment times.
o Improve order tracking and communication with customers.

 Optimize Purchasing Decisions:


o Analyze stock usage patterns to forecast demand and optimize purchasing
quantities.
o Identify and leverage cost-effective suppliers.

 Improve Reporting and Analysis:


o Generate comprehensive reports on inventory levels, sales , and supplier
performance.
o Provide data-driven insights to support informed decision-making.

 Reduce Operational Costs:


o Minimize manual effort and reduce labor costs associated with inventory
management.
o Optimize inventory levels to minimize stockouts and overstocking costs.
SYSTEM REQUIREMENTS

 Hardware:
o Computers or workstations with sufficient processing power and storage
capacity.
o Printers for generating reports and labels.

 Software:
o Python programming language.
o Libraries: csv, pandas, matplotlib.pyplot, potentially libraries for barcode
generation and integration with other business systems.
o Database: Consider migrating to a relational database (e.g., MySQL,
PostgreSQL) for improved performance and scalability.

 Data:
o CSV files: Product.csv (including details like paper type, size, weight),
Consumables.csv, Raw Materials.csv, Stock.csv, Order.csv, Supplier.csv.

 User Roles and Permissions:


o Define user roles (e.g., Inventory Manager, Production Manager, Sales
Manager) with appropriate access levels and permissions.
MODULES &
FUNCTIONALITIES
MODULE DESCRIPTION

 Product Module:
o add_product(): Add new product entries (paper, ink, chemicals, etc.) with
detailed specifications.
o modify_product(): Update product information (e.g., price, specifications,
supplier).
o delete_product(): Remove obsolete products from the system.
o view_product_details(): Retrieve and display detailed information
about specific products.

 Stock Module:
o stock_in(): Record stock receipts with details like product ID, quantity,
supplier, and purchase date.
o stock_out(): Record stock usage (e.g., for production orders, wastage).
o view_stock_levels(): Display real-time stock levels for all items.
o generate_stock_reports(): Generate reports on stock levels, stock
movements, and stock value.

 Order Module:
o create_order(): Create new production orders with detailed
specifications.
o track_order_progress(): Monitor order progress and track material
usage.
o fulfill_order(): Record order completion and update stock levels
accordingly.

 Supplier Module:
o add_supplier(): Add new supplier information (contact details, pricing,
etc.).
o manage_supplier_relations(): Maintain and update supplier
information.

 Reporting Module:
o sales_reports(): Generate reports on sales trends, customer orders,
and revenue.
o production_reports(): Generate reports on production output,
material usage, and production costs.
o inventory_valuation_reports(): Calculate the value of inventory
on hand.
o supplier_performance_reports(): Analyze supplier performance
based on factors like delivery times and quality.
CODING
CODING

import pandas as pd
import matplotlib.pyplot as plt
import os

class InventoryManagementSystem:
def __init__(self):
self.product_file = 'Product.csv'
self.stock_file = 'Stock.csv'
self.seller_file = 'Seller.csv'
self.order_file = 'Order.csv'

# Create CSV files if they do not exist


if not os.path.exists(self.product_file):
pd.DataFrame(columns=['Prod ID', 'Product Name',
'Type', 'Price']).to_csv(self.product_file, index=False)
if not os.path.exists(self.stock_file):
pd.DataFrame(columns=['Stock ID', 'Prod ID',
'Quantity', 'DOP', 'Seller ID']).to_csv(self.stock_file,
index=False)
if not os.path.exists(self.seller_file):
pd.DataFrame(columns=['Seller ID', 'Name',
'Address', 'Phone Number', 'Email']).to_csv(self.seller_file,
index=False)
if not os.path.exists(self.order_file):
pd.DataFrame(columns=['Order ID', 'Prod ID', 'Date
Of Order', 'Quantity']).to_csv(self.order_file, index=False)

def load_data(self, file_name):


return pd.read_csv(file_name)
def save_data(self, df, file_name):
df.to_csv(file_name, index=False)

def add_product(self, prod_id, name, type, price):


product_data = self.load_data(self.product_file)
new_product = pd.DataFrame([{ 'Prod ID': prod_id,
'Product Name': name, 'Type': type, 'Price': price }])
product_data = pd.concat([product_data, new_product],
ignore_index=True)
self.save_data(product_data, self.product_file)
print(f"Product '{name}' added successfully!")

def modify_product(self, prod_id, name=None, type=None,


price=None):
product_data = self.load_data(self.product_file)
if prod_id in product_data['Prod ID'].values:
if name:
product_data.loc[product_data['Prod ID'] ==
prod_id, 'Product Name'] = name
if type:
product_data.loc[product_data['Prod ID'] ==
prod_id, 'Type'] = type
if price:
product_data.loc[product_data['Prod ID'] ==
prod_id, 'Price'] = price
self.save_data(product_data, self.product_file)
print(f"Product with Prod ID '{prod_id}' updated
successfully!")
else:
print(f"Product with Prod ID '{prod_id}' not
found.")

def delete_product(self, prod_id):


product_data = self.load_data(self.product_file)
if prod_id in product_data['Prod ID'].values:
product_data = product_data[product_data['Prod
ID'] != prod_id]
self.save_data(product_data, self.product_file)
print(f"Product with Prod ID '{prod_id}' deleted
successfully!")
else:
print(f"Product with Prod ID '{prod_id}' not
found.")

def view_products(self):
product_data = self.load_data(self.product_file)
print("\nProduct Data:")
print(product_data)

def add_stock(self, stock_id, prod_id, quantity, dop,


seller_id):
stock_data = self.load_data(self.stock_file)
new_stock = pd.DataFrame([{ 'Stock ID': stock_id,
'Prod ID': prod_id, 'Quantity': quantity, 'DOP': dop, 'Seller
ID': seller_id }])
stock_data = pd.concat([stock_data, new_stock],
ignore_index=True)
self.save_data(stock_data, self.stock_file)
print(f"Stock with Stock ID '{stock_id}' added
successfully!")

def modify_stock(self, stock_id, quantity=None, dop=None,


seller_id=None):
stock_data = self.load_data(self.stock_file)
if stock_id in stock_data['Stock ID'].values:
if quantity:
stock_data.loc[stock_data['Stock ID'] ==
stock_id, 'Quantity'] = quantity
if dop:
stock_data.loc[stock_data['Stock ID'] ==
stock_id, 'DOP'] = dop
if seller_id:
stock_data.loc[stock_data['Stock ID'] ==
stock_id, 'Seller ID'] = seller_id
self.save_data(stock_data, self.stock_file)
print(f"Stock with Stock ID '{stock_id}' updated
successfully!")
else:
print(f"Stock with Stock ID '{stock_id}' not
found.")

def delete_stock(self, stock_id):


stock_data = self.load_data(self.stock_file)
if stock_id in stock_data['Stock ID'].values:
stock_data = stock_data[stock_data['Stock ID'] !=
stock_id]
self.save_data(stock_data, self.stock_file)
print(f"Stock with Stock ID '{stock_id}' deleted
successfully!")
else:
print(f"Stock with Stock ID '{stock_id}' not
found.")

def view_stocks(self):
stock_data = self.load_data(self.stock_file)
print("\nStock Data:")
print(stock_data)

def add_order(self, order_id, prod_id, date_of_order,


quantity):
order_data = self.load_data(self.order_file)
new_order = pd.DataFrame([{ 'Order ID': order_id,
'Prod ID': prod_id, 'Date Of Order': date_of_order,
'Quantity': quantity }])
order_data = pd.concat([order_data, new_order],
ignore_index=True)
self.save_data(order_data, self.order_file)
print(f"Order with Order ID '{order_id}' added
successfully!")

def remove_order(self, order_id):


order_data = self.load_data(self.order_file)
if order_id in order_data['Order ID'].values:
order_data = order_data[order_data['Order ID'] !=
order_id]
self.save_data(order_data, self.order_file)
print(f"Order with Order ID '{order_id}' removed
successfully!")
else:
print(f"Order with Order ID '{order_id}' not
found.")

def modify_order(self, order_id, prod_id=None,


date_of_order=None, quantity=None):
order_data = self.load_data(self.order_file)
if order_id in order_data['Order ID'].values:
if prod_id:
order_data.loc[order_data['Order ID'] ==
order_id, 'Prod ID'] = prod_id
if date_of_order:
order_data.loc[order_data['Order ID'] ==
order_id, 'Date Of Order'] = date_of_order
if quantity:
order_data.loc[order_data['Order ID'] ==
order_id, 'Quantity'] = quantity
self.save_data(order_data, self.order_file)
print(f"Order with Order ID '{order_id}' updated
successfully!")
else:
print(f"Order with Order ID '{order_id}' not
found.")

def view_orders(self):
order_data = self.load_data(self.order_file)
print("\nOrder Data:")
print(order_data)

def add_seller(self, seller_id, name, address, phone,


email):
seller_data = self.load_data(self.seller_file)
new_seller = pd.DataFrame([{ 'Seller ID': seller_id,
'Name': name, 'Address': address, 'Phone Number': phone,
'Email': email }])
seller_data = pd.concat([seller_data, new_seller],
ignore_index=True)
self.save_data(seller_data, self.seller_file)
print(f"Seller '{name}' added successfully!")

def remove_seller(self, seller_id):


seller_data = self.load_data(self.seller_file)
if seller_id in seller_data['Seller ID'].values:
seller_data = seller_data[seller_data['Seller ID']
!= seller_id]
self.save_data(seller_data, self.seller_file)
print(f"Seller with Seller ID '{seller_id}'
removed successfully!")
else:
print(f"Seller with Seller ID '{seller_id}' not
found.")
def modify_seller(self, seller_id, name=None,
address=None, phone=None, email=None):
seller_data = self.load_data(self.seller_file)
if seller_id in seller_data['Seller ID'].values:
if name:
seller_data.loc[seller_data['Seller ID'] ==
seller_id, 'Name'] = name
if address:
seller_data.loc[seller_data['Seller ID'] ==
seller_id, 'Address'] = address
if phone:
seller_data.loc[seller_data['Seller ID'] ==
seller_id, 'Phone Number'] = phone
if email:
seller_data.loc[seller_data['Seller ID'] ==
seller_id, 'Email'] = email
self.save_data(seller_data, self.seller_file)
print(f"Seller with Seller ID '{seller_id}'
updated successfully!")
else:
print(f"Seller with Seller ID '{seller_id}' not
found.")

def view_sellers(self):
seller_data = self.load_data(self.seller_file)
print("\nSeller Data:")
print(seller_data)

def generate_reports(self):
print("\nGenerating Reports...")

# Example Report 1: Monthly Sales Report (using Order


and Product CSV)
order_data = self.load_data(self.order_file)
product_data = self.load_data(self.product_file)

# Merge orders and products by Prod ID to get sales


data
merged_data = pd.merge(order_data, product_data,
on='Prod ID', how='left')
merged_data['Total Sales'] = merged_data['Quantity'] *
merged_data['Price']
monthly_sales = merged_data.groupby(['Prod ID',
'Product Name'])['Total Sales'].sum().reset_index()

# Generate Monthly Sales Report using a Bar Graph


plt.figure(figsize=(10, 6))
plt.bar(monthly_sales['Product Name'],
monthly_sales['Total Sales'], color='skyblue')
plt.xlabel('Product Name')
plt.ylabel('Total Sales')
plt.title('Monthly Sales Report')
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()

# Main Menu Loop


def main():
ims = InventoryManagementSystem()

while True:
print("\nMain Menu:")
print("1. Product Module")
print("2. Stock Module")
print("3. Order Module")
print("4. Seller Module")
print("5. Report Module")
print("6. Exit")

choice = input("Enter your choice: ")

if choice == '1':
while True:
print("\nProduct Module:")
print("1. Add Product")
print("2. Modify Product")
print("3. Delete Product")
print("4. View All Product Data")
print("5. Back to Main Menu")

sub_choice = input("Enter your choice: ")

if sub_choice == '1':
prod_id = input("Enter Product ID: ")
name = input("Enter Product Name: ")
type = input("Enter Product Type: ")
price = float(input("Enter Price: "))
ims.add_product(prod_id, name, type,
price)
elif sub_choice == '2':
prod_id = input("Enter Product ID to
Modify: ")
name = input("Enter New Product Name
(leave blank to skip): ")
type = input("Enter New Product Type
(leave blank to skip): ")
price = input("Enter New Price (leave
blank to skip): ")
ims.modify_product(prod_id, name or None,
type or None, float(price) if price else None)
elif sub_choice == '3':
prod_id = input("Enter Product ID to
Delete: ")
ims.delete_product(prod_id)
elif sub_choice == '4':
ims.view_products()
elif sub_choice == '5':
break
else:
print("Invalid choice. Try again.")

elif choice == '2':


while True:
print("\nStock Module:")
print("1. Add Stock")
print("2. Modify Stock")
print("3. Delete Stock")
print("4. View All Stock Data")
print("5. Back to Main Menu")

sub_choice = input("Enter your choice: ")

if sub_choice == '1':
stock_id = input("Enter Stock ID: ")
prod_id = input("Enter Product ID: ")
quantity = int(input("Enter Quantity: "))
dop = input("Enter Date of Purchase (DOP):
")
seller_id = input("Enter Seller ID: ")
ims.add_stock(stock_id, prod_id, quantity,
dop, seller_id)
elif sub_choice == '2':
stock_id = input("Enter Stock ID to
Modify: ")
quantity = input("Enter New Quantity
(leave blank to skip): ")
dop = input("Enter New Date of Purchase
(leave blank to skip): ")
seller_id = input("Enter New Seller ID
(leave blank to skip): ")
ims.modify_stock(stock_id, int(quantity)
if quantity else None, dop or None, seller_id or None)
elif sub_choice == '3':
stock_id = input("Enter Stock ID to
Delete: ")
ims.delete_stock(stock_id)
elif sub_choice == '4':
ims.view_stocks()
elif sub_choice == '5':
break
else:
print("Invalid choice. Try again.")

elif choice == '3':


while True:
print("\nOrder Module:")
print("1. Add Order Details")
print("2. Remove Order Details")
print("3. Modify Order Details")
print("4. View All Order Data")
print("5. Back to Main Menu")
sub_choice = input("Enter your choice: ")

if sub_choice == '1':
order_id = input("Enter Order ID: ")
prod_id = input("Enter Product ID: ")
date_of_order = input("Enter Date of
Order: ")
quantity = int(input("Enter Quantity: "))
ims.add_order(order_id, prod_id,
date_of_order, quantity)
elif sub_choice == '2':
order_id = input("Enter Order ID to
Remove: ")
ims.remove_order(order_id)
elif sub_choice == '3':
order_id = input("Enter Order ID to
Modify: ")
prod_id = input("Enter New Product ID
(leave blank to skip): ")
date_of_order = input("Enter New Date of
Order (leave blank to skip): ")
quantity = input("Enter New Quantity
(leave blank to skip): ")
ims.modify_order(order_id, prod_id or
None, date_of_order or None, int(quantity) if quantity else
None)
elif sub_choice == '4':
ims.view_orders()
elif sub_choice == '5':
break
else:
print("Invalid choice. Try again.")
elif choice == '4':
while True:
print("\nSeller Module:")
print("1. Add Seller Details")
print("2. Remove Seller Details")
print("3. Modify Seller Details")
print("4. View All Seller Data")
print("5. Back to Main Menu")

sub_choice = input("Enter your choice: ")

if sub_choice == '1':
seller_id = input("Enter Seller ID: ")
name = input("Enter Seller Name: ")
address = input("Enter Seller Address: ")
phone = input("Enter Seller Phone: ")
email = input("Enter Seller Email: ")
ims.add_seller(seller_id, name, address,
phone, email)
elif sub_choice == '2':
seller_id = input("Enter Seller ID to
Remove: ")
ims.remove_seller(seller_id)
elif sub_choice == '3':
seller_id = input("Enter Seller ID to
Modify: ")
name = input("Enter New Seller Name (leave
blank to skip): ")
address = input("Enter New Address (leave
blank to skip): ")
phone = input("Enter New Phone (leave
blank to skip): ")
email = input("Enter New Email (leave
blank to skip): ")
ims.modify_seller(seller_id, name or None,
address or None, phone or None, email or None)
elif sub_choice == '4':
ims.view_sellers()
elif sub_choice == '5':
break
else:
print("Invalid choice. Try again.")

elif choice == '5':


ims.generate_reports()

elif choice == '6':


print("Exiting the system. Goodbye!")
break

else:
print("Invalid choice. Try again.")

if __name__ == "__main__":
main()
USER INTERFACE
REPORT
OUTPUT SCREENSHOTS

Seller.CSV

Product.csv

Stock.csv

Order.csv
FUTURE SCOPE

 Integration with Production Planning: Integrate the system with production planning
software to optimize material usage and minimize waste.

 Predictive Analytics: Implement machine learning algorithms to forecast demand,


optimize inventory levels, and prevent stockouts.

 Barcode Integration: Utilize barcode scanning technology for faster and more
accurate stock tracking.

 Mobile App Development: Develop a mobile app for real-time inventory tracking and
order management.

 Cloud Deployment: Deploy the system on cloud platforms for improved scalability,
accessibility, and disaster recovery.

 Integration with Accounting Software: Integrate with accounting software to


automate financial transactions related to inventory.
BIBLOGRAPHY
 Informatics Practices Class-XII NCERT Publication
 Informatics Practices Class-XII by Sumita Arora
 Think Python by Allen B Downey
 Python for everybody by Charles Severance
 www.ncert.co.in

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy