Project 36
Project 36
INTRODUCTION
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
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 outdated to rationalize your mistake. So, to keep
pace with time, to bring about the best result without malfunctioning and greater
One has to use the data management software. Software has been an ascent
markets, which have helped in making the organizations work easier and efficiently.
Data management initially had to maintain a lot of ledgers and a lot of paperwork has
to be done but now software production in this organization has made their work
faster and easier. Now only this software has to be loaded on the computer and work
can be done.
This prevents a lot of time and money. The work becomes fully automated
and any information regarding the organization can be obtained by clicking the
button. Moreover, now it’s an age of computers and automating such an organization
INITIATION PHASE
the need including questioning the need for technology, i.e., will a change in
the business process offer a solution?
● Identify basic functional and data requirements to satisfy the business need.
● Establish system boundaries; identify goals, objectives, critical success
functional requirements
● It may include several trade-off decisions such as the decision to use COTS
● The ITPR must be approved by the State CIO before the project can move
forward.
REQUIREMENTS ANALYSISPHASE
This phase formally defines the detailed functional user requirements using
high-level requirements identified in the Initiation, System Concept, and Planning
phases. It also delineates the requirements in terms of data, system performance,
security, and maintainability requirements for the system. The requirements are
defined in this phase to alevel of detail sufficient for systems design to proceed. They
need to be measurable, testable, and relate to the business need or opportunity
identified in the Initiation Phase. The requirements that will be used to determine
acceptance of the system are captured in the Test and Evaluation MasterPlan.
● Further define and refine the functional and data requirements and document
(i.e., verify what information drives the business process, what information is
generated, who generates it, where does the information go, and who
processes it),
● Develop detailed data and process models (system inputs, outputs, and the
process.
● Develop the test and evaluation requirements that will be used to determine
DESIGN PHASE
● Preparing detailed logic specifications for each software module. The result is
a draft System Design Document which captures the preliminary design for
the system.
the user. Once these documents have been approved by the Agency CIO and
Business Sponsor, the final System Design Document is created to serve as
the Critical/Detailed Design for the system.
conducted during the integration and test phase. The user, with those
responsible for quality assurance, validates that the functional requirements,
as defined in the functional requirements document, are satisfied by the
developed or modified system. OIT Security staff assess the system security
and issue a security certification and accreditation prior to
installation/implementation.
by end users
● Testing as a deployed system with end users working together with contract
personnel
IMPLEMENTATION PHASE
This phase is initiated after the system has been tested and accepted by the
user. In this phase, the system is installed to support the intended business
functions. System performance is compared to performance objectives established
during the planning phase. Implementation includes user notification, user training,
installation of hardware, installation of software onto production computers, and
integration of the system into daily work processes. This phase continues until the
system is operating in production in accordance with the defined user requirements.
**********************************************************************************
import mysql.connector as mq
def menu():
print("\t\t\t ONLINE TELEPHONE BILLING SYSTEM")
print("\t\t\t ===============================\n")
print("\t\t\t\t MAIN MENU")
print("\t\t\t\t =========\n")
print("\t\t1. Register User \t 2. Search customer \n")
print("\t\t3. Update Customer \t 4. Generate Bill \n")
print("\t\t5. Delete Customer \t 6. Display records \n")
print("\t\t7. Help \t 8. Exit \n")
def register():
print("\n\t\t\tNew Customer Registration.....")
print("\t\t\t==============================\n")
print("Details of the customer are phone_no, name, address, aadhar_no respectively:")
ph=input("Enter your Phone number:")
n=input("Enter your Name:")
add=input("Enter your Address:")
adh=input("Enter your 12-digit Aadhar Card number:")
con=mq.connect(host="localhost",user="root",password="Calvin@0203",database="teleph
one")
cur=con.cursor()
query="insert into customer(Phno,name,address,aadhar_no,ftp)values({},'{}','{}','{}',
{})".format(ph,n,add,adh,0)
cur.execute(query)
con.commit()
print("\nSuccessfully Registered the user.....")
con.close()
def search():
print("\n\t\t\tSearch Customer.....")
print("\t\t\t====================\n")
print("Details of the customer are phone_no, name, address, aadhar_no, bill,status(paid
or unpaid), first time payer(yes:0/no:1) respectively:")
ph=input("\nEnter your phone number:")
con=mq.connect(host="localhost",user="root",password="Calvin@0203",database="teleph
one")
cur=con.cursor()
query="select * from customer where Phno={}".format(ph)
cur.execute(query)
res=cur.fetchall()
if res==[]:
print("Customer does not exist.....")
else:
print(res)
con.close()
def modify():
print("\n\t\t\tUpdate Customer Data.....")
print("\t\t\t=========================\n")
ph=input("\nEnter your phone number:")
con=mq.connect(host="localhost",user="root",password="Calvin@0203",database="teleph
one")
cur=con.cursor()
query="select * from customer where Phno={}".format(ph)
cur.execute(query)
res=cur.fetchall()
if res==[]:
print("Customer does not exist.....")
else:
print("1. Name\n2. Address\n3. Aadhar_no")
ch=int(input("Enter choice to update:"))
if ch==1:
n=input("Enter new name:")
query="update customer set name='{}' where phno={}".format(n,ph)
cur.execute(query)
con.commit()
print("Successfully updated name.....")
elif ch==2:
add=input("Enter new address:")
query="update customer set address='{}' where phno={}".format(add,ph)
cur.execute(query)
con.commit()
print("Successfully updated address.....")
elif ch==3:
adr=input("Enter new aadhar_no:")
query="update customer set aadhar_no='{}' where phno={}".format(adr,ph)
cur.execute(query)
con.commit()
print("Successfully updated aadhar_no.....")
else:
print("Please choose the correct choice.....")
con.close()
def billing():
print("\t\t\tBilling.....")
print("\t\t\t============\n")
ph=input("\nEnter your phone number:")
con=mq.connect(host="localhost",user="root",password="Calvin@0203",database="teleph
one")
cur=con.cursor()
query="select * from customer where phno={}".format(ph)
cur.execute(query)
res=cur.fetchall()
if res==[]:
print("Customer does not exist.....")
else:
calls=int(input("Enter number of calls:"))
bill=0
finalbill=0
ftime=0
next50to100_=0
next100to150_=0
over150_=0
if res[0][6]==0:
ftime=0
if calls>150:
bill=bill+(calls-150)*3 + 50*2 + 50*1
next50to100_=50
next100to150_=100
over150_=(calls-150)*3
elif 100<calls<=150:
bill=bill+(calls-100)*2 + 50*1
next100to150_=(calls-100)*2
next50to100_=50
elif 50<calls<100:
bill=bill+(calls-50)*1
next50to100_=(calls-50)*1
elif res[0][6]==1:
ftime=1
if calls>150:
bill=bill+(calls)*3
over150_=calls*3
elif 100<calls<150:
bill=bill+(calls)*2
next100to150_=calls*2
elif calls<100:
bill=bill+(calls)*1
next50to100_=calls*1
print("\t\t\tBilling.....")
print("\t\t\t============\n")
old_bill=res[0][4]
if res[0][5]!="Paid":
print("\n\t\tPending bill amount:",old_bill)
if ftime==0:
print("\n\t\tFirst 50 free calls:",0)
print("\n\t\tNext 51-100 [email protected]/call:",next50to100_)
print("\n\t\tNext 100-150 [email protected]/call:",next100to150_)
print("\n\t\tNext over 150 [email protected]/call:",over150_)
else:
print("\n\t\tTotal calls",calls)
if calls>150:
print("\n\t\tover 150 calls is Rs3.0/call =",over150_)
elif 100<calls<150:
print("\n\t\tbetween 150-100 calls is Rs2.0/call =",next100to150_)
else:
print("\n\t\tbelow 100 calls is Rs1.0/call =",next50to100_)
print("\t\t========================")
ch=input("\nPress Y to pay the bill now or any other key to pay later:")
if ch in ['Y','y','yes','Yes']:
if ftime==0:
query="update customer set bill='{}',status='Paid',ftp=1 where
phno={}".format(finalbill,ph)
else:
query="update customer set bill='{}',status='Paid' where
phno={}".format(finalbill,ph)
cur.execute(query)
con.commit()
print("Successfully paid the bill.....")
else:
query="update customer set bill='{}',status='Unpaid',ftp=1 where
phno={}".format(finalbill,ph)
cur.execute(query)
con.commit()
print("Please make payment as soon as possible.....")
con.close()
def remove():
ph=input("\nEnter your phone number:")
con=mq.connect(host="localhost",user="root",password="Calvin@0203",database="teleph
one")
cur=con.cursor()
query="select * from customer where phno={}".format(ph)
cur.execute(query)
res=cur.fetchall()
if res==[]:
print("Customer does not exist.....")
else:
ch=input("Are you sure to delete the customer.....Yes/No:")
if ch in ['Y', 'y','yes', 'Yes']:
query="delete from customer where Phno={}".format(ph)
cur.execute(query)
con.commit()
print("Successfully deleted from database.....")
else:
print("No changes made in the databse")
con.close()
def display():
con=mq.connect(host="localhost",user="root",password="Calvin@0203",database="teleph
one")
cur=con.cursor()
query="select * from customer"
cur.execute(query)
res=cur.fetchall()
con.commit()
fh=open('tele_file.txt','w+')
for eachrecord in res:
strformat=str(eachrecord)
fh.write(strformat)
fh.write('\n')
fh.flush()
fh.close
fh=open('tele_file.txt',"r")
readr=fh.read()
print(readr)
fh.close()
con.close()
def helping():
print("\t\t\tHelp")
print("\t\t\t====")
print("First 50 calls are free")
print("51-100 calls are 1.0 Rs per call")
print("101-150 calls are 2.0 Rs per call")
print("Above 150 calls are 3.0 Rs per call")
while True:
menu()
ch=int(input("Enter your choice:"))
if ch==1:
register()
elif ch==2:
search()
elif ch==3:
modify()
elif ch==4:
billing()
elif ch==5:
remove()
elif ch==6:
display()
elif ch==7:
helping()
elif ch==8:
exit()
else:
print("Please choose the correct choice and try again")
#registering customer
#searching customer
#updating customer
#generating bill for a first time payer(1st 50
calls free offer applicable)
#generating bill for same customer again(1st
50calls free offer NOT applicable)
#refusing to pay bill generated for first time
payer
#finally paying total bill for customer who
refused to pay before
#deleting customer
#displaying records from file
#help
# exit
**********************************************************************************