C# Geliştirilen uygulama nasıl?

m.enooww38

Centipat
Katılım
12 Temmuz 2024
Mesajlar
173
Çözümler
2
Yer
Kayseri
Daha fazla  
Sistem Özellikleri
Windows 11 | Amd Ryzen 3 | Asus VivoBook | 256 GB | 8 GB Ram |
Cinsiyet
Erkek
Meslek
Öğrenci
Geçenlerde Visual Studio üzer,nden bir uygulama yaptım. Sizce yayımlayayım mi? Bu konuda ilerlemeli miyim? Görüşleriniz için teşekkürler.
 
Son düzenleyen: Moderatör:
Program bizlere vahiy yoluyla iniyormuş arkadaşlar bilginiz olsun.

Atmayı unutmuşum yorgunluktan kod şu.

C#:
#nullable enable.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;

class GelistirilmisMessenger
{
 // Kullanıcı Sınıfı.
 class Kullanici.
 {
 public required string KullaniciAdi { get; set; }
 public required string Sifre { get; set; }
 public required string Email { get; set; }
 public DateTime KayitTarihi { get; set; }
 public List<Mesaj> GelenKutusu { get; set; } = new List<Mesaj>();
 public List<Mesaj> GidenKutusu { get; set; } = new List<Mesaj>();
 public List<string> Arkadas { get; set; } = new List<string>();
 public Dictionary<string, string> OzelNotlar { get; set; } = new Dictionary<string, string>();

 public Kullanici()
 {
 KullaniciAdi = string.Empty;
 Sifre = string.Empty;
 Email = string.Empty;
 }
 }

 // Mesaj Sınıfı.
 class Mesaj.
 {
 public required string Gonderen { get; set; }
 public required string Alici { get; set; }
 public required string Icerik { get; set; }
 public DateTime Zaman { get; set; }
 public bool Okundu { get; set; } = false;
 public bool Gizli { get; set; } = false;
 public string DosyaEki { get; set; } = string.Empty;

 public Mesaj()
 {
 Gonderen = string.Empty;
 Alici = string.Empty;
 Icerik = string.Empty;
 }
 }

 // Messenger Sistemi.
 class MessengerSistemi.
 {
 private List<Kullanici> kullanicilar = new List<Kullanici>();
 private Kullanici? aktifKullanici;
 private const string KULLANICI_DOSYASI = "kullanicilar.txt";

 public MessengerSistemi()
 {
 try.
 {
 KullanicilariYukle();
 }
 catch (Exception ex)
 {
 HataGoster($"Kullanıcıları yüklerken hata: {ex.Message}");
 }
 }

 private void HataGoster(string mesaj)
 {
 Console.ForegroundColor = ConsoleColor.Red;
 Console.WriteLine($"HATA: {mesaj}");
 Console.ResetColor();
 Thread.Sleep(2000);
 }

 private void KullanicilariYukle()
 {
 if (File.Exists(KULLANICI_DOSYASI))
 {
 var satirlar = File.ReadAllLines(KULLANICI_DOSYASI);
 foreach (var satir in satirlar)
 {
 try.
 {
 var bilgiler = satir.Split('|');
 if (bilgiler.Length >= 4)
 {
 kullanicilar.Add(new Kullanici.
 {
 KullaniciAdi = bilgiler[0],
 Sifre = bilgiler[1],
 Email = bilgiler[2],
 KayitTarihi = DateTime.Parse(bilgiler[3])
 });
 }
 }
 catch (Exception ex)
 {
 HataGoster($"Kullanıcı yüklenirken hata: {ex.Message}");
 }
 }
 }
 }

 public void Baslat()
 {
 while (true)
 {
 Console.Clear();
 Console.WriteLine("--- Gelişmiş Messenger Uygulaması ---");
 Console.WriteLine("1. Giriş Yap");
 Console.WriteLine("2. Yeni Kullanıcı Kaydet");
 Console.WriteLine("3. Çıkış");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 GirisYap();
 break;
 case "2":
 YeniKullaniciKaydet();
 break;
 case "3":
 return;
 }
 }
 }

