
روز ۳۴ آموزش پایتون: پروژه سیستم مدیریت کتابخانه با کلاسها و فایلها
در این پروژه متوسط قصد داریم یک سیستم مدیریت کتابخانه ایجاد کنیم که بتواند اطلاعات کتابها را ذخیره، نمایش و مدیریت کند. این پروژه کاربردی، تمرینی عالی برای تمرین مفاهیم شیءگرایی، کلاسها، ارثبری، متدهای ویژه و کار با فایلها در پایتون است. هدف این پروژه این است که با طراحی کلاسهای مرتب و استفاده از متدهای مناسب، سیستمی قابل توسعه و خوانا بسازیم و اطلاعات کتابها را به شکل ساختاریافته در فایل ذخیره کنیم. این روش باعث میشود بتوانیم در پروژههای واقعی اطلاعات را مدیریت کنیم و کدهای حرفهای بنویسیم.
تعریف کلاس کتاب
ابتدا یک کلاس پایه به نام Book تعریف میکنیم که شامل ویژگیهایی مانند عنوان، نویسنده، سال انتشار و وضعیت در دسترس بودن باشد. همچنین متدهایی برای نمایش اطلاعات کتاب و تغییر وضعیت آن تعریف میکنیم. استفاده از متدهای ویژه __init__ و __str__ باعث میشود مقداردهی اولیه و چاپ اطلاعات کتاب حرفهای و خوانا باشد. این ساختار پایه، ستون فقرات سیستم مدیریت کتابخانه خواهد بود.
نمونه کد کلاس کتاب:
class Book:
def __init__(self, title, author, year, available=True):
self.title = title
self.author = author
self.year = year
self.available = available
def borrow(self):
if self.available:
self.available = False
print(f"کتاب '{self.title}' امانت گرفته شد.")
else:
print(f"کتاب '{self.title}' در حال حاضر موجود نیست.")
def return_book(self):
self.available = True
print(f"کتاب '{self.title}' بازگردانده شد.")
def __str__(self):
status = "موجود" if self.available else "امانت گرفته شده"
return f"Book(title={self.title}, author={self.author}, year={self.year}, status={status})"مدیریت کتابها با کلاس Library
برای مدیریت مجموعهای از کتابها، یک کلاس به نام Library ایجاد میکنیم. این کلاس مسئول افزودن کتاب، حذف کتاب، جستجو و نمایش کتابها است. همچنین قابلیت ذخیره و بارگذاری دادهها از فایل را دارد تا اطلاعات بین اجرای برنامه حفظ شود. کار با فایلها باعث میشود برنامه کاربردی و قابل استفاده برای سیستم واقعی باشد.
نمونه کد کلاس Library:
import json
class Library:
def __init__(self, filename="library.json"):
self.filename = filename
self.books = []
self.load_books()
def add_book(self, book):
self.books.append(book)
self.save_books()
print(f"کتاب '{book.title}' اضافه شد.")
def remove_book(self, title):
self.books = [book for book in self.books if book.title != title]
self.save_books()
print(f"کتاب '{title}' حذف شد.")
def show_books(self):
for book in self.books:
print(book)
def save_books(self):
with open(self.filename, "w", encoding="utf-8") as f:
json.dump([book.__dict__ for book in self.books], f, ensure_ascii=False, indent=4)
def load_books(self):
try:
with open(self.filename, "r", encoding="utf-8") as f:
books_data = json.load(f)
self.books = [Book(**data) for data in books_data]
except FileNotFoundError:
self.books = []استفاده عملی از سیستم مدیریت کتابخانه
اکنون میتوانیم کتابهای جدید اضافه کنیم، کتابها را نمایش دهیم، امانت بدهیم یا بازگردانیم و تغییرات را در فایل ذخیره کنیم. این بخش تمرینی باعث میشود تمامی مفاهیم کلاس، شیء، متدهای ویژه، کار با فایل و JSON به شکل عملی تثبیت شود و مهارت کاربردی ما افزایش یابد.
نمونه کد استفاده از سیستم:
library = Library()
book1 = Book("ریاضی پایه", "علی", 1399)
book2 = Book("فیزیک پیشرفته", "زهرا", 1400)
library.add_book(book1)
library.add_book(book2)
library.show_books()
book1.borrow()
book1.return_book()
library.remove_book("ریاضی پایه")
library.show_books()با اجرای این کد، مشاهده میکنیم که تمامی عملیات روی کتابها قابل انجام است و اطلاعات بین اجرای برنامه در فایل JSON ذخیره میشود. این تمرین باعث میشود برنامه واقعی و قابل استفاده برای مدیریت کتابها ساخته شود.
جمعبندی پروژه سیستم مدیریت کتابخانه
در این پروژه یاد گرفتیم چگونه یک سیستم متوسط با استفاده از کلاسها بسازیم، اطلاعات را مدیریت و در فایل ذخیره کنیم. مفاهیمی مانند کلاس، شیء، متد، متدهای ویژه، کار با فایل و JSON به شکل عملی تمرین شد. همچنین با ایجاد کلاس Library و استفاده از متدهای مدیریت مجموعه، مهارت طراحی برنامههای قابل توسعه و حرفهای را کسب کردیم. تمرین پیشنهادی این است که قابلیتهایی مانند جستجوی پیشرفته، دستهبندی کتابها و اضافه کردن کاربران به سیستم را نیز پیادهسازی کنید تا تسلط کامل بر طراحی سیستمهای واقعی پیدا کنید.
