(Yıl 2009, ilk programlama denemelerim)
NotMatiKS, Kırgızistan Türkiye Manas Üniversitesi hazırlık sınıflarında yabancılara Kırgızca, Türkçe, Rusça, İngilizce vb. dillerin öğretiminde kullanılan sistem üzerine hazırlanmış bir programcık…
Burada sadece programı değil programın çok basit fakat programlama - C# (Si Sharp) -öğrenenler için faydalı olacağını düşündüğüm kodlarını da yayınlayacağım için sınav sistemi hakkında kısaca bilgi vereyim…
Manas Üniversitesi hazırlık sınıflarında okuyan öğrencilerin 1. sınıfa geçebilmeleri için 1 eğitim öğretim yılı (iki dönem) içerisinde 4 vize ve 1 final sınavına girmeleri gerekmektedir.
Ayrıca bu sınavların her biri Okuma Anlama (17/25), Dinleme Anlama (17/25), Yazılı anlatım (17/25), Sözlü Anlatım (6/10), Karşılıklı Konuşma (10/15) gibi bölümlerden oluşmaktadır ve toplam not 100 puandır.
Yukarıdaki 5 bölüm her vize ve finalde uygulanmaktadır, fakat bu bölümlerden kalma geçme olayı sadece final sınavı için geçerlidir. Yukarıda parantez içlerinde belirtilen notlar en az alınması gereken notları ve alınabilecek en fazla notları göstermektedir. Vizelerde öğrencilerin bu asgari notları alıp almadıkları önemli değildir ancak bir öğrenci final sınavında kesinlikle yukarıda belirtilen bölümlerin tamamından gerekli olan asgari notu almak zorundadır ve aynı zamanda yıl sonu ortalaması da 67’nin üzerinde olmalıdır.
Öğrenci finalde alması gereken asgari notları alamadıysa veya asgari notları aldı fakat yılsonu ortalaması 67 veya üzeri değilse bütünleme sınavına girer. Bu sınavlar sonunda vize notları ortalamalarının %’de 40’ı ile final veya bütünleme notlarının %’de 60’ı toplanarak yılsonu ortalaması hesaplanır…
Gelelim program üzerinde uygulanan kısma;
Program iki bölümden oluşuyor:
1. Bölümde vize notları girilerek yılsonunda geçebilmek için “final sınavından en az kaç almak gerektiği” gösteriliyor.
2. Bölümde ise vize ve final notları girilerek “yılsonu ortalaması ve geçip kalma durumu” belirtiliyor…
*** Finalden alınması gereken not hesaplaması; vizelerden alınan notlar hesaplanarak finalde kaç aldığı takdirde yılsonu ortalaması 67 olur fonksiyonu üzerinden yapılıyor.
*** Yılsonu ortalaması ise vize notları ortalamalarının %’de 40’ı, final veya bütünleme notunun %’de 60’ı alınarak yapılıyor.
Ayrıca küsuratlı durumlar en yakın olduğu sayıya yuvarlanmaktadır. Örnek olarak öğrencinin ortalaması 70,20 ise 70 olarak, 70,60 ise 71 olarak hesaplanıyor.
Kısaca üniversitemizde hazırlık sınıflarında uygulanan sistem ve öğrencilerin notlarını hesaplayabilmeleri için hazırladığım bu programcık hakkında yazabileceklerim bunlar…
Faydalı olması dileğiyle…
Aşağıdaki bağlantıları kullanarak programı indirebilir, kodlarını inceleyebilirsiniz…
NotMatiKS – Programın kodları - C Sharp…
Gerekli yerlerde kod içerisinde açıklamalar yaptım...
using System;
using System.Windows.Forms;
using System.Drawing;
namespace FinalNotHesapla
{
public partial class NotMatiKS : Form
{
public NotMatiKS()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (tb1vize.Text.Trim() == string.Empty ||
tb2vize.Text.Trim() == string.Empty ||
tb3vize.Text.Trim() == string.Empty ||
tb4vize.Text.Trim() == string.Empty)
{
MessageBox.Show("Vize not alanlarını eksiksiz doldurunuz! \n Boş alan bırakmadığınızdan emin olun!");
return; //işlemi sona erdir.
} //Vize alanlarından biri boşsa uyarı veriyor...
Double vize1, vize2, vize3, vize4;
Double vizetoplam;
Double finalalinmasigerekennot;
string sonuc;
vize1 = Convert.ToInt32(tb1vize.Text);
vize2 = Convert.ToInt32(tb2vize.Text);
vize3 = Convert.ToInt32(tb3vize.Text);
vize4 = Convert.ToInt32(tb4vize.Text);
//Textboxlardan girilen sayılar int formatına dönüştürülüyor...
//Çünkü matematiksel işlem yapabilmek için gereklidir...
//ayrıca girilen sayı eğer virgüllü olursa Int'e dönüştürülemeyeceği için uyarı veriyor...
if (vize1 > 100 || vize1 < 0 ||
vize2 > 100 || vize2 < 0 ||
vize3 > 100 || vize3 < 0 ||
vize4 > 100 || vize4 < 0)
{
MessageBox.Show("Vize notları 100'den büyük 0'dan küçük olamaz");
return; //işlemi sona erdir.
} //Vize notları 100'den büyük 0'dan küçük ise uyarı veriyor...
if (vize1 + vize2 + vize3 + vize4 < 70)
{
aciklamaalani.Text = "Daha çok çalışmanız gerekiyordu!!! \n Finale girebilmek için vizelerinizin toplamı en az 70 olmalıdır...\n Final notlarınızın toplamı 70'ten az olduğu için final sınavına girip 100 bile alsanız geçme şansınız olmayacaktır...";
return; //işlemi sona erdir.
}
vizetoplam = (vize1 + vize2 + vize3 + vize4);
//vize notları toplanıyor
finalalinmasigerekennot = ((670 - vizetoplam) / 6);
//670'ten vize notları toplamı çıkarılıyor ve kalan sayı 6'ya bölünüyor..
//Bu şekilde finalden alınması gereken not ortaya çıkıyor...
sonuc = finalalinmasigerekennot.ToString("N0");
//N0, N1, N2, F0, F1, F2 virgüllü sonuçlarda yuvarlama işlemi için kullanılıyor..
if (finalalinmasigerekennot > 66)
{
tbfinal.Text = (sonuc);
}
if (finalalinmasigerekennot <= 66)
{
tbfinal.Text = "67";
aciklamaalani.Text = "Tebrikler... \nVize notlarınız yüksek olduğu için; Finalde Okuma Anlama, Dinleme Anlama, Yazılı Anlatım, Sözlü Anlatım ve Karşılıklı Konuşma kriterlerinden asgari notları almanız yeterli olacaktır...";
}
}
catch (Exception)
{
MessageBox.Show ("Vize alanlarına sadece tam sayı girmelisiniz...");
}
}
private void button2_Click(object sender, EventArgs e)
{
tb1vize.Clear();
tb2vize.Clear();
tb3vize.Clear();
tb4vize.Clear();
tbfinal.Clear();
aciklamaalani.Clear();
//Temizle butonu tıklandığında yukarıda belirtilen textboxlar temizlenir...
}
//Vize ve Final notları girilerek yılsonu ortalaması alma işlemi buradan başlıyor...
private void btyilsonuhesapla_Click(object sender, EventArgs e)
{
try
{
if (tbvize1.Text.Trim() == string.Empty ||
tbvize2.Text.Trim() == string.Empty ||
tbvize3.Text.Trim() == string.Empty ||
tbvize4.Text.Trim() == string.Empty ||
tbfinalnotu.Text.Trim() == string.Empty)
{
MessageBox.Show("Vize ve Final not alanlarını eksiksiz doldurunuz! \n Boş alan bırakmadığınızdan emin olun!");
return; //işlemi sona erdir.
} //Vize veya final alanlarından biri boşsa uyarı veriyor...
Double vize1, vize2, vize3, vize4, finalnotu;
Double vizetoplam;
Double ortalama;
string sonuc;
int sonuctamsayi;
vize1 = Convert.ToInt32(tbvize1.Text);
vize2 = Convert.ToInt32(tbvize2.Text);
vize3 = Convert.ToInt32(tbvize3.Text);
vize4 = Convert.ToInt32(tbvize4.Text);
finalnotu = Convert.ToInt32(tbfinalnotu.Text);
//Yukarıda vize1 = Convert.ToDouble(tbvize1.Text); yapsaydım textboxlara virgüllü sayı girilebilirdi...
//Çünkü virgüllü sayılar Double'a dönüştürülebilirdi...
if (vize1 > 100 || vize1 < 0 ||
vize2 > 100 || vize2 < 0 ||
vize3 > 100 || vize3 < 0 ||
vize4 > 100 || vize4 < 0 ||
finalnotu > 100 || finalnotu < 0)
{
MessageBox.Show("Vize ve Final notları 100'den büyük 0'dan küçük olamaz");
return; //işlemi sona erdir.
} //Notlar 100'den büyük 0'dan küçük olursa uyarı veriyor...
vizetoplam = (vize1 + vize2 + vize3 + vize4);
ortalama = (vizetoplam / 10) + (finalnotu * 3 / 5);
//sonuc = Convert.ToString(ortalama);
sonuc = ortalama.ToString("N0");
//F0, F1, F2, N0, N1, N2 virgüllü sonuçlarda yuvarlama işlemi için kullanılıyor..
//aynı zamanda sonuç stringe dönüştürüldü...
tbyilsonu.Text = (sonuc);
sonuctamsayi = Convert.ToInt32(sonuc);
if (sonuctamsayi >= 67 && finalnotu >= 67)
{
tbdurumunuz.Text = "Geçtiniz";
tbdurumunuz.ForeColor = Color.Blue;
}
else
{
tbdurumunuz.ForeColor = Color.Red;
tbdurumunuz.Text = "Kaldınız";
}
}
catch (Exception)
{
MessageBox.Show("Vize alanlarına sadece tam sayı girmelisiniz...");
}
}
private void btyilsonutemizle_Click(object sender, EventArgs e)
{
tbvize1.Clear();
tbvize2.Clear();
tbvize3.Clear();
tbvize4.Clear();
tbfinalnotu.Clear();
tbyilsonu.Clear();
tbdurumunuz.Clear();
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
linkLabel1.LinkVisited = true;
System.Diagnostics.Process.Start("http://www.kerimsarigul.com");
}
}
}