Menu
Coddy logo textTech

רשימת אנשי קשר בסיסית

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 66 מתוך 68.

challenge icon

אתגר

קל

צרו מערכת לניהול אנשי קשר שמדגימה כיצד מבנים, פרוסות ופונקציות פועלים יחד כדי לארגן ולהציג פרטי אנשי קשר. אתגר זה יבחן את יכולתכם להגדיר מבני נתונים מותאמים אישית, לנהל אוספי נתונים ולממש פונקציות לשינוי הנתונים האלה.

תקבלו שתי קלטים:

  • מחרוזת המכילה פרטי אנשי קשר בפורמט "name1:phone1:email1,name2:phone2:email2,name3:phone3:email3" (לדוגמה, "Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com")
  • מחרוזת המכילה איש קשר חדש להוספה בפורמט "name:phone:email" (לדוגמה, "David Wilson:555-0321:david@email.com")

המשימה שלכם היא:

  1. להגדיר מבנה Contact עם שלושה שדות מסוג מחרוזת: Name, Phone ו-Email
  2. ליצור פונקציה בשם addContact שמקבלת פרוסה של מבני Contact ואיש קשר חדש מסוג Contact, ואז מחזירה פרוסה חדשה עם איש הקשר שנוסף
  3. ליצור פונקציה בשם displayContacts שמקבלת פרוסה של מבני Contact ומדפיסה את הפרטים של כל איש קשר
  4. לנתח את הקלט הראשון באמצעות פיצול לפי פסיקים כדי לקבל רשומות של אנשי קשר
  5. עבור כל רשומת איש קשר, לפצל לפי נקודתיים כדי לחלץ את השם, הטלפון וכתובת האימייל
  6. ליצור מבני Contact מהנתונים שנותחו ולאחסן אותם בפרוסה
  7. לנתח את הקלט השני באמצעות פיצול לפי נקודתיים כדי ליצור איש קשר חדש
  8. להציג את כותרת היישום: "=== CONTACT MANAGEMENT SYSTEM ==="
  9. להציג את אנשי הקשר הראשוניים באמצעות הפונקציה displayContacts שלכם, עם הכותרת: "Initial contact list:"
  10. להציג את איש הקשר החדש שנוסף: "Adding new contact: [name] ([phone]) - [email]"
  11. להשתמש בפונקציה addContact שלכם כדי להוסיף את איש הקשר החדש לפרוסה
  12. להציג את אנשי הקשר המעודכנים באמצעות הפונקציה displayContacts שלכם, עם הכותרת: "Updated contact list:"
  13. להציג נתונים סטטיסטיים על אנשי הקשר:
    • "=== CONTACT STATISTICS ==="
    • "Total contacts: [number_of_contacts]"
    • "Contacts added this session: 1"
  14. להציג את הודעת הסיום: "Contact management operations completed successfully"

הפונקציה displayContacts צריכה להדפיס כל איש קשר בפורמט: "[index]. [name] - Phone: [phone], Email: [email]", כאשר האינדקס מתחיל ב-1.

השתמשו בחבילה strings כדי לפצל מחרוזות קלט ובחבילה fmt להפקת פלט מעוצב. אתגר זה מדגים כיצד לשלב מבנים לארגון נתונים, פרוסות לאוספים ופונקציות לארגון הקוד — דפוסים בסיסיים הנמצאים בשימוש לאורך תכנות ב-Go.

נסו בעצמכם

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

// TODO: הגדירו כאן את ה-struct של Contact

// TODO: ממשו כאן את הפונקציה addContact

// TODO: ממשו כאן את הפונקציה displayContacts

func main() {
	// קראו את הקלט באמצעות bufio.Scanner כדי לטפל כראוי ברווחים בשמות
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	contactsInput := scanner.Text()
	
	scanner.Scan()
	newContactInput := scanner.Text()
	
	// TODO: כתבו את הקוד שלכם למטה
	// נתחו את קלט אנשי הקשר וצרו מבני Contact
	// זכרו לבדוק אם בפרוסה parts יש מספיק איברים לפני שניגשים אליהם
	// נתחו את הקלט של איש הקשר החדש
	// הציגו את כותרת היישום
	// הציגו את אנשי הקשר הראשוניים
	// הוסיפו את איש הקשר החדש
	// הציגו את אנשי הקשר המעודכנים
	// הצג נתונים סטטיסטיים
	// הצג הודעת סיום
}

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Go אונליין