 private void GirisYap()
 {
 if (kullanicilar.Count == 0)
 {
 Console.WriteLine("Henüz kayıtlı kullanıcı yok!");
 Thread.Sleep(1500);
 return;
 }

 Console.Clear();
 Console.WriteLine("--- Kullanıcı Seçimi ---");
 Console.WriteLine("Ok tuşları ile seçim yapın, ENTER ile onaylayın");

 int seciliIndex = 0;
 while (true)
 {
 Console.Clear();
 Console.WriteLine("--- Kullanıcı Seçimi ---");
 Console.WriteLine("Ok tuşları ile seçim yapın, ENTER ile onaylayın\n");

 // Kullanıcıları listele.
 for (int i = 0; i < kullanicilar.Count; i++)
 {
 if (i == seciliIndex)
 {
 Console.BackgroundColor = ConsoleColor.Gray;
 Console.ForegroundColor = ConsoleColor.Black;
 }

 Console.WriteLine($"{kullanicilar[i].KullaniciAdi}");

 Console.ResetColor();
 }

 // Tuş girişi.
 var tus = Console.ReadKey(true);

 switch (tus.Key)
 {
 case ConsoleKey.DownArrow:
 seciliIndex = (seciliIndex + 1) % kullanicilar.Count;
 break;
 case ConsoleKey.UpArrow:
 seciliIndex = (seciliIndex - 1 + kullanicilar.Count) % kullanicilar.Count;
 break;
 case ConsoleKey.Enter:
 // Şifre girişi.
 Console.Write("\nŞifre: ");
 string? sifre = Console.ReadLine();

 if (sifre == kullanicilar[seciliIndex].Sifre)
 {
 aktifKullanici = kullanicilar[seciliIndex];

 // Yeni mesaj bildirimi.
 int yeniMesajSayisi = aktifKullanici.GelenKutusu.Count(m => !m.Okundu);
 Console.Clear();
 Console.WriteLine($"Merhaba {aktifKullanici.KullaniciAdi}!");
 Console.WriteLine($"Toplam {yeniMesajSayisi} yeni mesajınız var.");
 Console.WriteLine("\nDevam etmek için bir tuşa basın...");
 Console.ReadKey();

 AnaMenu();
 return;
 }
 else.
 {
 Console.WriteLine("Hatalı şifre!");
 Thread.Sleep(1500);
 }
 break;
 case ConsoleKey.Escape:
 return;
 }
 }
 }

 private void YeniKullaniciKaydet()
 {
 Console.Clear();
 Console.WriteLine("--- Yeni Kullanıcı Kaydı ---");

 Console.Write("Kullanıcı Adı (min 3 karakter): ");
 string? yeniKullaniciAdi = Console.ReadLine();

 // Gelişmiş Kullanıcı Adı Kontrolü.
 if (string.IsNullOrWhiteSpace(yeniKullaniciAdi) || yeniKullaniciAdi.Length < 3)
 {
 Console.WriteLine("Kullanıcı adı çok kısa!");
 Thread.Sleep(1500);
 return;
 }

 if (kullanicilar.Any(k => k.KullaniciAdi == yeniKullaniciAdi))
 {
 Console.WriteLine("Bu kullanıcı adı zaten alınmış!");
 Thread.Sleep(1500);
 return;
 }

 Console.Write("Şifre (min 6 karakter, harf ve rakam içermeli): ");
 string? yeniSifre = Console.ReadLine();

 // Gelişmiş Şifre Kontrolü.
 if (string.IsNullOrWhiteSpace(yeniSifre) ||
 yeniSifre.Length < 6 ||
 !yeniSifre.Any(char.IsLetter) ||
 !yeniSifre.Any(char.IsDigit))
 {
 Console.WriteLine("Şifre güvenlik kriterlerini karşılamıyor!");
 Thread.Sleep(1500);
 return;
 }

 Console.Write("Email: ");
 string? yeniEmail = Console.ReadLine();

 Kullanici yeniKullanici = new Kullanici.
 {
 KullaniciAdi = yeniKullaniciAdi,
 Sifre = yeniSifre,
 Email = yeniEmail ?? string.Empty,
 KayitTarihi = DateTime.Now
 };

 kullanicilar.Add(yeniKullanici);

 Console.WriteLine("Kullanıcı başarıyla kaydedildi!");
 Thread.Sleep(1500);
 }

