C# Başlangıç için basit banka (consol kullanılarak yapılmıştır)

Halley0

Marangoz
Mesajlar
44
En iyi cevaplar
0
Beğeniler
11
Puanları
60
Merhabalar şuanda C# öğrenmekteyim ve öğrenmekte olanlar için bir basit banka yazdım. Kısaca bakiyemiz 1000 TL ve siz para yatırma ve para çekme işlemleriyle bu parayı yönetebiliyorsunuz. Ayrıca her işlem yaptığınızda program size tekrardan işlem yapıp yapmak istemediğinizi soruyor.
Ama bu daha gelişmemiş hali isterseniz para yatıracağı kısımda kullanıcı çıkış yapma özelliği bile getirilir(belki konuyu düzenlememde eklerim)
C#:
using System;

namespace banka
{
    class Program
    {
        static void Main(string[] args)
        {
            int bakiye = 1000;
            int yatirma, cekme;
            string cevap;
            
            
            baslat:
            Console.WriteLine("Lütfen yapıcağınız işlemi giriniz");
            Console.WriteLine("1:Bakiye görüntüleme 2:Para Çekme 3:Para yatırma 4:Sistemden Çıkış");
            int islem = Convert.ToInt32(Console.ReadLine());

            switch (islem)
            {
                case 1:
                    Console.WriteLine("Bakiyeniz: {0}", bakiye);
                    bakiye1:
                    Console.WriteLine("Yeniden işlem yapmak istiyor musunuz?(evet ya da hayır)");
                    cevap = Convert.ToString(Console.ReadLine());
                    if (cevap == "evet")
                    {

                        goto baslat;
                    }

                    else if (cevap == "hayır")
                    {

                        goto bitis;
                    }
                    else if ((cevap != "evet") && (cevap != "hayır"))
                    {
                        Console.WriteLine("evet ya da hayır demediniz.");
                        goto bakiye1;
                    }
                    break;

                case 2:
                    cekme:
                    Console.WriteLine("Çekmek istediğiniz para miktarını yazın");
                    cekme = Convert.ToInt32(Console.ReadLine());
                    if (cekme > bakiye)
                    {
                        Console.WriteLine("İşlem başarısız. Lütfen çekmek istediğiniz miktarı bakiyenizden küçük ya da eşit giriniz. Bakiyeniz: {0}", bakiye);
                        goto cekme;

                        
                    }
                    else if (cekme <= 0)
                    {

                        Console.WriteLine("Çekmek istediğiniz para 0'dan küçük ve 0 olamaz lütfen tekrar deneyiniz");
                        goto cekme;
                    }
                    else
                    {
                        bakiye = bakiye - cekme;
                        Console.WriteLine("İşlem başarılı.Kalan bakiyeniz: {0} Çektiğiniz miktar: {1}", bakiye, cekme);
                        yanlis:
                        Console.WriteLine("Yeniden işlem yapmak istiyor musunuz?(evet ya da hayır)");
                        cevap = Convert.ToString(Console.ReadLine());
                        if (cevap == "evet")
                        {

                            goto baslat;
                        }

                        else if (cevap == "hayır")
                        {

                            goto bitis;
                        }
                        else if ((cevap != "evet") && (cevap != "hayır"))
                        {
                            Console.WriteLine("evet ya da hayır demediniz.");
                            goto yanlis;
                        }

                    }
                    break;

                case 3:
                    yatirma:
                    Console.WriteLine("Ne kadar para yatırmak istiyorsunuz");
                    yatirma = Convert.ToInt32(Console.ReadLine());
                    if (yatirma <= 0)
                    {

                        Console.WriteLine("Yatırmak istediğiniz para miktarı 0 veya - olamaz.Lütfen yeniden deneyin");
                        goto yatirma;
                    }
                    else
                    {
                        bakiye = bakiye + yatirma;
                        Console.WriteLine("Paranız başarıyla yatırıldı.Yatırdığınız para: {0} Şuanki Bakiyeniz: {1}",yatirma,bakiye);
                    yanlis:
                        Console.WriteLine("Yeniden işlem yapmak istiyor musunuz?(evet ya da hayır)");
                        cevap = Convert.ToString(Console.ReadLine());
                        if (cevap == "evet")
                        {

                            goto baslat;
                        }

                        else if (cevap == "hayır")
                        {

                            goto bitis;
                        }
                        else if ((cevap != "evet") && (cevap != "evet"))
                        {
                            Console.WriteLine("evet ya da hayır demediniz.");
                            goto yanlis;
                        }
                    }
                    break;

                case 4:
                bitis:
                    Console.WriteLine("Sistemden çıkış yapılıyor...");
                    goto bitte;
                    break;
                default:
                    Console.WriteLine("Yanlış işlem girdiniz başlangıca yönlendiriliyorsunuz");
                    goto baslat;
                        break;

                      


                    





            }
        bitte:
            Console.ReadKey();


            }
        }
    }

