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

سورس برنامه مدیریت کتابخانه در پایتون + Tkinter و SQLite

پروژه عملی پایتون | ویژه آزمون فنی‌وحرفه‌ای

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

در این آموزش گام‌به‌گام، یک پروژه کامل مدیریت کتابخانه با پایتون می‌سازیم؛ همراه با سورس کد کامنت‌گذاری‌شده فارسی، اتصال به پایگاه داده SQLite و طراحی رابط کاربری مدرن با Tkinter. این پروژه یکی از پرتکرارترین سوالات آزمون عملی فنی‌وحرفه‌ای است.

۱۵ دقیقه مطالعه سطح: متوسط آموزشگاه راهکار تبریز
نمای نهایی برنامه مدیریت کتابخانه با پایتون و Tkinter - آموزشگاه راهکار تبریز
پروژه آماده اجرا

۱ معرفی پروژه و پیش‌نیازها

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

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

پیش‌نیازهای این پروژه

  • نصب Python 3.8 یا بالاتر روی سیستم
  • آشنایی مقدماتی با مفاهیم متغیر، تابع و شرط در پایتون
  • کتابخانه‌های tkinter و sqlite3 به‌صورت پیش‌فرض در پایتون وجود دارند

۲ قابلیت‌های برنامه مدیریت کتابخانه

افزودن کتاب جدید

ثبت عنوان، نویسنده، سال و ISBN با اعتبارسنجی و ذخیره امن در دیتابیس.

جستجوی هوشمند

جستجوی ترکیبی روی همه فیلدها به‌صورت همزمان با ساخت پویای شرط‌های SQL.

حذف با تأیید

حذف امن رکوردها با نمایش پیام تأییدیه و جلوگیری از حذف تصادفی.

نمایش لحظه‌ای

به‌روزرسانی خودکار Listbox پس از هر عملیات، بدون نیاز به بستن برنامه.

۳ سورس کد کامل برنامه مدیریت کتابخانه

کد زیر را در یک فایل با نام bookstore.py ذخیره کنید و با دستور python bookstore.py اجرا نمایید. تمام خطوط با کامنت فارسی توضیح داده شده‌اند. این سبک کدنویسی دقیقاً همان استانداردی است که در دوره‌های آموزش پایتون در تبریز آموزشگاه راهکار تدریس می‌شود.

bookstore.py
# ============================================
# برنامه مدیریت کتابخانه با Python + Tkinter
# آموزشگاه کامپیوتر راهکار تبریز
# ============================================

from tkinter import *           # ایمپورت تمام کلاس‌های Tkinter
import sqlite3                    # ماژول پایگاه داده SQLite
from tkinter import messagebox   # برای نمایش پیام‌های هشدار

global kod                        # متغیر سراسری برای ذخیره id رکورد انتخابی

# ---------- اتصال به پایگاه داده ----------
conn = sqlite3.connect('book.db')    # اتصال/ساخت فایل دیتابیس
curs = conn.cursor()               # ایجاد cursor برای اجرای دستورات SQL

# ساخت جدول book در صورت عدم وجود
curs.execute('''create table if not exists book
             (id integer primary key autoincrement,
             onvan text, writer text, sal text, isbn text)''')
# id: کلید اصلی | onvan: عنوان | writer: نویسنده | sal: سال | isbn: شابک

# ---------- تابع افزودن کتاب ----------
def add():
    nam   = e1.get()               # عنوان
    nevis = e2.get()               # نویسنده
    sal   = e3.get()               # سال انتشار
    isbn  = e4.get()               # شابک
    curs.execute('insert into book (onvan,writer,sal,isbn) values(?,?,?,?)',
                 (nam, nevis, sal, isbn))     # درج امن با پارامتر ؟
    conn.commit()                  # ذخیره تغییرات
    e1.delete(0, END); e2.delete(0, END)  # پاک کردن فیلدها
    e3.delete(0, END); e4.delete(0, END)
    e1.focus_set()                 # فوکوس روی فیلد عنوان
    seeall()                       # به‌روزرسانی لیست

# ---------- نمایش همه کتاب‌ها ----------
def seeall():
    la1.delete(0, END)              # پاک کردن Listbox
    curs.execute('select * from book')  # انتخاب همه رکوردها
    data = curs.fetchall()
    for i in data:
        la1.insert(END, i)         # افزودن هر رکورد به لیست

# ---------- انتخاب رکورد از لیست ----------
def entekhab(event):
    global kod
    satrno = la1.curselection()    # شماره سطر انتخاب‌شده
    matn   = la1.get(satrno)       # محتوای سطر
    kod    = matn[0]               # ذخیره id
    nam = matn[1]; nevis = matn[2]
    sal = matn[3]; isbn  = matn[4]
    e1.delete(0,END); e2.delete(0,END)
    e3.delete(0,END); e4.delete(0,END)
    e1.insert(0,nam); e2.insert(0,nevis)
    e3.insert(0,sal); e4.insert(0,isbn)

# ---------- حذف کتاب ----------
def hazf():
    javab = messagebox.askyesno('هشدار', 'آیا این رکورد حذف شود؟')
    if javab:
        curs.execute(f'delete from book where id={kod}')
        conn.commit()
        seeall()

# ---------- بستن پنجره ----------
def bastan():
    win.destroy()

