School
Logo
Name of School: ____________________
School Address: _____________________
_____________________
______________________
Academic Session: 2022-23
Roll No. : ________________
Name of Pupil : ___________________________
Class : XII
Subject : Computer Science
Subject Code : 083
Project Guide : ___________________________
CERTIFICATE
This is to certify that this project titled ISP
Customer and Feedback Management System is a
bonafide work of Master {Name of Student} of class
XII-{Section}, submitted to {Name of School}, for
consideration in the partial accomplishment of Senior
School Certificate Examination in Computer
Science(083) subject.
This original work was carried out by him under
my supervision in the academic year 2022-23. On the
basis of declaration made by him I recommend the
project for evaluation.
_____________ ______________
INTERNAL EXAMINER EXTERNAL EXAMINER
_____________ _____________
SCHOOL STAMP PRINCIPAL
ACKNOWLEDGEMENT
I wish to express my deep gratitude and
sincere thanks to the Principal, {Name of Principal}
and Vice Principal, {Name of Vice Principal} for his
encouragement and for the facilities that they have
provided for this project work.
I extend my heartly thanks to {Name of
Subject Teacher}, PGT Computer Science who guided
us to the successful completion of this project. I take this
opportunity to express my deep sense of gratitude for
their invaluable guidance and immense motivation which
has sustained my efforts at all stages of this project
work.
I cannot forget to offer my sincere thanks to my
fellow classmates who helped me carry out this
project work successfully and for their valuable
advice and support.
Name of Student
TABLE OF CONTENTS
S.No Description Page No.
1. Preface 1
2. Introduction to Project 2
3. The objective of the project 3
4. Scope of the Project 4
5. The Existing System 5
6. Proposed System 6
7. Input/Output Requirement 7
8. Hardware and Software Requirements 8
9. Flow Chart 9
10. Source Code 10
11. System Design 27
12. Database Dictionary 35
13. Security Control 37
14. Conclusion 38
15. Reference or Bibliography 39
Preface
One of my friend’s father is a manager of a firm which is providing an
internet service to the customer. I have visited their office previous week.
I saw they are managing work manually. Customers are waiting until the
entries done in the system. To start a new connection, it is taking 1 or more
days as after making entries their services supposed to start.
Similarly, many calls are coming for maintenance and complaints about
their internet services. Due to manual system, they are not able to track
the executive as well as it is tedious job to maintain the maintenance calls
manually.
This motivates us to make a software for them. So, I have collected the
required information and started working on it.
Aim: Developing a software for customer, maintenance calls and feedback
management
Title: ISP Customer and Feedback Management System
Problem Definition: Develop a software named ISP Customer and
Feedback Management System to manage new internet
connections and customer portfolios, maintenance calls and feedback
provided by customers.
Introduction to Project
This programme helps a firm named Mohit communications and
networking firm which provides an internet service.
This project has 4 main modules presented by menus. These modules are:
1. Login (User Management)
2. Connection (Customer Management)
3. Maintenance (Customer’s Query Management)
4. Feedback Management
This program starts with a login which requires an admin user and
password. The admin user is super and powerful user managed by the
system admin (us). Users can only manage the options provided to them
in the program.
The login username and password for admin is provided to the manager of
firm. This information is stored in MySQL table users in ISP database. By
this unauthorised user can’t login into the system.
After login a Welcome message will come with firm name and date along
with press enter to continue. When user press continue it will show the
main menu. Which allows to Create a new connection with customer’s
details, maintenance calls and feedback followed by their management.
The objective of the project
The objective of this project is to learn and apply the programming
knowledge into a real- world problem and exposed how programming skills
helps in developing a good software.
1. Write programs utilizing modern software tools.
2. Apply python programming principles effectively when developing
small to medium sized software.
3. Write effective procedural code to solve small to medium sized
problems.
4. Demonstrating a breadth of knowledge in computer science, as
exemplified in the areas of systems, theory and software
development.
5. Ability to conduct research or applied Computer Science project,
requiring writing and presentation skills which exemplify scholarly
style in computer science.
6. Students also will be able to learn and apply MySQL database and
how the front-end as well as back-end helps in software
development.
7. Python interface with MySQL helps to save the data generated by the
software.
8. This project also helps to research on the various aspects of a
business and customer management.
Scope of the project
In future we are planning to bring more advancement in this software
such as:
1. This project is useful for any firm that provides internet services or other
services to manage their customers and connections as well as
maintenance details and feedback management to improve the system.
2. In future we are planning to make this software available for more users
to manage various kinds of services and their customers data.
3. We are also planning to integrate this project with android, iOS and
other platforms so it can be available for the employees of firm to
manage it from their place and mobiles.
4. We are also going to add more modules and assign a manager for
different kind of categories of customer.
5. We will integrate GPS tracking to track the executive’s current location
and notify the customer when he generates a ticket for maintenance
call or any inquiry.
The Existing System
The existing system is manual. All the records and details are manually
recorded on registers and documents are stored in the files in the form
of hard copies.
Customer is visiting the office and the office executive is giving them a
form to register. Later on, the office executive makes this entry either
in register or MS Excel manually.
The existing system takes more time and very tedious job for an office
executive as that person is mostly gets engaged in the making data
entries.
This process is applied for all kinds of modules whether it is new
connection or maintenance call or feedback. It is getting more time to
search a record manually from the register or taking print out from excel
worksheet.
The proposed system
The proposed system will overcome with the limitations of existing
system. Firstly, there is no need to give any form or any other document
to customer. It can be easily managed on call as well.
Customer can make a call and provide the information online on email
or WhatsApp message. This information can be added by office
executives in the proposed system. It will save time and efforts of both
the customer and office executive.
The proposed system also helps in tracking the connection request,
maintenance call easily. When the work is done it will change the status
of maintenance call. Proposed system also helps in managing the
feedbacks and decision making.
Input/Output Requirements
Data for any system is like food for us. Data needs to be fed by user in
the system to work with a specific software. After processing the data
final result will be printed as output.
So as per this project is concern the input enter by user is as follows:
1. Login: For login system admin (we) have provided built in module
where username and password are provided to them and they can
login with the username and password. They cannot change or create
any user as they have to contact us for any user related queries.
2. New Connection: For a new connection customer data is required.
This data includes unique customer id, customer name, phone
number , year of starting internet service, address of customer.
3. Maintenance Call: For maintenance calls the maintenance ID is
generated by system automatically. Apart from this maintenance call
includes problem description, basic charges, status of call either
Open or Close, priority of call like urgent, normal etc.
4. Feedback: For feedback the program will prompt customer id and
feedback text.
Hardware and Software Requirements
Hardware Requirements
Processor : Intel Core i3 or higher
Hard Disk (Space) : 100 MB (Minimum)
1 GB (Recommended)
Ram : 1 GB
Keyboard : Any keyboard (QWERTY)
Mouse : Any standard mouse
Monitor : Any monitor with standard resolution
Software Requirements
Operating System : Windows 7 or higher (64-Bit)
Platform : Python 3.9
Database : MySQL SERVER 8.0 or higher
Languages : Python
Text Editor : Notepad
Flow Chart
Create Connection
Create maintenance
Call
New
View
Feedback/Suggestion
Customer
Modify
Management
Close Account
Login
View All requests
Maintenance
Close request
Management
Delete request
View
View
Feedback/Suggestion
Delete Feedback
Source Code
Source code for our project is as follows:
import mysql.connector as ms
m_id=0
def login():
cn=ms.connect(host="localhost",user="root",passwd="root",database
="ISP")
cur=cn.cursor()
un=input("Enter user name:")
pwd=input("Enter Password:")
s="select * from users"
cur.execute(s)
dt=cur.fetchall()
dt=list(dt)
if dt[0][0]==un and dt[0][1]==pwd:
print("Hello",un)
input("Press enter to continue...")
customer_menu()
else:
print("Something went wrong! Contact administrator!")
cn.close()
def customer_menu():
from time import gmtime,strftime
print("Welcome to Mohit Communications and Networking")
print("\t\t\t",strftime("%a,%d\%m\%Y",gmtime()),"\n")
input("Press enter to continue...")
print("1.Create a new connection")
print("2.Create a new maintenance Call")
print("3.New Feed Back/Suggestion")
print("4.Customer Management")
print("5.Maintenance Management")
print("6.View Feedback/Suggestion")
print("7.Exit")
choice=int(input("Enter your choice:"))
if choice==1:
cn=ms.connect(host="localhost",user="root",passwd="root",database
="ISP")
cur=cn.cursor()
c_id=int(input("Enter new customer ID:"))
c_name=input("Enter customer name:")
phno=input("Enter contact no.::")
year=int(input("Enter year:"))
address=input("Enter address:")
ins="insert into customer_profile
values({},'{}','{}',{},'{}')".format(c_id,c_name,phno,year,address)
cur.execute(ins)
print("Thank you Dear",c_name)
print("New connection created, Customer added.")
cn.commit()
cn.close()
customer_menu()
elif choice==2:
global m_id
connection = ms.connect(host='localhost',
database='isp',
user='root',
password='root')
sql_select_Query = "select * from customer_profile"
cr = connection.cursor()
cr.execute(sql_select_Query)
records = cr.fetchall()
c_id=int(input("Enter id:"))
flg=0
connection.close()
for i in records:
if i[0]==c_id:
print("Customer details found...")
print("Customer Name:",i[1])
print("Phone No.:",i[2])
print("Year of Start of Service:",i[3])
print("Address:",i[4])
m_id=int(input("Enter M_ID"))
pr=input("Define problem:")
charges=float(input("Enter charges:"))
sta=input("Open or Close:")
pri=input("Priority of Problem:")
ins="insert into maintenance
values({},'{}','{}',{},'{}','{}',{})".format(m_id,i[1],pr,charges,sta,pr
i,c_id)
cr.execute(ins)
print("Call is created. Thank you!",i[1])
connection.commit()
customer_menu()
flg=1
if flg==0:
print("Customer not found ... ")
customer_menu()
elif choice==3:
cn3=ms.connect(host="localhost",user="root",passwd="root",databas
e="ISP")
cur3=cn3.cursor()
cur3.execute("select cust_id,cust_name from
customer_profile")
dt3=cur3.fetchall()
c_id=int(input("Enter Customer ID:"))
flg=0
for i in dt3:
if i[0]==c_id:
print("Customer details found...")
print("Customer ID:",i[0])
print("Customer Name:",i[1])
f_id=int(input("Enter Feedback ID:"))
fb=input("Enter Feedback:")
ins="insert into suggestion
values({},'{}','{}',{})".format(f_id,i[1],fb,c_id)
cur3.execute(ins)
print("Feedback is accepted. Thank you!",i[1])
cn3.commit()
customer_menu()
flg=1
if flg==0:
print("Customer not found ... ")
customer_menu()
cn3.close()
elif choice==4:
print("Customer Management")
print('''
1. View all Customer Details
2. Modify customer details
3. Close Account
4. Exit
''')
ch=int(input("Enter your choice:"))
if ch==1:
cn=ms.connect(host='localhost',user='root',passwd='root',database='i
sp')
cur=cn.cursor()
sql_1="select * from customer_profile"
cur.execute(sql_1)
a=cur.fetchall()
c=0
for i in a:
c+=1
print("Row-",c,":",i)
customer_menu()
elif ch==2:
cn=ms.connect(host="localhost",user="root",passwd="root",database
="ISP")
cur=cn.cursor()
c_id=int(input("Enter customer id to modify:"))
cur.execute("select * from customer_profile where
cust_id={}".format(c_id))
dt=cur.fetchall()
cname=dt[0][1]
ph=dt[0][2]
add=dt[0][4]
rc=cur.rowcount
if rc>0:
c_n=input("Do you want to change name?(y/n):")
if c_n.lower()=='y':
cu_name=input("Enter new name:")
c_name=cu_name
else:
c_name=cname
p=input("Do you want to change phone number?(y/n):")
if p.lower()=='y':
pho=input("Enter new phone no.:")
p_no=pho
else:
p_no=ph
ad=input("Do you want to change address?(y/n):")
if ad.lower()=='y':
a=input("Enter New Address:")
ad=a
else:
ad=add
u="update customer_profile set
cust_name='{}',phoneno='{}',address='{}' where
cust_id={}".format(c_name,p_no,ad,c_id)
cur.execute(u)
print("Record Modified ... ")
cn.commit()
customer_menu()
else:
print("Record not found .. ")
customer_menu()
elif ch==3:
cn=ms.connect(host="localhost",user="root",passwd="root",database
="ISP")
cur=cn.cursor()
c_id=int(input("Enter customer id to close account:"))
cur.execute("select * from customer_profile where
cust_id={}".format(c_id))
dt=cur.fetchall()
rc=cur.rowcount
if rc>0:
q="delete from customer_profile where
cust_id={}".format(c_id)
cur.execute(q)
cn.commit()
print("Account Closed Successfully.")
customer_menu()
else:
print("Record not found...")
customer_menu()
elif ch==4:
customer_menu()
elif choice==5:
cn=ms.connect(host="localhost",user="root",passwd="root",database
="ISP")
cur=cn.cursor()
print('''
1. View All Requests
2. Close Request
3. Delete Request
4. Exit
''')
ch5=int(input("Enter your choice:"))
if ch5==1:
s="select * from maintenance"
cur.execute(s)
a=cur.fetchall()
for i in a:
print(i)
input("Press enter to continue...")
customer_menu()
elif ch5==2:
m=input("Enter ID to close the request:")
cur.execute("select * from maintenance where
mid='{}'".format(m))
dt=cur.fetchall()
rc=cur.rowcount
if rc>0:
cr=input("Do you want to update the charges
amount?(y/n)")
if cr.lower()=='y':
nc=float(input("Enter new charges:"))
cur.execute("update maintenance set
charges={},status='closed' where mid='{}'".format(nc,m))
cn.commit()
print("Request Closed, Customer has to pay
charges...")
customer_menu()
else:
cur.execute("update maintenance set status='closed'
where mid='{}'".format(m))
cn.commit()
customer_menu()
else:
print("Sorry! No maintence request found...")
customer_menu()
elif ch5==3:
m=input("Enter ID to delete the request:")
cur.execute("select * from maintenance where
mid='{}'".format(m))
dt=cur.fetchall()
rc=cur.rowcount
if rc>0:
cur.execute("delete from maintenance where
mid='{}'".format(m))
cn.commit()
print("Maintenance request deleted...")
customer_menu()
else:
print("Record not found...")
cusotmer_menu()
else:
print("Invalid choice:")
customer_menu()
elif choice==6:
cn=ms.connect(host="localhost",user="root",passwd="root",database
="ISP")
cur=cn.cursor()
print('''
1. View Feedback
2. Delete Feedback
3. Back
''')
ch6=int(input("Enter your choice:"))
if ch6==1:
cur.execute("select * from suggestion")
dt=cur.fetchall()
for i in dt:
print(i)
input("Press enter key to continue...")
customer_menu()
elif ch6==2:
fcn=ms.connect(host='localhost',user='root',passwd='root',database=
'isp')
crf=fcn.cursor()
f=int(input("Enter feedback id to delete feedback:"))
crf.execute("select * from suggestion where
f_id={}".format(f))
dt=crf.fetchall()
rc=crf.rowcount
if rc>0:
for i in dt:
if i[0]==f:
crf.execute("delete from suggestion where
f_id={}".format(f))
fcn.commit()
print("Feedback Deleted.")
customer_menu()
else:
print("No records...")
customer_menu()
fcn.close()
elif ch6==3:
customer_menu()
elif choice==7:
quit()
def main_menu():
while True:
print('''
1. Login
2. Exit ''')
ch1=int(input('Enter your choice:'))
if ch1==1:
login()
elif ch1==2:
break
else:
print("Invalid Choice")
main_menu()
System Design
System design refers to the interface of a software which satisfies the
need for the end-user requirements. System design should be
interactive and presentable. All the options required for the processing
should be present in system way. Here our system design for this
project is as follows:
Login
Incorrect Info
Welcome Screen
Main Menu
Create a new connection
Create a new maintenance Call
New Feedback/Suggestion
Customer Management Menu
View all Customer Details
Modify Customer Details
Close Account
Maintenance Management Menu
View All Requests
Close Request
Delete Request
View Feedback / Suggestion
Delete Feedback / Suggestion
Database Dictionary
Database dictionary plays an important role in project. It saves the
output generated by python program. We have used MySQL in the
back end to store data. We have used following tables to manage this
project data efficiently.
Just have a look at these tables:
i) Users: Users table consists of data regarding users login
information such as username and password.
The structure of users table is as follows:
ii) customer_profile: This table store data for customers. When new
connection is created the record is going to be added. When
account is closed records are deleted from this table. The structure
of this table is as follows:
iii) maintenance: This table hold records related to maintenance
calls. When any call is received regarding maintenance or any
dispute raised by customer is recorded into this table. This table
has following structure:
iv) suggestion: This table contains records accepted by user given as
feedback or suggestion. When customer is registering for a new
account or his maintenance call is closed, feedback is invited for
the services and their experience with the services. The structure
of suggestion table is as follows:
Security Control
Data security and security control is also one of the most important
aspects of any computerised system. As customer is giving their
personal information, security matters a lot. Customer data stored in
the application requires security. There should be any loop hole or any
unauthorised person can use data. So, we have created admin user and
password. Although the user has entered the password very carefully
as it is visible on screen while using this program. This project is
prepared only for single user.
We are not accepting any credit card or debit card data or any other
related sensitive information. No pin number or passwords asked to the
customer directly or indirectly for this system.
We have provided only one administrator account with this project.
Later, we will provide multi users to operate data as data filled with
software. More user specific profile will be also updated in the future.
For more security we will ensure the password also should not visible
for anyone while entering the password. We have not provided any
direct database access to the users.
Conclusion
Making project like this is a great journey of learning. We learn so
many things while developing this project. As we have started, we
learnt how organization functions and collect data, How the services
business is functioning and maintaining the customer profiles, and
their services.
With reference to technical knowledge, it was also a great experience
with learning as well, whether it is python or MySQL or putting logics
into code.
This is not the end but we have started a journey with this project and
hope many more to come in future. In addition to this, constant update
for this project will be provided as pe the requirements of the firm.
Bibliography
Computer Science with Python Textbook for Class XII By Sumita
Arora
Computer Science Text Book for Class XII By NCERT
www.tutorialaicsip.com
www.youtube.com
www.geekforgeeks.com
www.stackoverflow.com
www.tutorialpoints.com