1 2 tanede görsel ekleyeyim
1610017489698.png

1610017522441.png

Ha yok direk indireyim diyorsanız link burada
Umarım yardımcı olabilmişimdir iyi günler
Forumda bir yazılımcı bunu görürse lütfen yorumlamayı unutmasın mesela çok satırlı az satırlı olmuş falan
 


mahmud118

Are you?
Mesajlar
618
En iyi cevaplar
4
Beğeniler
278
Puanları
1,320
Ruh hali
Öncelikle kodlama konusunda başarılar dilerim.
Kodun eleştiriye açık mı bilmiyorum ama niyetimin yermek olmadığını, sadece destek amaçlı olduğunu belirtmek istiyorum. Nitekim yazı yazarken yüz ifadeleri ve tonlamalar çok anlaşılır olmuyor, yanlış anlaşılma olmasın. Aynı zamanda konunun uzmanı olmamam ile beraber, bildiğim kadarını aktarmaya çalışacağım. Ana konudan biraz sapabilirim, affola.
Not: Bunu tamamen "goto" kullanımının üzerine yazıyorum.
Koda yeni başlayan, döngüleri görmemiş veya aşina olmamış birine göre temiz bir kod. Yeni öğrenilen bilgiler ile geliştirilmiş hızlı bir pratik örneğe benziyor. Batch yazmış olan biriysen, "goto" kelimesine olan aşinalığından da kaynaklanıyor olabilir. Ancak kod olarak "goto" kötü bir parça(bad practice) olarak geçer. Önemli nedenlerinden biri "goto" kelimesi kodda bir zıplama yaşatır ve okunulabilir "linearlik"i karıştırabilir.
Linearlik, kelime anlamı olarak düzlük anlamına gelmektedir. Burada kullandığım terim anlamı ise, "kodun akışını bozması" anlamındadır.
Şimdi akıllardan şöyle bir fikir geçebilir: "Ben okuyabiliyorum, o zaman yazabilirim.". Öncelikle bir konuya açıklık getireyim, kodu yazdığınız zaman anlayabilmeniz normaldir. Eğer kısa bir parça kodsa; yine tek bakışta çözmeniz, gayet beklenen bir olaydır.
İyi yazılmış bir kod, herkes tarafından anlaşılabilir ve ne kadar uzun da olsa, çok vakit almadan hangi parçanın nasıl çalıştığını kendisi anlatan koddur.
Bunları açığa kavuşturduysak, bu: "Ben okuyabiliyorum, o zaman yazabilirim." fikrinin ne kadar yanlış olduğunu anlayabiliriz.
Temiz kod yazma hususunu uzadı uzadıcağına yazabiliriz ancak kısa kesmek gerekirse, "goto" kelâmı çok tehlikeli olup az uzun bir kodda piyasayı karıştırma potansiyeline sahiptir. Bunun yerine döngüler ve fonksiyonlar kullanılmalıdır, hattâ "[while(true)]" veya recursive fonksiyonlar bile kullanılabilir.
Not2: "while(true)" kullanıldığı yere göre aynı şekilde bad practice olarak geçmektedir.

Kodlamayı yeni öğrenen biri, ve bunları daha yeni görüp üstüne kendi başına bu kodu yazdıysa, potansiyeli çok yüksektir.
Kendini geliştirmen dileğiyle, başarılar dilerim.
 
Son düzenleme:

dostveviski

Yazıyor...
Sponsor
Mesajlar
803
En iyi cevaplar
17
Beğeniler
420
Puanları
990
Ruh hali
Yeni başlayan arkadaşların inceleyip bir şeyler kapabileceği bir konu olmuş. Tebriks.
 

Halley0

