Anasayfa / Yazılım / C# / Öğrenci Otomasyonu Bölüm 3

Öğrenci Otomasyonu Bölüm 3

Evet şimdi artık projemizde kodlarımıza tamamen geçebiliriz. Öncelikle Kayıt Ekleme formumda yer alan ekle butonu ile ilgili olarak kodlarımı yazıyorum. Bunun için iligli formda ekle butonunun click olayına girmem gerekiyor.

Açıklamalarımı kod bloğu içeriğinde yapacağım zaten ama kısa bir özet geçmek istiyorum. Öncelikle TC Kimlik numarası alanının boş olup olmadığını kontrol edeceğim. Eğer burası boş değil ise database üzerinde bağlantı oluşturacağım.

Kodlarım ve açıklamaları aşağıdaki gibi:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace OgrenciOtomasyonu
{
    public partial class frmKayitEkleme : Form
    {
        public frmKayitEkleme()
        {
            InitializeComponent();
        }

        private void btnEkle_Click(object sender, EventArgs e)
        {
            //Herhangi bir TC Kimlik Numarası girilmiş mi girilmemiş mi kontrol ediyorum.
            if (msktxtTCKimlikNo.Text != "")
            {
                //Aşağıdaki satır ile veritabanı bağlantımı gerçekleştiriyorumç
                OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + ("/OgrenciOtomasyonu.accdb"));
                //Bağlantımı açıyorum.
                conn.Open();

                //Daha önceden aynı TC kimlik numarası veri tabanımda var mı yok mu bunu öğrenmek için önce sorgumu yazıyorum.
                //oledbcommand komutu veritabanı ile ilgili sorguları çalıştırmak için kullanılır.
                OleDbCommand TCKimlikVarmiYokmu = new OleDbCommand("SELECT * FROM OgrenciBilgiler WHERE TC_Kimlik_No=" + "'" + msktxtTCKimlikNo.Text + "'", conn);
                OleDbDataReader dr = TCKimlikVarmiYokmu.ExecuteReader();


                //Gelen tüm satırları kontrol ediyorum. Burada Read ile okuma işlemini OleDbDataReader nesnesi üzerinden yapıyorum.
                if (dr.Read())
                {
                    //Daha önceden kayıtlı aynı YC kimlik no var ise kullanıcıyı uyarıyorum.
                    MessageBox.Show("Daha önce kaydedilmiş TC kimlik numarası girdiniz." , "Öğrenci Ekleme", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    // ilgili alanları sıfırlıyorum.
                    txtAdSoyad.Text="";
                    msktxtTCKimlikNo.Text="";
                }

                    //Eğer TC Kimlik no ilk defa giriliyor yani hiç bi sorun yoksa artık else bloğum çalışıyor.

                else
                {
                    //Burada da öncelikle yeni bir kayıt eklemek için OgrenciKayitEkle nesnemi oluşturdum. Insert Into komutu veritabanına veri eklemek için kullanılır. 
                    OleDbCommand OgrenciKayitEkle = new OleDbCommand("INSERT INTO OgrenciBilgiler (TC_Kimlik_No,AdSoyad,DogumTarihi,Telefon,Bolum) VALUES("+ msktxtTCKimlikNo.Text + ",'" + txtAdSoyad.Text + "','" + dtpDogumTarihi.Value + "','" + msktxtTelefonNo.Text + "','" + cmbBolum.Text + "')", conn);
                    //ExecuteNonQuery oluşturulan veritabanı deyimini çalıştırarak etkilenen satır sayınısı döner. Yani ekleme, silme, güncelleme sonucu etkilenen satır sayısı.
                    OgrenciKayitEkle.ExecuteNonQuery();

                    //Kayıt işleminin gerçekleştiğini kullanıcıya bildiriyorum.
                    MessageBox.Show("Kayıt işlemi gerçekleştirilmiştir.", "Öğrenci Ekleme", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //olşuturulan sorguyu dispose ile serbest bırakıyoruz
                    OgrenciKayitEkle.Dispose();
                    //veritabanı bağlantımı kapatıyorum.
                    conn.Close();
                }
            }
             else
                MessageBox.Show("Lütfen TC Kimlik numarası giriniz", "TC Kimlik Numarası Alanı Boş!!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
        }
           
    }
}

Şimdi gelelim öğrencilerinin not girişini de yapmaya. Şimdi her bir kayıt için not girişi yapılabilir. Bir tasarım daha yapacağız. Burada öğrencinin bilgilerini mevcut kayıtlar içerisinden getireceğiz. Yani veritabanımdan aslında önce veri okuyacağım. Bu verilerde Bölüm, TC Kimlik No ve Ad Soyad olacak. Bölüm ve TC kimlik noyu seçince öğrencinin adı soyadı gelecek. Bende form üzerinden Vize, Final gireceğim. Sonra girilen Vize ve Final notuna göre ortalama hesaplatacağım. Daha sonra da kaydet butonuna basacağım.

Hemen başlayalım. Projemde sağda yer alan solution explorer üzerinde proje adıma sağ tıklıyorum ve add altında Windows Form seçiyorum. Adını frmNotGirisi verdim. Form seçili iken BackColor özelliğini mavi yapıyorum. Text özelliğini de Not Girişi yaptım. Formuma 6 adet label ekliyorum. Bunlar sırası ile;

Bölüm:
TC Kimlik No:
Ad Soyad:
Vize:
Final
Ortalama:

Text değerlerine sahip olacaklar. Bunlara herhangi bir isim vermiyorum, default isimleri ne ise o. Şimdi iki adet combox ekliyorum, bunlar Bölüm listeleme ve TC kimlik no listeleme için kullanılacaklar. Bunlara isim vereceğim. Bölüm için olana cmbBolumListe, TC Kimlik No için olana ise cmbTCKimlikNoListe adını veriyorum.

AdSoyad labelinin karşısına bir label denk getiriyorum. Bunun text özelliğini boş bırakıyorum. Çünkü buraya yazılacak yazı TC kimlik no karşısında yazan Ad Soyad bilgisi olacak. Dolayısı ile bu labele bir isim verelim. lblAdSoyad olsun. Text özelliği de boş oluyor.

Bir label de ortalama yazan labelin karşısına alıyorum, bunun da Text özelliği boş olacak. Çünkü girilen Vize ve Final değerine göre ortalama hesaplanacak. Dolayısı ile boş olması gerekiyor. Bir de isim verelim bu labela, adı lblOrtalama olsun.

Forma bir adette buton kontrolü ekliyorum. Text özelliğini Kaydet olarak değiştirdim. Adını da btnKaydet yaptım.

Şimdi yapmak istediklerimizi yazalım, sonra kodlamaya geçelim. Bu formu kullanırken önce Bölüm seçeceğiz. Burada öğrencilerin kaydı olup, daha önce not girilmemiş öğrencilerin TC kimlik numaraları listelenecek. Yani bu kurala dikkat. Not girilmemiş kayıtların gelmesi önemli. Not girilmeyen TC Kimlik numaraları ilgibi combobox a gelince bu sefer buradaki TC kimlik numarasını seçeceğiz, bunu da seçince öğrencinin ad ve soyad bilgisi gelecek.

Daha sonra Vize ve Final bilgisi girilmesini istiyorum. Burada da bir kontrol yapalım hatta hep kontrollü olsun bizim işlerimiz, buraya iki textbox koyduk ya arkadaşlar, bunu biz masked textbox yapalım. İkisini de değiştirdim. İsimlerini de sırası ile msktxtVize ve msktxtFinal veriyorum. İkisine de mask özelliği vericem, aşağıdaki şekilde sayı girilmesi ve maksimum 3 hane olması için 000 tane sıfır ekliyorum. Böylelikle notları girerken 025,056,004,100 şeklinde gireceğim. Tabi burada bir de maksimum 100 olma durumu var, onu da kod kısmında yaparız. Tabi bir de Vize ve Final alanlarının boş bırakılmamasını kontrol altına almamız gerekiyor. Burada da eğer herhangi bir alan boş ise kullanıcıyı bilgilendireceğiz. Eğer her şey başarılı ise bu sefer de Notlar kaydedilmiştir diye uyarı mesajını vermemiz gerekiyor.

2015050310

Şimdi bölüm için kullanacağımız ComboBox kontrolü içinde bölümler yer alacak. Tabi ben bunları herhangi bir veritabanı tablosunda tutmadım, direkt olarak manuel şekilde comboboxa eklemiştim. Aynı verileri burdaki comboboxa eklemem gerekiyor. Yine comboboxın Items özelliğinden yararlanarak bölümleri ekliyorum.

2015050307

Tasarımım böylelikle bitiyor, aşağıdaki gibi bir tasarım elde ettim.

2015050311

Şimdi ana form üzerinde yer alan Not Girme Butonuna çift tıklayıp click olayına aşağıdaki kodu yazıyorum.

private void btnNotGir_Click(object sender, EventArgs e)
        {
            frmNotGirisi NotGirisForm = new frmNotGirisi();
            NotGirisForm.ShowDialog();
        }

Bir sonraki yazı da görüşmek üzere, şu ana kadar gelinen aşama için projenin son halini aşağıdan indirebilirsiniz.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir