پایتون, مقالات

آموزش ساخت دفترچه تلفن با پایتون + Tkinter و SQLite

پروژه کامل پایتون — نمونه سوال عملی فنی و حرفه‌ای

آموزش ساخت دفترچه تلفن با پایتون Tkinter + SQLite — سورس کامل قابل کپی

دنبال یک پروژه پایتون کاربردی هستی که هم برای نمونه سوال عملی فنی و حرفه‌ای مناسب باشه و هم بتونی توی رزومه‌ت بذاری؟ این مقاله دقیقاً همون چیزیه که لازم داری. با هم قدم‌به‌قدم یک برنامه دفترچه تلفن کامل با Python، Tkinter و SQLite3 می‌سازیم. سورس کد کامل و قابل کپی آماده‌ست.

۱۰۰٪ کاربردی پروژه واقعی بازار کار
مناسب فنی و حرفه‌ای نمونه سوال عملی
سورس کامل کپی با یک کلیک
📞
پروژه دفترچه تلفن با پایتون چیست و چرا برای فنی و حرفه‌ای مهم است؟

پروژه دفترچه تلفن با پایتون (Tkinter + SQLite) یکی از رایج‌ترین نمونه سوالات عملی فنی و حرفه‌ای در رشته برنامه‌نویسی است. این پروژه ترکیبی از رابط گرافیکی (GUI)، دیتابیس محلی (SQLite)، عملیات CRUD و جستجوی LIKE را آموزش می‌دهد و یک تمرین کامل برای تسلط بر پایتون است.

مقدمه

پروژه دفترچه تلفن با پایتون — از صفر تا اجرا

پایتون (Python) امروز یکی از محبوب‌ترین زبان‌های برنامه‌نویسی دنیاست. یکی از بهترین راه‌ها برای یادگیری پایتون، ساختن پروژه‌های واقعی است — نه فقط حل تمرین‌های تئوری. در این مقاله با هم یک برنامه دفترچه تلفن کامل می‌سازیم که:

  • ✅ با Tkinter رابط گرافیکی داره
  • ✅ با SQLite اطلاعات مخاطبین رو ذخیره می‌کنه
  • ✅ می‌تونه مخاطب اضافه کنه، حذف کنه، ویرایش کنه
  • ✅ جستجوی جزئی روی نام یا شماره موبایل داره
  • ✅ کامنت‌گذاری شده و برای امتحان عملی مناسبه
💡 نکته مهم برای فنی و حرفه‌ای: سازمان فنی و حرفه‌ای در آزمون عملی پایتون معمولاً از هنرجو می‌خواد یک برنامه با Tkinter + دیتابیس بسازه. دفترچه تلفن یکی از پرتکرارترین این پروژه‌هاست چون ترکیب کامل CRUD + جستجو رو پوشش می‌ده.
چرا این پروژه؟

چرا پروژه دفترچه تلفن برای فنی و حرفه‌ای و رزومه حیاتیه؟

CRUD یادگیری عملیات اصلی دیتابیس
GUI ساخت رابط کاربری حرفه‌ای
LIKE جستجوی هوشمند در دیتابیس
۱۰۰٪ قابل استفاده در رزومه
۱

نمونه سوال عملی

دفترچه تلفن یکی از پرتکرارترین سوالات آزمون عملی پایتون در آموزشگاه‌های فنی و حرفه‌ای تبریز و سراسر کشوره.

۲

ترکیب Tkinter + SQLite

یاد می‌گیری چطور یک برنامه دسکتاپ واقعی بسازی که اطلاعات رو توی دیتابیس ذخیره کنه و با جستجوی LIKE بازخونی کنه.

۳

مناسب رزومه

این پروژه رو می‌تونی توی گیت‌هاب بذاری و به‌عنوان نمونه کار برای استخدام معرفی کنی. کارفرماها عاشق پروژه‌های عملی‌ان.

پیش‌نیازها

ابزارهای موردنیاز برای اجرای پروژه

🐍

Python 3.x

نسخه ۳.۷ به بالا. از سایت python.org دانلودش کن.

🖼️

Tkinter

به‌صورت پیش‌فرض همراه پایتون نصب می‌شه. نیازی به نصب جداگانه نیست.

🗄️

SQLite3

ماژول sqlite3 هم به‌صورت داخلی در پایتون وجود داره.

💻

یک ادیتور

VS Code، PyCharm یا حتی IDLE خود پایتون کافیه.

✅ خبر خوب: هیچ کتابخانه‌ای نیاز به نصب جداگانه نداره! Tkinter و SQLite هر دو در پایتون استاندارد وجود دارن.
پیش‌نمایش

