Modern, kullanıcı dostu restoran/cafe yönetim sistemi
FinalArka10, modern bir restoran/cafe yönetim sistemi olarak geliştirilmiş kapsamlı bir Windows Forms uygulamasıdır. C# programlama dili ile yazılıp, MySQL veritabanı kullanarak sipariş yönetimi, masa rezervasyonu, ürün stok takibi, personel yönetimi ve raporlama gibi temel restoran operasyonlarını destekler.
Bu sistem, restoran işletmecilerinin günlük operasyonlarını kolaylaştırmak, müşteri memnuniyetini artırmak ve işletme verimliliğini optimize etmek amacıyla tasarlanmıştır.
# Repository'yi klonlayın
git clone https://github.com/MrCaar/arka10-cafe
cd arka10-cafe
# Paketleri yükleyin
dotnet restore
# Uygulamayı çalıştırın
dotnet run- ✅ Masa Bazlı Sipariş: Salon, bahçe ve teras olmak üzere üç farklı alanda masa yönetimi
- ✅ Gerçek Zamanlı Sipariş Takibi: Siparişlerin durumu ve içeriği anlık olarak takip edilebilir
- ✅ Sipariş Geçmişi: Tüm siparişler loglanır ve raporlanabilir
- ✅ Rezervasyon Sistemi: Masa rezervasyonları zaman bazlı yönetilir
- ✅ İndirim Uygulama: Yüzde bazlı indirim sistemi (Indirim.cs)
- ✅ Çoklu Ödeme Yöntemi: Nakit ödeme desteği (Nakit.cs)
- ✅ Kategorize Ürünler: İçecekler, yiyecekler ve tatlılar olmak üzere üç ana kategori
- ✅ Stok Takibi: Her ürünün stok miktarı gerçek zamanlı olarak takip edilir
- ✅ Fiyat Yönetimi: Ürün fiyatları kolayca güncellenebilir
- ✅ Resim Desteği: Ürünler için görsel destek (PNG formatında)
- ✅ Ürün Düzenleme: Mevcut ürünleri düzenleme ve güncelleme (UrunDuzenle.cs)
- ✅ Personel Bilgi Yönetimi: Ad, soyad, telefon, adres gibi temel bilgiler
- ✅ Pozisyon Tanımlama: Garson, yönetici gibi pozisyonlar
- ✅ Not Sistemi: Personel hakkında özel notlar eklenebilir
- ✅ Güvenli Giriş: Sayısal tuş takımı ile şifre korumalı giriş
- ✅ Oturum Yönetimi: 1 saatlik oturum süresi ile güvenlik
- ✅ Veritabanı Bağlantı Kontrolü: Sistem durumu sürekli izlenir
- ✅ Tema Desteği: Dinamik renk temaları (ThemeColor.cs)
- ✅ Masa Ayarları: Masa ekleme/silme, kategori yönetimi
- Programlama Dili: C# (.NET 8.0)
- UI Framework: Windows Forms
- Veritabanı: MySQL 8.0+
- Paket Yönetimi: NuGet
- JSON İşleme: Newtonsoft.Json
- Görüntü İşleme: System.Drawing
FinalArka10/
├── MySQL/ # Veritabanı bağlantı sınıfı
│ └── MySQL.cs # DatabaseHelper sınıfı
├── Formlar/ # Ana uygulama formları
│ ├── Siparisler.cs # Sipariş yönetimi ana formu
│ ├── Urunler.cs # Ürün listesi ve yönetimi
│ ├── Stok.cs # Stok durumu görüntüleme
│ ├── Personeller.cs # Personel listesi ve detayları
│ ├── Ayarlar.cs # Sistem ayarları ana menüsü
│ ├── IkinciForm.cs # Ana sipariş işlemi formu (766 satır)
│ └── ...
├── SiparislerAltFormlar/ # Sipariş alt formları
│ ├── Bahce.cs # Bahçe masa yönetimi
│ ├── Salon.cs # Salon masa yönetimi
│ └── Teras.cs # Teras masa yönetimi
├── AyarlarFormlar/ # Ayarlar alt formları
│ ├── AyarlarMasalar/ # Masa ayarları
│ │ └── AyarlarMasalarMainMenu.cs
│ ├── AyarlarUrunler/ # Ürün ayarları
│ └── AyarlarPersoneller/ # Personel ayarları
├── Özel Formlar/
│ ├── UrunDuzenle.cs # Ürün düzenleme formu
│ ├── StokDuzenle.cs # Stok düzenleme formu
│ ├── Indirim.cs # İndirim uygulama formu
│ ├── Nakit.cs # Nakit ödeme formu
│ ├── Rezerve.cs # Masa rezervasyonu formu
│ └── ThemeColor.cs # Tema renk yönetimi
├── images/ # Ürün resim dosyaları
├── Properties/ # Uygulama özellikleri
└── Resources/ # Sistem kaynakları (ikonlar)
CREATE TABLE masalar (
masakategori VARCHAR(50), -- 'salon', 'bahce', 'teras'
masaid VARCHAR(50), -- Benzersiz masa ID (örn: s1, b2, t3)
masaozet VARCHAR(250), -- JSON formatında sipariş özeti
rezerve_time INT(11), -- Rezervasyon başlangıç zamanı (timestamp)
rezerve_end_time INT(11), -- Rezervasyon bitiş zamanı (timestamp)
masadurum VARCHAR(50) -- 'bos', 'dolu', 'pasif'
);CREATE TABLE urunler (
kategori VARCHAR(255), -- 'icecekler', 'yiyecekler', 'tatlilar'
urunid VARCHAR(50), -- Benzersiz ürün ID
urunadi VARCHAR(255), -- Ürün adı
fiyat INT(11), -- Ürün fiyatı (kuruş cinsinden)
urunimage VARCHAR(255), -- Ürün resim dosyası yolu
stok INT(11) DEFAULT 0 -- Stok miktarı
);CREATE TABLE personeller (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
ad TEXT, -- Personel adı
soyad TEXT, -- Personel soyadı
dtarihi TEXT, -- Doğum tarihi
adres TEXT, -- Adres
telefon TEXT, -- Telefon numarası
notlar TEXT DEFAULT '', -- Özel notlar
pozisyon VARCHAR(50) DEFAULT 'Garson'
);CREATE TABLE siparisler_log (
siparis_id VARCHAR(50), -- Benzersiz sipariş ID
icerik LONGTEXT, -- JSON formatında sipariş içeriği
kapanis_tarihi TIMESTAMP -- Sipariş kapanış tarihi
);- İşletim Sistemi: Windows 10/11 (Linux'ta GUI sınırlamaları olabilir)
- .NET Framework: .NET 8.0 SDK
- Veritabanı: MySQL Server 8.0+
- Geliştirme Ortamı: Visual Studio 2022 veya VS Code
git clone <https://github.com/MrCaar/arka10-cafe>
cd arka10-cafedotnet restore# MySQL'e bağlanın ve veritabanını oluşturun
mysql -u root -p-- Veritabanını oluşturun
CREATE DATABASE arka10;
-- SQL dosyasını import edin
source arka10.sql;Ürün resimlerini images/ klasörüne yerleştirin:
- cay.png
- kola.png
- gazoz.png
- vb.
dotnet runFinalArka10.slndosyasını Visual Studio'da açın- NuGet paketlerini geri yükleyin
- F5 ile çalıştırın
- Varsayılan şifre:
Password - Değiştirmek için
Login.csdosyasındakibutton1_Clickmetodunu düzenleyin
- Varsayılan: 1 saat (3600 saniye)
- Değiştirmek için
FormAnaMenu.csdosyasındakikalanSuredeğişkenini düzenleyin
ThemeColor.csdosyasında renk paletini özelleştirin- Yeni renkler eklemek için
ColorListdizisini genişletin
Uygulama açıldığında karşınıza çıkan ana menüde aşağıdaki bölümler bulunur:
- Salon: İç mekan masa yönetimi
- Bahçe: Dış mekan masa yönetimi
- Teras: Üst kat/teras masa yönetimi
Her alanda:
- Boş masalar yeşil renkte görünür
- Dolu masalar kırmızı renkte görünür
- Rezerve masalar sarı renkte görünür
- Tüm ürünleri liste halinde görüntüler
- Kategoriye göre filtreleme (İçecekler, Yiyecekler, Tatlılar)
- Arama kutusu ile ürün adı ile arama
- Ürün resmine tıklayarak düzenleme sayfasına gitme
- Tüm ürünlerin stok durumunu gösterir
- Stok miktarı 0'ın altında olan ürünler vurgulanır
- Tüm personelleri liste halinde gösterir
- Personele tıklayarak detaylı bilgilerini görüntüleme
- Masalar: Masa ekleme/silme, kategori yönetimi
- Ürünler: Ürün ekleme/düzenleme/silme
- Personeller: Personel ekleme/düzenleme
- İlgili alana (Salon/Bahçe/Teras) gidin
- Boş bir masaya tıklayın
- Ürünler listesinden istediğiniz ürünleri seçin
- İndirim uygulamak için İndirim butonunu kullanın
- Ödeme için Nakit butonunu kullanın
- Siparişi onaylayın
- Masa ayarlarından rezervasyon zamanını ayarlayın
- Rezerve edilen masalar otomatik olarak işaretlenir
- Rezervasyon süresi dolduğunda masa boş olarak görünür
- Ürünler sayfasında ürüne tıklayın
UrunDuzenle.csformu açılır- Ürün adı ve fiyatını düzenleyin
- Değişiklikleri kaydedin
- Stok sayfasında ürüne tıklayın
StokDuzenle.csformu açılır- Stok miktarını artır/azalt
- Değişiklikleri kaydedin
- Naming Convention: PascalCase (sınıflar, metodlar), camelCase (değişkenler)
- Yorumlar: Türkçe yorumlar tercih edilir
- Hata Yönetimi: Try-catch blokları ile kapsamlı hata yakalama
- Modülerlik: Her form kendi sorumluluğunda
Veritabanı işlemlerini yöneten statik sınıf:
MySQL_Read(): SELECT sorguları içinMySQL_Write(): INSERT/UPDATE/DELETE sorguları içinGetProducts(): Ürün listesi almaGetTables(): Masa listesi almaGetPersons(): Personel listesi almaInsertTable(): Yeni masa eklemeDeleteTable(): Masa silme
Ana uygulama formu:
- Tema yönetimi ve renk değişimi
- Alt form açma ve yönetme
- Oturum sayacı (1 saat)
- Menü buton yönetimi
- Veritabanı bağlantı kontrolü
Ana sipariş işlemi formu (766 satır):
- Ürün seçimi ve sepete ekleme
- Toplam tutar hesaplama
- İndirim uygulama (ApplyDiscount metodu)
- Ödeme işlemleri (OdeKismi metodu)
- Sipariş tamamlama ve loglama
Tema renk yönetim sınıfı:
- Dinamik renk paleti
- Renk parlaklık ayarı (ChangeColorBrightness)
- Tema geçiş efektleri
Bahce.cs, Salon.cs, Teras.cs:
- Kategori bazlı masa listesi
- Durum bazlı görsel göstergeler (bos/dolu/rezerve/pasif)
- Rezervasyon zaman kontrolü
- Masa tıklama ile sipariş açma
Genel sabitler ve yardımcı metodlar:
- Veritabanı bağlantı bilgileri
- Masa listesi yönetimi
- Genel yardımcı fonksiyonlar
- İlgili formu oluşturun (
Formlar/altında) - Ana menüye buton ekleyin (
FormAnaMenu.cs) - Gerekli veritabanı tablolarını oluşturun
DatabaseHelpersınıfına gerekli metodları ekleyin
- Geliştirici: Arka10
Bu proje ödev olarak Arka10'lu tarafından hazırlanmıştır ve açık bir lisans ile yayınlanmamıştır. Kodun izinsiz kullanımı, paylaşımı veya dağıtımı önerilmez.
- İlk yayın
- Temel sipariş yönetimi
- Masa ve ürün yönetimi
- Personel sistemi
- Stok takibi