+1 oy
1.1k Görünüm
C# kategorisinde tarafından
Program Örnek Resmi - http://i.hizliresim.com/oE5bdo.png

iyi günler
1 - yukarıda ki gibi bir optik değerlendirme programı yapmak istiyorum fakat resimdeki gibi bir .txt dosyasını datagridlere nasıl aktaracam. yanı ismi sınıfı cevapları ayırma işlemini
2- orada bulunan cevapları nasıl karşılaştırma yapabilirim
yardımcı olursanız çok sevinirim şimdiden teşekkürler
Paylaş

2 Cevaplar

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

İyi günler! Optik değerlendirme programı yapmak istediğinizi ve resimdeki gibi bir dosyayı veri olarak alıp analiz etmek istediğinizi anlıyorum. Bu tür bir uygulama için şu adımları takip edebilirsiniz:

1. .txt Dosyasını DataGrid'e Aktarma

Eğer elinizde bir .txt dosyası varsa ve bu dosyada sınıf, öğrenci adı, cevaplar gibi bilgiler yer alıyorsa, bu verileri bir DataGridView kontrolüne aktarabilirsiniz. Bunun için C# kullanarak şu adımları izleyebilirsiniz:

Adım 1: .txt Dosyasını Okuma

Öncelikle, .txt dosyasını okumamız gerekiyor. Dosyanın her satırında öğrenciye ait bilgiler (isim, sınıf, cevaplar) yer alacak şekilde düzenli olduğunu varsayalım. Örneğin, her satır şu formatta olabilir:

ÖğrenciAdı, Sınıf, Cevap1, Cevap2, Cevap3, ...

C# kodu ile bu dosyayı okuyabiliriz:

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

public class MainForm : Form
{

private DataGridView dataGridView;

public MainForm()
{
    InitializeComponent();
    dataGridView = new DataGridView();
    this.Controls.Add(dataGridView);
    dataGridView.Dock = DockStyle.Fill;

    LoadData();
}

private void LoadData()
{
    string filePath = "C:\\path_to_your_file\\veri.txt";  // Dosyanın tam yolunu girin
    List<Student> students = new List<Student>();

    try
    {
        var lines = File.ReadAllLines(filePath);
        foreach (var line in lines)
        {
            var parts = line.Split(','); // Veriyi virgülle ayırıyoruz
            if (parts.Length > 1)
            {
                var student = new Student
                {
                    Name = parts[0].Trim(),
                    Class = parts[1].Trim(),
                    Answers = parts[2..]  // Geri kalan kısmı cevaplar olarak alıyoruz
                };
                students.Add(student);
            }
        }

        // DataGridView'e verileri aktarma
        dataGridView.DataSource = students;
    }
    catch (Exception ex)
    {
        MessageBox.Show("Dosya okunurken hata oluştu: " + ex.Message);
    }
}

}

