Guru Harkrishan public school,
Hargobind enclave, delhi-110092
COMPUTER SCIENCE (083)
PROJECT
2020-2021
TOPIC:
MEDICINE STOCK CHECKING SYSTEM
GUIDED BY:- MRS.Pawandeep Kaur
SUBMITTED BY: Mandeep Singh
CLASS AND SECTION : XII-C
ROLL NUMBER: 28
TABLE OF CONTENTS
INTRODUCTION TO PYTHON.
INTRODUCTION TO THE PROJECT.
ACKNOWLEDGEMENT.
SYSTEMREQUIREMENTS.
BACKEND DETAILS.
FRONTEND DETAILS.
MOTIVE.
SCREEN SHOTS OF EXECUTION.
BIBLIOGRAPHY.
LIMITATIONS.
CERTIFICATE.
INTRODUCTION TO PYTHON
Python is an interpreted, object-oriented, high-
level programming language with dynamic
semantics. Its high-level built in data structures,
combined with dynamic typing and dynamic
binding, make it very attractive for Rapid
Application Development, as well as for use as a
scripting or glue language to connect existing
components together. Python's simple, easy to
learn syntax emphasizes readability and
therefore reduces the cost of program
maintenance. Python supports modules and
packages, which encourages program
modularity and code reuse. The Python
interpreter and the extensive standard library
are available in source or binary form without
charge for all major platforms, and can be freely
distributed.
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.
ACKNOWLEDGEMENT
I thank my Computer Science teacher
Mrs.Pawandeep Kaur for guidance and
support. I am also thankful to our principal . I
would also thank to my parent for encouraging
during the course of this project. Finally, I
would like to thank CBSE for giving me this
opportunity to undertake this project.
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.
BACKEND DETAILS
Database Name: MEDICINE
Code:
Create Database Medicine;
Use Medicine;
Table Name: STOCK
Attributes:
Batch_no int(11) Primary Key
name varchar(50)
manuf varchar(50)
date_man date
date_exp date
quantity int
sell int
balance int
cost_unit int
Code:
CREATE TABLE STOCK(
Batch_no int(11) Primary Key,
name varchar(50),
manuf varchar(50) ,
date_man date,
date_exp date,
quantity int,
sell int,
balance int,
cost_unit int );
Table Name: DISPOSE
Attributes:
Batch_no int(11)
Name varchar(50)
date_exp date
amount int
Code:
CREATE TABLE DISPOSE(
Batch_no int(11),
Name varchar(50),
date_exp date,
amount int );
FRONT-END DETAILS
PROGRAM CODE
import sys
import random
import datetime
import mysql.connector
mycon=mysql.connector.connect(host='localhost',user='root'
,password='Mandeep',database='medicine')
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:'))
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():
print('\nTHANK YOU FOR USING THE APPLICATION')
sys.quit()
print('------------WELCOME TO MEDICINE STOCK
CHECKING SYSTEM-------------\n\n')
while(True):
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 VIEW QUANTITY,SELL,BALANCE
GRAPHICALLY')
print('PRESS 10 TO CLOSE THE APPLICATION')
choice=int(input('ENTER YOUR CHOICE : '))
if(choice==1):
Store()
elif(choice==2):
Search_by_Name()
elif(choice==3):
Search_by_Manu()
elif(choice==4):
Cost_Update()
elif(choice==5):
Sell()
elif(choice==6):
Available()
elif(choice==7):
Dispose()
elif(choice==8):
Search_Dispose()
elif(choice==9):
Graph()
else:
Close()
MOTIVE
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, soldamount, balance
amount of a particular medicine by graphical
analysis technique.
Globalized usage.
SCREEN SHOTS OF EXECUTION
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
VIEW QUANTITY,SELL,BALANCE
GRAPHICALLY
BIBLIOGRAPHY
BOOKS:
COMPUTER SCIENCE WITH PYTHON-BY
SUMITA ARORA
COMPUTER SCIENCE WITH PYTHON-BY
PREETI ARORA
PYTHON COOKBOOK
WEBSITES:
www.geeksforgeeks.org
https://docs.python.org/3/
https://www.w3schools.com/python/
LIMITATIONS
The project has no provision to calculate
annual turnover of the medicine unit.
The project does not incorporate the
provision of GST Calculation.
The project does not have the facility to
take care of the medicines which are to
be refunded i.e. there is no mechanism
to keep the account of the refunded
medicines.
CERTIFICATE
This is to certify that Mandeep Singh of
class XIIC, Guru Harkrishan Public
school,Hargobind enclave has successfully
completed his project in Computer Science
Practical for the AISSCE as prescribed by CBSE
in the year 2020-2021.
Roll No :
Sign. of Internal Sign. of External
_________________________