Contact management system project(CMS Projects) in Python

Contact management system in python

The contact management system in python is a unique and easy-to-use system, that can search any contacts and also meanwhile view and add contacts. While adding the contact of a person it has to provide first and last name, address, and details. You can also update the contact list if they want to in the future.

Contact management system project in Python with source code

This contact management system is very effective to use as a model for how can construct a simple and effective CRUD system with python. This project has ‘SQ Lite’ as a database file to store any contact details.

When adding the contact to record items, the user has to enter the contact name and number. This project mainly focuses on CRUD.

Contact management system project in Python feature :

  • Add contacts.
  • Add address.
  •  Listing contacts.
  • Delete Contacts.

Source code :

from tkinter import * import sqlite3 import tkinter.ttk as ttk import tkinter.messagebox as tkMessageBox root = Tk() root.title("Contact Management System") width = 700 height = 400 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() x = (screen_width/2) - (width/2) y = (screen_height/2) - (height/2) root.geometry("%dx%d+%d+%d" % (width, height, x, y)) root.resizable(0, 0) root.config(bg="#6666ff") #============================VARIABLES=================================== FIRSTNAME = StringVar() LASTNAME = StringVar() GENDER = StringVar() AGE = StringVar() ADDRESS = StringVar() CONTACT = StringVar() #============================METHODS===================================== def Database(): conn = sqlite3.connect("contact.db") cursor = conn.cursor() cursor.execute("CREATE TABLE IF NOT EXISTS `member` (mem_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, firstname TEXT, lastname TEXT, gender TEXT, age TEXT, address TEXT, contact TEXT)") cursor.execute("SELECT * FROM `member` ORDER BY `lastname` ASC") fetch = cursor.fetchall() for data in fetch: tree.insert('', 'end', values=(data)) cursor.close() conn.close() def SubmitData(): if FIRSTNAME.get() == "" or LASTNAME.get() == "" or GENDER.get() == "" or AGE.get() == "" or ADDRESS.get() == "" or CONTACT.get() == "": result = tkMessageBox.showwarning('', 'Please Complete The Required Field', icon="warning") else: tree.delete(*tree.get_children()) conn = sqlite3.connect("contact.db") cursor = conn.cursor() cursor.execute("INSERT INTO `member` (firstname, lastname, gender, age, address, contact) VALUES(?, ?, ?, ?, ?, ?)", (str(FIRSTNAME.get()), str(LASTNAME.get()), str(GENDER.get()), int(AGE.get()), str(ADDRESS.get()), str(CONTACT.get()))) conn.commit() cursor.execute("SELECT * FROM `member` ORDER BY `lastname` ASC") fetch = cursor.fetchall() for data in fetch: tree.insert('', 'end', values=(data)) cursor.close() conn.close() FIRSTNAME.set("") LASTNAME.set("") GENDER.set("") AGE.set("") ADDRESS.set("") CONTACT.set("") def UpdateData(): if GENDER.get() == "": result = tkMessageBox.showwarning('', 'Please Complete The Required Field', icon="warning") else: tree.delete(*tree.get_children()) conn = sqlite3.connect("contact.db") cursor = conn.cursor() cursor.execute("UPDATE `member` SET `firstname` = ?, `lastname` = ?, `gender` =?, `age` = ?, `address` = ?, `contact` = ? WHERE `mem_id` = ?", (str(FIRSTNAME.get()), str(LASTNAME.get()), str(GENDER.get()), str(AGE.get()), str(ADDRESS.get()), str(CONTACT.get()), int(mem_id))) conn.commit() cursor.execute("SELECT * FROM `member` ORDER BY `lastname` ASC") fetch = cursor.fetchall() for data in fetch: tree.insert('', 'end', values=(data)) cursor.close() conn.close() FIRSTNAME.set("") LASTNAME.set("") GENDER.set("") AGE.set("") ADDRESS.set("") CONTACT.set("") def OnSelected(event): global mem_id, UpdateWindow curItem = tree.focus() contents =(tree.item(curItem)) selecteditem = contents['values'] mem_id = selecteditem[0] FIRSTNAME.set("") LASTNAME.set("") GENDER.set("") AGE.set("") ADDRESS.set("") CONTACT.set("") FIRSTNAME.set(selecteditem[1]) LASTNAME.set(selecteditem[2]) AGE.set(selecteditem[4]) ADDRESS.set(selecteditem[5]) CONTACT.set(selecteditem[6]) UpdateWindow = Toplevel() UpdateWindow.title("Contact Management System") width = 400 height = 300 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() x = ((screen_width/2) + 450) - (width/2) y = ((screen_height/2) + 20) - (height/2) UpdateWindow.resizable(0, 0) UpdateWindow.geometry("%dx%d+%d+%d" % (width, height, x, y)) if 'NewWindow' in globals(): NewWindow.destroy() #===================FRAMES============================== FormTitle = Frame(UpdateWindow) FormTitle.pack(side=TOP) ContactForm = Frame(UpdateWindow) ContactForm.pack(side=TOP, pady=10) RadioGroup = Frame(ContactForm) Male = Radiobutton(RadioGroup, text="Male", variable=GENDER, value="Male", font=('arial', 14)).pack(side=LEFT) Female = Radiobutton(RadioGroup, text="Female", variable=GENDER, value="Female", font=('arial', 14)).pack(side=LEFT) #===================LABELS============================== lbl_title = Label(FormTitle, text="Updating Contacts", font=('arial', 16), bg="orange", width = 300) lbl_title.pack(fill=X) lbl_firstname = Label(ContactForm, text="Firstname", font=('arial', 14), bd=5) lbl_firstname.grid(row=0, sticky=W) lbl_lastname = Label(ContactForm, text="Lastname", font=('arial', 14), bd=5) lbl_lastname.grid(row=1, sticky=W) lbl_gender = Label(ContactForm, text="Gender", font=('arial', 14), bd=5) lbl_gender.grid(row=2, sticky=W) lbl_age = Label(ContactForm, text="Age", font=('arial', 14), bd=5) lbl_age.grid(row=3, sticky=W) lbl_address = Label(ContactForm, text="Address", font=('arial', 14), bd=5) lbl_address.grid(row=4, sticky=W) lbl_contact = Label(ContactForm, text="Contact", font=('arial', 14), bd=5) lbl_contact.grid(row=5, sticky=W) #===================ENTRY=============================== firstname = Entry(ContactForm, textvariable=FIRSTNAME, font=('arial', 14)) firstname.grid(row=0, column=1) lastname = Entry(ContactForm, textvariable=LASTNAME, font=('arial', 14)) lastname.grid(row=1, column=1) RadioGroup.grid(row=2, column=1) age = Entry(ContactForm, textvariable=AGE, font=('arial', 14)) age.grid(row=3, column=1) address = Entry(ContactForm, textvariable=ADDRESS, font=('arial', 14)) address.grid(row=4, column=1) contact = Entry(ContactForm, textvariable=CONTACT, font=('arial', 14)) contact.grid(row=5, column=1) #==================BUTTONS============================== btn_updatecon = Button(ContactForm, text="Update", width=50, command=UpdateData) btn_updatecon.grid(row=6, columnspan=2, pady=10) #fn1353p def DeleteData(): if not tree.selection(): result = tkMessageBox.showwarning('', 'Please Select Something First!', icon="warning") else: result = tkMessageBox.askquestion('', 'Are you sure you want to delete this record?', icon="warning") if result == 'yes': curItem = tree.focus() contents =(tree.item(curItem)) selecteditem = contents['values'] tree.delete(curItem) conn = sqlite3.connect("contact.db") cursor = conn.cursor() cursor.execute("DELETE FROM `member` WHERE `mem_id` = %d" % selecteditem[0]) conn.commit() cursor.close() conn.close() def AddNewWindow(): global NewWindow FIRSTNAME.set("") LASTNAME.set("") GENDER.set("") AGE.set("") ADDRESS.set("") CONTACT.set("") NewWindow = Toplevel() NewWindow.title("Contact Management System") width = 400 height = 300 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() x = ((screen_width/2) - 455) - (width/2) y = ((screen_height/2) + 20) - (height/2) NewWindow.resizable(0, 0) NewWindow.geometry("%dx%d+%d+%d" % (width, height, x, y)) if 'UpdateWindow' in globals(): UpdateWindow.destroy() #===================FRAMES============================== FormTitle = Frame(NewWindow) FormTitle.pack(side=TOP) ContactForm = Frame(NewWindow) ContactForm.pack(side=TOP, pady=10) RadioGroup = Frame(ContactForm) Male = Radiobutton(RadioGroup, text="Male", variable=GENDER, value="Male", font=('arial', 14)).pack(side=LEFT) Female = Radiobutton(RadioGroup, text="Female", variable=GENDER, value="Female", font=('arial', 14)).pack(side=LEFT) #===================LABELS============================== lbl_title = Label(FormTitle, text="Adding New Contacts", font=('arial', 16), bg="#66ff66", width = 300) lbl_title.pack(fill=X) lbl_firstname = Label(ContactForm, text="Firstname", font=('arial', 14), bd=5) lbl_firstname.grid(row=0, sticky=W) lbl_lastname = Label(ContactForm, text="Lastname", font=('arial', 14), bd=5) lbl_lastname.grid(row=1, sticky=W) lbl_gender = Label(ContactForm, text="Gender", font=('arial', 14), bd=5) lbl_gender.grid(row=2, sticky=W) lbl_age = Label(ContactForm, text="Age", font=('arial', 14), bd=5) lbl_age.grid(row=3, sticky=W) lbl_address = Label(ContactForm, text="Address", font=('arial', 14), bd=5) lbl_address.grid(row=4, sticky=W) lbl_contact = Label(ContactForm, text="Contact", font=('arial', 14), bd=5) lbl_contact.grid(row=5, sticky=W) #===================ENTRY=============================== firstname = Entry(ContactForm, textvariable=FIRSTNAME, font=('arial', 14)) firstname.grid(row=0, column=1) lastname = Entry(ContactForm, textvariable=LASTNAME, font=('arial', 14)) lastname.grid(row=1, column=1) RadioGroup.grid(row=2, column=1) age = Entry(ContactForm, textvariable=AGE, font=('arial', 14)) age.grid(row=3, column=1) address = Entry(ContactForm, textvariable=ADDRESS, font=('arial', 14)) address.grid(row=4, column=1) contact = Entry(ContactForm, textvariable=CONTACT, font=('arial', 14)) contact.grid(row=5, column=1) #==================BUTTONS============================== btn_addcon = Button(ContactForm, text="Save", width=50, command=SubmitData) btn_addcon.grid(row=6, columnspan=2, pady=10) #============================FRAMES====================================== Top = Frame(root, width=500, bd=1, relief=SOLID) Top.pack(side=TOP) Mid = Frame(root, width=500, bg="#6666ff") Mid.pack(side=TOP) MidLeft = Frame(Mid, width=100) MidLeft.pack(side=LEFT, pady=10) MidLeftPadding = Frame(Mid, width=370, bg="#6666ff") MidLeftPadding.pack(side=LEFT) MidRight = Frame(Mid, width=100) MidRight.pack(side=RIGHT, pady=10) TableMargin = Frame(root, width=500) TableMargin.pack(side=TOP) #============================LABELS====================================== lbl_title = Label(Top, text="Contact Management System", font=('arial', 16), width=500) lbl_title.pack(fill=X) #============================ENTRY======================================= #============================BUTTONS===================================== btn_add = Button(MidLeft, text="+ ADD NEW", bg="#66ff66", command=AddNewWindow) btn_add.pack() btn_delete = Button(MidRight, text="DELETE", bg="red", command=DeleteData) btn_delete.pack(side=RIGHT) #============================TABLES====================================== scrollbarx = Scrollbar(TableMargin, orient=HORIZONTAL) scrollbary = Scrollbar(TableMargin, orient=VERTICAL) tree = ttk.Treeview(TableMargin, columns=("MemberID", "Firstname", "Lastname", "Gender", "Age", "Address", "Contact"), height=400, selectmode="extended", yscrollcommand=scrollbary.set, xscrollcommand=scrollbarx.set) scrollbary.config(command=tree.yview) scrollbary.pack(side=RIGHT, fill=Y) scrollbarx.config(command=tree.xview) scrollbarx.pack(side=BOTTOM, fill=X) tree.heading('MemberID', text="MemberID", anchor=W) tree.heading('Firstname', text="Firstname", anchor=W) tree.heading('Lastname', text="Lastname", anchor=W) tree.heading('Gender', text="Gender", anchor=W) tree.heading('Age', text="Age", anchor=W) tree.heading('Address', text="Address", anchor=W) tree.heading('Contact', text="Contact", anchor=W) tree.column('#0', stretch=NO, minwidth=0, width=0) tree.column('#1', stretch=NO, minwidth=0, width=0) tree.column('#2', stretch=NO, minwidth=0, width=80) tree.column('#3', stretch=NO, minwidth=0, width=120) tree.column('#4', stretch=NO, minwidth=0, width=90) tree.column('#5', stretch=NO, minwidth=0, width=80) tree.column('#6', stretch=NO, minwidth=0, width=120) tree.column('#7', stretch=NO, minwidth=0, width=120) tree.pack() tree.bind('', OnSelected) #============================INITIALIZATION============================== if __name__ == '__main__': Database() root.mainloop()

How to run a Contact management system project in Python?

  • First installed python on your system( PC/ Laptop), then download the project and the step below:
  •  Extract/Unzip the folder/file.
  •  Go inside the project folder or file, then open Cmd, after typing contact. py and enter, then start the system.

or

  • At first, you install python
  • Download the project file.
  •  Extract the project from the folder.
  •  Double click on index. py.
  •  The project started to run and is ready to use.

2 thoughts on “Contact management system project(CMS Projects) in Python”

  1. Hi! pythonsourcecode.com

    We make available

    Sending your message through the Contact us form which can be found on the sites in the Communication partition. Feedback forms are filled in by our program and the captcha is solved. The advantage of this method is that messages sent through feedback forms are whitelisted. This technique raise the probability that your message will be read.

    Our database contains more than 27 million sites around the world to which we can send your message.

    The cost of one million messages 49 USD

    FREE TEST mailing Up to 50,000 messages.

    This message is created automatically. Use our contacts for communication.

    Contact us.
    Telegram – @FeedbackMessages
    Skype live:contactform_18
    WhatsApp – +375259112693
    We only use chat.

    Reply

Leave a Comment

Exit mobile version