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

import json

def add_contact():
    name = input("Enter name: ")
    phone = input("Enter phone number: ")
    email = input("Enter email address: ")
    address = input("Enter address: ")
    contact = {"name": name, "phone": phone, "email": email, "address": address}
    with open("contacts.json", "a") as f:
        f.write(json.dumps(contact) + "\n")
    print("Contact added successfully.")

def search_contact():
    name = input("Enter name to search: ")
    with open("contacts.json", "r") as f:
        for line in f:
            contact = json.loads(line)
            if contact["name"] == name:
                print(f"Name: {contact['name']}")
                print(f"Phone: {contact['phone']}")
                print(f"Email: {contact['email']}")
                print(f"Address: {contact['address']}")
                return contact
        print("Contact not found.")
        return None

def edit_contact():
    contact = search_contact()
    if contact is not None:
        name = input("Enter new name (leave blank to keep current name): ")
        phone = input("Enter new phone number (leave blank to keep current phone number): ")
        email = input("Enter new email address (leave blank to keep current email address): ")
        address = input("Enter new address (leave blank to keep current address): ")
        if name:
            contact["name"] = name
        if phone:
            contact["phone"] = phone
        if email:
            contact["email"] = email
        if address:
            contact["address"] = address
        with open("contacts.json", "r") as f:
            lines = f.readlines()
        with open("contacts.json", "w") as f:
            for line in lines:
                old_contact = json.loads(line)
                if old_contact["name"] == contact["name"]:
                    f.write(json.dumps(contact) + "\n")
                else:
                    f.write(line)
        print("Contact updated successfully.")

def delete_contact():
    contact = search_contact()
    if contact is not None:
        with open("contacts.json", "r") as f:
            lines = f.readlines()
        with open("contacts.json", "w") as f:
            for line in lines:
                old_contact = json.loads(line)
                if old_contact["name"] != contact["name"]:
                    f.write(line)
        print("Contact deleted successfully.")

while True:
    print("1. Add contact")
    print("2. Search contact")
    print("3. Edit contact")
    print("4. Delete contact")
    print("5. Exit")
    choice = input("Enter your choice: ")
    if choice == "1":
        add_contact()
    elif choice == "2":
        search_contact()
    elif choice == "3":
        edit_contact()
    elif choice == "4":
        delete_contact()
    elif choice == "5":
        break
    else:
        print("Invalid choice. Try again.")

این کد چهار تابع را تعریف می کند: add_contact، search_contact، edit_contact و delete_contact. تابع add_contact از کاربر می خواهد جزئیات یک مخاطب جدید را وارد کرده و آن را در فایلی به نام contacts.json ذخیره کند. تابع search_contact از کاربر می خواهد که نامی را برای جستجو وارد کند و در صورت یافتن جزئیات مخاطب را نمایش می دهد. تابع edit_contact به کاربر اجازه می دهد تا جزئیات یک مخاطب موجود را ویرایش کند. تابع delete_contact به کاربر اجازه می دهد تا یک مخاطب موجود را حذف کند.

برنامه اصلی یک منوی ساده برای افزودن یک مخاطب جدید، جستجوی یک مخاطب موجود، ویرایش یک مخاطب موجود، حذف یک مخاطب موجود یا خروج از برنامه ارائه می دهد.

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