The Stock Management System Project In Python is a fully functional desktop application developed in Python that covers all of the features that IT students and computer-related courses will require for their college projects or assignments.
These can be helpful articles and projects that you are looking for. This Stock Management System is beneficial system for all retail businesses that are struggling with managing their entire stocks.
This Stock Management System In Python is quite useful, and the concept and logic of the project are simple to grasp.
The source code is open source and free to use. Simply scroll down and click the download option.
Stock Management System Project In Python: Project Output
What Is a Stock Management System Project In Python?
The Stock Management Project In Python is a simple Python project for beginners to learn how to create desktop applications with Python. This is designed to keep track of stocks, and manage, and organize stock levels.
What Is the Difference Between Stock And Inventory?
Stock is the amount of finished goods that are ready to be sold to the final customer. Inventory can mean both finished goods and the parts that go into making those goods.
Importance Of Stock Management System
The Stock Management System Project In Python With Source Code is important because it gives you control over your stock.
This will help you make a clear plan for what to do when stock is returned or damaged, and it will keep you from sending customers the wrong stock.
With the help of a stock management system, the warehouse team will be able to process the products correctly and put them in the right places.
Why Do Retail Businesses Need to Have a Stock Management System?
This Stock Management System Project Python is important for stores because it helps them make more profits.
They are more likely to have enough stock to make every possible sale without having too much and without spending too much money.
Benefits Of Stock Management System
- Improves productivity and efficiency – Stock management tools like bar-code scanners and stock management software can help you be a lot more productive and efficient. These tools will help get rid of manual processes so that your employees can work on other, more important parts of the business.
- Makes a warehouse more organized – A well-organized warehouse is helped by a good plan for managing stock. If your warehouse isn’t set up right, it will be hard to keep track of your stock. Many companies choose to make the most of their warehouses by putting the products that sell best together and in easy-to-reach places. This speeds up the order-filling process and makes sure customers are happy.
- Saves money and time – Managing your inventory can save you both time and money. If you keep track of what you have in stock and what you have ordered, you won’t have to do an extra stock take to make sure your records are correct. A good stock management plan also helps you save money that you might have spent on products that don’t sell as quickly.
- Improves the accuracy of orders for stock – Good stock management also helps you figure out how much inventory you need at any given time. This keeps you from running out of products and lets you keep just enough stock without having too much in the warehouse.
- Brings customers back for more – Customers will come back if you keep track of your stock well. If you want the customers you’ve worked hard to get to buy from you again, you need to be able to meet their needs quickly and well. Stock management helps you meet demand in this way by giving you the tools to make sure you have the right products when your customers need them.
About the Project : Courier Management System Project In Python With Source Code
The Stock Management System Project In Python is a graphical user interface system written and designed in the Python programming language.
The project is open source, and it was made for novices who wish to learn Python.
This Stock Management System Project In Python With Source Code is a simple project yet helpful to IT students who want this kind of project for their school as well as for retail businesses that have been struggling for many years in terms of managing their stock.
The project is very simple to use. You just need to login in order to access the whole system. The username is admin and the password is 1234.
After you finish logging in, you are automatically redirected to the system where you can add new stock, manage stock, view stock, and view transaction history. I hope this article helps you a lot.
Project Details and Technology: Stock Management System Project In Python
Project Name: | Stock Management System Project In Python |
Abstract: | This Stock Management System Project In Python is a simple Python project that aims to help IT students with their projects or assignments as well as retail businesses who are struggling in terms of managing their stocks. |
Language/s Used: | Python (GUI Based) |
Python version (Recommended): | 3.8 or 3.9 |
Type: | GUI (Graphical User Interface) Application |
Developer: | Source Code Hero |
Updates: | 0 |
The code given below is the full source code of the Courier Management System Project In Python.
INIT_DB.PY
import sqlite3 if __name__ == '__main__': conn = sqlite3.connect('stock.db') c = conn.cursor() c.execute("""CREATE TABLE stock ( name text, quantity integer, cost integer ) """) conn.commit()
MANIPULATION.PY
import sqlite3 conn = sqlite3.connect('stock.db') c = conn.cursor() def insert_prod(name,q,cost,date): with conn: c.execute("SELECT quantity FROM stock WHERE name = :name",{'name':name}) check = c.fetchone() #print(check) if check is None: with conn: #print('yes') c.execute("INSERT INTO stock VALUES (:name, :quantity, :cost)", {'name': name, 'quantity': q, 'cost': cost}) a = name.upper() +' ' +str(q)+' '+str(cost)+' '+str(date) + ' ' + 'INSERT '+"\n" with open("transaction.txt", "a") as myfile: myfile.write(a) return 'Inserted the stock in DataBase' else: return 'Stock with same name already present.' def show_stock(): with conn: c.execute("SELECT * FROM stock") return c.fetchall() def update_cost(name, cost,date): with conn: c.execute("""UPDATE stock SET cost = :cost WHERE name = :name""", {'name': name, 'cost': cost}) def update_quantity(name, val,date): with conn: c.execute("SELECT quantity FROM stock WHERE name = :name",{'name': name}) z = c.fetchone() cost = z[0]+val if cost < 0: return c.execute("""UPDATE stock SET quantity = :quantity WHERE name = :name""", {'name': name, 'quantity': cost}) a = name.upper() + ' ' + str(z[0]) + ' ' + str(cost) + ' ' + str(date) +' UPDATE '+"\n" with open("transaction.txt", "a") as myfile: myfile.write(a) def remove_stock(name,date): with conn: c.execute("DELETE from stock WHERE name = :name", {'name': name}) a = name.upper() + ' ' + 'None' + ' ' + 'None'+' ' + str(date) + ' REMOVE '+"\n" with open("transaction.txt", "a") as myfile: myfile.write(a) conn.commit() #conn.close()
STOCKMANAGER.PY
from PyQt5 import QtWidgets import os import datetime import manipulation as mp from PyQt5.QtCore import QRect from PyQt5.QtWidgets import QTabWidget from PyQt5.QtWidgets import QTableWidget from PyQt5.QtWidgets import QTableWidgetItem from PyQt5.QtWidgets import QVBoxLayout from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QFormLayout from PyQt5.QtWidgets import QLabel from PyQt5.QtWidgets import QLineEdit from PyQt5.QtWidgets import QListWidget from PyQt5.QtWidgets import QStackedWidget from PyQt5.QtWidgets import (QWidget, QPushButton,QMainWindow, QHBoxLayout, QAction) import sqlite3 try: conn = sqlite3.connect('stock.db') c = conn.cursor() c.execute("""CREATE TABLE stock ( name text, quantity integer, cost integer ) """) conn.commit() except Exception: print('DB exists') class Login(QtWidgets.QDialog): def __init__(self, parent=None): super(Login, self).__init__(parent) self.textName = QtWidgets.QLineEdit(self) self.textPass = QtWidgets.QLineEdit(self) self.buttonLogin = QtWidgets.QPushButton('Admin Login', self) self.buttonLogin.clicked.connect(self.handleLogin) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(self.textName) layout.addWidget(self.textPass) layout.addWidget(self.buttonLogin) def handleLogin(self): if (self.textName.text() == 'Admin' and self.textPass.text() == '1234'): self.accept() else: QtWidgets.QMessageBox.warning( self, 'Error', 'Bad user or password') class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.st = stackedExample() exitAct = QAction(QIcon('exit_icon.png'), 'Exit', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('Exit application') exitAct.triggered.connect(self.close) self.statusBar() toolbar = self.addToolBar('Exit') toolbar.addAction(exitAct) self.setCentralWidget(self.st) self.show() class stackedExample(QWidget): def __init__(self): super(stackedExample, self).__init__() self.leftlist = QListWidget() self.leftlist.setFixedWidth(250) self.leftlist.insertItem(0, 'Add Stock') self.leftlist.insertItem(1, 'Manage Stock') self.leftlist.insertItem(2, 'View Stock') self.leftlist.insertItem(3, 'View Transaction History') self.stack1 = QWidget() self.stack2 = QWidget() self.stack3 = QWidget() self.stack4 = QWidget() self.stack1UI() self.stack2UI() self.stack3UI() self.stack4UI() self.Stack = QStackedWidget(self) self.Stack.addWidget(self.stack1) self.Stack.addWidget(self.stack2) self.Stack.addWidget(self.stack3) self.Stack.addWidget(self.stack4) hbox = QHBoxLayout(self) hbox.addWidget(self.leftlist) hbox.addWidget(self.Stack) self.setLayout(hbox) self.leftlist.currentRowChanged.connect(self.display) self.setGeometry(500,350, 200, 200) self.setWindowTitle('Stock Management') self.show() def stack1UI(self): layout = QFormLayout() self.ok = QPushButton('Add Stock', self) cancel = QPushButton('Cancel', self) self.stock_name = QLineEdit() layout.addRow("Stock Name", self.stock_name) self.stock_count = QLineEdit() layout.addRow("Quantity", self.stock_count) self.stock_cost = QLineEdit() layout.addRow("Cost of Stock (per item)", self.stock_cost) layout.addWidget(self.ok) layout.addWidget(cancel) self.ok.clicked.connect(self.on_click) cancel.clicked.connect(self.stock_name.clear) cancel.clicked.connect(self.stock_cost.clear) cancel.clicked.connect(self.stock_count.clear) self.stack1.setLayout(layout) def on_click(self): now = datetime.datetime.now() stock_name_inp = self.stock_name.text().replace(' ','_').lower() stock_count_inp = int(self.stock_count.text()) stock_cost_inp = int(self.stock_cost.text()) #print(stock_name_inp,stock_count_inp,stock_cost_inp) stock_add_date_time = now.strftime("%Y-%m-%d %H:%M") d = mp.insert_prod(stock_name_inp,stock_count_inp,stock_cost_inp,stock_add_date_time) print(d) #Need to add the above details to table def stack2UI(self): layout = QHBoxLayout() layout.setGeometry(QRect(0,300,1150,500)) tabs = QTabWidget() self.tab1 = QWidget() self.tab2 = QWidget() self.tab3 = QWidget() tabs.addTab(self.tab1, 'Add Quantity') tabs.addTab(self.tab2, 'Reduce Quantity') tabs.addTab(self.tab3, 'Delete Stock') self.tab1UI() self.tab2UI() self.tab3UI() layout.addWidget(tabs) self.stack2.setLayout(layout) def tab1UI(self): layout = QFormLayout() self.ok_add = QPushButton('Add Stock', self) cancel = QPushButton('Cancel', self) self.stock_name_add = QLineEdit() layout.addRow("Stock Name", self.stock_name_add) self.stock_count_add = QLineEdit() layout.addRow("Quantity to add", self.stock_count_add) layout.addWidget(self.ok_add) layout.addWidget(cancel) self.tab1.setLayout(layout) self.ok_add.clicked.connect(self.call_add) #need to write function to add quantity cancel.clicked.connect(self.stock_name_add.clear) cancel.clicked.connect(self.stock_count_add.clear) def tab2UI(self): layout = QFormLayout() self.ok_red = QPushButton('Reduce Stock', self) cancel = QPushButton('Cancel', self) self.stock_name_red = QLineEdit() layout.addRow("Stock Name", self.stock_name_red) self.stock_count_red = QLineEdit() layout.addRow("Quantity to reduce", self.stock_count_red) layout.addWidget(self.ok_red) layout.addWidget(cancel) self.tab2.setLayout(layout) self.ok_red.clicked.connect(self.call_red) # need to write function to reduce quantity cancel.clicked.connect(self.stock_name_red.clear) cancel.clicked.connect(self.stock_count_red.clear) def tab3UI(self): layout = QFormLayout() self.ok_del = QPushButton('Delete Stock', self) cancel = QPushButton('Cancel', self) self.stock_name_del = QLineEdit() layout.addRow("Stock Name", self.stock_name_del) layout.addWidget(self.ok_del) layout.addWidget(cancel) self.tab3.setLayout(layout) self.ok_del.clicked.connect(self.call_del) # need to write function to delete stock cancel.clicked.connect(self.stock_name_del.clear) def call_del(self): now = datetime.datetime.now() stock_del_date_time = now.strftime("%Y-%m-%d %H:%M") stock_name = self.stock_name_del.text().replace(' ','_').lower() mp.remove_stock(stock_name,stock_del_date_time) def call_red(self): now = datetime.datetime.now() stock_red_date_time = now.strftime("%Y-%m-%d %H:%M") stock_name = self.stock_name_red.text().replace(' ','_').lower() try: stock_val = -(int(self.stock_count_red.text())) print(stock_val) print(type(stock_val)) mp.update_quantity(stock_name, stock_val, stock_red_date_time) except Exception: print('Exception') def call_add(self): now = datetime.datetime.now() stock_call_add_date_time = now.strftime("%Y-%m-%d %H:%M") stock_name = self.stock_name_add.text().replace(' ','_').lower() stock_val = int(self.stock_count_add.text()) mp.update_quantity(stock_name, stock_val, stock_call_add_date_time) def stack3UI(self): table = mp.show_stock() print('show') print(table) layout = QVBoxLayout() self.srb = QPushButton() self.srb.setText("Get Search Result.") self.View = QTableWidget() self.lbl3 = QLabel() self.lbl_conf_text = QLabel() self.lbl_conf_text.setText("Enter the search keyword:") self.conf_text = QLineEdit() self.View.setColumnCount(3) self.View.setColumnWidth(0, 250) self.View.setColumnWidth(1, 250) self.View.setColumnWidth(2, 200) self.View.insertRow(0) self.View.setItem(0, 0, QTableWidgetItem('Stock Name')) self.View.setItem(0, 1, QTableWidgetItem('Quantity')) self.View.setItem(0, 2, QTableWidgetItem('Cost(Per Unit)')) layout.addWidget(self.View) layout.addWidget(self.lbl_conf_text) layout.addWidget(self.conf_text) layout.addWidget(self.srb) layout.addWidget(self.lbl3) self.srb.clicked.connect(self.show_search) self.stack3.setLayout(layout) def show_search(self): if self.View.rowCount()>1: for i in range(1,self.View.rowCount()): self.View.removeRow(1) x_act = mp.show_stock() x = [] if self.conf_text.text() != '': for i in range(0,len(x_act)): a = list(x_act[i]) if self.conf_text.text().lower() in a[0].lower(): x.append(a) else: x = mp.show_stock() if len(x)!=0: for i in range(1,len(x)+1): self.View.insertRow(i) a = list(x[i-1]) self.View.setItem(i, 0, QTableWidgetItem(a[0].replace('_',' ').upper())) self.View.setItem(i, 1, QTableWidgetItem(str(a[1]))) self.View.setItem(i, 2, QTableWidgetItem(str(a[2]))) self.View.setRowHeight(i, 50) self.lbl3.setText('Viewing Stock Database.') else: self.lbl3.setText('No valid information in database.') def stack4UI(self): layout = QVBoxLayout() self.srt = QPushButton() self.srt.setText("Get Transaction History.") self.Trans = QTableWidget() self.lbl4 = QLabel() self.lbl_trans_text = QLabel() self.lbl_trans_text.setText("Enter the search keyword:") self.trans_text = QLineEdit() self.Trans.setColumnCount(6) self.Trans.setColumnWidth(0, 150) self.Trans.setColumnWidth(1, 150) self.Trans.setColumnWidth(2, 150) self.Trans.setColumnWidth(3, 100) self.Trans.setColumnWidth(4, 100) self.Trans.setColumnWidth(5, 500) self.Trans.insertRow(0) self.Trans.setItem(0, 0, QTableWidgetItem('Transaction ID')) self.Trans.setItem(0, 1, QTableWidgetItem('Stock Name')) self.Trans.setItem(0, 2, QTableWidgetItem('Transaction Type')) self.Trans.setItem(0, 3, QTableWidgetItem('Date')) self.Trans.setItem(0, 4, QTableWidgetItem('Time')) self.Trans.setItem(0, 5, QTableWidgetItem('Transaction Specific')) self.Trans.setRowHeight(0, 50) layout.addWidget(self.Trans) layout.addWidget(self.lbl_trans_text) layout.addWidget(self.trans_text) layout.addWidget(self.srt) layout.addWidget(self.lbl4) self.srt.clicked.connect(self.show_trans_history) self.stack4.setLayout(layout) def show_trans_history(self): if self.Trans.rowCount()>1: for i in range(1,self.Trans.rowCount()): self.Trans.removeRow(1) path = os.path.join(os.path.dirname(os.path.realpath(__file__)),'transaction.txt') if os.path.exists(path): tsearch = open(path, 'r') x_c = tsearch.readlines() tsearch.close() x = [] if self.trans_text.text() != '': key = self.trans_text.text() for i in range(0,len(x_c)): a = x_c[i].split(" ") name = a[0] action = a[-2] if (key.lower() in name.lower()) or (key.lower() in action.lower()) : x.append(a) else: x = x_c.copy() for i in range(0,len(x)): x.sort(key=lambda a: a[4]) #print(x) tid = 1900001 for i in range(1,len(x)+1): self.Trans.insertRow(i) a = x[i-1].split(" ") if a[-2] == 'UPDATE': p = 'Quantity of Stock Changed from '+a[1]+' to '+a[2] elif a[-2] == 'INSERT': p = 'Stock added with Quantity : '+a[1]+' and Cost(Per Unit in Rs.) : '+a[2] elif a[-2] == 'REMOVE': p = 'Stock information deleted.' else: p = 'None' self.Trans.setItem(i, 0, QTableWidgetItem(str(tid))) self.Trans.setItem(i, 1, QTableWidgetItem(a[0].replace('_',' '))) self.Trans.setItem(i, 2, QTableWidgetItem(a[-2])) self.Trans.setItem(i, 3, QTableWidgetItem(a[3])) self.Trans.setItem(i, 4, QTableWidgetItem(a[4])) self.Trans.setItem(i, 5, QTableWidgetItem(p)) self.Trans.setRowHeight(i, 50) tid += 1 self.lbl4.setText('Transaction History.') else: self.lbl4.setText('No valid information found.') def display(self, i): self.Stack.setCurrentIndex(i) if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) login = Login() if login.exec_() == QtWidgets.QDialog.Accepted: window = Example() sys.exit(app.exec_())
This Stock Management System Project in Python also includes a downloadable Project With Source Code for free, just find the downloadable source code below and click to start downloading.
By the way, if you are new to Python programming and don’t have any idea what Python IDE to use, I have here a list of the Best Python IDE for Windows, Linux, and Mac OS for you.
I also have here How to Download and Install the Latest Version of Python on Windows.
To start executing a Stock Management System Project in Python, make sure that you have installed Python on your computer.
Stock Management System Project in Python: Steps on how to run the project
Time needed: 5 minutes
These are the steps on how to run a Stock Management System Project in Python
- Step 1: Download Source Code
First, find the downloadable source code below and click to start downloading the source code file.
- Step 2: Extract File
Next, after finished to download the file, go to the file location right-click the file, and click extract.
- Step 3: Open Project Path and Open CMD (Command Prompt).
In order for you to run the project, you just need to open the project path and type CMD. The first thing you need to do is type py init_db.py in order to create a database. Next is type py manipulation.py, and last is py stockmanager.py. That’s all; the program will run right away.
Download the Source Code below!
Summary
This article is a way to enhance and develop our skills and logic ideas which is important in practicing the python programming language which is the most well-known and most usable programming language in many companies.
Related Articles
- Stock Management System In CodeIgniter With Source Code
- Stock Management System in PHP with Source Code
- Stock Management System Project In Java With Source Code
- Stock Management System Project in Django with Source Code
- Stock Management System Project in C with Source Code
Inquiries
If you have any questions or suggestions about the Stock Management System Project in Python, please feel free to leave a comment below.
Hi ive been looking at creating a stock control system program and came across your project and wanted to ask a question. The full source code is it the 3rd block of code down on your page, do i still need to add the 1st and 2nd block of code at the top as it is a little confusing as still learning about python. I was thinking of giving it a go. Your help would be very much apreciated thank you. Brilliant project aswell.