C# Konsol Menülü Fatura Uygulaması
- 104
- (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;
}
}
}
}
}