 private void AnaMenu()
 {
 if (aktifKullanici == null) return;

 while (true)
 {
 Console.Clear();
 Console.WriteLine($"Hoş geldin, {aktifKullanici.KullaniciAdi}!");
 Console.WriteLine("1. Yeni Mesaj Gönder");
 Console.WriteLine("2. Gelen Kutusu");
 Console.WriteLine("3. Giden Kutusu");
 Console.WriteLine("4. Arkadaş Yönetimi");
 Console.WriteLine("5. Profil Ayarları");
 Console.WriteLine("6. Dosya Paylaşımı");
 Console.WriteLine("7. Özel Notlar");
 Console.WriteLine("8. Çıkış Yap");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 YeniMesajGonder();
 break;
 case "2":
 GelenKutusuGoster();
 break;
 case "3":
 GidenKutusuGoster();
 break;
 case "4":
 ArkadasyoNetimi();
 break;
 case "5":
 ProfilAyarlari();
 break;
 case "6":
 DosyaPaylasimiYap();
 break;
 case "7":
 OzelNotlarYonetimi();
 break;
 case "8":
 return;
 }
 }
 }

 private void ArkadasyoNetimi()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Arkadaş Yönetimi ---");
 Console.WriteLine("1. Arkadaş Ekle");
 Console.WriteLine("2. Arkadaş Listesi");
 Console.WriteLine("3. Geri Dön");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 Console.Write("Eklemek istediğiniz kullanıcı adı: ");
 string? eklenecekArkadas = Console.ReadLine();

 var arkadas = kullanicilar.FirstOrDefault(k => k.KullaniciAdi == eklenecekArkadas);
 if (arkadas != null && !aktifKullanici.Arkadas.Contains(eklenecekArkadas))
 {
 aktifKullanici.Arkadas.Add(eklenecekArkadas);
 Console.WriteLine("Arkadaş eklendi!");
 }
 else.
 {
 Console.WriteLine("Kullanıcı bulunamadı veya zaten arkadaşınız!");
 }
 Thread.Sleep(1500);
 break;
 case "2":
 Console.WriteLine("Arkadaş Listesi:");
 foreach (var ark in aktifKullanici.Arkadas)
 {
 Console.WriteLine(ark);
 }
 Console.ReadKey();
 break;
 }
 }

 private void ProfilAyarlari()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Profil Ayarları ---");
 Console.WriteLine($"Kullanıcı Adı: {aktifKullanici.KullaniciAdi}");
 Console.WriteLine($"Email: {aktifKullanici.Email}");
 Console.WriteLine($"Kayıt Tarihi: {aktifKullanici.KayitTarihi}");

 Console.WriteLine("\n1. Şifre Değiştir");
 Console.WriteLine("2. Email Değiştir");
 Console.WriteLine("3. Geri Dön");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 SifreDegistir();
 break;
 case "2":
 EmailDegistir();
 break;
 }
 }

 private void SifreDegistir()
 {
 if (aktifKullanici == null) return;

 Console.Write("Mevcut Şifrenizi Girin: ");
 string? mevcutSifre = Console.ReadLine();

 if (mevcutSifre == aktifKullanici.Sifre)
 {
 Console.Write("Yeni Şifre: ");
 string? yeniSifre = Console.ReadLine();

 Console.Write("Yeni Şifreyi Tekrar Girin: ");
 string? yeniSifreTekrar = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(yeniSifre) &&
 yeniSifre == yeniSifreTekrar &&
 yeniSifre.Length >= 6)
 {
 aktifKullanici.Sifre = yeniSifre;
 Console.WriteLine("Şifre başarıyla değiştirildi!");
 }
 else.
 {
 Console.WriteLine("Şifre değiştirme başarısız!");
 }
 }
 else.
 {
 Console.WriteLine("Mevcut şifre yanlış!");
 }
 Thread.Sleep(1500);
 }

 private void EmailDegistir()
 {
 if (aktifKullanici == null) return;

 Console.Write("Yeni Email: ");
 string? yeniEmail = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(yeniEmail))
 {
 aktifKullanici.Email = yeniEmail;
 Console.WriteLine("Email başarıyla değiştirildi!");
 }
 else.
 {
 Console.WriteLine("Geçersiz email!");
 }
 Thread.Sleep(1500);
 }

 private void YeniMesajGonder()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.Write("Alıcı Kullanıcı Adı: ");
 string? alici = Console.ReadLine();

 var aliciKullanici = kullanicilar.FirstOrDefault(k => k.KullaniciAdi == alici);

 if (aliciKullanici != null)
 {
 Console.Write("Mesaj İçeriği: ");
 string? icerik = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(icerik))
 {
 var mesaj = new Mesaj.
 {
 Gonderen = aktifKullanici.KullaniciAdi,
 Alici = alici,
 Icerik = icerik,
 Zaman = DateTime.Now
 };

 aktifKullanici.GidenKutusu.Add(mesaj);
 aliciKullanici.GelenKutusu.Add(mesaj);

 Console.WriteLine("Mesaj gönderildi!");
 }
 else.
 {
 Console.WriteLine("Mesaj içeriği boş olamaz!");
 }
 }
 else.
 {
 Console.WriteLine("Kullanıcı bulunamadı!");
 }
 Thread.Sleep(1500);
 }

 private void GelenKutusuGoster()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Gelen Kutusu ---");
 if (aktifKullanici.GelenKutusu.Count == 0)
 {
 Console.WriteLine("Gelen kutunuz boş.");
 }
 else.
 {
 for (int i = 0; i < aktifKullanici.GelenKutusu.Count; i++)
 {
 var mesaj = aktifKullanici.GelenKutusu[i];
 Console.WriteLine($"{i + 1}. Gönderen: {mesaj.Gonderen}");
 Console.WriteLine($" Tarih: {mesaj.Zaman}");
 Console.WriteLine($" Mesaj: {mesaj.Icerik}");
 mesaj.Okundu = true;
 Console.WriteLine("-------------------");
 }
 }
 Console.WriteLine("Devam etmek için bir tuşa basın...");
 Console.ReadKey();
 }

 private void GidenKutusuGoster()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Giden Kutusu ---");
 if (aktifKullanici.GidenKutusu.Count == 0)
 {
 Console.WriteLine("Giden kutunuz boş.");
 }
 else.
 {
 for (int i = 0; i < aktifKullanici.GidenKutusu.Count; i++)
 {
 var mesaj = aktifKullanici.GidenKutusu[i];
 Console.WriteLine($"{i + 1}. Alıcı: {mesaj.Alici}");
 Console.WriteLine($" Tarih: {mesaj.Zaman}");
 Console.WriteLine($" Mesaj: {mesaj.Icerik}");
 Console.WriteLine("-------------------");
 }
 }
 Console.WriteLine("Devam etmek için bir tuşa basın...");
 Console.ReadKey();
 }

 private void DosyaPaylasimiYap()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Dosya Paylaşımı ---");
 Console.Write("Göndereceğiniz kullanıcı adı: ");
 string? alici = Console.ReadLine();

 var aliciKullanici = kullanicilar.FirstOrDefault(k => k.KullaniciAdi == alici);

 if (aliciKullanici != null)
 {
 Console.Write("Dosya yolu: ");
 string? dosyaYolu = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(dosyaYolu) && File.Exists(dosyaYolu))
 {
 var mesaj = new Mesaj.
 {
 Gonderen = aktifKullanici.KullaniciAdi,
 Alici = alici,
 Icerik = "Dosya Paylaşımı",
 Zaman = DateTime.Now,
 DosyaEki = dosyaYolu.
 };

 aktifKullanici.GidenKutusu.Add(mesaj);
 aliciKullanici.GelenKutusu.Add(mesaj);

 Console.WriteLine("Dosya paylaşıldı!");
 }
 else.
 {
 Console.WriteLine("Dosya bulunamadı!");
 }
 }
 else.
 {
 Console.WriteLine("Kullanıcı bulunamadı!");
 }
 Thread.Sleep(1500);
 }

 private void OzelNotlarYonetimi()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Özel Notlar ---");
 Console.WriteLine("1. Not Ekle");
 Console.WriteLine("2. Notları Görüntüle");
 Console.WriteLine("3. Not Sil");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 Console.Write("Not Başlığı: ");
 string? baslik = Console.ReadLine();
 Console.Write("Not İçeriği: ");
 string? icerik = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(baslik) && !string.IsNullOrWhiteSpace(icerik))
 {
 aktifKullanici.OzelNotlar[baslik] = icerik;
 Console.WriteLine("Not kaydedildi!");
 }
 else.
 {
 Console.WriteLine("Başlık veya içerik boş olamaz!");
 }
 break;
 case "2":
 Console.WriteLine("Notlarınız:");
 foreach (var not in aktifKullanici.OzelNotlar)
 {
 Console.WriteLine($"{not.Key}: {not.Value}");
 }
 Console.ReadKey();
 break;
 case "3":
 Console.Write("Silmek istediğiniz not başlığı: ");
 string? silinecekBaslik = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(silinecekBaslik) &&
 aktifKullanici.OzelNotlar.Remove(silinecekBaslik))
 {
 Console.WriteLine("Not silindi!");
 }
 else.
 {
 Console.WriteLine("Not bulunamadı!");
 }
 break;
 }
 Thread.Sleep(1500);
 }

 static void Main(string[] args)
 {
 try.
 {
 Console.OutputEncoding = Encoding.UTF8;
 var messenger = new MessengerSistemi();
 messenger.Baslat();
 }
 catch (Exception ex)
 {
 Console.WriteLine($"Kritik hata: {ex.Message}");
 }
 }
 }
}

