سورس برنامه مدیریت کتابخانه در پایتون + Tkinter و SQLite
آموزش ساخت برنامه مدیریت کتابخانه با پایتون و Tkinter + سورس کد کامل
در این آموزش گامبهگام، یک پروژه کامل مدیریت کتابخانه با پایتون میسازیم؛ همراه با سورس کد کامنتگذاریشده فارسی، اتصال به پایگاه داده SQLite و طراحی رابط کاربری مدرن با Tkinter. این پروژه یکی از پرتکرارترین سوالات آزمون عملی فنیوحرفهای است.
۱ معرفی پروژه و پیشنیازها
برنامه مدیریت کتابخانه با پایتون یکی از بهترین پروژهها برای یادگیری برنامهنویسی رابط کاربری (GUI) با Tkinter و کار با پایگاه داده SQLite است. این پروژه دقیقاً همان چیزی است که در آزمونهای عملی فنیوحرفهای پایتون از هنرجویان خواسته میشود.
اگر ساکن تبریز هستید و به دنبال بهترین مرکز آموزش برنامهنویسی هستید، آموزشگاه راهکار با بیش از یک دهه تجربه در آموزش پایتون، طراحی سایت، هوش مصنوعی و ICDL، مسیر یادگیری شما را از صفر تا استخدام هموار میکند.
پیشنیازهای این پروژه
- نصب Python 3.8 یا بالاتر روی سیستم
- آشنایی مقدماتی با مفاهیم متغیر، تابع و شرط در پایتون
- کتابخانههای
tkinterوsqlite3بهصورت پیشفرض در پایتون وجود دارند
۲ قابلیتهای برنامه مدیریت کتابخانه
افزودن کتاب جدید
ثبت عنوان، نویسنده، سال و ISBN با اعتبارسنجی و ذخیره امن در دیتابیس.
جستجوی هوشمند
جستجوی ترکیبی روی همه فیلدها بهصورت همزمان با ساخت پویای شرطهای SQL.
حذف با تأیید
حذف امن رکوردها با نمایش پیام تأییدیه و جلوگیری از حذف تصادفی.
نمایش لحظهای
بهروزرسانی خودکار Listbox پس از هر عملیات، بدون نیاز به بستن برنامه.
۳ سورس کد کامل برنامه مدیریت کتابخانه
کد زیر را در یک فایل با نام bookstore.py ذخیره کنید و با دستور
python 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 یک پیام تأییدیه نمایش میدهد. این الگو
در تمام پروژههای واقعی برای جلوگیری از حذف تصادفی دادهها استفاده میشود.
۵ نحوه اجرا و تست برنامه
نکات مهم اجرا
- کد بالا را در فایلی با نام
bookstore.pyذخیره کنید. - ترمینال یا CMD را در پوشه فایل باز کنید.
- دستور
python bookstore.pyرا اجرا کنید. - پنجره گرافیکی برنامه باز میشود و میتوانید کتاب اضافه، جستجو و حذف کنید.
- فایل
book.dbبهصورت خودکار در همان پوشه ساخته میشود.
🚀 میخواهید از صفر تا استخدام برنامهنویس شوید؟
آموزشگاه راهکار تبریز با بیش از یک دهه سابقه، بهترین مرکز آموزش برنامهنویسی، طراحی سایت، هوش مصنوعی و ICDL در آذربایجان شرقی است. کلاسهای حضوری و آنلاین با اساتید مجرب و پروژهمحور.
۶ سوالات متداول
بهترین آموزشگاه برنامه نویسی در تبریز کجاست؟
دوره آموزش پایتون در تبریز چقدر طول میکشد؟
برای یادگیری برنامه نویسی از کجا شروع کنم؟
آموزش هوش مصنوعی در تبریز کجا برگزار میشود؟
۷ جمعبندی
در این آموزش، یک پروژه کامل مدیریت کتابخانه با پایتون و Tkinter را گامبهگام ساختیم. این پروژه نمونهای عالی برای تمرین آزمون عملی فنیوحرفهای و همچنین شروع یادگیری برنامهنویسی رابط کاربری و پایگاه داده است.
اگر میخواهید این مسیر را حرفهای، پروژهمحور و با پشتیبانی استاد طی کنید، آموزشگاه راهکار تبریز در خیابان شریعتی (شهناز) با شماره 041-35574231 آماده مشاوره رایگان به شماست.