خروجی نهایی برنامه دفترچه تلفن

برنامه‌ای که در انتهای این مقاله می‌سازی، دقیقاً به این شکل کار می‌کنه:

خروجی برنامه دفترچه تلفن با پایتون، Tkinter و SQLite - آموزشگاه راهکار تبریز

📸 خروجی برنامه دفترچه تلفن — ساخته‌شده با Python + Tkinter + SQLite

همون‌طور که می‌بینی، برنامه شامل این بخش‌هاست:

  • 👤 فیلد نام مخاطب
  • 📱 فیلد شماره تلفن
  • 📋 لیست‌باکس برای نمایش همه مخاطبین
  • ➕ دکمه افزودن
  • 🗑️ دکمه حذف
  • ✏️ دکمه ویرایش
  • 🚪 دکمه خروج
  • 🔍 فیلد جستجو + دکمه نمایش همه
سورس کامل

سورس کد کامل پروژه دفترچه تلفن (قابل کپی)

کد زیر رو کامل کپی کن، توی یک فایل با پسوند telbook.py ذخیره کن و اجراش کن. همه چیز آماده‌ست!

telbook.py — Python 3
# -*- coding: utf-8 -*-
"""
برنامه دفترچه تلفن ساده با استفاده از Tkinter و SQLite
قابلیت‌ها:
    - افزودن مخاطب
    - حذف مخاطب
    - ویرایش مخاطب
    - جستجوی جزئی روی نام یا شماره موبایل
    - نمایش همه مخاطبین
"""

# ===== 1) وارد کردن کتابخانه‌های مورد نیاز =====

import sqlite3                      # برای کار با پایگاه داده SQLite
from tkinter import *               # برای ساخت رابط گرافیکی (GUI)
from tkinter import messagebox      # برای نمایش پیام‌های هشدار و اطلاع


# ===== 2) اتصال به پایگاه داده =====

# اتصال به فایل پایگاه داده به نام a1.db
# اگر فایل وجود نداشته باشد، SQLite خودش آن را می‌سازد
conn = sqlite3.connect('a1.db')

# ساخت یک "مکان‌نما" (cursor) برای اجرای دستورات SQL
curs = conn.cursor()

# ساخت جدول telbook در صورت عدم وجود
# ستون‌ها:
#   id      : شناسه یکتا (خودکار زیاد می‌شود)
#   nam     : نام مخاطب
#   mobile  : شماره موبایل
curs.execute('create table if not exists telbook (id integer primary key autoincrement, nam text, mobile text)')

# ذخیره تغییرات در پایگاه داده
conn.commit()


# ===== 3) متغیر سراسری برای نگهداری شناسه (id) مخاطب انتخاب‌شده =====

global kod   # kod = شناسه رکوردی که کاربر روی آن کلیک کرده است


# ===== 4) توابع برنامه =====

def add():
    """افزودن یک مخاطب جدید به پایگاه داده"""
    # خواندن نام و شماره از کادرهای ورودی
    nam = ent1.get()
    tel = ent2.get()

    # درج رکورد جدید در جدول
    # از ? استفاده می‌کنیم تا از تزریق SQL جلوگیری شود
    curs.execute('insert into telbook (nam,mobile) values(?,?)', (nam, tel))

    # ذخیره تغییرات
    conn.commit()

    # پاک کردن کادرهای ورودی
    ent1.delete(0, END)
    ent2.delete(0, END)

    # قرار دادن مکان‌نما (focus) روی کادر نام
    ent1.focus_set()

    # به‌روزرسانی لیست نمایش
    show()


def show():
    """نمایش همه مخاطبین در Listbox"""
    # پاک کردن لیست فعلی
    mylist.delete(0, END)

    # خواندن همه رکوردها از جدول
    curs.execute('select * from telbook')
    info = curs.fetchall()   # fetchall = گرفتن همه نتایج به صورت لیست

    # درج هر رکورد در Listbox
    for i in info:
        mylist.insert(END, i)


def onselect(event):
    """وقتی کاربر روی یک آیتم Listbox کلیک می‌کند، اطلاعات آن را در کادرها نشان بده"""
    # شماره سطر انتخاب‌شده
    satrno = mylist.curselection()

    # گرفتن متن آن سطر (به صورت tuple)
    matn = mylist.get(satrno)

    # پاک کردن کادرهای ورودی
    ent1.delete(0, END)
    ent2.delete(0, END)

    # قرار دادن نام و شماره در کادرها
    ent1.insert(0, matn[1])   # matn[1] = نام
    ent2.insert(0, matn[2])   # matn[2] = موبایل

    # ذخیره شناسه رکورد در متغیر سراسری kod
    global kod
    kod = matn[0]             # matn[0] = id


