ساخت یک برنامه واقعی
### داستان بیست و ششم: ساخت یک برنامه واقعی
آراد پس از یادگیری بسیاری از مفاهیم برنامهنویسی، از جمله توابع، دیکشنریها، کار با فایلها، و حتی برنامهنویسی شبکهای، تصمیم گرفت که زمان آن رسیده است که یک پروژه کوچک و واقعی بسازد. او میخواست برنامهای طراحی کند که تمام مفاهیم آموخته شده را به کار گیرد و به صورت کاربردی قابل استفاده باشد.
آراد به سینا پیام داد: «سینا، خیلی خوشحالم که مفاهیم زیادی رو یاد گرفتم. حالا میخواهم یک پروژه واقعی بسازم. ایدهای دارم که میخواهیم یک دفترچه تلفن دیجیتال بسازیم که بتونه اطلاعات تماسها رو ذخیره، جستجو، و ویرایش کنه. چطور میتونم این رو بسازم؟»
سینا با خوشحالی جواب داد: «عالیه آراد! ساخت چنین پروژهای خیلی بهت کمک میکنه تا تمام مفاهیم رو یکجا تمرین کنی. برای این پروژه، ما از دیکشنریها برای ذخیره اطلاعات، توابع برای مدیریت عملیات مختلف و فایلها برای ذخیره دادهها استفاده میکنیم.»
#### طراحی برنامه
سینا اولین قدم را به آراد نشان داد و گفت: «اولین چیزی که باید انجام بدیم اینه که ساختار دادهای رو طراحی کنیم. هر تماس باید شامل نام، شماره تلفن، و آدرس ایمیل باشد. بنابراین، ما یک دیکشنری برای ذخیره این اطلاعات خواهیم ساخت.»
آراد شروع به نوشتن کد برای ذخیره اطلاعات تماسها کرد:
“`python
import json
# دیکشنری برای ذخیره اطلاعات تماسها
contacts = {}
# ذخیره دادهها در فایل JSON
def save_contacts():
with open(“contacts.json”, “w”, encoding=”utf-8″) as file:
json.dump(contacts, file, ensure_ascii=False)
# بارگذاری دادهها از فایل JSON
def load_contacts():
try:
with open(“contacts.json”, “r”, encoding=”utf-8″) as file:
return json.load(file)
except FileNotFoundError:
return {}
# بارگذاری اطلاعات از فایل
contacts = load_contacts()
“`
سینا توضیح داد که در این کد، ابتدا دادهها از فایل JSON بارگذاری میشوند و اگر فایل وجود نداشته باشد، یک دیکشنری خالی برای ذخیره اطلاعات ایجاد میشود. سپس اطلاعات تماسها در یک دیکشنری به نام `contacts` ذخیره میشوند.
#### اضافه کردن تماس جدید
آراد به سینا گفت: «حالا چطور میتوانم تماس جدیدی اضافه کنم؟»
سینا پاسخ داد: «برای اضافه کردن یک تماس جدید، میتوانی یک تابع بنویسی که اطلاعات تماس را از کاربر بگیرد و آنها را در دیکشنری ذخیره کند.»
آراد کد زیر را نوشت:
“`python
# اضافه کردن تماس جدید
def add_contact(name, phone, email):
contacts[name] = {“phone”: phone, “email”: email}
save_contacts()
print(f”تماس {name} با موفقیت اضافه شد.”)
“`
سینا تایید کرد: «آفرین! حالا میتوانی تماسها را اضافه کنی. هر بار که تماس جدیدی اضافه میکنی، دادهها به فایل ذخیره میشوند.»
#### جستجوی تماسها
آراد که حالا برای اضافه کردن تماسها آماده بود، خواست بداند چطور میتواند یک تماس خاص را جستجو کند. سینا پیشنهاد داد: «برای جستجو میتوانی یک تابع بنویسی که نام تماس را گرفته و اطلاعات آن را نمایش دهد.»
آراد کد زیر را نوشت:
“`python
# جستجو در تماسها
def search_contact(name):
if name in contacts:
contact = contacts[name]
print(f”نام: {name}”)
print(f”شماره تلفن: {contact[‘phone’]}”)
print(f”ایمیل: {contact[’email’]}”)
else:
print(f”تماسی با نام {name} پیدا نشد.”)
“`
سینا توضیح داد: «این تابع ابتدا چک میکند که آیا نام تماس در دیکشنری موجود است یا نه. اگر تماس پیدا شد، اطلاعات آن نمایش داده میشود.»
#### ویرایش تماسها
آراد به سینا گفت: «من میخواهم یک تماس را ویرایش کنم. چطور میتوانم این کار را انجام دهم؟»
سینا پیشنهاد داد: «برای ویرایش یک تماس، میتوانی تابعی بنویسی که نام تماس را گرفته و اجازه دهد که کاربر شماره تلفن یا ایمیل را تغییر دهد.»
آراد کد زیر را نوشت:
“`python
# ویرایش تماس
def edit_contact(name, phone=None, email=None):
if name in contacts:
if phone:
contacts[name][“phone”] = phone
if email:
contacts[name][“email”] = email
save_contacts()
print(f”تماس {name} با موفقیت ویرایش شد.”)
else:
print(f”تماسی با نام {name} پیدا نشد.”)
“`
سینا توضیح داد که این تابع به کاربر اجازه میدهد تا شماره تلفن یا ایمیل یک تماس را تغییر دهد. اگر هیچ کدام از اطلاعات جدید وارد نشد، فقط آن بخش از اطلاعات ویرایش میشود که کاربر قصد تغییر آن را داشته است.
#### حذف تماسها
آراد حالا میخواست بداند که چطور میتواند یک تماس را حذف کند. سینا گفت: «برای حذف یک تماس، میتوانی از دستور `del` استفاده کنی.»
آراد کد زیر را نوشت:
“`python
# حذف تماس
def delete_contact(name):
if name in contacts:
del contacts[name]
save_contacts()
print(f”تماس {name} با موفقیت حذف شد.”)
else:
print(f”تماسی با نام {name} پیدا نشد.”)
“`
سینا تایید کرد: «با این تابع میتوانی تماسها را به راحتی حذف کنی و تغییرات را در فایل ذخیره کنی.»
#### نتیجهگیری
آراد با خوشحالی گفت: «حالا میتوانم یک دفترچه تلفن کامل بسازم که اطلاعات تماسها را ذخیره کند، جستجو کند، و حتی ویرایش و حذف کند. این خیلی عالی بود!»
سینا با لبخند گفت: «آفرین آراد! تو حالا تمام مفاهیم رو به خوبی در یک پروژه عملی به کار بردی. این اولین گام برای ساخت برنامههای پیچیدهتر است.»
آراد با اطمینان گفت: «ممنون سینا! حالا میدانم چطور میتوانم یک برنامه واقعی بسازم که از تمام مفاهیم یاد گرفته شده استفاده کند.»