ساخت برنامه مدیریت پروژه با پایتون: یک پروژه خلاقانه و کاربردی

ساخت برنامه مدیریت پروژه با پایتون: یک پروژه خلاقانه و کاربردی

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

مقدمه و نیازمندی‌ها

هدف از این پروژه، ایجاد یک برنامه خط فرمان (CLI) است که به کاربر امکان می‌دهد وظایف پروژه را تعریف کند، وضعیت آن‌ها را تغییر دهد، و لیست وظایف را مشاهده کند. برای این منظور، از پایتون و کتابخانه‌های استاندارد آن استفاده خواهیم کرد. نیازمندی‌های اصلی برنامه عبارتند از:

  • تعریف وظیفه: امکان افزودن وظایف جدید با عنوان، توضیحات، و تاریخ سررسید.
  • تغییر وضعیت وظیفه: امکان تغییر وضعیت وظیفه به “در حال انجام”، “تکمیل شده”، یا “به تعویق افتاده”.
  • نمایش لیست وظایف: نمایش لیست تمام وظایف با جزئیات آن‌ها.
  • فیلتر وظایف: امکان فیلتر وظایف بر اساس وضعیت.
  • ذخیره و بازیابی داده‌ها: ذخیره وظایف در یک فایل و بازیابی آن‌ها در هنگام اجرای مجدد برنامه.

طراحی برنامه

برای طراحی برنامه، می‌توان از یک ساختار داده‌ای ساده مانند لیست یا دیکشنری برای ذخیره وظایف استفاده کرد. هر وظیفه می‌تواند به صورت یک دیکشنری با کلیدهای “title” (عنوان)، “description” (توضیحات)، “due_date” (تاریخ سررسید)، و “status” (وضعیت) نمایش داده شود. برنامه شامل توابع مختلفی برای انجام عملیات‌های مورد نیاز خواهد بود، از جمله:

  • add_task(title, description, due_date): افزودن یک وظیفه جدید.
  • update_task_status(task_id, status): تغییر وضعیت یک وظیفه.
  • display_tasks(status=None): نمایش لیست وظایف (با امکان فیلتر بر اساس وضعیت).
  • save_tasks(filename): ذخیره وظایف در یک فایل.
  • load_tasks(filename): بازیابی وظایف از یک فایل.

پیاده‌سازی برنامه با پایتون

در این بخش، به پیاده‌سازی برنامه با استفاده از پایتون می‌پردازیم. ابتدا، ساختار داده‌ای برای ذخیره وظایف را تعریف می‌کنیم:

tasks = []

def add_task(title, description, due_date):
    task = {
        'title': title,
        'description': description,
        'due_date': due_date,
        'status': 'pending'
    }
    tasks.append(task)
    print(f"وظیفه '{title}' با موفقیت اضافه شد.")

def update_task_status(task_id, status):
    try:
        task = tasks[task_id]
        task['status'] = status
        print(f"وضعیت وظیفه '{task['title']}' به '{status}' تغییر یافت.")
    except IndexError:
        print("شناسه وظیفه نامعتبر است.")

def display_tasks(status=None):
    if not tasks:
        print("هیچ وظیفه‌ای وجود ندارد.")
        return

    if status:
        filtered_tasks = [task for task in tasks if task['status'] == status]
    else:
        filtered_tasks = tasks

    for i, task in enumerate(filtered_tasks):
        print(f"شناسه: {i}")
        print(f"عنوان: {task['title']}")
        print(f"توضیحات: {task['description']}")
        print(f"تاریخ سررسید: {task['due_date']}")
        print(f"وضعیت: {task['status']}")
        print("-" * 20)

def save_tasks(filename):
    import json
    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(tasks, f, ensure_ascii=False, indent=4)
    print(f"وظایف در فایل '{filename}' ذخیره شدند.")

def load_tasks(filename):
    import json
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            global tasks
            tasks = json.load(f)
        print(f"وظایف از فایل '{filename}' بارگذاری شدند.")
    except FileNotFoundError:
        print(f"فایل '{filename}' یافت نشد.  هیچ وظیفه‌ای بارگذاری نشد.")

این کد، توابع اصلی برنامه را پیاده‌سازی می‌کند. تابع add_task یک وظیفه جدید را به لیست وظایف اضافه می‌کند. تابع update_task_status وضعیت یک وظیفه را تغییر می‌دهد. تابع display_tasks لیست وظایف را نمایش می‌دهد و امکان فیلتر بر اساس وضعیت را فراهم می‌کند. توابع save_tasks و load_tasks وظایف را در یک فایل JSON ذخیره و از آن بارگذاری می‌کنند.

ایجاد رابط کاربری خط فرمان (CLI)

برای ایجاد رابط کاربری خط فرمان، می‌توان از یک حلقه بی‌نهایت استفاده کرد که دستورات کاربر را دریافت و پردازش می‌کند. در اینجا یک مثال ساده از رابط کاربری CLI آورده شده است:

def main():
    filename = 'tasks.json'
    load_tasks(filename)

    while True:
        print("nمنوی برنامه مدیریت پروژه:")
        print("1. افزودن وظیفه")
        print("2. تغییر وضعیت وظیفه")
        print("3. نمایش لیست وظایف")
        print("4. نمایش وظایف بر اساس وضعیت")
        print("5. ذخیره و خروج")

        choice = input("انتخاب کنید (1-5): ")

        if choice == '1':
            title = input("عنوان وظیفه را وارد کنید: ")
            description = input("توضیحات وظیفه را وارد کنید: ")
            due_date = input("تاریخ سررسید را وارد کنید: ")
            add_task(title, description, due_date)
        elif choice == '2':
            try:
                task_id = int(input("شناسه وظیفه را وارد کنید: "))
                status = input("وضعیت جدید را وارد کنید (pending, in_progress, completed): ")
                update_task_status(task_id, status)
            except ValueError:
                print("شناسه وظیفه باید یک عدد صحیح باشد.")
        elif choice == '3':
            display_tasks()
        elif choice == '4':
            status = input("وضعیت مورد نظر را وارد کنید (pending, in_progress, completed): ")
            display_tasks(status)
        elif choice == '5':
            save_tasks(filename)
            print("برنامه با موفقیت بسته شد.")
            break
        else:
            print("انتخاب نامعتبر است.")

if __name__ == "__main__":
    main()

این کد، تابع main را تعریف می‌کند که رابط کاربری CLI را پیاده‌سازی می‌کند. این تابع، دستورات کاربر را دریافت می‌کند و توابع مربوطه را فراخوانی می‌کند. در نهایت، قبل از خروج، وظایف را در فایل ذخیره می‌کند.

بهبود و گسترش برنامه

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

  • اضافه کردن امکان ویرایش وظایف.
  • اضافه کردن امکان حذف وظایف.
  • اضافه کردن امکان تعیین اولویت برای وظایف.
  • استفاده از یک پایگاه داده برای ذخیره وظایف (به جای فایل JSON).
  • ایجاد یک رابط کاربری گرافیکی (GUI) به جای رابط کاربری خط فرمان.
  • اضافه کردن امکان تعیین وابستگی بین وظایف.
  • پیاده‌سازی نمودار گانت برای نمایش زمان‌بندی پروژه.

نتیجه‌گیری

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

بدون دیدگاه

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

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