Basit bir mesajlaşma uygulaması yaptım fakat uygulama iş yerleri gibi şeylered kullanılması için tasarlandı

Projeniz hakkında biraz bilgi paylaşır mısınız? Ekran görüntüsü, demo vb. bir şey olmadan yorum yapılmaz.
Pozitif mesajınız için teşekkürlerrr henüz küçüğüm fakat bu kadar yapabildim
1738269235502.png
1738269267531.png
1738269297629.png
1738269310128.png
 
Atmayı unutmuşum yorgunluktan kod şu.

C#:
#nullable enable.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;

class GelistirilmisMessenger
{
 // Kullanıcı Sınıfı.
 class Kullanici.
 {
 public required string KullaniciAdi { get; set; }
 public required string Sifre { get; set; }
 public required string Email { get; set; }
 public DateTime KayitTarihi { get; set; }
 public List<Mesaj> GelenKutusu { get; set; } = new List<Mesaj>();
 public List<Mesaj> GidenKutusu { get; set; } = new List<Mesaj>();
 public List<string> Arkadas { get; set; } = new List<string>();
 public Dictionary<string, string> OzelNotlar { get; set; } = new Dictionary<string, string>();

 public Kullanici()
 {
 KullaniciAdi = string.Empty;
 Sifre = string.Empty;
 Email = string.Empty;
 }
 }

