ortak sınav oturma planı projesi ( C# )

Rapor et
Soru

Bu soru rapor edilmelidir hissediyorum neden kısaca açıklayınız.

Rapor et
İptal

Bir okulda yapılan ortak sınavda öğrenciler için bir oturma planı yapan program yapmaya çalışıyorum. Veritabanı olarak Access kullanıyorum. Öğrenci bilgileri, öğretmen bilgileri ve salon bilgileri bölümünde kayıt ekle-sil-düzenle-ara-gez(önceki kayıt, sonraki kayıt vb.) işlemlerini yaptım. Fakat en önemli kısmı öğrencilerin dağıtımında sıkıntı yaşıyorum.

Dağıtımın yapılacağı bölümde kaydedilen öğrencilerin sınıflarını kullanıcı seçiyor ve hangi sınıflarda sınava gireceğini yine kullanıcı seçiyor ve \”dağıt\” butonuna basınca secilen öğrenciler seçilen sınav salonlarına dağıtması gerekiyor.

Sınav salonların tipi enine değil boyuna 4×6 şeklinde yani 4 sıra arka arkaya olan, yan yana 6 sıra olan ve her sıraya tek öğrenci oturan bir sınıf.

Kodlarım aşağıdaki gibi

int k = 0;
for (int i = 0; i < sinif_liste_checkedListBox.CheckedItems.Count; i++)
{
secilenler[i] = Convert.ToString(sinif_liste_checkedListBox.CheckedItems[i]);
string goster = Convert.ToString(secilenler[i]);
char[] ayir = goster.ToCharArray();
int sube_int = ayir.Length;
subesi = Convert.ToString(ayir[sube_int – 1]);

sinifi = goster.Substring(0, sube_int – 1);

 

da = new OleDbDataAdapter(\”Select * from bilgiler where sinif=\’\” + sinifi + \”\’ AND sube=\’\” + subesi + \”\’\”, connect);
ds = new DataSet();
connect.Open();
da.Fill(ds, \”bilgiler\”);
sonu_dataGridView.DataSource = ds.Tables[\”bilgiler\”];

 

for (int j = 0; j < sonu_dataGridView.RowCount; j++)
{

sec_num[k] = Convert.ToString(sonu_dataGridView.Rows[j].Cells[0].Value);
sec_ad[k] = Convert.ToString(sonu_dataGridView.Rows[j].Cells[1].Value);
sec_soyad[k] = Convert.ToString(sonu_dataGridView.Rows[j].Cells[2].Value);
sec_sinif[k] = Convert.ToString(sonu_dataGridView.Rows[j].Cells[3].Value);
sec_sube[k] = Convert.ToString(sonu_dataGridView.Rows[j].Cells[4].Value);

sec_sinifi[k] = Convert.ToString(sonu_dataGridView.Rows[j].Cells[5].Value);
k = k + 1;
}
k = k – 1;
connect.Close();

 

}

label_toplam_ogr.Text = k.ToString();
sln_say = salon_liste_checkedListBox.CheckedItems.Count;
sln_kpst = sln_say * 24;
label_toplam_kpst.Text = sln_say + \” \” + sln_kpst.ToString();
ogrt = ogrtmn_liste_checkedListBox.CheckedItems.Count;
label_toplam_ogrtmn.Text = ogrt.ToString();

if (sln_kpst < k)
{
MessageBox.Show(\”Seçilen toplam öğrencilerin sayısı seçilen salonların kapasitelerinden fazladır. Lütfen salon seçiniz\”, \”Uyarı\”, MessageBoxButtons.OK, MessageBoxIcon.Information);
}

else if (sln_say > ogrt)
{
MessageBox.Show(\”Seçilen öğretmenlerin sayısı seçilen salonların sayısından azdır. Lütfen öğretmen seçiniz\”, \”Uyarı\”, MessageBoxButtons.OK, MessageBoxIcon.Information);
}

else
{
ders_groupBox.Text = \”Oturma Düzeni\”;
panel7.Visible = false;
panel8.Visible = true;

 

}

 

 

Random rnd = new Random(); // Rastgele sayı üretmek için
int[] rastgele_sayi = new int[k];
int yeni_sayi;
bool durum = true;
string gecici;
string gecici_ad;
string gecici_soyad;
string gecici_sinifi;

for (int i = 0; i < (k – 1); i++)
{
while (durum)
{
yeni_sayi = rnd.Next(0, k);

if (i == 0)
{
rastgele_sayi[0] = yeni_sayi;
break; //While döngüsünden çıkılır.
}

for (int j = 0; j < i; j++)
{
if (rastgele_sayi[j] == yeni_sayi) //Yeni oluşan sayımız dizide daha önceden varsa
{ durum = true; break; }
else
durum = false;
}
if (durum == false) rastgele_sayi[i] = yeni_sayi;
} durum = true;
}//k tane rastgele farklı sayı oluşturup rastgele_sayi dizisine attık

 

for (int i = 2; i < (k-1); i++)
{

for (int t = i; t <(k-1); t++)
{
if (i <= 4)
{
while (sec_sinifi[rastgele_sayi[i – 2]] == sec_sinifi[rastgele_sayi[t – 1]])
{

 

gecici = sec_num[rastgele_sayi[t – 1]];
sec_num[rastgele_sayi[t – 1]] = sec_num[rastgele_sayi[t]];
sec_num[rastgele_sayi[t]] = gecici;

gecici_ad = sec_ad[rastgele_sayi[t – 1]];
sec_ad[rastgele_sayi[t – 1]] = sec_ad[rastgele_sayi[t]];
sec_ad[rastgele_sayi[t]] = gecici_ad;

gecici_soyad = sec_soyad[rastgele_sayi[t – 1]];
sec_soyad[rastgele_sayi[t – 1]] = sec_soyad[rastgele_sayi[t]];
sec_soyad[rastgele_sayi[t]] = gecici_soyad;

gecici_sinifi = sec_sinifi[rastgele_sayi[t – 1]];
sec_sinifi[rastgele_sayi[t – 1]] = sec_sinifi[rastgele_sayi[t]];
sec_sinifi[rastgele_sayi[t]] = gecici_sinifi;

 

t = t + 1;
}

 

}
else
{

while (sec_sinifi[rastgele_sayi[i – 5]] == sec_sinifi[rastgele_sayi[t – 1]])
{

 

gecici = sec_num[rastgele_sayi[t – 1]];
sec_num[rastgele_sayi[t – 1]] = sec_num[rastgele_sayi[t]];
sec_num[rastgele_sayi[t]] = gecici;

gecici_ad = sec_ad[rastgele_sayi[t – 1]];
sec_ad[rastgele_sayi[t – 1]] = sec_ad[rastgele_sayi[t]];
sec_ad[rastgele_sayi[t]] = gecici_ad;

gecici_soyad = sec_soyad[rastgele_sayi[t – 1]];
sec_soyad[rastgele_sayi[t – 1]] = sec_soyad[rastgele_sayi[t]];
sec_soyad[rastgele_sayi[t]] = gecici_soyad;

gecici_sinifi = sec_sinifi[rastgele_sayi[t – 1]];
sec_sinifi[rastgele_sayi[t – 1]] = sec_sinifi[rastgele_sayi[t]];
sec_sinifi[rastgele_sayi[t]] = gecici_sinifi;

t = t + 1;

}
}
}
}

 

 

bu şekilde önce çalıştı ikinci çalıstırmamda
sec_num[rastgele_sayi[t – 1]] = sec_num[rastgele_sayi[t]]; bu kod dizisinde hata verdi. Yardımcı olur musunuz?

0
C# fadime 2 sene 0 Cevap 854 görüntüleme 0

Hakkında fadime

Cevap bırak

Gözat

*