public class Student
{

public string Name { get; set; }
public string Class { get; set; }
public string[] Answers { get; set; }

}
`

Bu kodda:
- .txt dosyasındaki veriyi okuyup, her satırdaki bilgileri bir Student nesnesine dönüştürüyoruz.
- Name, Class, ve Answers gibi özelliklere sahip bir Student sınıfı oluşturuyoruz.
- Answers kısmını bir dizi (array) olarak alıyoruz çünkü bu kısım birden fazla cevap içeriyor olabilir.
- Veriyi DataGridView kontrolüne aktarıyoruz.

Adım 2: DataGridView'de Görüntüleme

Yukarıdaki örnekte DataGridView kontrolüne veriyi doğrudan aktarabilmek için, Student sınıfının her özelliği DataGridView'in kolonları olarak gösterilecektir. Eğer kolonları özelleştirmek isterseniz, DataGridView'in kolonlarını manuel olarak oluşturabilirsiniz.

2. Cevapları Karşılaştırma

Eğer öğrenci cevaplarını bir sınavın doğru cevaplarıyla karşılaştırmak istiyorsanız, doğru cevaplar bir dizide saklanabilir ve her öğrencinin cevaplarıyla karşılaştırılabilir.

Adım 1: Doğru Cevapları Tanımlama

Örneğin, doğru cevapları bir dizi (array) olarak saklayalım:

`csharp
string[] correctAnswers = { "A", "B", "C", "D", "E" }; // Doğru cevaplar
`

Adım 2: Öğrencinin Cevaplarını Karşılaştırma

Öğrencilerin cevapları ile doğru cevapları karşılaştırmak için şu şekilde bir fonksiyon yazabiliriz:

`csharp
private void CompareAnswers(Student student)
{

int correctCount = 0;
for (int i = 0; i < student.Answers.Length && i < correctAnswers.Length; i++)
{
    if (student.Answers[i].Trim().ToUpper() == correctAnswers[i])
    {
        correctCount++;
    }
}

MessageBox.Show($"{student.Name} doğru cevap sayısı: {correctCount} / {correctAnswers.Length}");

}
`

Bu fonksiyon:
- Her öğrencinin cevaplarıyla doğru cevapları karşılaştırır.
- Doğru cevap sayısını hesaplar ve bir mesaj kutusunda gösterir.

Adım 3: Tüm Öğrencileri Değerlendirme

Tüm öğrencilerin cevaplarını karşılaştırmak için aşağıdaki gibi bir döngü yazabilirsiniz:

`csharp
private void EvaluateAllStudents(List students)
{

foreach (var student in students)
{
    CompareAnswers(student);
}

}
`

Bu fonksiyon, students listesindeki tüm öğrencilerin cevaplarını değerlendirir.

3. Uygulamanın Tamamlanması

Tüm bu adımları birleştirerek, dosyayı okuma, veriyi DataGrid'e aktarma ve cevapları karşılaştırma işlemlerini gerçekleştirebilirsiniz. Ayrıca, doğru cevapları görsel olarak (örneğin, DataGrid'de renk değişimi veya ek bilgilerle) işaretleyebilirsiniz.

Eğer başka bir sorunuz olursa veya belirli bir adımda takılırsanız, yardımcı olmaktan memnuniyet duyarım.

0 oy
(3.3k puan) tarafından

Merhaba! Sizin yapmak istediğiniz optik değerlendirme programını adım adım açıklayarak yardımcı olmaya çalışacağım. Resimdeki gibi bir .txt dosyasındaki veriyi DataGrid'e aktarmak ve bu verileri karşılaştırmak için aşağıdaki adımları takip edebilirsiniz.


1. .txt Dosyasındaki Veriyi DataGrid'e Aktarma

Bir .txt dosyasındaki veriyi bir DataGrid'e aktarmak için aşağıdaki adımları izleyebilirsiniz:

Adım 1: .txt Dosyasını Okuma

Bir .txt dosyasını okuyup içeriğini işlememiz gerek. Bu örnek için, verinin şu şekilde düzenlendiğini varsayıyorum:
Isim,Sınıf,Cevap1,Cevap2,Cevap3 Ahmet,10,A,B,C Mehmet,10,B,A,B Ayşe,11,A,C,A

Veriyi okuduktan sonra her satırı uygun şekilde parçalayarak sınıf, isim ve cevapları ayırabiliriz.

Adım 2: C# ile DataGrid'e Aktarma

İlk olarak bir DataGridView nesnesi eklemelisiniz (Windows Forms veya WPF). Bu veri grid'e yazacak olduğumuz verileri hazırlamalıyız. İşte bunun için kullanabileceğiniz örnek C# kodu:

`csharp
using System;
using System.IO;
using System.Windows.Forms;