 // Mesaj Sınıfı.
 class Mesaj.
 {
 public required string Gonderen { get; set; }
 public required string Alici { get; set; }
 public required string Icerik { get; set; }
 public DateTime Zaman { get; set; }
 public bool Okundu { get; set; } = false;
 public bool Gizli { get; set; } = false;
 public string DosyaEki { get; set; } = string.Empty;

 public Mesaj()
 {
 Gonderen = string.Empty;
 Alici = string.Empty;
 Icerik = string.Empty;
 }
 }

 // Messenger Sistemi.
 class MessengerSistemi.
 {
 private List<Kullanici> kullanicilar = new List<Kullanici>();
 private Kullanici? aktifKullanici;
 private const string KULLANICI_DOSYASI = "kullanicilar.txt";

 public MessengerSistemi()
 {
 try.
 {
 KullanicilariYukle();
 }
 catch (Exception ex)
 {
 HataGoster($"Kullanıcıları yüklerken hata: {ex.Message}");
 }
 }

 private void HataGoster(string mesaj)
 {
 Console.ForegroundColor = ConsoleColor.Red;
 Console.WriteLine($"HATA: {mesaj}");
 Console.ResetColor();
 Thread.Sleep(2000);
 }

 private void KullanicilariYukle()
 {
 if (File.Exists(KULLANICI_DOSYASI))
 {
 var satirlar = File.ReadAllLines(KULLANICI_DOSYASI);
 foreach (var satir in satirlar)
 {
 try.
 {
 var bilgiler = satir.Split('|');
 if (bilgiler.Length >= 4)
 {
 kullanicilar.Add(new Kullanici.
 {
 KullaniciAdi = bilgiler[0],
 Sifre = bilgiler[1],
 Email = bilgiler[2],
 KayitTarihi = DateTime.Parse(bilgiler[3])
 });
 }
 }
 catch (Exception ex)
 {
 HataGoster($"Kullanıcı yüklenirken hata: {ex.Message}");
 }
 }
 }
 }

 public void Baslat()
 {
 while (true)
 {
 Console.Clear();
 Console.WriteLine("--- Gelişmiş Messenger Uygulaması ---");
 Console.WriteLine("1. Giriş Yap");
 Console.WriteLine("2. Yeni Kullanıcı Kaydet");
 Console.WriteLine("3. Çıkış");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 GirisYap();
 break;
 case "2":
 YeniKullaniciKaydet();
 break;
 case "3":
 return;
 }
 }
 }

 private void GirisYap()
 {
 if (kullanicilar.Count == 0)
 {
 Console.WriteLine("Henüz kayıtlı kullanıcı yok!");
 Thread.Sleep(1500);
 return;
 }

 Console.Clear();
 Console.WriteLine("--- Kullanıcı Seçimi ---");
 Console.WriteLine("Ok tuşları ile seçim yapın, ENTER ile onaylayın");

 int seciliIndex = 0;
 while (true)
 {
 Console.Clear();
 Console.WriteLine("--- Kullanıcı Seçimi ---");
 Console.WriteLine("Ok tuşları ile seçim yapın, ENTER ile onaylayın\n");

 // Kullanıcıları listele.
 for (int i = 0; i < kullanicilar.Count; i++)
 {
 if (i == seciliIndex)
 {
 Console.BackgroundColor = ConsoleColor.Gray;
 Console.ForegroundColor = ConsoleColor.Black;
 }

 Console.WriteLine($"{kullanicilar[i].KullaniciAdi}");

 Console.ResetColor();
 }

 // Tuş girişi.
 var tus = Console.ReadKey(true);

 switch (tus.Key)
 {
 case ConsoleKey.DownArrow:
 seciliIndex = (seciliIndex + 1) % kullanicilar.Count;
 break;
 case ConsoleKey.UpArrow:
 seciliIndex = (seciliIndex - 1 + kullanicilar.Count) % kullanicilar.Count;
 break;
 case ConsoleKey.Enter:
 // Şifre girişi.
 Console.Write("\nŞifre: ");
 string? sifre = Console.ReadLine();

 if (sifre == kullanicilar[seciliIndex].Sifre)
 {
 aktifKullanici = kullanicilar[seciliIndex];

 // Yeni mesaj bildirimi.
 int yeniMesajSayisi = aktifKullanici.GelenKutusu.Count(m => !m.Okundu);
 Console.Clear();
 Console.WriteLine($"Merhaba {aktifKullanici.KullaniciAdi}!");
 Console.WriteLine($"Toplam {yeniMesajSayisi} yeni mesajınız var.");
 Console.WriteLine("\nDevam etmek için bir tuşa basın...");
 Console.ReadKey();

 AnaMenu();
 return;
 }
 else.
 {
 Console.WriteLine("Hatalı şifre!");
 Thread.Sleep(1500);
 }
 break;
 case ConsoleKey.Escape:
 return;
 }
 }
 }

