This is simple system project , and you will learn how to create a simple Complaint Management System Project in Python with Source Code.
Complaint Management System in Python : Project Details and Technology
Project Name: | Complaint Management System Python Project |
Abstract | Complaint Management System in Python is a way for customers to let the company know what they don’t like about it. |
Language/s Used: | Python Programming |
Python version (Recommended): | 3.8 or 3.9 |
Database: | SQLite3 |
Type: | Python Tkinter Based Project |
Developer: | IT SOURCECODE |
Updates: | 0 |
A simple system includes the downloadable Complaint Management System using Python.
About Complaint Management System Python Project
The Complaint Management System is a simple desktop application and the database used in this system is Sqlite3. Complaint Management System is created using python programming language.
The Complaint Management System project file contains a python scripts(complain-system-main.py, configdb.py, complaintListing.py) and sqlite database. Complaint Management System is using a Tkinter graphical user interface(GUI).
To start creating a Complaint Management System in Python, make sure you have PyCharm IDE and SQLITE3 installed in your computer.
By the way if you are new to python programming and you don’t know what would be the the Python IDE to use, I have here a list of Best Python IDE for Windows, Linux, Mac OS that will suit for you.
I also have here How to Download and Install Latest Version of Python on Windows.
Steps on How To Create a Complaint Management System Project in Python.
Time needed: 5 minutes.
Complaint Management System in Python with Source Code
- Step 1: Create a Project Name.
First step open the PyCharm IDE and click “File” and select “New Project” and then create a project name after that click the “create” button.
- Step 2: Create a Python File.
Second step after creating a project name, “right” click the project name and the click “New” after that choose “Python File“.
- Step 3: Name the Python File.
Third step after choose Python File name the file “Complaint System” and then click “Enter“.
- Step 4: The actual code.
Now you can start coding, you are free to copy the code that being provided below.
Code Explanations
1. Importing Tkinter Module
Tkinter is the standard GUI library for Python. Python when combined with Tkinter provides a fast and easy way to create GUI applications.
from tkinter import * from tkinter.ttk import * from tkinter.messagebox import *
In the code above, which is for importing tkinter just write 3 line of code.
2. Importing the Sqlite3 Module
SQLite is a C library that provides a lightweight disk-based database that doesn’t require a separate server process and allows accessing the database using a nonstandard variant of the SQL query language.
import sqlite3
In the code above, which is for importing sqlite just write one line of code.
3. Create Database
This module is for Creating a Database.
def __init__(self):
self._db = sqlite3.connect('complaintDB.db')
self._db.row_factory = sqlite3.Row
self._db.execute('create table if not exists complainTable(ID integer primary key autoincrement, FirstName varchar(255), LastName varchar(255), Address Text, Gender varchar(255), Comment text)')
self._db.commit()
In the code above, which is for the creating a database name “complaintDb.db” and for the table name “complainTable”
4. Main Window
The Design and Style for Main Window.
So first of all you have to design the main screen. This display screen have a label of firstname, lastname, gender and comment, for the radio buttons have only two male and female and for the buttons it is view complain and submit now. So let’s see the way to put into effect this.
conn = ConnectionDatabase()
root = Tk()
root.geometry('550x350')
root.title('Complaint Management System')
root.configure(bg='blue')
labels = ['First Name:', 'Last Name:', 'Address:', 'Gender:', 'Comment:']
for i in range(4):
Label(root, text=labels[i]).grid(row=i, column=0, padx=10, pady=10)
ButtonList = Button(root, text='View Complain')
ButtonList.grid(row=5, column=1)
BuSubmit = Button(root, text='Submit Now')
BuSubmit.grid(row=5, column=2)
# Entries
firstname = Entry(root, width=40, font=('Arial', 14))
firstname.grid(row=0, column=1, columnspan=2)
lastname = Entry(root, width=40, font=('Arial', 14))
lastname.grid(row=1, column=1, columnspan=2)
address = Entry(root, width=40, font=('Arial', 14))
address.grid(row=2, column=1, columnspan=2)
GenderGroup = StringVar()
Radiobutton(root, text='Male', value='male', variable=GenderGroup).grid(row=3, column=1)
Radiobutton(root, text='Female', value='female', variable=GenderGroup).grid(row=3, column=2)
comment = Text(root, width=40, height=5, font=('Arial', 14))
comment.grid(row=4, column=1, columnspan=2, padx=10, pady=10)
- You can also minimize or maximize the design of main screen window as in line with your choice and make it extra attractive.
- When the above code is executed, let’s see the output of this code.
Output:
5. Create Table
This Module is for Creating a Table.
class ComplaintListing:
def __init__(self):
self.connectionDB = ConnectionDatabase()
self.connectionDB.row_factory = sqlite3.Row
self.root = Tk()
self.root.title('List of Complaints')
tree = Treeview(self.root)
tree.pack()
tree.heading('#0', text='ID')
tree.configure(column=('#FirstName', '#LastName', '#Address', '#Gender', '#Comment'))
tree.heading('#FirstName', text='First Name')
tree.heading('#LastName', text='Last Name')
tree.heading('#Address', text='Address')
tree.heading('#Gender', text='Gender')
tree.heading('#Comment', text='Comment')
tree.column('#0', stretch=NO, minwidth=0, width=100)
tree.column('#1', stretch=NO, minwidth=0, width=100)
tree.column('#2', stretch=NO, minwidth=0, width=100)
tree.column('#3', stretch=NO, minwidth=0, width=100)
tree.column('#4', stretch=NO, minwidth=0, width=100)
tree.column('#5', stretch=NO, minwidth=0, width=300)
cursor = self.connectionDB.ListRequest()
for row in cursor:
tree.insert('', 'end', '#{}'.format(row['ID']), text=row['ID'])
tree.set('#{}'.format(row['ID']), '#FirstName', row['FirstName'])
tree.set('#{}'.format(row['ID']), '#LastName', row['LastName'])
tree.set('#{}'.format(row['ID']), '#Address', row['Address'])
tree.set('#{}'.format(row['ID']), '#Gender', row['Gender'])
tree.set('#{}'.format(row['ID']), '#Comment', row['Comment'])
In the code above, This method will show you how to create a table in complaint management system window.
When the above code is executed, it produces the following result below.
6. Complete Source Code
Complaint-System-Main.py
from tkinter import *
from tkinter.ttk import *
from tkinter.messagebox import *
from complaintListing import ComplaintListing
from configdb import ConnectionDatabase
#Config
conn = ConnectionDatabase()
root = Tk()
root.geometry('550x350')
root.title('Complaint Management System')
root.configure(bg='blue')
#Style
style = Style()
style.theme_use('classic')
for styles in ['TLabel', 'TButton', 'TRadioButton']:
style.configure(styles, bg='blue')
labels = ['First Name:', 'Last Name:', 'Address:', 'Gender:', 'Comment:']
for i in range(4):
Label(root, text=labels[i]).grid(row=i, column=0, padx=10, pady=10)
ButtonList = Button(root, text='View Complain')
ButtonList.grid(row=5, column=1)
ButtonSubmit = Button(root, text='Submit Now')
ButtonSubmit.grid(row=5, column=2)
# Entries
firstname = Entry(root, width=40, font=('Arial', 14))
firstname.grid(row=0, column=1, columnspan=2)
lastname = Entry(root, width=40, font=('Arial', 14))
lastname.grid(row=1, column=1, columnspan=2)
address = Entry(root, width=40, font=('Arial', 14))
address.grid(row=2, column=1, columnspan=2)
GenderGroup = StringVar()
Radiobutton(root, text='Male', value='male', variable=GenderGroup).grid(row=3, column=1)
Radiobutton(root, text='Female', value='female', variable=GenderGroup).grid(row=3, column=2)
comment = Text(root, width=40, height=5, font=('Arial', 14))
comment.grid(row=4, column=1, columnspan=2, padx=10, pady=10)
def SaveData():
message = conn.Add(firstname.get(), lastname.get(), address.get(), GenderGroup.get(), comment.get(1.0, 'end'))
firstname.delete(0,'end')
lastname.delete(0, 'end')
address.delete(0, 'end')
comment.delete(1.0, 'end')
showinfo(title='Add Information', message=message)
def ShowComplainList():
listrequest = ComplaintListing()
ButtonSubmit.config(command=SaveData)
ButtonList.config(command=ShowComplainList)
root.mainloop()
Configdb.py
import sqlite3
class ConnectionDatabase:
def __init__(self):
self._db = sqlite3.connect('complaintDB.db')
self._db.row_factory = sqlite3.Row
self._db.execute('create table if not exists complainTable(ID integer primary key autoincrement, FirstName varchar(255), LastName varchar(255), Address Text, Gender varchar(255), Comment text)')
self._db.commit()
def Add(self,firstname,lastname,address, gender,comment):
self._db.execute('insert into complainTable (FirstName, LastName, Address, Gender, Comment) values (?,?,?,?,?)', (firstname, lastname, address, gender, comment))
self._db.commit()
return 'Your complaint has been submitted.'
def ListRequest(self):
cursor = self._db.execute('select * from complainTable')
return cursor
ComplainListing.py
from tkinter import *
from tkinter.ttk import *
import sqlite3
from configdb import ConnectionDatabase
class ComplaintListing:
def __init__(self):
self.connectionDB = ConnectionDatabase()
self.connectionDB.row_factory = sqlite3.Row
self.root = Tk()
self.root.title('List of Complaints')
tree = Treeview(self.root)
tree.pack()
tree.heading('#0', text='ID')
tree.configure(column=('#FirstName', '#LastName', '#Address', '#Gender', '#Comment'))
tree.heading('#FirstName', text='First Name')
tree.heading('#LastName', text='Last Name')
tree.heading('#Address', text='Address')
tree.heading('#Gender', text='Gender')
tree.heading('#Comment', text='Comment')
tree.column('#0', stretch=NO, minwidth=0, width=100)
tree.column('#1', stretch=NO, minwidth=0, width=100)
tree.column('#2', stretch=NO, minwidth=0, width=100)
tree.column('#3', stretch=NO, minwidth=0, width=100)
tree.column('#4', stretch=NO, minwidth=0, width=100)
tree.column('#5', stretch=NO, minwidth=0, width=300)
cursor = self.connectionDB.ListRequest()
for row in cursor:
tree.insert('', 'end', '#{}'.format(row['ID']), text=row['ID'])
tree.set('#{}'.format(row['ID']), '#FirstName', row['FirstName'])
tree.set('#{}'.format(row['ID']), '#LastName', row['LastName'])
tree.set('#{}'.format(row['ID']), '#Address', row['Address'])
tree.set('#{}'.format(row['ID']), '#Gender', row['Gender'])
tree.set('#{}'.format(row['ID']), '#Comment', row['Comment'])
How To Run The Complaint Management System in Python with Source Code?
To run this project, you must have installed a Pycharm on your PC (for Windows). This Complaint Management System with Source Code for educational purposes only!
After downloading the project you must follow the steps below:
Step 1: Unzip the file or Extract the file
Step 2: Double click the Complaint-System-Main
Step 3: Project is ready to run
Downloadable Source Code
I have here the list of Best Python Project with Source code free to download for free, I hope this can help you a lot.
Conclusion:
In this Complaint Management System Project in Python with Source Code is free to download. A Complaint Management System contains the admin side only that can manage the information of a user, can easily view a list of complaints displaying the user’s first name, last name with their id number, address, gender, and comments.
This project is good for the student who want to learn python programming because this project contains a Graphical User Interface (GUI) and a users friendly. It is easy to understand and manipulate this project and use for education purpose only.
Am looking for this kind of project, this complaint management system nearly suitable to my project requirement. just downloaded will get back any issues thanks in advance