# ---------- جستجوی ترکیبی ----------
def search():
    la1.delete(0, END)
    nam=e1.get(); nevis=e2.get(); sal=e3.get(); isbn=e4.get()
    lis1=[]; lis2=[]
    if len(nam)>0:   lis1.append('onvan=?');  lis2.append(nam)
    if len(nevis)>0: lis1.append('writer=?');  lis2.append(nevis)
    if len(sal)>0:   lis1.append('sal=?');     lis2.append(sal)
    if len(isbn)>0:  lis1.append('isbn=?');    lis2.append(isbn)
    shart = ' and '.join(lis1)   # ترکیب شرط‌ها با AND
    curs.execute('select * from book where '+shart, tuple(lis2))
    for i in curs.fetchall():
        la1.insert(END, i)

# ---------- ساخت پنجره اصلی ----------
win = Tk()
win.geometry('600x500')
win.title('مدیریت کتابخانه - آموزشگاه راهکار تبریز')

# برچسب‌ها و فیلدهای ورودی
Label(win, text='عنوان').place(x=50, y=20)
e1 = Entry(win); e1.place(x=100, y=20)

Label(win, text='نویسنده').place(x=50, y=70)
e2 = Entry(win); e2.place(x=100, y=70)

Label(win, text='تاریخ انتشار').place(x=300, y=20)
e3 = Entry(win); e3.place(x=400, y=20)

Label(win, text='ISBN').place(x=300, y=70)
e4 = Entry(win); e4.place(x=400, y=70)

# لیست نمایش کتاب‌ها
la1 = Listbox(); la1.place(x=50, y=200, width=200)
la1.bind('<<ListboxSelect>>', entekhab)
seeall()

# دکمه‌های عملیاتی
Button(win, text='اضافه کردن',  command=add).place(x=300, y=200, width=100)
Button(win, text='مشاهده همه',  command=seeall).place(x=300, y=240, width=100)
Button(win, text='جستجو',      command=search).place(x=300, y=280, width=100)
Button(win, text='حذف',         command=hazf).place(x=300, y=320, width=100)
Button(win, text='بستن',        command=bastan).place(x=300, y=360, width=100)

win.mainloop()                     # اجرای حلقه اصلی برنامه

۴ توضیح بخش‌های کلیدی کد

اتصال به پایگاه داده SQLite

دستور sqlite3.connect('book.db') فایل دیتابیس را می‌سازد و اتصال را برقرار می‌کند. سپس با create table if not exists جدول book ساخته می‌شود. این الگو دقیقاً همان چیزی است که در دوره‌های آموزش SQL و پایگاه داده آموزشگاه راهکار تدریس می‌شود.

تابع add — افزودن کتاب

این تابع مقادیر چهار فیلد را خوانده و با دستور INSERT INTO در جدول درج می‌کند. استفاده از پارامترهای ؟ به‌جای الحاق مستقیم رشته، جلوی حمله SQL Injection را می‌گیرد.

تابع search — جستجوی پویا

این تابع به‌صورت پویا شرط‌های جستجو را بر اساس فیلدهای پر شده می‌سازد و با JOIN کردن آن‌ها با AND، کوئری نهایی را اجرا می‌کند.

تابع hazf — حذف امن

قبل از حذف، تابع messagebox.askyesno یک پیام تأییدیه نمایش می‌دهد. این الگو در تمام پروژه‌های واقعی برای جلوگیری از حذف تصادفی داده‌ها استفاده می‌شود.

۵ نحوه اجرا و تست برنامه

نکات مهم اجرا

  1. کد بالا را در فایلی با نام bookstore.py ذخیره کنید.
  2. ترمینال یا CMD را در پوشه فایل باز کنید.
  3. دستور python bookstore.py را اجرا کنید.
  4. پنجره گرافیکی برنامه باز می‌شود و می‌توانید کتاب اضافه، جستجو و حذف کنید.
  5. فایل book.db به‌صورت خودکار در همان پوشه ساخته می‌شود.

🚀 می‌خواهید از صفر تا استخدام برنامه‌نویس شوید؟

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

آدرس: تبریز، خیابان شریعتی (شهناز)
تلفن: 041-35574231
همین حالا مشاوره رایگان بگیرید

۶ سوالات متداول

بهترین آموزشگاه برنامه نویسی در تبریز کجاست؟

آموزشگاه راهکار تبریز واقع در خیابان شریعتی (شهناز) با بیش از یک دهه سابقه، بهترین مرکز آموزش برنامه‌نویسی، طراحی سایت، هوش مصنوعی و ICDL در تبریز است. برای مشاوره رایگان با شماره 041-35574231 تماس بگیرید.

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

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

برای یادگیری برنامه نویسی از کجا شروع کنم؟

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

آموزش هوش مصنوعی در تبریز کجا برگزار می‌شود؟

آموزشگاه راهکار تبریز، واقع در خیابان شریعتی (شهناز)، دوره‌های تخصصی هوش مصنوعی و یادگیری ماشین را با پایتون برگزار می‌کند. تلفن تماس: 041-35574231.

۷ جمع‌بندی

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

اگر می‌خواهید این مسیر را حرفه‌ای، پروژه‌محور و با پشتیبانی استاد طی کنید، آموزشگاه راهکار تبریز در خیابان شریعتی (شهناز) با شماره 041-35574231 آماده مشاوره رایگان به شماست.

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

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