public partial class MainForm : Form
{

public MainForm()
{
    InitializeComponent();
}

private void btnLoadData_Click(object sender, EventArgs e)
{
    // Dosya yolu
    string filePath = @"C:\path\to\your\file.txt";
    
    // DataGrid'e veri yükleme
    LoadData(filePath);
}

private void LoadData(string filePath)
{
    // Dosyayı oku
    var lines = File.ReadAllLines(filePath);
    
    // DataGridView'e kolon ekle
    dataGridView1.Columns.Clear();
    dataGridView1.Columns.Add("Isim", "Isim");
    dataGridView1.Columns.Add("Sinif", "Sınıf");
    dataGridView1.Columns.Add("Cevap1", "Cevap 1");
    dataGridView1.Columns.Add("Cevap2", "Cevap 2");
    dataGridView1.Columns.Add("Cevap3", "Cevap 3");

    // Veriyi DataGrid'e ekle
    foreach (var line in lines)
    {
        var columns = line.Split(',');
        dataGridView1.Rows.Add(columns);
    }
}

}
`

  • Burada btnLoadData_Click butonuna tıklanmasıyla dosya okunup DataGrid'e aktarılacaktır.
  • Her satırda gelen veriyi , ile ayırıp DataGridView'e ekliyoruz.
Adım 3: DataGrid ile Veriyi Görüntüleme

Veriyi DataGrid'de görebilmeniz için formunuza bir DataGridView ve yükleme butonu (btnLoadData) eklemeniz yeterli olacaktır.


2. Veri Karşılaştırma İşlemi

Veriyi başarıyla DataGrid'e aktardığınızda, veriler üzerinde karşılaştırma yapabiliriz. Bu karşılaştırmayı, örneğin doğru cevaplarla karşılaştırma şeklinde gerçekleştirebilirsiniz.

Adım 1: Cevapları Tanımlama

Öncelikle doğru cevapları tanımlamanız gerekebilir. Örneğin:

`csharp
string[] dogruCevaplar = { "A", "B", "C" }; // doğru cevapları belirleyelim
`

Adım 2: Kullanıcı Cevaplarıyla Karşılaştırma

DataGrid'deki her öğrencinin cevapları ile doğru cevapları karşılaştırabiliriz. Bunun için, DataGrid'deki her satırı gezip, her bir cevabı kontrol etmemiz gerekecek.

`csharp
private void btnCompare_Click(object sender, EventArgs e)
{

// Doğru cevaplar
string[] dogruCevaplar = { "A", "B", "C" };

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    if (row.IsNewRow) continue; // yeni satır eklenmesine engel ol

    string[] kullaniciCevaplari = new string[]
    {
        row.Cells["Cevap1"].Value.ToString(),
        row.Cells["Cevap2"].Value.ToString(),
        row.Cells["Cevap3"].Value.ToString()
    };

    int dogruSayisi = 0;

    // Cevapları karşılaştır
    for (int i = 0; i < kullaniciCevaplari.Length; i++)
    {
        if (kullaniciCevaplari[i] == dogruCevaplar[i])
        {
            dogruSayisi++;
        }
    }

    // Sonucu DataGrid'e ekleyelim veya başka bir şekilde gösterelim
    row.Cells["Sonuc"].Value = $"Doğru: {dogruSayisi} / 3";
}

}
`

Bu kodda:
- dogruCevaplar dizisini tanımladık.
- btnCompare_Click butonuna tıklanmasıyla, DataGrid'deki her satırdaki cevaplar ile doğru cevapları karşılaştırıyoruz.
- Öğrencinin doğru cevap sayısını Sonuc isimli bir yeni sütunda gösteriyoruz.

Adım 3: Sonuçları Görüntüleme

Yeni bir "Sonuç" sütunu ekleyebilirsiniz. Bu sütun, her öğrencinin doğru cevap sayısını gösterecek. Bu şekilde, öğrenci cevaplarını değerlendirdikten sonra sonuçları hızlıca görüntüleyebilirsiniz.

`csharp
dataGridView1.Columns.Add("Sonuc", "Sonuç");
`


Özetle:

  • Veri aktarma: .txt dosyasındaki veriyi DataGridView'e aktarabilirsiniz.
  • Veri karşılaştırma: Her bir öğrencinin cevaplarını doğru cevaplarla karşılaştırabilir ve sonucu DataGrid'de gösterebilirsiniz.

Eğer daha fazla detay isterseniz veya başka bir konuda yardıma ihtiyaç duyarsanız, lütfen bana bildirin!

Bu Hafta En Aktif Üyeler
    ...