 private void YeniKullaniciKaydet()
 {
 Console.Clear();
 Console.WriteLine("--- Yeni Kullanıcı Kaydı ---");

 Console.Write("Kullanıcı Adı (min 3 karakter): ");
 string? yeniKullaniciAdi = Console.ReadLine();

 // Gelişmiş Kullanıcı Adı Kontrolü.
 if (string.IsNullOrWhiteSpace(yeniKullaniciAdi) || yeniKullaniciAdi.Length < 3)
 {
 Console.WriteLine("Kullanıcı adı çok kısa!");
 Thread.Sleep(1500);
 return;
 }

 if (kullanicilar.Any(k => k.KullaniciAdi == yeniKullaniciAdi))
 {
 Console.WriteLine("Bu kullanıcı adı zaten alınmış!");
 Thread.Sleep(1500);
 return;
 }

 Console.Write("Şifre (min 6 karakter, harf ve rakam içermeli): ");
 string? yeniSifre = Console.ReadLine();

 // Gelişmiş Şifre Kontrolü.
 if (string.IsNullOrWhiteSpace(yeniSifre) ||
 yeniSifre.Length < 6 ||
 !yeniSifre.Any(char.IsLetter) ||
 !yeniSifre.Any(char.IsDigit))
 {
 Console.WriteLine("Şifre güvenlik kriterlerini karşılamıyor!");
 Thread.Sleep(1500);
 return;
 }

 Console.Write("Email: ");
 string? yeniEmail = Console.ReadLine();

 Kullanici yeniKullanici = new Kullanici.
 {
 KullaniciAdi = yeniKullaniciAdi,
 Sifre = yeniSifre,
 Email = yeniEmail ?? string.Empty,
 KayitTarihi = DateTime.Now
 };

 kullanicilar.Add(yeniKullanici);

 Console.WriteLine("Kullanıcı başarıyla kaydedildi!");
 Thread.Sleep(1500);
 }