Marangoz
Mesajlar
44
En iyi cevaplar
0
Beğeniler
11
Puanları
60
Öncelikle kodlama konusunda başarılar dilerim.
Kodun eleştiriye açık mı bilmiyorum ama niyetimin yermek olmadığını, sadece destek amaçlı olduğunu belirtmek istiyorum. Nitekim yazı yazarken yüz ifadeleri ve tonlamalar çok anlaşılır olmuyor, yanlış anlaşılma olmasın. Aynı zamanda konunun uzmanı olmamam ile beraber, bildiğim kadarını aktarmaya çalışacağım. Ana konudan biraz sapabilirim, affola.
Not: Bunu tamamen "goto" kullanımının üzerine yazıyorum.
Koda yeni başlayan, döngüleri görmemiş veya aşina olmamış birine göre temiz bir kod. Yeni öğrenilen bilgiler ile geliştirilmiş hızlı bir pratik örneğe benziyor. Batch yazmış olan biriysen, "goto" kelimesine olan aşinalığından da kaynaklanıyor olabilir. Ancak kod olarak "goto" kötü bir parça(bad practice) olarak geçer. Önemli nedenlerinden biri "goto" kelimesi kodda bir zıplama yaşatır ve okunulabilir "linearlik"i karıştırabilir.
Linearlik, kelime anlamı olarak düzlük anlamına gelmektedir. Burada kullandığım terim anlamı ise, "kodun akışını bozması" anlamındadır.
Şimdi akıllardan şöyle bir fikir geçebilir: "Ben okuyabiliyorum, o zaman yazabilirim.". Öncelikle bir konuya açıklık getireyim, kodu yazdığınız zaman anlayabilmeniz normaldir. Eğer kısa bir parça kodsa; yine tek bakışta çözmeniz, gayet beklenen bir olaydır.
İyi yazılmış bir kod, herkes tarafından anlaşılabilir ve ne kadar uzun da olsa, çok vakit almadan hangi parçanın nasıl çalıştığını kendisi anlatan koddur.
Bunları açığa kavuşturduysak, bu: "Ben okuyabiliyorum, o zaman yazabilirim." fikrinin ne kadar yanlış olduğunu anlayabiliriz.
Temiz kod yazma hususunu uzadı uzadıcağına yazabiliriz ancak kısa kesmek gerekirse, "goto" kelâmı çok tehlikeli olup az uzun bir kodda piyasayı karıştırma potansiyeline sahiptir. Bunun yerine döngüler ve fonksiyonlar kullanılmalıdır, hattâ "[while(true)]" veya recursive fonksiyonlar bile kullanılabilir.
Not2: "while(true)" kullanıldığı yere göre aynı şekilde bad practice olarak geçmektedir.

Kodlamayı yeni öğrenen biri, ve bunları daha yeni görüp üstüne kendi başına bu kodu yazdıysa, potansiyeli çok yüksektir.
Kendini geliştirmen dileğiyle, başarılar dilerim.
Zaten böyle bir yorum istediğimi konumun sonunda belirtmiştim ve yorum için gerçekten saol.
Daha ilk defa C# yazıyorum java ile biraz deneyimim olmuştuve C#'a temelli başlayalı 2 gün oldu
*goto* yu o anlık while döngüsünü nasıl yerleştireceğimi bilemediğimden dolayı koymuştum yoksa önceki yazdığım vücut kitle indeksi programında do while kullanmıştım(her ne kadar kullanılmasada). Şimdi bu uyarını dikkate alarak goto 'yu çıkarmaya çalışıp onun yerine do while döngülerini kullanacağım. Ve tekrardan yorumun için teşekkürler
Düzenleme 1: ayrıca batch daha ne olduğunu bilmiyorum fakat hatırladığım kadarıyla şu baslat.bat dosyaları
Yeni başlayan arkadaşların inceleyip bir şeyler kapabileceği bir konu olmuş. Tebriks.
Evet biraz öyle yapmaya çalıştım yorumun için saol :)
 

Nxymn

Warum diese games? Sei doch einfach Straight.
Mesajlar
355
En iyi cevaplar
2
Beğeniler
197
Puanları
400
Ruh hali
Kodlama dillerine ve yazılıma başlayanlar için açıklayıcı olmuş.
 

Koply

Codexia
Mesajlar
58
En iyi cevaplar
0
Beğeniler
54
Puanları
350
Ruh hali
Kodlama dillerine ve yazılıma başlayanlar için açıklayıcı olmuş.
Pek bi açıklama yok ama yine de sen bilirsin.

