+1 oy
243 Görünüm
C# kategorisinde tarafından

arkadaşlar text dosyasındaki öğrenci sınav cevaplarını listviewe veya datgride aktardım.

bir sorunum var öğrencinin adı soyadı, sınıfı, numarası, türkçe, sosyalbilgiler, din ingilizce cevaplarını ayrı sütunlarda göstermek istiyorum. 

text dosya örneği ;

240      00079LEVENT ARSLANİ               8DK ADBBCDDC ACACCDD AAB C B ABADBAABBDCB ADACBDADC  AA                                                  
240      00371ESMA ÇİÇEK 8FE BACCADBCDBBDADCDDCDACBDDACDADCBCBCADCDDBD  ADACBABD               

Paylaş

1 cevap

+1 oy
(3.3k puan) tarafından
tarafından seçilmiş
 
En İyi Cevap

Bu tür verileri doğru şekilde ayırarak her bir bilgiyi ayrı sütunlara yerleştirmek için birkaç adım izlemeniz gerekebilir. İhtiyacınız olan şey, metin dosyasındaki öğrenci bilgilerini ve sınav cevaplarını doğru şekilde ayrıştırmak.

Adımlar:

  1. Metni Satırlara Ayırma:
    İlk olarak, metni satırlara ayırmanız gerekiyor. Her satırda bir öğrenci olduğunu varsayıyoruz.

  2. Her Satırı Parçalama (Split):
    Öğrencilerin bilgileri arasında belirli bir desen var (örneğin, TC numarası, adı soyadı, sınıfı, ve ardından sınav cevapları). Bu desenleri kullanarak her satırı parçalara ayırabilirsiniz.

  3. Veriyi Çözümleme:
    Her bir parçayı doğru sütuna yerleştirmeniz gerekiyor: Öğrencinin numarası, adı soyadı, sınıfı ve sınav cevapları.

Aşağıda C# dilinde bir örnek çözüm önerisi bulunmaktadır:

C# Kod Örneği:

`csharp
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;

public class Ogrenci
{

public string OgrenciNo { get; set; }
public string AdSoyad { get; set; }
public string Sinif { get; set; }
public string Turkce { get; set; }
public string Sosyal { get; set; }
public string Din { get; set; }
public string Ingilizce { get; set; }

}

public void ParseTextFileAndFillGrid(string filePath, DataGridView dataGridView)
{

var ogrenciler = new List<Ogrenci>();

try
{
    string[] lines = File.ReadAllLines(filePath); // Dosyadaki tüm satırları alıyoruz
    foreach (string line in lines)
    {
        // Her satırda öğrencinin bilgileri arasındaki boşlukları ayırıyoruz
        string[] parts = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

        if (parts.Length > 7)  // Bilgilerin yeterli olduğundan emin olalım
        {
            // Öğrencinin bilgilerini ayıklıyoruz
            var ogrenci = new Ogrenci
            {
                OgrenciNo = parts[0],
                AdSoyad = parts[1] + " " + parts[2], // Ad soyadı birleştiriyoruz
                Sinif = parts[3],
                Turkce = parts[4], // Türkçe sınavı cevabı
                Sosyal = parts[5], // Sosyal bilgiler sınavı cevabı
                Din = parts[6], // Din sınavı cevabı
                Ingilizce = parts[7] // İngilizce sınavı cevabı
            };

            ogrenciler.Add(ogrenci); // Listeye ekliyoruz
        }
    }

    // DataGridView'e veriyi ekliyoruz
    dataGridView.DataSource = ogrenciler.ToList();
}
catch (Exception ex)
{
    MessageBox.Show("Hata oluştu: " + ex.Message);
}

}
`

Açıklamalar:

  1. Dosyayı Okuma:
    File.ReadAllLines(filePath) komutu ile metin dosyasındaki tüm satırları alıyoruz.

  2. Satırları Parçalama:
    line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) komutu ile her satırı boşluklara göre ayırıyoruz. Bu, her öğrencinin bilgilerini (numara, ad soyad, sınıf, sınav cevapları) ayrı parçalara böler.

  3. Öğrenci Nesnesi Oluşturma:
    Her bir satır için bir Ogrenci nesnesi oluşturup gerekli bilgileri bu nesnede saklıyoruz.

  4. DataGridView'e Veriyi Aktarma:
    Elde edilen öğrenci listesine DataGridView.DataSource üzerinden veri bağlayarak ekliyoruz.

Çıktı:

Metin dosyasındaki öğrenci bilgileri aşağıdaki gibi görünecektir:

| Öğrenci No | Ad Soyad | Sınıf | Türkçe | Sosyal | Din | İngilizce |
|------------|-----------------|-------|--------|--------|-----|-----------|
| 00079 | LEVENT ARSLANI | 8DK | ADBBC | DDC | AAB | ABADBAAB |
| 00371 | ESMA ÇİÇEK | 8FE | BACC | ADBDC | AAB | ABACBDAC |

Dikkat Edilmesi Gerekenler:

  1. Veri Yapısının Düzenlenmesi:
    Verinin yapısı örneğin "Türkçe, Sosyal, Din, İngilizce" cevapları ve öğrenci bilgilerini ayıran boşluklar düzenli değilse, başka bir ayırıcı (örneğin virgül veya özel bir karakter) kullanmanız gerekebilir.

  2. Hatalar ve Eksik Veriler:
    Her satırda gerekli tüm bilgilerin olup olmadığını kontrol etmek önemli. Eğer eksik veri varsa, hataları yakalayarak kullanıcıya bildirebilirsiniz.

Bu çözüm, metin dosyasındaki verileri uygun şekilde ayrıştırarak DataGridView veya ListView gibi bileşenlerde gösterebilmenizi sağlar.

Bu Hafta En Aktif Üyeler
    ...