 private void AnaMenu()
 {
 if (aktifKullanici == null) return;

 while (true)
 {
 Console.Clear();
 Console.WriteLine($"Hoş geldin, {aktifKullanici.KullaniciAdi}!");
 Console.WriteLine("1. Yeni Mesaj Gönder");
 Console.WriteLine("2. Gelen Kutusu");
 Console.WriteLine("3. Giden Kutusu");
 Console.WriteLine("4. Arkadaş Yönetimi");
 Console.WriteLine("5. Profil Ayarları");
 Console.WriteLine("6. Dosya Paylaşımı");
 Console.WriteLine("7. Özel Notlar");
 Console.WriteLine("8. Çıkış Yap");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 YeniMesajGonder();
 break;
 case "2":
 GelenKutusuGoster();
 break;
 case "3":
 GidenKutusuGoster();
 break;
 case "4":
 ArkadasyoNetimi();
 break;
 case "5":
 ProfilAyarlari();
 break;
 case "6":
 DosyaPaylasimiYap();
 break;
 case "7":
 OzelNotlarYonetimi();
 break;
 case "8":
 return;
 }
 }
 }

 private void ArkadasyoNetimi()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Arkadaş Yönetimi ---");
 Console.WriteLine("1. Arkadaş Ekle");
 Console.WriteLine("2. Arkadaş Listesi");
 Console.WriteLine("3. Geri Dön");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 Console.Write("Eklemek istediğiniz kullanıcı adı: ");
 string? eklenecekArkadas = Console.ReadLine();

 var arkadas = kullanicilar.FirstOrDefault(k => k.KullaniciAdi == eklenecekArkadas);
 if (arkadas != null && !aktifKullanici.Arkadas.Contains(eklenecekArkadas))
 {
 aktifKullanici.Arkadas.Add(eklenecekArkadas);
 Console.WriteLine("Arkadaş eklendi!");
 }
 else.
 {
 Console.WriteLine("Kullanıcı bulunamadı veya zaten arkadaşınız!");
 }
 Thread.Sleep(1500);
 break;
 case "2":
 Console.WriteLine("Arkadaş Listesi:");
 foreach (var ark in aktifKullanici.Arkadas)
 {
 Console.WriteLine(ark);
 }
 Console.ReadKey();
 break;
 }
 }

 private void ProfilAyarlari()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Profil Ayarları ---");
 Console.WriteLine($"Kullanıcı Adı: {aktifKullanici.KullaniciAdi}");
 Console.WriteLine($"Email: {aktifKullanici.Email}");
 Console.WriteLine($"Kayıt Tarihi: {aktifKullanici.KayitTarihi}");

 Console.WriteLine("\n1. Şifre Değiştir");
 Console.WriteLine("2. Email Değiştir");
 Console.WriteLine("3. Geri Dön");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 SifreDegistir();
 break;
 case "2":
 EmailDegistir();
 break;
 }
 }

 private void SifreDegistir()
 {
 if (aktifKullanici == null) return;

 Console.Write("Mevcut Şifrenizi Girin: ");
 string? mevcutSifre = Console.ReadLine();

 if (mevcutSifre == aktifKullanici.Sifre)
 {
 Console.Write("Yeni Şifre: ");
 string? yeniSifre = Console.ReadLine();

 Console.Write("Yeni Şifreyi Tekrar Girin: ");
 string? yeniSifreTekrar = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(yeniSifre) &&
 yeniSifre == yeniSifreTekrar &&
 yeniSifre.Length >= 6)
 {
 aktifKullanici.Sifre = yeniSifre;
 Console.WriteLine("Şifre başarıyla değiştirildi!");
 }
 else.
 {
 Console.WriteLine("Şifre değiştirme başarısız!");
 }
 }
 else.
 {
 Console.WriteLine("Mevcut şifre yanlış!");
 }
 Thread.Sleep(1500);
 }

 private void EmailDegistir()
 {
 if (aktifKullanici == null) return;

 Console.Write("Yeni Email: ");
 string? yeniEmail = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(yeniEmail))
 {
 aktifKullanici.Email = yeniEmail;
 Console.WriteLine("Email başarıyla değiştirildi!");
 }
 else.
 {
 Console.WriteLine("Geçersiz email!");
 }
 Thread.Sleep(1500);
 }

 private void YeniMesajGonder()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.Write("Alıcı Kullanıcı Adı: ");
 string? alici = Console.ReadLine();

 var aliciKullanici = kullanicilar.FirstOrDefault(k => k.KullaniciAdi == alici);

 if (aliciKullanici != null)
 {
 Console.Write("Mesaj İçeriği: ");
 string? icerik = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(icerik))
 {
 var mesaj = new Mesaj.
 {
 Gonderen = aktifKullanici.KullaniciAdi,
 Alici = alici,
 Icerik = icerik,
 Zaman = DateTime.Now
 };

 aktifKullanici.GidenKutusu.Add(mesaj);
 aliciKullanici.GelenKutusu.Add(mesaj);

 Console.WriteLine("Mesaj gönderildi!");
 }
 else.
 {
 Console.WriteLine("Mesaj içeriği boş olamaz!");
 }
 }
 else.
 {
 Console.WriteLine("Kullanıcı bulunamadı!");
 }
 Thread.Sleep(1500);
 }

 private void GelenKutusuGoster()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Gelen Kutusu ---");
 if (aktifKullanici.GelenKutusu.Count == 0)
 {
 Console.WriteLine("Gelen kutunuz boş.");
 }
 else.
 {
 for (int i = 0; i < aktifKullanici.GelenKutusu.Count; i++)
 {
 var mesaj = aktifKullanici.GelenKutusu[i];
 Console.WriteLine($"{i + 1}. Gönderen: {mesaj.Gonderen}");
 Console.WriteLine($" Tarih: {mesaj.Zaman}");
 Console.WriteLine($" Mesaj: {mesaj.Icerik}");
 mesaj.Okundu = true;
 Console.WriteLine("-------------------");
 }
 }
 Console.WriteLine("Devam etmek için bir tuşa basın...");
 Console.ReadKey();
 }

 private void GidenKutusuGoster()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Giden Kutusu ---");
 if (aktifKullanici.GidenKutusu.Count == 0)
 {
 Console.WriteLine("Giden kutunuz boş.");
 }
 else.
 {
 for (int i = 0; i < aktifKullanici.GidenKutusu.Count; i++)
 {
 var mesaj = aktifKullanici.GidenKutusu[i];
 Console.WriteLine($"{i + 1}. Alıcı: {mesaj.Alici}");
 Console.WriteLine($" Tarih: {mesaj.Zaman}");
 Console.WriteLine($" Mesaj: {mesaj.Icerik}");
 Console.WriteLine("-------------------");
 }
 }
 Console.WriteLine("Devam etmek için bir tuşa basın...");
 Console.ReadKey();
 }

 private void DosyaPaylasimiYap()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Dosya Paylaşımı ---");
 Console.Write("Göndereceğiniz kullanıcı adı: ");
 string? alici = Console.ReadLine();

 var aliciKullanici = kullanicilar.FirstOrDefault(k => k.KullaniciAdi == alici);

 if (aliciKullanici != null)
 {
 Console.Write("Dosya yolu: ");
 string? dosyaYolu = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(dosyaYolu) && File.Exists(dosyaYolu))
 {
 var mesaj = new Mesaj.
 {
 Gonderen = aktifKullanici.KullaniciAdi,
 Alici = alici,
 Icerik = "Dosya Paylaşımı",
 Zaman = DateTime.Now,
 DosyaEki = dosyaYolu.
 };

 aktifKullanici.GidenKutusu.Add(mesaj);
 aliciKullanici.GelenKutusu.Add(mesaj);

 Console.WriteLine("Dosya paylaşıldı!");
 }
 else.
 {
 Console.WriteLine("Dosya bulunamadı!");
 }
 }
 else.
 {
 Console.WriteLine("Kullanıcı bulunamadı!");
 }
 Thread.Sleep(1500);
 }

 private void OzelNotlarYonetimi()
 {
 if (aktifKullanici == null) return;

 Console.Clear();
 Console.WriteLine("--- Özel Notlar ---");
 Console.WriteLine("1. Not Ekle");
 Console.WriteLine("2. Notları Görüntüle");
 Console.WriteLine("3. Not Sil");
 Console.Write("Seçiminizi yapın: ");

 string? secim = Console.ReadLine();

 switch (secim)
 {
 case "1":
 Console.Write("Not Başlığı: ");
 string? baslik = Console.ReadLine();
 Console.Write("Not İçeriği: ");
 string? icerik = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(baslik) && !string.IsNullOrWhiteSpace(icerik))
 {
 aktifKullanici.OzelNotlar[baslik] = icerik;
 Console.WriteLine("Not kaydedildi!");
 }
 else.
 {
 Console.WriteLine("Başlık veya içerik boş olamaz!");
 }
 break;
 case "2":
 Console.WriteLine("Notlarınız:");
 foreach (var not in aktifKullanici.OzelNotlar)
 {
 Console.WriteLine($"{not.Key}: {not.Value}");
 }
 Console.ReadKey();
 break;
 case "3":
 Console.Write("Silmek istediğiniz not başlığı: ");
 string? silinecekBaslik = Console.ReadLine();

 if (!string.IsNullOrWhiteSpace(silinecekBaslik) &&
 aktifKullanici.OzelNotlar.Remove(silinecekBaslik))
 {
 Console.WriteLine("Not silindi!");
 }
 else.
 {
 Console.WriteLine("Not bulunamadı!");
 }
 break;
 }
 Thread.Sleep(1500);
 }

 static void Main(string[] args)
 {
 try.
 {
 Console.OutputEncoding = Encoding.UTF8;
 var messenger = new MessengerSistemi();
 messenger.Baslat();
 }
 catch (Exception ex)
 {
 Console.WriteLine($"Kritik hata: {ex.Message}");
 }
 }
 }
}

