C# Günlük Projesi

İlk yazımda sizlere (özellikle bilişim alanındaki öğrenciler için)  C#.NET‘e başladığım zamanlarda WPF teknolojisini kullanarak yazdığım günlük uygulamasını kaynak kodları ile birlikte paylaşacağım.

 

 

 

 

 

 

 

 

 

Proje yapısı basittir. Yani veritabanı kullanılacak kadar büyük bir sistem değil. Projemiz içindeki “DosyaIslemler.cs”isimli sınıfımız ile dosya işlemlerini gerçekleştiriyoruz. Kaydedilen günlük yazıları “yazilar” klasörü altındaki metin dosyalarında “Encode” metodumuz sayesinde Base64 formatında saklanıyor ve tekrar “Decode” isimli metodumuz ile okunabilir hale çevirilip programımız içindeki textbox nesnemize atama yapıyoruz.

Projedeki bazı satırlara açıklamalar yazdım.

.NET 4.0 ile yazıldı.

DosyaIslemler.cs dosyasının içeriği:

public class DosyaIslemler : IDisposable
    {
        private static DosyaIslemler _instance;
        private static object _lockObject = new object();
        public static DosyaIslemler getInstance()
        {
                if(_instance == null)
                {
                    lock (_lockObject) if(_instance == null)
                            _instance = new DosyaIslemler();
                }
                return _instance;
        }
        private DosyaIslemler() // Yapıcı metodumuz
        {
        }
        #region Özellikler
        public string DosyaAdi { get; set; }
        public bool dosyaVarmi { get; set; }
        #endregion
        #region Metodlar
        public string dosyaMetinDondur()
        {
            return Decode(File.ReadAllText(DosyaAdi)); // Belirtilen dosyanın içindeki metni string olarak döndürür.
        }

        public void dosyaKaydet(string dosyaMetin)
        {
            File.WriteAllText(DosyaAdi, Encode(dosyaMetin)); // Dosya içine metin yazar ve kaydeder.
        }
        public void dosyaFormatla(DateTime zaman)
        {

            string format = string.Format("{0}.txt", zaman.ToShortDateString().Replace('.', '-'));
            DosyaAdi = Environment.CurrentDirectory + "\\yazilar\\" + format;
            dosyaVarmi = dosyaKontrol();
        }
        public bool dosyaKontrol()
        {
            return File.Exists(DosyaAdi); // Dosya'nın var olup, olmadığını kontrol eder.
        }
        public void dosyaSil()
        {
            File.Delete(DosyaAdi); // Dosyayı siler.
        }
        public static string Encode(string toEncode)
        {
            byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
            return System.Convert.ToBase64String(toEncodeAsBytes);
        }
        public static string Decode(string encodedData)
        {

            byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
            return System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);
        }

        public void Dispose()
        {
            GC.SuppressFinalize(this);
        }

C# Projelerinin devamı gelecek.

İndir: gunlukProje-yusufdoru.com.rar (779,58 kb)

Yayınlayan

Yusuf Doru

İstanbul'da yaşıyor. Web ve masaüstü ortamlarında çalışmalar yapıyor. Araştırıyor, geliştiriyor. Kendine ait kişisel blogu var. Her ne kadar .NET dillerine ilgisi olsa da, açık kaynaklı programlama dillerinde de kendini geliştirmeye devam ediyor.

“C# Günlük Projesi” üzerine 11 yorum

  1. Değerli yöneticiler. Bilgisayar programla bölümünde okuyorum. C# göreceğiz bu dönem. hocamızda herkes bir program yapacak dedi. Ben namaz vakitleri, vaaz ve hutbeler günün hadis-i gibi şeyler içeren bir program yapmayı planlıyorum ama hiç alt yapım yok yardımcı olur musunuz ? Şimdiden saygılar, başarılar.

  2. merhaba,

    calıstgım yerde elektronik termometreye ait bir dinamik xml dosyası var.ve ben bu dosyadan sadece sıcaklık değerini çekerek derece 30 u gectıgınde beni alarm ile uyarmasını istiyorum.Sorum şu ; xml dosyasındaki sıcaklık değeri sürekli değişiyor ve güncellenen bu durumu formun kaale alıp değerlendirmesi için formu kod ile reflesh ettirmem mi gerekir?Şayet öyle ise formu kod ile nasıl reflesh ettirebilirim

    Saygılarımla

    1. Merhaba,

      Değeri her 1 saniyede alıp formdaki gösterici label’ı güncelleyebilirsin. Bunun için Timer kontrolünü kullanabilirsin.

      Kolay gelsin.

  3. Hocam, öncelikle bu güzel dimağınıza ve alçakgönüllülüğünüze teşekkür ederim. Paylaşımlarınızın konu başlıklarına baktım gerçekten nitelikli kodlar paylaşmışsınız. Fakat her bir satır kodun ne için yazıldığını ve hangi sıra ile yazıldığını belirtmemişsiniz…Durum böyle olunca, copy+paste yapmanın pek bir anlamı yok. Ben özellikle GET ve SET parametre veya fonksiyonlarından bahsetmenizi istiyorum…Değişken tanımlama, değişkenlere dışarıdan parametre yükleme, veritabanlarına insert-update müdahaleleri gibi teknik konularda anlatım yapmanızı bekliyor olacağım. Teşekkürler…

    1. Merhaba,

      Haklısınız. Masaüstü uygulamalarda daha çok koda değilde amaca yöneliyordum. Kafama estikçe yazdığım basit programlardı. Arada hala yazıp, paylaşıyorum. Öğrenci arkadaşların işlerine yarayabiliyor 🙂

Bir Cevap Yazın

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