def hazf():
    """حذف مخاطب انتخاب‌شده از پایگاه داده"""
    # پرسیدن تأیید از کاربر
    javab = messagebox.askyesno('توجه', 'آیا می‌خواهید اطلاعات حذف شود؟')

    if javab == True:
        # حذف رکورد بر اساس شناسه (kod)
        curs.execute('delete from telbook where id=?', (kod,))

        # پاک کردن کادرهای ورودی
        ent1.delete(0, END)
        ent2.delete(0, END)
        ent1.focus_set()

        # ذخیره تغییرات
        conn.commit()

        # نمایش پیام موفقیت
        messagebox.showinfo('توجه', 'اطلاعات حذف شد')

    # به‌روزرسانی لیست
    show()


def edit():
    """ویرایش اطلاعات مخاطب انتخاب‌شده"""
    # خواندن مقادیر جدید از کادرها
    nam = ent1.get()
    tel = ent2.get()

    # به‌روزرسانی رکورد بر اساس شناسه
    curs.execute('update telbook set nam=?,mobile=? where id=?', (nam, tel, kod))

    # ذخیره تغییرات
    conn.commit()

    # پیام موفقیت
    messagebox.showinfo('توجه', 'تغییرات ذخیره شد')

    # به‌روزرسانی لیست
    show()


def exit_app():
    """بستن پنجره برنامه"""
    win.destroy()


def search():
    """جستجوی جزئی روی نام یا شماره موبایل"""
    # خواندن متن جستجو و حذف فاصله‌های اضافی
    text = ent3.get().strip()

    # پاک کردن لیست فعلی
    mylist.delete(0, END)

    # اگر کادر جستجو خالی بود، همه را نشان بده
    if text == "":
        show()
        return

    # جستجو با LIKE
    # % در دو طرف یعنی: هر چیزی قبل یا بعد از عبارت بیاید
    query = "select * from telbook where nam like ? or mobile like ?"
    pattern = "%" + text + "%"

    curs.execute(query, (pattern, pattern))
    info = curs.fetchall()

    # نمایش نتایج
    if info:
        for i in info:
            mylist.insert(END, i)
    else:
        # اگر چیزی پیدا نشد
        mylist.insert(END, "موردی یافت نشد")


# ===== 5) ساخت پنجره اصلی برنامه =====

win = Tk()                          # ساخت پنجره
win.geometry('500x400')             # اندازه پنجره: 500 در 400
win.title('اپلیکیشن دفترچه تلفن')   # عنوان پنجره


# ===== 6) ساخت ویجت‌های رابط کاربری =====

# --- ردیف اول: نام مخاطب ---
lab1 = Label(text='نام مخاطب').place(x=50, y=30)     # برچسب نام
ent1 = Entry()                                       # کادر ورود نام
ent1.place(x=130, y=30)                              # مکان کادر نام

# --- ردیف دوم: شماره تلفن ---
l1b2 = Label(text='شماره تلفن').place(x=50, y=70)    # برچسب شماره
ent2 = Entry()                                       # کادر ورود شماره
ent2.place(x=130, y=70)                              # مکان کادر شماره

# --- ردیف سوم: دکمه‌های عملیات ---
dok1 = Button(text='افزودن', command=add).place(x=50, y=110, width=80)
dok2 = Button(text='حذف', command=hazf).place(x=150, y=110, width=80)
dok3 = Button(text='ویرایش', command=edit).place(x=250, y=110, width=80)
dok4 = Button(text='خروج', command=exit_app).place(x=350, y=110, width=80)

# --- Listbox برای نمایش لیست مخاطبین ---
mylist = Listbox()
mylist.place(x=100, y=150, width=300)

# نمایش اولیه لیست
show()

# اتصال رویداد انتخاب سطر در Listbox به تابع onselect
mylist.bind('<<ListboxSelect>>', onselect)

# --- بخش جستجو ---
l1b3 = Label(win, text='جستجو').place(x=50, y=330)   # برچسب جستجو
ent3 = Entry(win)                                    # کادر ورود متن جستجو
ent3.place(x=100, y=330)

dok4 = Button(win, text='جستجو', command=search).place(x=240, y=330, width=80)
dok5 = Button(win, text='نمایش همه', command=show).place(x=330, y=330, width=80)


# ===== 7) اجرای حلقه اصلی برنامه =====

mainloop()   # منتظر می‌ماند تا کاربر با پنجره تعامل کند
⚠️ نکته: اگر می‌خواهی برنامه سریع‌تر اجرا بشه، حتماً پایتون نسخه ۳.۷ به بالا نصب کن. Tkinter در لینوکس ممکنه نیاز به نصب جداگانه داشته باشه (sudo apt install python3-tk).
توضیح خط‌به‌خط

توضیح بخش‌های اصلی کد (برای امتحان عملی)

در آزمون عملی معمولاً ازت می‌پرسن هر بخش چه کاری انجام می‌ده. این خلاصه رو حفظ کن:

۱

اتصال به دیتابیس

دستور sqlite3.connect('a1.db') یک فایل دیتابیس به نام a1.db می‌سازه. جدول telbook با ۳ ستون (id, nam, mobile) ساخته می‌شه.

۲

تابع add() — افزودن مخاطب

مقدار فیلدهای نام و شماره رو می‌گیره، با دستور INSERT در دیتابیس ذخیره می‌کنه، و پس از پاک کردن فیلدها، لیست رو دوباره نمایش می‌ده.

۳

تابع show() — نمایش لیست

با دستور SELECT * FROM telbook همه مخاطبین رو از دیتابیس می‌خونه و داخل Listbox نمایش می‌ده.

۴

تابع onselect() — انتخاب مخاطب

وقتی روی یک ردیف از لیست کلیک می‌کنی، اطلاعاتش رو از لیست می‌خونه، در فیلدهای ورودی می‌ریزه و id رو در متغیر global ذخیره می‌کنه.

۵

تابع hazf() — حذف مخاطب

اول با messagebox تأیید می‌گیره، بعد با دستور DELETE رکورد رو از دیتابیس پاک می‌کنه.

۶

تابع edit() — ویرایش مخاطب

مقادیر جدید رو از فیلدها می‌گیره و با دستور UPDATE رکورد رو بر اساس id آپدیت می‌کنه.

۷

تابع search() — جستجوی LIKE

متن جستجو رو می‌گیره و با الگوی %text% روی ستون‌های nam و mobile جستجو می‌کنه. اگر پیدا نشد پیام «موردی یافت نشد» رو نشون می‌ده.

🎯 سوال رایج آزمون: «چرا در دستورات SQL از علامت ? استفاده می‌کنیم؟» — پاسخ: برای جلوگیری از SQL Injection (تزریق SQL). این روش Parameterized Query نام داره و امنیت برنامه رو بالا می‌بره.
اجرا

نحوه اجرای پروژه در ۴ قدم ساده

۱

پایتون را نصب کن

از سایت python.org آخرین نسخه پایتون ۳ رو دانلود و نصب کن. حین نصب گزینه Add Python to PATH رو حتماً تیک بزن.

۲

فایل را ذخیره کن

کد بالا رو کپی کن، توی یک فایل به نام telbook.py ذخیره کن. دقت کن پسوند فایل .py باشه، نه .py.txt.

۳

اجرا در ترمینال

ترمینال (یا CMD) رو باز کن، به مسیر فایل برو و دستور python telbook.py رو بزن. برنامه اجرا می‌شه.

۴

شروع استفاده

نام و شماره مخاطب رو وارد کن، دکمه افزودن رو بزن. مخاطبین در دیتابیس ذخیره می‌شن و دفعه بعد هم قابل مشاهده‌ان.

✅ تیپ حرفه‌ای: اگر خواستی پروژه رو توسعه بدی، پیشنهاد می‌کنم این قابلیت‌ها رو بهش اضافه کنی: دسته‌بندی مخاطبین (خانواده، دوستان، کار)، افزودن فیلد ایمیل، خروجی CSV، و ورود عکس پروفایل. اینا سوالات توسعه‌ای آزمون‌های عملی هستن.
چرا آموزشگاه راهکار؟

مزایای یادگیری پایتون در آموزشگاه کامپیوتر راهکار تبریز

اگر می‌خواهی پایتون را اصولی، پروژه‌محور و با مدرک معتبر یاد بگیری، آموزشگاه راهکار بهترین انتخاب در تبریز است:

📍 دسترسی آسان در مرکز شهر تبریز، خیابان شریعتی (شهناز)، نرسیده به تقاطع ۱۷ شهریور
🎥 ویدیوی جلسات برای مرور تمام جلسات ضبط می‌شوند و در اختیار هنرجویان قرار می‌گیرند
👨‍🏫 اساتید مجرب با سال‌ها تجربه پروژه‌های واقعی و آشنایی با نیاز بازار کار
📜 مدرک فنی و حرفه‌ای قابل ترجمه رسمی و معتبر برای استخدام در شرکت‌ها
💡 آموزش پروژه‌محور در طول دوره روی پروژه‌های واقعی مثل دفترچه تلفن کار می‌کنی
🤝 پشتیبانی دائمی حتی پس از پایان دوره، اساتید کنار شما هستند
💳 پرداخت اقساطی شرایط ویژه همشهریان تبریزی برای پرداخت شهریه
🚀 آمادگی برای فنی و حرفه‌ای تمرین دقیق نمونه سوالات عملی آزمون پایتون
شروع یادگیری پایتون

