public void NotGirisYap() { notislem = new AClass_NotGirme();; try { dersclass = notislem.DersAl(DersCombo.Text); bolumclass = notislem.BolumAl(BolumCombo.Text); notclass = notislem.NotGiris(Convert.ToInt32(vizeBox.Text), Convert.ToInt32(finalBox.Text), Convert.ToInt32(butBox.Text), ButGirdiCheckBox.Checked, ognoTextBox.Text, BolumCombo.Text, DersCombo.Text); if (notclass != null && bolumclass != null && dersclass != null) { //Zaten MessageBox'lar Class'ın içinde bulunduğu için buraya herhangi bir mesaj yazmaya gerek yok. } else { MessageBox.Show("Çalıştırılan NotGirişYap() isimli fonksiyonda bir hata oluştu. Değerleri düzgün girdiğinize emin misiniz?"); } } catch (Exception hata) { MessageBox.Show("Bir hata oluştu. \n" + hata); } }
public static string BolumAD, DersAD; //Bunlar işte garip değerler. Görmezden geliniz. En aşağıdaki fonksiyonları çalıştırıyor. public Class_Not NotGiris(int Vize, int Final, int Butunleme, bool ButeGirdi, string OgrenciNo, string BolumAdi, string DersAdi) //vize,final,but,butkontrol,ogno,bolumad,dersad { Class_Not notgir = new Class_Not(); //class i çağır ve nesnesini oluştur VeritabaniOlusturma.ProjeVeritabani db = new VeritabaniOlusturma.ProjeVeritabani(); //veritabanı ana dizin erişim kodu //Değerleri Belirleme int SVize, SFinal, SButunleme; string SOgrenciNo, SBolumAdi, SDersAdi; double SOrtalama; bool ButKontrol; //Değerleri Aktarma SVize = Vize; SFinal = Final; SOgrenciNo = OgrenciNo; SBolumAdi = BolumAdi; SDersAdi = DersAdi; ButKontrol = ButeGirdi; SButunleme = Butunleme; //Ek Not: Kodları daha performanslı bir şekilde nasıl çalıştıracağımı çözemediğim için aynı kodları 2 kere kopyalamadım. Bu yüzden ButeGirdi Boolean değişkeni True veya False gelirse // yine bi ton işlem yapmak zorunda kalıyor. try { if (ButeGirdi == true) //Eğer öğrenci bütünlemeye girdiyse çalıştırılır. { SOrtalama = SVize * 0.4 + SButunleme * 0.6; //Vize ve Bütünlemenin Ortalaması Alınır. if (db.BolumTablo.Any(u => u.BolumAd == SBolumAdi) || db.DersTablo.Any(u => u.DersAd == SDersAdi)) //ComboBoxta seçilen bölüm ve ders adı sistemde var mı diye kontrol eder. { if (db.OgrenciNotTablo.Any(u => u.ONumara == SOgrenciNo && u.DersID == DersNOO && u.BolumID == BolumNOO)) //Öğrenciye girilen not ve dersi daha önce girilmişmi diye kontrol eder. Eğer girilmişse Güncellenir, girilmemişse ilk defa insert edilir. { if (DersNOO == 0 || BolumNOO == 0) //Normalde seçtiğiniz bölüm veya ders sistemde yoksa döndürülen değer 0 olur. O yüzden 0 olursa yanlış seçmiş anlamına gelir. { MessageBox.Show("Bölüm ismi veya Ders ismi yanlış seçilmiş olabilir. Lütfen tekrar deneyiniz. Ders kaydı tamamlanmadı."); //msj } else { try //muhtar { var notss = db.OgrenciNotTablo.First(u => u.ONumara == SOgrenciNo && u.DersID == DersNOO && u.BolumID == BolumNOO); //Güncelleme işlemini Öğrenci No,Ders ID ve Bölüm ID'ye göre yapıyor. //Değerleri Aktarma notss.Vize = SVize; notss.Butunleme = SButunleme; notss.Ortalama = SOrtalama; notss.BolumID = BolumNOO; notss.DersID = DersNOO; //Değişiklikleri DB isimli veritabanı erişimine kaydetme. db.SaveChanges(); MessageBox.Show("Öğrencinin vize ve bütünleme notları başarıyla güncellendi"); } catch (Exception msj) //hata msj { MessageBox.Show("Bir hata oluştu. \n\n " + msj); //hata msj } } } else //İlk defa not verilcekse burası çalışır? { VeritabaniOlusturma.OgrenciNot ogr = new VeritabaniOlusturma.OgrenciNot //veritabanı öğrenci not tablosu erişim kodu { //Değerleri Aktarma ONumara = OgrenciNo, Vize = SVize, Final = SFinal, Ortalama = SOrtalama, DersID = DersNOO, BolumID = BolumNOO, }; db.OgrenciNotTablo.Add(ogr); //Değerleri Ogrenci Not Tablosuna ekleme db.SaveChanges(); //Değişiklikleri kaydetme MessageBox.Show("Bu öğrencinin bölümüne ve dersine ilk defa not girişi yapıldığı tespit edildi. Öğrencinin vize ve bütünleme notları başarıyla verildi."); } } else //Eğer öğrenci bütünlemeye girmediyse çalıştırılır. { SOrtalama = SVize * 0.4 + SFinal * 0.6; //Vize ve Final'in Ortalaması Alınır. if (db.BolumTablo.Any(u => u.BolumAd == SBolumAdi) || db.DersTablo.Any(u => u.DersAd == SDersAdi)) //ComboBoxta seçilen bölüm ve ders adı sistemde var mı diye kontrol eder. { if (db.OgrenciNotTablo.Any(u => u.ONumara == SOgrenciNo && u.DersID == DersNOO && u.BolumID == BolumNOO)) //Öğrenciye girilen not ve dersi daha önce girilmişmi diye kontrol eder. Eğer girilmişse Güncellenir, girilmemişse ilk defa insert edilir. { if (DersNOO == 0 || BolumNOO == 0) //açıklaması üstte yazıyor { MessageBox.Show("Bölüm ismi veya Ders ismi yanlış seçilmiş olabilir. Lütfen tekrar deneyiniz. Ders kaydı tamamlanmadı."); } else { try { var notss = db.OgrenciNotTablo.First(u => u.ONumara == SOgrenciNo && u.DersID == DersNOO && u.BolumID == BolumNOO); notss.Vize = SVize; notss.Final = SFinal; notss.Ortalama = SOrtalama; notss.BolumID = BolumNOO; notss.DersID = DersNOO; db.SaveChanges(); MessageBox.Show("Öğrencinin vize ve final notları başarıyla güncellendi."); } catch (Exception msj) { MessageBox.Show("Bir hata oluştu. \n\n " + msj); } } } else //İlk defa not verilcekse burası çalışır? { VeritabaniOlusturma.OgrenciNot ogr = new VeritabaniOlusturma.OgrenciNot { ONumara = OgrenciNo, //Öğrenci Numarası Vize = SVize, Final = SFinal, Ortalama = SOrtalama, DersID = DersNOO, BolumID = BolumNOO, }; db.OgrenciNotTablo.Add(ogr); db.SaveChanges(); MessageBox.Show("Bu öğrencinin bölüme ve dersine ilk defa not girişi yapıldığı tespit edildi. Öğrencinin vize ve final notları başarıyla verildi."); } } else { MessageBox.Show("Böyle bir bölüm veya ders sistemde bulunmamaktadır. Lütfen tekrar deneyiniz"); } } } } catch (Exception ex) //Exception yakalama... { MessageBox.Show("Bir hata oluştu. \n\n" + ex); } return(notgir); //Null döndürürse hata verir. Program çöker? }