SAINIK SCHOOL GOPALGANJ
ACADEMIC YEAR: 2022-23
PROJECT REPORT ON
ELECTRICITY BILLING SYSTEM
Submitted for the fulfilment of
All India Senior Secondary Certificate Examination 2022-23
Conducted by
Central Board of Secondary Education
ROLL NO :
NAME :
CLASS : XII A
SUBJECT : COMPUTER SCIENCE
SUB CODE : 083
PROJECT GUIDE: Mr MANISH KUMAR
PGT (CS), SAINIK SCHOOL GOPALGANJ
1
SAINIK SCHOOL GOPALGANJ
CERTIFICATE
This is to certify that Cadet __________________ Roll No: ____________
has successfully completed the project Work entitled ELECTRICITY BILLING
SYSTEM in the subject Computer Science (083) laid down in the regulations of
CBSE for the purpose of Practical Examination in Class XII to be held in
Sainik School Gopalganj on______________.
(Manish Kumar)
PGT Comp Sci
Teacher IC
Examiner:
Signature:
Name: _______________
2
TABLE OF CONTENTS [ T O C ]
SER DESCRIPTION PAGE NO
01 ACKNOWLEDGEMENT
02 INTRODUCTION
03 OBJECTIVES OF THE PROJECT
04 PROPOSED SYSTEM
05 SYSTEM DEVELOPMENT LIFE CYCLE
06 SOURCE CODE
07 OUTPUT
08 TESTING
09 HARDWARE AND SOFTWARE REQUIREMENTS
10 BIBLIOGRAPHY
3
ACKNOWLEDGEMENT
Apart from the efforts of me, the success of any project depends largely on
the encouragement and guidelines of many others. I take this opportunity to express
my gratitude to the people who have been instrumental in the successful completion
of this project.
I express deep sense of gratitude to almighty God for giving me strength for
the successful completion of the project.
I express my heartfelt gratitude to my parents for constant encouragement
while carrying out this project.
I gratefully acknowledge the contribution of the individuals who contributed in
bringing this project up to this level, who continues to look after me despite my flaws,
I express my deep sense of gratitude to the luminary The Principal, Sainik
School Gopalganj who has been continuously motivating and extending their
helping hand to us.
I am overwhelmed to express my thanks to The Vice Principal for providing
me an infrastructure and moral support while carrying out this project in the school.
My sincere thanks to Mr Manish Kumar, Teacher In-charge, A guide,
Mentor all the above a friend, who critically reviewed my project and helped in
solving each and every problem, occurred during implementation of the project
The guidance and support received from all the members who contributed
and who are contributing to this project, was vital for the success of the project. I am
grateful for their constant support and help.
4
PROJECT ON ELECTRICITY BILLING SYSTEM
INTRODUCTION
The ELECTRICITY BILLING SYSTEM enables the customers to pay the bill
with ease. It helps the owner of the electricity billing system in maintaining a solid
record of the customers and ensures the bill payment. It also helps the customers to
pay bill from anywhere in the world at anytime within a frasction of seconds.
OBJECTIVES OF THE PROJECT
The objective of this project is to let the students apply the programming
knowledge into a real- world situation/problem and exposed the students how
programming skills helps in developing a good software.
1. Write programs utilizing modern software tools.
2. Apply object oriented programming principles effectively when developing
small to medium sized projects.
3. Write effective procedural code to solve small to medium sized problems.
4. Students will demonstrate a breadth of knowledge in computer science, as
exemplified in the areas of systems, theory and software development.
5. Students will demonstrate ability to conduct a research or applied Computer
Science project, requiring writing and presentation skills which exemplify
scholarly style in computer science.
5
PROPOSED SYSTEM
Today one cannot afford to rely on the fallible human beings of be really
wants to stand against today’s merciless competition where not to wise saying “to
err is human” no longer valid, it’s out-dated to rationalize your mistake. So, to keep
pace with time, to bring about the best result without malfunctioning and greater
efficiency so to replace the unending heaps of flies with a muchsophisticated hard
disk of the computer.
One has to use the data management software. Software has been an ascent
in atomizationvarious organisations. Many software products working are now in
markets, which have helped in making the organizations work easier and efficiently.
Data management initially hadto maintain a lot of ledgers and a lot of paperwork has
to be done but now software producton this organization has made their work
fasterand easier. Now only this software has to beloaded on the computer and work
can be done.
This prevents a lot of time and money. Thework becomes fully automated and
any information regarding the organization can beobtained by clicking the button.
Moreover, nowit’s an age of computers of and automatingsuch an organization gives
the better look.
6
SYSTEM DEVELOPMENT LIFE CYCLE (SDLC)
Software Development Life Cycle, SDLC for short, is a well-defined, structured
sequence of stages in software engineering to develop the intended software
product.
SDLC Activities
SDLC provides a series of steps to be followed to design and develop a software
product efficiently. SDLC framework includes the following steps:
Communication
This is the first step where the user initiates the request for a desired software
product. He contacts the service provider and tries to negotiate the terms. He
submits his request to the service providing organization in writing.
Requirement Gathering
7
This step onwards the software development team works to carry on the project.
The team holds discussions with various stakeholders from problem domain and
tries to bring out as much information as possible on their requirements. The
requirements are contemplated and segregated into user requirements, system
requirements and functional requirements. The requirements are collected using a
number of practices as given -
studying the existing or obsolete system and software,
conducting interviews of users and developers,
referring to the database or
collecting answers from the questionnaires.
Feasibility Study
After requirement gathering, the team comes up with a rough plan of software
process. At this step the team analyzes if a software can be made to fulfill all
requirements of the user and if there is any possibility of software being no more
useful. It is found out, if the project is financially, practically and technologically
feasible for the organization to take up. There are many algorithms available, which
help the developers to conclude the feasibility of a software project.
System Analysis
At this step the developers decide a roadmap of their plan and try to bring up the
best software model suitable for the project. System analysis includes
Understanding of software product limitations, learning system related problems or
changes to be done in existing systems beforehand, identifying and addressing the
impact of project on organization and personnel etc. The project team analyzes the
scope of the project and plans the schedule and resources accordingly.
Software Design
Next step is to bring down whole knowledge of requirements and analysis on the
desk and design the software product. The inputs from users and information
gathered in requirement gathering phase are the inputs of this step. The output of
this step comes in the form of two designs; logical design and physical design.
Engineers produce meta-data and data dictionaries, logical diagrams, data-flow
diagrams and in some cases pseudo codes.
Coding
This step is also known as programming phase. The implementation of software
design starts in terms of writing program code in the suitable programming
language and developing error-free executable programs efficiently.
Testing
An estimate says that 50% of whole software development process should be
tested. Errors may ruin the software from critical level to its own removal. Software
8
testing is done while coding by the developers and thorough testing is conducted by
testing experts at various levels of code such as module testing, program testing,
product testing, in-house testing and testing the product at user’s end. Early
discovery of errors and their remedy is the key to reliable software.
Integration
Software may need to be integrated with the libraries, databases and other
program(s). This stage of SDLC is involved in the integration of software with outer
world entities.
Implementation
This means installing the software on user machines. At times, software needs
post-installation configurations at user end. Software is tested for portability and
adaptability and integration related issues are solved during implementation.
Operation and Maintenance
This phase confirms the software operation in terms of more efficiency and less
errors. If required, the users are trained on, or aided with the documentation on how
to operate the software and how to keep the software operational. The software is
maintained timely by updating the code according to the changes taking place in
user end environment or technology. This phase may face challenges from hidden
bugs and real-world unidentified problems.
Disposition
As time elapses, the software may decline on the performance front. It may go
completely obsolete or may need intense upgradation. Hence a pressing need to
eliminate a major portion of the system arises. This phase includes archiving data
and required software components, closing down the system, planning disposition
activity and terminating system at appropriate end-of-system time.
9
SOURCE CODE
import mysql.connector as sql , random , datetime as dt
import matplotlib.pyplot as plt
conn=sql.connect(host='localhost',user='root',passwd='manager'
,database='EBS')
if conn.is_connected():
print("successfully connected")
c='YES' or "yes" or 'Yes'
V='YES' or "yes" or 'Yes'
c1=conn.cursor()
while c=='YES' or "yes" or 'Yes':
print('************************WELCOME TO ELECTRICITY
BILLING SYSTEM************************')
print(dt.datetime.now())
print('1.NEW USER')
print('2.EXISTING USER')
print('3.EXIT')
choice1=int(input('ENTER YOUR CHOICE:'))
if choice1==1:
username=input("Enter your username number :")
password=input("Enter your password:")
confirmpasswd=input("Confirm your password:")
if password==confirmpasswd:
info1="insert into newuser
values('{}','{}','{}')".format(username,password,confirmpasswd
)
c1.execute(info1)
conn.commit()
c=input("do you want to continue?(yes or no)")
else:
print('your confirm password is incorrect')
print('Try again')
c=input("do you want to continue?(yes or no)")
elif choice1==2:
username=input('Enter your username:')
password=input('Enter your password:')
info2="select * from newuser where username='{}' and
password='{}'".format(username,password)
c1.execute(info2)
data=c1.fetchall()
while V=='YES' or "yes" or 'Yes':
10
if any(data):
print('************************WELCOME TO
ELECTRICITY BILLING SYSTEM************************')
print("1.ACCOUNT SETTINGS")
print("2.TRANSACTION")
print("3.VIEW CUSTOMER DETAILS")
print("4.GRAPHICAL REPRESENTATION")
print('5.EXIT')
choice2=int(input('ENTER YOUR CHOICE'))
if choice2==1:
print('1.NEW CUSTOMER')
print('2.DELETE EXISTING ACCOUNT')
choice12=int(input('ENTER YOUR CHOICE:'))
if choice12==1:
accountno=random.randrange(1000000,999
9999,10)
print("your accountno is",accountno)
boxid=input("enter your mete box ID:")
bankname=input('Enter your BANK
NAME :')
bankbranch=input('Enter your BANK
BRANCH :')
name=input('Enter your name :')
address=input('Enter your address :')
areacode=int(input('Enter your area
PIN CODE :'))
phoneno=int(input('Enter your PHONE
NUMBER :'))
email=input('Enter your email :')
info2="insert into AddNewCustomer
values({},'{}','{}','{}','{}',{},
{},'{}','{}')".format(accountno,bankname,bankbranch,name,addre
ss,areacode,phoneno,email,boxid)
c1.execute(info2)
conn.commit()
V=input("do you want to continue?(yes
or no)")
if V=='yes':
continue
else:
break
elif choice12==2:
acc=input("ENTER YOUR ACCOUNT
NUMBER:")
use=input("ENTER YOUR USERNAME:")
11
info6=c1.execute("delete from
Transaction where accountno='{}'".format(acc))
info7=c1.execute("delete from
AddNewCustomer where accountno='{}'".format(acc))
info8=c1.execute("delete from newuser
where username='{}'".format(use))
c1.execute(info6)
c1.execute(info7)
c1.execute(info8)
conn.commit()
print("THANK YOU FOR USING OUR
SOFTWARE,YOUR ACCOUNT IS SUCCESFULLY DELETED")
V=input("do you want to continue?(yes
or no)")
if V=='yes':
continue
else:
break
elif choice2==2:
accountno=int(input('Enter your account
number :'))
info10="select * from Transaction where
accountno="+str(accountno)
c1.execute(info10)
data3=c1.fetchall()
for row in data3:
paid=row[6]
if paid=='yes':
print('you have already paid the
bill')
break
else:
unit=random.randint(0,101)
print('Dear customer, you have used
',unit,'units of electricity.')
print('One unit of curent is 150
ruppees')
amount=150*unit
toda=dt.date.today()
deadline=dt.date(2020,1,30)
if deadline<toda:
fine=(toda-deadline)*30
totamt=amount+fine
12
print('you have dealyed for
',toda-deadline,'days.The fine per day is 30 rupees.')
GST=(15/100)*totamt
totalamt=totamt+GST
print('Pleae payup
',totalamt,'rupees inclding GST')
p=input("Please Enter YES to
transact")
if p=="YES"or 'Yes'or'yes':
print("Transaction
successful")
print("You have paid the
bill")
else:
print('plz pay the bill
sooner')
else:
totamt=0
GST=(15/100)*amount
totalamt=amount+GST
print('Pleae payup
',totalamt,'rupees inclding GST')
p=input("Please Enter YES to
transact")
if p=="YES":
print("Transaction
successful")
print("You have paid the
bill")
else:
print('plz pay the bill
sooner')
info3="insert into Transaction
values({},{},'{}',{},{},
{},'{}')".format(accountno,unit,toda,totamt,GST,totalamt,p)
c1.execute(info3)
conn.commit()
V=input("do you want to continue?(yes
or no)")
if V=='yes':
continue
else:
break
elif choice2==3:
13
accountno=int(input('Enter your account
number :'))
info4="select * from AddNewCustomer where
accountno=" + str(accountno)
c1.execute(info4)
data1=c1.fetchall()
for row in data1:
print(" Account Number: ", row[0])
print("bankname:",row[1])
print("bankbranch:",row[2])
print("Person name:",row[3])
print("Your meter device ID=",row[8])
print("Residential address:",row[4])
print("area code:",row[5])
print("phone number:",row[6])
print("email:",row[7])
info5="select * from Transaction where
accountno=" + str(accountno)
c1.execute(info5)
data2=c1.fetchall()
for row in data2:
print(" Unit : ",row[1])
print(" paid on:",row[2])
print("amount to be paid without
GST:",row[3])
print("GST=",row[4])
print("amount to be paid including
GST:",row[5])
V=input("do you want to continue?(yes or
no)")
if V=='yes':
continue
else:
break
elif choice2==4:
info9="select accountno,totalamt from
Transaction"
c1.execute(info9)
L1,L2,=[],[]
for i in c1.fetchall():
L1.append(i[0])
L2.append(i[1])
plt.plot(L1,L2)
plt.title("GRAPH")
14
plt.show()
V=input("do you want to continue?(yes or
no)")
if V=='yes':
continue
else:
break
elif choice2==5:
print( "T
HANK YOU!!!! VISIT AGAIN!!!!")
break
c='yes'
else:
print('username / password is incorrect')
break
c=input("do you want to try again?(yes or
no)")
else:
print( "THANK
YOU!!!! VISIT AGAIN!!!!")
V='no'
elif choice1==3:
print( "THANK
YOU!!!! VISIT AGAIN!!!!")
c='no'
break
else:
print("invalid choice")
c=input("do you want to try again?(yes or no)")
else:
print( "THANK YOU!!!!
VISIT AGAIN!!!!")
c='no'
import mysql.connector as sql
15
conn =
sql.connect(host='localhost',user='root',password='manager',da
tabase='EBS')
if conn.is_connected():
print("successfully connected")
c1=conn.cursor()
c1.execute('create table newuser(username VARCHAR(100) primary
key,password VARCHAR(100),confirmpasswd VARCHAR(100))')
c1.execute('create table AddNewCustomer(accountno int primary
key,bankname VARCHAR(25),bankbranch VARCHAR(25),name
VARCHAR(25),address VARCHAR(100),areacode INT(6),phoneno
INT(15),email VARCHAR(25),boxid VARCHAR(25))')
c1.execute('create table Transaction(accountno INT(10) ,unit
INT(10),toda VARCHAR(25),totamt INT(10),GST INT(10),totalamt
INT(10),p VARCHAR(25) , foreign key(accountno) references
AddNewCustomer(accountno))')
print("table created")
OUTPUT
16
TESTING
17
Software Testing is an empirical investigation conducted to provide
stakeholders with information about the quality of the product or service under test[1]
, with respect to the context in which it is intended to operate. Software Testing also
provides an objective, independent view of the software to allow the business to
appreciate and understand the risks at implementation of the software. Test
techniques include, but are not limited to, the process of executing a program or
application with the intent of finding software bugs.
It can also be stated as the process of validating and verifying that a software
program/application/product meets the business and technical requirements that
guided its design and development, so that it works as expected and can be
implemented with the same characteristics. Software Testing, depending on the
testing method employed, can be implemented at any time in the development
process, however the most test effort is employed after the requirements have been
defined and coding process has been completed.
TESTING METHODS
Software testing methods are traditionally divided into black box testing and
white box testing. These two approaches are used to describe the point of view that
a test engineer takes when designing test cases.
BLACK BOX TESTING
Black box testing treats the software as a "black box," without any knowledge
of internal implementation. Black box testing methods include: equivalence
partitioning, boundary value analysis, all-pairs testing, fuzz testing, model-based
testing, traceability matrix, exploratory testing and specification-based testing.
SPECIFICATION-BASED TESTING
Specification-based testing aims to test the functionality of software according
to the applicable requirements.[16] Thus, the tester inputs data into, and only sees
the output from, the test object. This level of testing usually requires thorough test
cases to be provided to the tester, who then can simply verify that for a given input,
the output value (or behaviour), either "is" or "is not" the same as the expected value
18
specified in the test case. Specification-based testing is necessary, but it is
insufficient to guard against certain risks
ADVANTAGES AND DISADVANTAGES
The black box tester has no "bonds" with the code, and a tester's perception
is very simple: a code must have bugs. Using the principle, "Ask and you shall
receive," black box testers find bugs where programmers don't. But, on the other
hand, black box testing has been said to be "like a walk in a dark labyrinth without a
flashlight," because the tester doesn't know how the software being tested was
actually constructed.
That's why there are situations when (1) a black box tester writes many test
cases to check something that can be tested by only one test case, and/or (2) some
parts of the back end are not tested at all. Therefore, black box testing has the
advantage of "an unaffiliated opinion," on the one hand, and the disadvantage of
"blind exploring," on the other.
WHITE BOX TESTING
White box testing, by contrast to black box testing, is when the tester has
access to the internal data structures and algorithms (and the code that implement
these)
Types of white box testing:-
The following types of white box testing exist:
api testing - Testing of the application using Public and Private APIs.
Code coverage - creating tests to satisfy some criteria of code
coverage.
For example, the test designer can create tests to cause all statements in the
program to be executed at least once.
fault injection methods.
mutation testing methods.
static testing - White box testing includes all static testing.
19
CODE COMPLETENESS EVALUATION
White box testing methods can also be used to evaluate the completeness of
a test suite that was created with black box testing methods. This allows the software
team to examine parts of a system that are rarely tested and ensures that the most
important function points have been tested.
Two common forms of code coverage are:
FunctionCoverage: Which reports on functions executed and
StatementCoverage:Which reports on the number of lines executed to
complete the test.
They both return coverage metric, measured as a percentage
20
HARDWARE AND SOFTWARE REQUIREMENTS
I.OPERATING SYSTEM : WINDOWS 7 AND ABOVE
II. PROCESSOR : PENTIUM(ANY) OR AMD
ATHALON(3800+- 4200+ DUALCORE)
III. MOTHERBOARD : 1.845 OR 915,995 FOR PENTIUM 0R MSI
K9MM-V VIAK8M800+8237R PLUS
CHIPSET FOR AMD ATHALON
IV. RAM : 512MB+
V. Hard disk : SATA 40 GB OR ABOVE
VI. CD/DVD r/w multi drive combo: (If back up required)
VII. FLOPPY DRIVE 1.44 MB : (If Backup required)
VIII. MONITOR 14.1 or 15 -17 inch
IX. Key board and mouse
X. Printer : (if print is required – [Hard copy])
SOFTWARE REQUIREMENTS:
I. Windows OS
II. Python
21
BIBLIOGRAPHY
1. Computer science With Python - Class XI By : SumitaArora
2. Website: https://www.w3resource.com
***
22