MAHARISHI VIDYA MANDIR
SENIOR SECONDARY SCHOOL
POLACHERY
COMPUTER SCIENCE PROJECT
MEDICINE STOCK CHECKING
SYSTEM
NAME- T.S.HARSHITHA
CLASS- XII-A2
YEAR-2021-2022
CONTENTS
1.BONAFIDE CERTIFICATE
2. ACKNOWLEDGEMENT
3. INTRODUCTION TO THE PROJECT
4. PROBLEM DEFINITION
5. PROBLEM ANALYSIS
6. HARDWARE AND SOFTWARE REQUIREMENTS
7. FUTURE ENHANCEMENT OUTPUT
8. SOURCE CODE
9.OUTPUT
10.BIBLIOGRAPHY
INTRODUCTION TO THE PROJECT
The Medicine Stock Checking System software is an ERP software used by
medicine shops or medicine dealers for wholesale/retail business. This software
stores details of medicines and helps us to search medicines by their name and
manufacturer. It is possible to edit medicine cost and sell the medicine. The
balance i.e. due amount of the stock can also be checked. If the medicine is
expired ,the system has the provision to dispose it to the system specified
warehourse. The program is also useful to check the details of the expired
medicines.
PROBLEM DEFINITION
The aim of our project is to make Medicine Stock Checking System software is
Organized and computerized to add ,dispose ,update and give graphical
representation of the stock of medicines using Python connectivity with
SQL,SQL (Structed Query Language) and Matplotlib.
PROBLEM ANALYSIS
System Analysis is the process of gathering and interpreting facts, diagnosing
problem and using the information to recommend improvements to the system.
The Medicine Stock Checking System software is an ERP software used by
medicine shops or medicine dealers for wholesale/retail business. This software
stores details of medicines and helps us to search medicines by their name and
manufacturer. It is possible to edit medicine cost and sell the medicine. The
balance i.e. due amount of the stock can also be checked. If the medicine is
expired ,the system has the provision to dispose it to the system specified
warehourse. The program is also useful to check the details of the expired
medicines.
SYSTEM REQUIREMENTS
HARDWARE REQUIREMENT:
⦁ Printer- to print the required documents of the project.
⦁ Compact Drive
⦁ Proccesor: Pentium III and above
⦁ RAM: 256 MB(minimum)
⦁ Hard-Disk : 20 GB(minimum)
SOFTWARE REQUIREMENT:
⦁ Windows 7 or higher
⦁ My-SQL server 5.5 or higher (as backend)
⦁ Python idle 3.6 or higher or spyder (as frontend).
⦁ Microsoft Word 2010 or higher for documentation.
FUTURE ENHANCEMENT
⦁ To maintain the medicine stock details, sell medicine, update stock details,
providing medicine amount enquiry by simple search technique.
⦁ To dispose medicines which are expired and provide the facility to search
the disposed medicines.
⦁ To display the amount, sold amount, balance amount of a particular
medicine by graphical analysis technique.
⦁ Globalized usage.
SOURCE CODE
import os
import random
import datetime
import mysql.connector
import matplotlib.pyplot as plt
mycon=mysql.connector.connect(host='localhost',user='root',password='har12',database='Me
dicineStock')
mycur=mycon.cursor()
def Store():
sql="Insert into
stock(batch_no,name,manuf,date_man,date_exp,quantity,sell,balance,cost_unit)values(%s,%
s,%s,%s,%s,%s,%s,%s,%s)"
print('\nPLEASE PROVIDE THE REQUIRED INFORMATION\n')
acc=int(input('\nENTER THE BATCH NUMBER:'))
nm=input('\nENTER THE NAME OF THE MEDICINE WITH POWER:')
addr=input('\nENTER THE NAME OF THE MANUFACTURER:')
dbs=input('\nENTER THE DATE OF MANUFACTURE(YYYY-MM-DD):')
dacc=input('\nENTER THE DATE OF EXPIRY(YYYY-MM-DD):')
quan=int(input('\nENTER THE QUANTITY OF THE IMPORTED MEDICINE:'))
sell=0
balance=quan
cost=int(input('\nENTER THE COST OF THE IMPORTED MEDICINE PER UNIT:'))
Graph= plt.show()
value=(acc,nm,addr,dbs,dacc,quan,sell,balance,cost)
try:
mycur.execute(sql,value)
print(nm,'ADDED TO THE STOCK')
mycon.commit()
except:
print('UNABLE TO ADD MEDICINE!!!!!')
def Search_by_Name():
ph=input('\nENTER THE MEDICINE NAME TO SEARCH:')
sql="Select * from Stock where name=%s"
value=(ph,)
mycur.execute(sql,value)
rec=mycur.fetchone()
if(rec==None):
print(ph,'IS NOT AVAILABLE')
else:
print('BATCH NUMBER:\t',rec[0])
print('MEDICINE NAME:\t',rec[1])
print('MANUFACTURER:\t',rec[2])
print('DATE OF MANUFACTURE:\t',rec[3])
print('DATE OF EXPIRY:\t',rec[4])
print('QUANITTY STORED:\t',rec[5])
print('INITIAL COST:\t',rec[8])
def Search_by_Manu():
ph=input('\nENTER THE MANUFACTURER NAME TO SEARCH:')
sql="Select name from Stock where manuf=%s"
value=(ph,)
mycur.execute(sql,value)
rec=mycur.fetchall()
if(rec==None):
print(ph,'IS A WRONG MANUFACTURER')
else:
print('----------MEDICINES MANUFACTURED BY',ph,'--------------------')
for nm in rec:
print(nm[0])
def Cost_Update():
sql="Update stock set cost_unit=%s where name=%s";
ph=input('\nENTER THE MEDICINE NAME TO CHANGE COST:')
addr=int(input('\nENTER THE NEW COST PER UNIT:'))
value=(addr,ph)
try:
mycur.execute(sql,value)
mycon.commit()
print('NEW COST OF',ph,'IS=RS',addr)
except:
print('UNABLE TO CHANGE COST!!!!')
def Sell():
sql="Update stock set sell=%s,balance=%s where name=%s";
ph=input('\nENTER THE MEDICINE NAME TO SELL:')
addr=int(input('\nENTER THE QUANTITY TO SELL:'))
sql2='select quantity from stock where name=%s'
value2=(ph,)
mycur.execute(sql2,value2)
rec=mycur.fetchone()
if(addr>rec[0]):
print('INSUFFICIENT STOCK IN HAND!!!!!!')
Return
else:
balance=rec[0]-addr
value=(addr,balance,ph)
try:
mycur.execute(sql,value)
mycon.commit()
print(addr,'UNITS OF',ph,'SOLD')
print(balance,'UNITS LEFT')
except:
print('UNABLE TO SELL MEDICINE!!!!')
def Available():
ph=input('\nENTER THE MEDICINE NAME TO SEARCH:')
sql="Select balance from Stock where name=%s"
value=(ph,)
mycur.execute(sql,value)
rec=mycur.fetchone()
if(rec==None):
print(ph,'IS NOT AVAILABLE')
else:
print(rec[0],'UNITS OF',ph,'IS AVAILABLE')
def Dispose():
sql="Insert into dispose(batch_no,name,date_exp,amount)values(%s,%s,%s,%s)"
nm=input('\nENTER THE MEDICINE NAME TO DISPOSE:')
sql2="Select batch_no,name,date_exp,balance from stock where name=%s and
date_exp<=%s"
t_date=datetime.date.today()
value2=(nm,t_date)
mycur.execute(sql2,value2)
rec=mycur.fetchone()
if(rec==None):
print(nm,'IS NOT EXPIRED YET')
else:
print(nm,'IS EXPIRED')
c=int(input('\nPRESS 1 TO DISPOSE IT:'))
if(c==1):
b=rec[0]
n=rec[1]
d=rec[2]
am=rec[3]
value=(b,n,d,am)
sql3='Delete from stock where name=%s'
value3=(n,)
try:
mycur.execute(sql,value)
mycon.commit()
print(n,'SUCCESSFULLY DISPOSED')
mycur.execute(sql3,value3)
mycon.commit()
except:
print('UNABLE TO DISPOSE MEDICINE')
else:
print('WARNING!!!!!',nm,'MUST BE DISPOSED LATER')
return
def Search_Dispose():
ph=input('\nENTER THE DISPOSED MEDICINE NAME TO SEARCH:')
sql="Select * from Dispose where name=%s"
value=(ph,)
mycur.execute(sql,value)
rec=mycur.fetchone()
if(rec==None):
print(ph,'IS NOT AVAILABLE')
else:
print('BATCH NUMBER:\t',rec[0])
print('MEDICINE NAME:\t',rec[1]
print('DATE OF EXPIRY:\t',rec[2])
print('BALANCE AMOUNT:\t',rec[3])
def Graph():
ad=input('ENTER MEDICINE NAME:')
sql='Select * from stock where name=%s'
value=(ad,)
mycur.execute(sql,value)
T=mycur.fetchone()
N=[T[5],T[6],T[7]]
L=['QUANTITY','SELL','BALANCE']
clr=('red','blue','green')
plt.bar(L,N,color=clr)
plt.xlabel('MEDICINE STATUS')
plt.ylabel('VALUES')
plt.title('MEDICINE QUANITTY-SELL-BALANCE')
plt.show()
def Close():
os.system('cls')
print('\nTHANK YOU FOR USING THE APPLICATION')
quit()
print('------------WELCOME TO MEDICINE STOCK CHECKING SYSTEM-------------
\n\n')
while(True):
os.system('cls')
print('\n\nPRESS 1 TO ADD A NEW MEDICINE')
print('PRESS 2 TO SEARCH A MEDICINE BY NAME')
print('PRESS 3 TO SEARCH A MEDICINE BY MANUFACTURER')
print('PRESS 4 TO UPDATE MEDICINE COST')
print('PRESS 5 TO SELL MEDICINE')
print('PRESS 6 TO CHECK AVAILABILITY')
print('PRESS 7 TO DISPOSE EXPIRED MEDICINE')
print('PRESS 8 TO SEARCH EXPIRED MEDICINE BY NAME')
print('PRESS 9 TO TO VIEW QUANTITY,SELL,BALANCE GRAPHICALLY')
print('PRESS 10 TO CLOSE THE APPLICATION')
choice=int(input('ENTER YOUR CHOICE : '))
if(choice==1):
os.system('cls')
Store()
elif(choice==2):
os.system('cls')
Search_by_Name()
elif(choice==3):
os.system('cls')
Search_by_Manu()
elif(choice==4):
os.system('cls')
Cost_Update()
elif(choice==5):
os.system('cls')
Sell()
elif(choice==6):
os.system('cls')
Available()
elif(choice==7):
os.system('cls')
Dispose()
elif(choice==8):
os.system('cls')
Search_Dispose()
elif(choice==9):
Graph()
elif(choice==10):
os.system('cls')
else:
Close()
OUTPUT
MAIN MENU
ADDING A NEW MEDCINE
SEARCHING MEDICINE BY NAME
SEARCHING MEDICINE BY MANUFACTURE
UPDATING MEDICINE COST
SELLING MEDICINE
CHECKING AVAILABILITY
DISPOSING MEDICINES
SEARCHING EXPIRED MEDICINE BY NAME
VIEW QUANTITY,SELL,BALANCE GRAPHICALLY
CLOSING THE APPLICATION
OUTPUT
• MAIN MENU
• ADDING A NEW MEDICINE
• SEARCHING MEDICINE BY NAME
• SEARCHING MEDICINE BY MANUFACTURER
• UPDATING MEDICINE COST
• SELLING MEDICINE
• CHECKING AVAILABILITY
• DISPOSING MEDICINES
• SEARCHING EXPIRED MEDICINE BY NAME
BIBLIOGRAPHY
BOOKS:
⦁ COMPUTER SCIENCE WITH PYTHON- BY SUMITA ARORA
⦁ PYTHON COOKBOOK
WEBSITES:
▪ www.geeksforgeeks.org
▪ https://docs.python.org/3/
▪ https://www.w3schools.com/python/