Visual Studio 2022'yi kullanarak, iki boylam arasındaki küçük farklarda dakika hesabı yapılacak şekilde düzenlenmiş uygulamayı oluşturacağız. Saat farkını sadece 15 boylamlık farklarla değil, küçük farklar için de dakika olarak göstereceğiz.
Boylam farkı 15 dereceyi geçiyorsa, saat cinsinden fark hesaplanacak.
Boylam farkı 15 dereceyi geçmiyorsa, dakika cinsinden fark hesaplanacak.
Saat ve dakika cinsinden fark, kullanıcıya gösterilecek.
Visual Studio 2022 kullanarak yeni bir ASP.NET Core Empty projesi oluşturalım.
File > New > Project > ASP.NET Core Empty seçelim.
Projeye giriş yapalım. MVC projesi olması için gerekli tanımlamaları yapalım.
Yeni bir controller (denetleyici) oluşturalım. Bu controller, boylamlar arası saat farkını hesaplayacak ve kullanıcıya dakika veya saat olarak farkı gösterecek.
Controllers/HomeController.cs:
using Microsoft.AspNetCore.Mvc;
using BoylamSaatFarkiApp.Models;
namespace BoylamSaatFarkiApp.Controllers
{
public class HomeController : Controller
{
// GET: Home/Index
public IActionResult Index()
{
return View();
}
// POST: Home/Calculate
[HttpPost]
public IActionResult Calculate(BoylamSaatModel model)
{
if (ModelState.IsValid)
{
// Boylam farkını hesapla
double fark = Math.Abs(model.Boylam1 - model.Boylam2);
// Saat ve dakika hesaplaması
if (fark >= 15)
{
model.SaatFarki = fark / 15;
model.DakikaFarki = 0;
}
else
{
model.SaatFarki = 0;
model.DakikaFarki = fark * 4; // Boylam farkı < 15 için dakikayı hesapla
}
}
return View("Index", model);
}
}
}
Boylam farkını hesaplamak için bir model sınıfı oluşturalım.
using System.ComponentModel.DataAnnotations;
namespace BoylamSaatFarkiApp.Models
{
public class BoylamSaatModel
{
[Required(ErrorMessage = "Boylam1 alanı gereklidir.")]
[Range(-180, 180, ErrorMessage = "Boylam1 -180 ile 180 arasında olmalıdır.")]
public double Boylam1 { get; set; }
[Required(ErrorMessage = "Boylam2 alanı gereklidir.")]
[Range(-180, 180, ErrorMessage = "Boylam2 -180 ile 180 arasında olmalıdır.")]
public double Boylam2 { get; set; }
// SaatFarki ve DakikaFarki genellikle hesaplanan değerlerdir, input alınmıyorsa validasyon gerekmez
public double SaatFarki { get; set; }
public double DakikaFarki { get; set; }
}
}
Kullanıcı arayüzünü oluşturacağız, burada kullanıcı boylamları girecek ve hesaplanan saat farkını veya dakika farkını görecek.
Views/Home/Index.cshtml:
@model BoylamSaatFarkiApp.Models.BoylamSaatModel
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Boylam Saat Farkı Hesaplama</title>
</head>
<body>
<div style="padding: 20px;">
<h2>Boylamlar Arası Saat ve Dakika Farkını Hesapla</h2>
@* Tüm model hatalarını özet halinde göstermek için *@
@Html.ValidationSummary(true, "", new { @style = "color:red;" })
<form method="post" action="/Home/Calculate">
<div>
<label for="Boylam1">Boylam 1:</label>
<input type="text" id="Boylam1" name="Boylam1" value="@Model.Boylam1" />
@Html.ValidationMessageFor(m => m.Boylam1, "", new { @style = "color:red;" })
</div>
<div>
<label for="Boylam2">Boylam 2:</label>
<input type="text" id="Boylam2" name="Boylam2" value="@Model.Boylam2" />
@Html.ValidationMessageFor(m => m.Boylam2, "", new { @style = "color:red;" })
</div>
<div>
<button type="submit">Hesapla</button>
</div>
</form>
@if (Model.SaatFarki > 0)
{
<h3>Boylamlar Arasındaki Saat Farkı: @Model.SaatFarki saat</h3>
}
@if (Model.DakikaFarki > 0)
{
<h3>Boylamlar Arasındaki Dakika Farkı: @Model.DakikaFarki dakika</h3>
}
</div>
</body>
</html>
HomeController'da, kullanıcı tarafından girilen boylamları alıyoruz ve boylam farkını hesaplıyoruz.
Eğer fark 15 derece veya daha büyükse, saat farkını hesaplıyoruz.
Eğer fark 15 dereceden küçükse, dakika farkını hesaplıyoruz.
Sonuçları ekranda gösteriyoruz.
Projeyi çalıştırarak kullanıcıdan iki boylam girmesini isteyebilir ve hesaplanan farkı dakika veya saat cinsinden ekranda görebilirsiniz.
Boylam 1: 30° Doğu
Boylam 2: 60° Doğu
Saat Farkı: (60 - 30) / 15 = 2 saat
Boylam 1: 30° Doğu
Boylam 2: 35° Doğu
Dakika Farkı: (35 - 30) * 4 = 20 dakika
Öne Çıkan Özellikler:
Model Binding: Kullanıcıdan gelen veriler, model üzerinden alınır ve işlem yapılır.
Veri Doğrulama: ModelState.IsValid kullanarak doğru verilerin girildiğini kontrol ederiz.
Saat ve Dakika Farkı: Hesaplanan fark, saat veya dakika cinsinden gösterilir.