Basit bir mesajlaşma uygulaması yaptım fakat uygulama iş yerleri gibi şeylered kullanılması için tasarlandı


Pozitif mesajınız için teşekkürlerrr henüz küçüğüm fakat bu kadar yapabildimEki Görüntüle 2412128Eki Görüntüle 2412129Eki Görüntüle 2412132Eki Görüntüle 2412134
Güzel :) Şimdi ise bu projeyi WinForms'a döktürün🙂
 
Hiç UI falan girme. Kodları temize çekmeyi öğren. SOLID, DRY, Design Pattern gibi konuları araştır ve bu projede uygula. Ayrıca Git kullan. Daha sonra Github repo aç ve linkini burada paylaş. Code review yapalım.

UI ile uğraşacağına, dediklerimle uğraşsan, gelişimin için daha fazla katkısı olacaktır.
 
Console yerine Windows formsda yapsanız daha iyi gelişirsiniz textboxlardan veri çekerek işlemler ya da database gibi örnekler yapabilirsiniz.

Anladım fakat bunun direk çevirisini yapan uygulamalar var mı yani direk hiç kodu tekrar yazmaya uğraşmadsn yspsbilir miyim? Ayrıca herkesin olumlu düşünceleri için teşekkür ederim...
 

Technopat Haberler

Yeni konular

Geri
Yukarı