آماده‌ای پایتون رو حرفه‌ای یاد بگیری؟

این مقاله فقط یک پروژه بود. برای تبدیل شدن به یک برنامه‌نویس پایتون حرفه‌ای و قبولی در آزمون فنی و حرفه‌ای، باید مسیر اصولی رو طی کنی. دوره پایتون آموزشگاه راهکار تبریز دقیقاً همون مسیریه که لازم داری.

نام دوره آموزش جامع پایتون — از صفر تا پروژه‌های حرفه‌ای
سرفصل‌ها مبانی پایتون، Tkinter، SQLite، فایل، شیءگرایی، پروژه‌های عملی
سطح از مبتدی تا پیشرفته
پیش‌نیاز ندارد — از صفر شروع می‌شود
مدرک رسمی فنی و حرفه‌ای، قابل ترجمه
پشتیبانی دائمی، حتی پس از پایان دوره
شماره تماس 041-35574231
آدرس تبریز، خیابان شریعتی (شهناز)، نرسیده به تقاطع ۱۷ شهریور
سوالات متداول

سوالات متداول درباره پروژه دفترچه تلفن و پایتون

آیا برای ساخت دفترچه تلفن باید برنامه‌نویسی بلد باشم؟

برای شروع، آشنایی مقدماتی با پایتون کافیه. در این مقاله کد کامل و کامنت‌گذاری شده رو در اختیارت گذاشتیم، پس حتی اگه تازه‌کار هم باشی می‌تونی اجراش کنی و یاد بگیری.

تفاوت پروژه دفترچه تلفن با To Do List چیه؟

پروژه دفترچه تلفن شامل جستجوی LIKE و ویرایش رکورد است که در To Do List معمولاً ساده‌تره. به همین دلیل دفترچه تلفن یک قدم بالاتر از To Do List محسوب می‌شه.

آیا این پروژه برای نمونه سوال عملی فنی و حرفه‌ای مناسبه؟

بله، دقیقاً. ترکیب Tkinter و SQLite همراه با جستجو یکی از رایج‌ترین ساختارهای آزمون عملی پایتون در سازمان فنی و حرفه‌ای است.

جستجوی LIKE چطور کار می‌کنه؟

در جستجوی LIKE از علامت % استفاده می‌کنیم که یعنی «هر چیزی». مثلاً الگوی %علی% هر مخاطبی رو پیدا می‌کنه که کلمه «علی» جایی در نام یا شماره‌اش داشته باشه.

چرا از علامت ? در دستورات SQL استفاده می‌کنیم؟

برای جلوگیری از SQL Injection. این روش Parameterized Query نام داره و امنیت برنامه رو بالا می‌بره. مقادیر به‌صورت جداگانه به تابع execute پاس داده می‌شن.

آیا می‌تونم این پروژه رو توی گیت‌هاب بذارم؟

قطعاً! این کار به شدت توصیه می‌شه. کارفرماها نمونه‌کارهای عملی رو خیلی جدی می‌گیرن.

دوره پایتون آموزشگاه راهکار چقدر طول می‌کشه؟

طول دوره بستگی به سطح و اهداف شما داره. برای اطلاع دقیق، با شماره 041-35574231 تماس بگیرید تا مشاوره رایگان دریافت کنید.

آیا در تبریز برای پایتون کار هست؟

بله. شرکت‌های نرم‌افزاری، استارتاپ‌ها و آموزشگاه‌های متعددی در تبریز به دنبال برنامه‌نویس پایتون هستن.

برای ثبت‌نام در دوره پایتون با چه شماره‌ای تماس بگیرم؟

برای مشاوره رایگان و ثبت‌نام، با شماره 041-35574231 تماس بگیرید.

همین امروز شروع کن

پروژه ساختی — حالا وقت یادگیری حرفه‌ایه!

در دوره جامع پایتون آموزشگاه راهکار تبریز ثبت‌نام کن، از صفر تا پروژه‌های حرفه‌ای پیش برو، مدرک فنی و حرفه‌ای دریافت کن و وارد بازار کار پرتقاضای برنامه‌نویسی شو.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *