ASP.NET Core MVC ile geliştirilmiş dinamik otel anket ve değerlendirme web uygulaması. Kullanıcılar otelleri değerlendirebilir, sistem ise bu değerlendirmeleri analiz ederek detaylı istatistikler sunar.
- Dinamik Otel Listesi: Veritabanından çekilen otellerin listelenmesi
- Anket Sistemi: Her otel için özelleştirilmiş anket soruları
- Kullanıcı Yönetimi: Session tabanlı kullanıcı takibi
- Resim Galerisi: Swiper.js ile otel resimlerinin gösterilmesi
- Dinamik İstatistikler: Tüm veriler veritabanından çekilir (static değer yok)
- Otel Bazlı Analiz: Her otel için ayrı istatistikler
- Soru Bazlı Detaylar: Her soru için ortalama puan ve cevap dağılımı
- Görselleştirme: Chart.js ile interaktif grafikler
- Cevap Dağılımı: 1-5 puan arası detaylı dağılım analizi
- Dark Mode Uyumlu: Modern ve göz yormayan tema
- Responsive Tasarım: Tüm cihazlarda uyumlu çalışır
- Accordion Yapısı: Detaylı bilgiler için açılır/kapanır bölümler
- Eşit Resim Boyutları: Tüm otel resimleri aynı boyutta gösterilir
- Hata Yönetimi: Resim yükleme hatalarında otomatik fallback
- ASP.NET Core 8.0 - Web framework
- Entity Framework Core 8.0.11 - ORM
- SQL Server - Veritabanı
- C# - Programlama dili
- Razor Pages / MVC - View engine
- Bootstrap 5 - CSS framework
- Chart.js 4.4.0 - Grafik kütüphanesi
- Swiper.js 8.4.7 - Slider kütüphanesi
- AOS (Animate On Scroll) - Animasyon kütüphanesi
- GLightbox - Lightbox kütüphanesi
- Clean Code Principles - Temiz kod prensipleri
- ViewModel/DTO Pattern - Veri transfer nesneleri
- Service Layer - İş mantığı katmanı
- Dependency Injection - Bağımlılık enjeksiyonu
- .NET 8.0 SDK veya üzeri
- SQL Server 2019 veya üzeri
- Visual Studio 2022 veya VS Code (opsiyonel)
git clone https://github.com/mervebagislar/HotelRate.git
cd HotelRate- SQL Server'ı başlatın
appsettings.jsondosyasındaki connection string'i düzenleyin:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,1433;Database=HotelRateDB;Trusted_Connection=True;TrustServerCertificate=True"
}
}dotnet ef database updatedotnet runProje http://localhost:5154 adresinde çalışacaktır.
- Giriş Sayfası: Kullanıcı bilgilerini girerek sisteme giriş yapar
- Anasayfa: Otel listesini görüntüler ve bir otel seçer
- Otel Detay: Seçilen otelin resimlerini ve anket sorularını görüntüler
- Anket Doldurma: Her soru için 1-5 arası puan verir
- İstatistikler: Tüm otellerin istatistiklerini görüntüler
- Genel Bakış: Her otel için genel ortalama puan ve toplam cevap sayısı
- Detaylı İstatistikler: "Detaylı İstatistikleri Göster" butonu ile açılır
- Soru Bazlı Analiz: Her soru için ayrıntılı istatistikler (accordion yapısı)
- Görselleştirme: Chart.js ile cevap dağılım grafikleri
HotelRate/
├── Controllers/ # MVC Controllers
│ ├── AnasayfaController.cs
│ ├── IstatistikController.cs
│ ├── OtelAnketController.cs
│ └── ...
├── Models/ # Entity Models
│ ├── Cevap.cs
│ ├── Otel.cs
│ ├── Soru.cs
│ ├── HotelDbContext.cs
│ └── ViewModels/ # ViewModel ve DTO sınıfları
│ ├── OtelIstatistikViewModel.cs
│ ├── SoruIstatistikDTO.cs
│ └── CevapDagilimDTO.cs
├── Services/ # İş mantığı servisleri
│ └── IstatistikService.cs
├── Views/ # Razor Views
│ ├── Anasayfa/
│ ├── Istatistik/
│ ├── OtelAnket/
│ └── Shared/
├── wwwroot/ # Static dosyalar
│ ├── css/
│ ├── js/
│ ├── img/
│ └── vendor/
├── Migrations/ # EF Core Migrations
└── Program.cs # Uygulama giriş noktası
Id(PK)Ad,Soyad,EmailCinsiyet,DogumTarihi
OtelId(PK)OtelAdiresim
SoruId(PK)KonuSoruMetni
CevapId(PK)Cevabi(string - 1-5 arası puan)KullanicilarId(FK)OtelId(FK)SoruId(FK)
OtelResimId(PK)OtelId(FK)OtelResimYolu
- Bir kullanıcı birden fazla cevap verebilir
- Bir otel birden fazla cevap alabilir
- Bir soru birden fazla cevaba sahip olabilir
- Bir otel birden fazla resme sahip olabilir
Kullanıcı giriş ekranı
Otel listesi ve resim galerisi
Otel detay sayfası - Swiper.js ile resim galerisi
Anket soruları ve değerlendirme formu
Detaylı istatistikler ve grafikler
Chart.js ile cevap dağılım grafikleri
Sistem, veritabanındaki tüm cevapları analiz ederek:
- Ortalama Puan Hesaplama: Her otel ve soru için ortalama puan
- Cevap Dağılımı: 1-5 puan arası detaylı dağılım
- Toplam Cevap Sayısı: Her otel için toplam değerlendirme sayısı
- Görselleştirme: Chart.js ile interaktif bar grafikleri
- ✅ Service Layer: İş mantığı servis katmanında
- ✅ ViewModel/DTO: View ve Controller'lar temiz
- ✅ Dependency Injection: Loose coupling
- ✅ Tek Sorumluluk: Her sınıf tek bir sorumluluğa sahip
- ✅ DRY: Kod tekrarı yok
appsettings.json dosyasında veritabanı bağlantı bilgilerini düzenleyin:
{
"ConnectionStrings": {
"DefaultConnection": "Server=YOUR_SERVER;Database=HotelRateDB;Trusted_Connection=True;TrustServerCertificate=True"
}
}Session yönetimi Program.cs içinde yapılandırılmıştır:
builder.Services.AddSession();
app.UseSession();- Fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Değişikliklerinizi commit edin (
git commit -m 'Add some amazing feature') - Branch'inizi push edin (
git push origin feature/amazing-feature) - Pull Request oluşturun
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Ekip Adı
- Proje Sahipleri: Merve Bağışlar, Beyza Atay
- Proje: HotelRate
- Versiyon: 2.0
- Framework: ASP.NET Core 8.0
Projenin videolu halini görmek için sitemi ziyaret edebilirsiniz: https://mervebagislar.com Sorularınız için issue açabilir veya iletişim sayfasını kullanabilirsiniz.
⭐ Bu projeyi beğendiyseniz yıldız vermeyi unutmayın!





