C# Konsol Menülü Fatura Uygulaması

  • 12
  • (1)
  • (5)
  • 21 Haz 2017

Bütün fatura kayıtları jagged dizi içerisinde tutulsun. Her bir elemanı bir fatura olan faturalar dizisi 4 boyutlu bir dizidir.

bool bir değişkene bağlı olarak sürekli dönen bir while döngüsü olsun. Bu döngü her seferinde ekranı temizleyip bir menü yazdırsın. Ardından menü numaraları ekrandan tuş olarak okunsun ve her numaraya göre ayrı bir işlem gerçekleştirilsin.


static void Main(string[] args)
{
    bool devam = true;
    while (devam) // true olduğu sürece döngü çalışacaktır
    {
        //bir noktada programdan çıkmak için bu değer false olmalıdır
    }
}

Ekrana yazdırılan menü için okunan tuşların her birisi switch yapısı ile case değerleriyle denetlenip gereken işlemler gerçekleştirilebilir. Aşağıda uygulamaya ait kodun tamamını kullanabilir veya inceleyebilirsiniz.

    
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string[][][][] faturalar = new string[1000][][][];
            bool devam = true; // programa devam edilsin değişkeni
            while (devam) // true olduğu sürece döngü çalışır
            {
                Console.Clear(); // ekranı temizleyen metot
                Console.WriteLine("1. Yeni Fatura");
                Console.WriteLine("2. Faturaları Listele");
                Console.WriteLine("3. Fatura Getir");
                Console.WriteLine("4. Fatura Düzenle");
                Console.WriteLine("5. Fatura Sil");
                Console.WriteLine("6. Çıkış"); // menü yazıları
                var keyInfo = Console.ReadKey(true); // menü için okunan tuş
                string[][][] fatura; // tek bir fatura bilgisi
                string fatura_adi, fatura_no, fatura_tarihi;
                string[][] fatura_bilgileri; // fatura genel bilgileri
                string[][] fatura_satirlari; // fatura içi satır bilgileri
                int satir_sayisi = 0;
                string satir_aciklama, satir_birim, satir_fiyat, satir_miktar, satir_toplam;
                double fiyat, miktar;
                switch (keyInfo.Key)
                {
                    case ConsoleKey.NumPad1: // fatura ekleme işlemi başlar
                        Console.Write("Fatura Adı: ");
                        fatura_adi = Console.ReadLine();
                        Console.Write("Fatura No: ");
                        fatura_no = Console.ReadLine();
                        Console.Write("Fatura Tarihi: ");
                        fatura_tarihi = Console.ReadLine();
                        fatura = new string[2][][]; // ilk eleman genel bilgiler ikincisi satırları barındırır
                        fatura_bilgileri = new string[1][];
                        fatura_bilgileri[0] = new string[] 
                            { fatura_adi, fatura_no, fatura_tarihi };
                        fatura[0] = fatura_bilgileri;
                        Console.Write("Satır Sayısı: ");
                        satir_sayisi = Convert.ToInt32(Console.ReadLine());
                        fatura_satirlari = new string[satir_sayisi][];
                        for (int i = 0; i < satir_sayisi; i++)
                        {
                            Console.WriteLine($"{i + 1}. Satır:");
                            Console.Write("Açıklama: ");
                            satir_aciklama = Console.ReadLine();
                            Console.Write("Birim: ");
                            satir_birim = Console.ReadLine();
                            Console.Write("Miktar: ");
                            satir_miktar = Console.ReadLine();
                            miktar = Convert.ToDouble(satir_miktar);
                            Console.Write("Fiyat: ");
                            satir_fiyat = Console.ReadLine();
                            fiyat = Convert.ToDouble(satir_fiyat);
                            satir_toplam = (fiyat * miktar).ToString("0.00");
                            fatura_satirlari[i] = new string[]
                                { satir_aciklama, satir_birim, satir_miktar, satir_fiyat, satir_toplam };
                        }
                        fatura[1] = fatura_satirlari;
                        for (int i = 0; i < 1000; i++) // tüm faturalara bakmak için döngü oluşturulur
                        {
                            if (faturalar[i] == null) // boş olan kayıt aranır
                            {
                                faturalar[i] = fatura; // ilk boş kayıt yerine fatura kaydı yerleştirilir
                                break; // kayıt arama döngüsü sonlandırılır
                            }
                        }
                        break;
                    case ConsoleKey.NumPad2:
                        for (int i = 0; i < 1000; i++)// tüm faturalara bakmak için döngü oluşturulur
                        {
                            if (faturalar[i] == null) continue; // boş olan kayıtlar atlanır
                            Console.WriteLine("{0} {1} {2}",
                                faturalar[i][0][0][0].PadLeft(16), faturalar[i][0][0][1].PadLeft(8), 
                                faturalar[i][0][0][2].PadLeft(12)); // dolu olan kayıtlar ekrana yazdırılır
                        }
                        Console.ReadKey();
                        break;
                    case ConsoleKey.NumPad3:
                        Console.Write("Fatura No: ");
                        fatura_no = Console.ReadLine(); // bakılacak faturanın no bilgisi girilir
                        for (int i = 0; i < 1000; i++) // tüm faturalara bakmak için döngü oluşturulur
                        {
                            if (faturalar[i] == null) continue; // boş olanlar atlanır
                            if (faturalar[i][0][0][1] == fatura_no) // fatura nosu eşleşen kayıt denetlenir
                            {
                                fatura = faturalar[i]; // eşleşme olursa fatura değişkenine eşleşen kayıt atanır
                                fatura_bilgileri = fatura[0];
                                fatura_adi = fatura_bilgileri[0][0];
                                fatura_no = fatura_bilgileri[0][1];
                                fatura_tarihi = fatura_bilgileri[0][2];
                                Console.Write($"Fatura Adı: {fatura_adi}\t");
                                Console.Write($"Fatura No: {fatura_no}\n");
                                Console.WriteLine($"Tarih: {fatura_tarihi}\n");
                                fatura_satirlari = fatura[1];
                                for (int j = 0; j < fatura_satirlari.Length; j++)
                                {
                                    satir_aciklama = fatura_satirlari[j][0];
                                    satir_birim = fatura_satirlari[j][1];
                                    satir_miktar = fatura_satirlari[j][2];
                                    satir_fiyat = fatura_satirlari[j][3];
                                    satir_toplam = fatura_satirlari[j][4];
                                    Console.WriteLine("{0} {1} {2} {3} {4}",
                                        satir_aciklama.PadLeft(16), satir_birim.PadLeft(8),
                                        satir_miktar.PadLeft(12), satir_fiyat.PadLeft(12), satir_toplam.PadLeft(12));
                                }
                            }
                        }
                        Console.ReadKey();
                        break;
                    case ConsoleKey.NumPad4:
                        Console.Write("Fatura No: ");
                        fatura_no = Console.ReadLine();
                        for (int i = 0; i < 1000; i++) // tüm faturalara bakmak için döngü oluşturulur
                        {
                            if (faturalar[i] == null) continue; // boş kayıtlar atlanır
                            if (faturalar[i][0][0][1] == fatura_no) // fatura no eşleşmesi denetlenir
                            {
                                Console.Write("Fatura Adı: "); // fatura bilgileri girme işlemi başlar
                                fatura_adi = Console.ReadLine();
                                Console.Write("Fatura No: ");
                                fatura_no = Console.ReadLine();
                                Console.Write("Fatura Tarihi: ");
                                fatura_tarihi = Console.ReadLine();
                                fatura = new string[2][][];
                                fatura_bilgileri = new string[1][];
                                fatura_bilgileri[0] = new string[]
                                    { fatura_adi, fatura_no, fatura_tarihi };
                                fatura[0] = fatura_bilgileri;
                                Console.Write("Satır Sayısı: ");
                                satir_sayisi = Convert.ToInt32(Console.ReadLine());
                                fatura_satirlari = new string[satir_sayisi][];
                                for (int j = 0; j < satir_sayisi; j++)
                                {
                                    Console.WriteLine($"{j + 1}. Satır:");
                                    Console.Write("Açıklama: ");
                                    satir_aciklama = Console.ReadLine();
                                    Console.Write("Birim: ");
                                    satir_birim = Console.ReadLine();
                                    Console.Write("Miktar: ");
                                    satir_miktar = Console.ReadLine();
                                    miktar = Convert.ToDouble(satir_miktar);
                                    Console.Write("Fiyat: ");
                                    satir_fiyat = Console.ReadLine();
                                    fiyat = Convert.ToDouble(satir_fiyat);
                                    satir_toplam = (fiyat * miktar).ToString("0.00");
                                    fatura_satirlari[j] = new string[]
                                        { satir_aciklama, satir_birim, satir_miktar, satir_fiyat, satir_toplam };
                                }
                                fatura[1] = fatura_satirlari;
                                faturalar[i] = fatura; // aynı kayıt yerine yeni fatura kaydı konulur
                            }
                        }
                        break;
                    case ConsoleKey.NumPad5:
                        Console.Write("Fatura No: "); 
                        fatura_no = Console.ReadLine(); // silinecek faturanın no bilgisi girilir
                        for (int i = 0; i < 1000; i++) // tüm faturalara bakmak için döngü oluşturulur
                        {
                            if (faturalar[i] == null) continue; // boş olan kayıtlar atlanır
                            if (faturalar[i][0][0][1] == fatura_no) // eşleşen fatura no denetlenir
                            {
                                Console.WriteLine($"{fatura_no} nolu faturayı silmek istediğinize emin misiniz?");
                                Console.WriteLine("[E]vet / [H]ayır");
                                var cevapKeyInfo = Console.ReadKey(true); // cevap için E veya H ye basılmalıdır
                                if (cevapKeyInfo.Key == ConsoleKey.E) // E dışında herhangi bir tuş da H anlamına gelir
                                {
                                    faturalar[i] = null;
                                }
                            }
                        }
                        break;
                    case ConsoleKey.NumPad6:
                        devam = false; // 6 tuşuna basılırsa programı devam ettiren bu değişken false olur
                        break;
                }
            }
        }
    }
}
    
İlişkili İçerikler

While döngüleri birçok programlama dilinde kullanılan bir döngü türüdür.

Paylaşın
Etiket Bulutu