Öncelikle kodlama konusunda başarılar dilerim.
Kodun eleştiriye açık mı bilmiyorum ama niyetimin yermek olmadığını, sadece destek amaçlı olduğunu belirtmek istiyorum. Nitekim yazı yazarken yüz ifadeleri ve tonlamalar çok anlaşılır olmuyor, yanlış anlaşılma olmasın. Aynı zamanda konunun uzmanı olmamam ile beraber, bildiğim kadarını aktarmaya çalışacağım. Ana konudan biraz sapabilirim, affola.
Not: Bunu tamamen "goto" kullanımının üzerine yazıyorum.
Koda yeni başlayan, döngüleri görmemiş veya aşina olmamış birine göre temiz bir kod. Yeni öğrenilen bilgiler ile geliştirilmiş hızlı bir pratik örneğe benziyor. Batch yazmış olan biriysen, "goto" kelimesine olan aşinalığından da kaynaklanıyor olabilir. Ancak kod olarak "goto" kötü bir parça(bad practice) olarak geçer. Önemli nedenlerinden biri "goto" kelimesi kodda bir zıplama yaşatır ve okunulabilir "linearlik"i karıştırabilir.
Linearlik, kelime anlamı olarak düzlük anlamına gelmektedir. Burada kullandığım terim anlamı ise, "kodun akışını bozması" anlamındadır.
Şimdi akıllardan şöyle bir fikir geçebilir: "Ben okuyabiliyorum, o zaman yazabilirim.". Öncelikle bir konuya açıklık getireyim, kodu yazdığınız zaman anlayabilmeniz normaldir. Eğer kısa bir parça kodsa; yine tek bakışta çözmeniz, gayet beklenen bir olaydır.
İyi yazılmış bir kod, herkes tarafından anlaşılabilir ve ne kadar uzun da olsa, çok vakit almadan hangi parçanın nasıl çalıştığını kendisi anlatan koddur.
Bunları açığa kavuşturduysak, bu: "Ben okuyabiliyorum, o zaman yazabilirim." fikrinin ne kadar yanlış olduğunu anlayabiliriz.
Temiz kod yazma hususunu uzadı uzadıcağına yazabiliriz ancak kısa kesmek gerekirse, "goto" kelâmı çok tehlikeli olup az uzun bir kodda piyasayı karıştırma potansiyeline sahiptir. Bunun yerine döngüler ve fonksiyonlar kullanılmalıdır, hattâ "[while(true)]" veya recursive fonksiyonlar bile kullanılabilir.
Not2: "while(true)" kullanıldığı yere göre aynı şekilde bad practice olarak geçmektedir.

Kodlamayı yeni öğrenen biri, ve bunları daha yeni görüp üstüne kendi başına bu kodu yazdıysa, potansiyeli çok yüksektir.
Kendini geliştirmen dileğiyle, başarılar dilerim.
Genel olarak söylenecek her şeyi @mahmud118 söylemiş zaten. Kodun optimum duruma gelmesi için yapılabilecekleri sıralarsam:
girdilerin sayı harici olması durumunda try-catch ile uygulamanın kapanmaması yerine geçersiz girdi tarzı bir ikaz,
goto yerine while true loop oluşturulması,
kodun daha okunabilir ve goto olmayan kullanım durumunda işlemler içinde de döngülerin olabileceği için her işlemin farklı method içinde bulunması,
biraz daha ileri olacak ama oop temelleri ile kodun tamamen polymorphism dizaynına geçirilmesi falan....

Başarılar.
 

Halley0

Marangoz
Mesajlar
44
En iyi cevaplar
0
Beğeniler
11
Puanları
60
Kodlama dillerine ve yazılıma başlayanlar için açıklayıcı olmuş.
Yorumun için teşekkür ederim çok açıklayıcı yapmamıştım ama neyse :)
Pek bi açıklama yok ama yine de sen bilirsin.


Genel olarak söylenecek her şeyi @mahmud118 söylemiş zaten. Kodun optimum duruma gelmesi için yapılabilecekleri sıralarsam:
girdilerin sayı harici olması durumunda try-catch ile uygulamanın kapanmaması yerine geçersiz girdi tarzı bir ikaz,
goto yerine while true loop oluşturulması,
kodun daha okunabilir ve goto olmayan kullanım durumunda işlemler içinde de döngülerin olabileceği için her işlemin farklı method içinde bulunması,
biraz daha ileri olacak ama oop temelleri ile kodun tamamen polymorphism dizaynına geçirilmesi falan....

Başarılar.
Eleştirin için teşekkür ederim bugün kodun daha iyi hale gelmesi için çalışacağım :)
 

Üst