Menu
Coddy logo textTech

E-öğrenme Platformu

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 68 / 70.

challenge icon

Görev

Kolay

Kursları, öğrencileri ve kayıtları yöneten bir e-öğrenme platformu oluşturalım! Bu görev, OOP hakkında öğrendiğin her şeyi bir araya getiriyor: sınıflar, kalıtım, arayüzler, kapsülleme ve temiz bir mimaride birlikte çalışan servisler.

Kodunu beş dosyaya ayıracaksın:

  • Lesson.cs: Lesson ad alanında bir ELearning.Models sınıfı oluştur. Her dersin, oluşturucu aracılığıyla ayarlanan salt okunur bir Title (string) ve DurationMinutes (int) özelliği vardır.
  • Course.cs: Course ad alanında bir ELearning.Models sınıfı oluştur. Bir kursun salt okunur Id (string), Title (string) ve Instructor (string) özelliklerinin yanı sıra bir Lessons listesi vardır. Bir AddLesson(Lesson lesson) metodu ve tüm derslerin sürelerinin toplamını hesaplayan salt okunur bir TotalDuration özelliği ekle.
  • Student.cs: Student ad alanında salt okunur ELearning.Models (int) ve Id (string) özelliklerine sahip bir Name sınıfı oluştur. Öğrenciler, kurs kimliklerini tamamlanan ders sayısıyla eşleyen özel bir sözlük aracılığıyla ilerlemelerini takip eder. İlerlemeyi artırmak için CompleteLesson(string courseId) ve tamamlanan derslerin sayısını döndürmek için GetProgress(string courseId) metotlarını ekle (kayıtlı değilse 0 döndür).
  • EnrollmentService.cs: EnrollmentService ad alanında bir ELearning.Services sınıfı oluştur. Bu servis, özel koleksiyonlar kullanarak kursları ve kayıtları yönetir. Şunları uygula:
    • AddCourse(Course course) - platforma bir kurs ekler
    • Enroll(Student student, string courseId) - kayıt başarılı olursa true, kurs mevcut değilse veya öğrenci zaten kayıtlıysa false döndürür
    • GetEnrolledCourses(Student student) - öğrencinin kayıtlı olduğu kurs kimliklerinin listesini döndürür
    • GetCourse(string courseId) - kursu döndürür; bulunamazsa null döndürür
  • Program.cs: Kursları derslerle oluşturarak, öğrencileri kaydederek, ilerlemeyi takip ederek ve girdiye göre sonuçları görüntüleyerek her şeyi bir araya getir.

Aşağıdaki girdileri alacaksın:

  • Oluşturulacak kurs sayısı
  • Her kurs için: kimlik, başlık, eğitmen, ders sayısı ve ardından her ders için: başlık ve süre (dakika)
  • Öğrenci kimliği ve adı
  • Gerçekleştirilecek işlem sayısı
  • Her işlem için: eylem (enroll, complete, progress veya info) ve ardından kurs kimliği

Çıktı biçimleri:

  • enroll: Enrolled in: {CourseTitle} veya Enrollment failed: {courseId} yazdır
  • complete: Completed lesson in {CourseTitle} yazdır (ilerlemeyi 1 artır)
  • progress: {CourseTitle}: {completed}/{total} lessons yazdır
  • info: {CourseTitle} by {Instructor} - {TotalDuration} minutes yazdır

Örneğin girdiler şöyleyse:

2
CS101
Intro to Programming
Dr. Smith
3
Variables
30
Loops
45
Functions
60
CS102
Data Structures
Dr. Jones
2
Arrays
40
Lists
50
1
Alice
6
enroll
CS101
info
CS101
complete
CS101
complete
CS101
progress
CS101
enroll
CS999

Çıktı şöyle olmalıdır:

Enrolled in: Intro to Programming
Intro to Programming by Dr. Smith - 135 minutes
Completed lesson in Intro to Programming
Completed lesson in Intro to Programming
Intro to Programming: 2/3 lessons
Enrollment failed: CS999

Servisin öğrenciler ve kurslar arasındaki ilişkiyi nasıl yönettiğine, her sınıfın ise kendi sorumluluklarını nasıl yerine getirdiğine dikkat et. Öğrenci kendi ilerlemesini takip eder, kurslar toplam sürelerini hesaplar ve kayıt servisi her şeyi koordine eder — sorumlulukların temiz bir şekilde ayrılması!

Kendin dene

using System;
using System.Collections.Generic;
using ELearning.Models;
using ELearning.Services;

class Program
{
    public static void Main(string[] args)
    {
        // Kurs sayısını oku
        int numCourses = Convert.ToInt32(Console.ReadLine());
        
        // TODO: Bir EnrollmentService örneği oluşturun
        
        // TODO: Her bir kursu dersleriyle birlikte okuyun ve oluşturun
        // Her kurs için: ID, başlık, eğitmen ve ders sayısını oku
        // Her ders için: başlık ve süre oku
        // Dersleri kursa ekle, ardından kursu servise ekle
        
        // Öğrenci bilgilerini oku
        int studentId = Convert.ToInt32(Console.ReadLine());
        string studentName = Console.ReadLine();
        
        // TODO: Bir Student örneği oluşturun
        
        // İşlem sayısını oku
        int numOperations = Convert.ToInt32(Console.ReadLine());
        
        // TODO: Her bir işlemi işle
        // Her işlem için: eylem ve courseId oku
        // Şunları yönet: enroll, complete, progress, info
        // Eyleme göre uygun mesajı yazdır
    }
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online C# derleyicisi