Proje akıllı kargo dağıtım sistemi yapan bir masaüstü uygulamasıdır. Uygulama C# kullanılarak geliştirilmiştir.
Kullanıcı uygulamayı açtığında karşısına login ekranı gelir. Login ekranında önceden açmış olduğu kayıtla giriş yapabilir. Kullanıcı görünen username ve şifre ile sisteme giriş yapar. Eğer kullanıcı önceden kayıt açmadıysa kayıt ol butonuna tıklayarak yeni kayıt açabilir. Kullanıcı isterse eski şifresini yeni şifreyle değiştirebilir. Kullanıcı giriş yaptıktan sonra karşısına ana ekran çıkar .Bu ekranda ister adresi yazarak isterse haritada işaretleyerek kargolarının gideceği adresleri belirleyebilir silebilir. Kullanıcı isterse kargolarının durumunu listede görebilir. Tüm kargolarını listeden silebilir. Eğer istemesi durumunda kargolarının durumunu sıfırlayabilir. Kargo yola çıktıktan sonra kullanıcı istemesi durumunda kargoyu durdurup önceden belirlediği kargo adresini ekletip ziyaret edilmemiş noktalar arasında yeni bir rota çizdirebilir.
Proje geliştirmede: Projede bulut tabanlı bir database olan “Firebase” kullanılmıştır. Firebase ile işlem yapabilmek için “FireSharp” kütüphanesini kullandık. Haritadan gerekli olan bilgileri alabilmek için GoogleMaps API kullanılmıştır. Kütüphane olarak Gmap kütüphanesi olan “GMap.NET” kullanılmıştır. Programlama dili olarak “C#” kullanılmıştır. Program geliştirme ortamı olarak “Visual Studio Code” kullanılmıştır.
Projenin geliştirilmesi aşağıdaki başlıklar altında inceleyelim.
GUI1 de ilk olarak karşımıza giriş ekranı gelir. Giriş ekranı kullanıcıdan ismini ve şifresini ister. Kullanıcının kaydı yoksa yeni kayıt açabilir. Eğer şifresini değiştirmek isterse şifresini değiştirebilir. Giriş ekranında başarılı bir giriş yaptıktan sonra kargo işlemlerine geçiş yapabilirsiniz. Yeni kargo eklemek veya kaldırmak istediğinde kullanıcı haritadan yada manuel olarak adres göndermelidir. Kullanıcı istediği takdirde gönderdiği tüm kargoları görebilir, kaldırabilir. Kullanıcı istediği takdirde aralarından seçtiği herhangi bir kargoyu da kaldırabilir. Kullanılan fonksiyonlar aşağıdaki gibidir.
butonuna tıkladığınız zaman yeni bir kargo ekleyebilirsiniz
butonu ile elimizdeki kargoların listesini ve durumlarını görebiliriz.
butonu vasıtasıyla kaldırmak istediğiniz herhangi bir kargoyu kaldırabilirsiniz.
butonu ile eski şifrenizi yeni şifreniz ile değiştirebilirsiniz.
giriş butonu ile kullanıcının girdiği bilgilerin doğruluğuna göre işlem yapabilmek için giriş yapabilirsiniz.
Bu butonu kullandığınız takdirde yeni bir kayıt oluşturup hızlıca giriş yapabilirsiniz.
Kayıt olma ekranının görünür olmasını sağlar.
Şifre değiştir ekranının görünür olmasını sağlar.
kargo dağıtım işlemini başlatır.
haritadan kullanılmak üzere bilgi alır.
Haritanının yüklenmesini sağlar
Eklenen adresleri haritaya ekler. ####adres_al ile haritada tıklanılan yerin adresi alınır.
haritanın yüklenmesini ve markerların haritada işaretlenmesini sağlar.
kargo ekleme ekranından ana sayfaya gelmeyi sağlar.
Kullanıcı GUI2 ekranında GUI1 ekranında aldığı adreslerin kargo tarafından en kısa şekilde nasıl Bir rotayla hareket ettiğini görebilir. Kullanıcı istemesi durumunda kargo hareket ederken yeni bir adres gönderebilir. Bu durumda ise kargo yeni eklenen adresler ile ziyaret edilmemiş adresler arasında yeni bir kısa yol hesaplar ve bu şekilde rotayı tamamlayıp başladığı yere geri dönebilir. struct Kargo_bilgi Struct’ın içinde databaseden çekilen bilgiler tutulur.
Haritanın konumunu ayarlar.
Marker’ı ekler ve konumuna gönderirir.
bu fonksiyonda eklenen adreslerin konumları alınarak hazırlanır.
iki adres arasındaki mesafeyi hesaplar.
Kullanıcı tarfından gönderilen tüm adresler arasında mesafe hesaplanıp gezgin_kargo fonksiyonuna gönderir.Bu şekilde en kısa yol hesaplanır.
Bu fonksiyonda mesafehesapla fonksiyonunda hesaplaplanmış rotaları çizer.
Kullanıcı bu fonksiyon sayesinde yola çıkmış kargoya yeni bir kargo eklendiği takdirde oluşan yeni yolu hesaplatmış olur.
Bu fonksiyon sayesinde kargonun hareketinden sonra eklenen noktayla birlikte çizilen yeni rotayı görmüş oluruz.
Bulunan en kısa yolu son yolla değiştirir.
Alınan yollar arasındaki en kısa mesafeyi hesaplar
Alınan yollar arasındaki en kısa ikinci mesafeyi hesaplar
Mesafeleri kendi aralarında kıyaslamasını yapar.
Önceden alınmış noktaların arasındaki mesafeler ile işlemler yaparak gidilebilecek en kısa mesafeyi hesaplar.
Bulut platform kısmında Firebase kullanılmıştır.
Harita olarak Google maps kullanılmıştır.
-Basla -eger Şifre degiştire butonuna basılırsa şifre degiştirilir -eger Kayıt oluştur butonuna basılırsa yeni kullanici hesabı olusturulur -eger giris yap butonuna basılırsa giris yapılır -kargo adresi search butonu ile arama yapılır -kargo adresi map üzerinden secmek için enable mouse click chech boxa basılır -kargo butonuna bas ve kargo gönderiminde bulun -listele butonu ile kargo bilgilerini gör -kargo kaldır butonu ile secilen kargoyu sil -durum sil buttonu ile kargoları tekrar kullanmak icin duzenle -sil butonu ile kargo bilgilerini sil -basla butonu ile alınan kargolar dagıtıma cıkar ve teslim edilir -dagıtım esnasında kargo eklenirse yeni kargo bilgileri alınır ve tekrardan rota cizilir -cıkış yapılır ve uygulama biter
https://www.geeksforgeeks.org/