Giter Site home page Giter Site logo

demiryolu-yonetim-sistemi's Introduction

Demiryolu Yönetim Sistemi

Veritabanı Yönetim Sistemleri proje ödevi

”Demiryolu Yönetim Sistemi” adlı bu uygulama modern bir demiryolu taşımacılığı yönetiminin verilerini düzenli bir şekilde tablolar halinde saklamak ve işlemek için tasarlanmıştır.

İş kuralları:

• Yolcular ve personel, kişiler tablosundan kalıtım alır.

• Bir kişi hem yolcu hem personel olabilir, ama en az biri olmak zorundadır.

• Bir kişinin isim soyisim bilgileri mevcuttur.

• Bir konumun ülke adı, şehir adı ve ilçe adına sahip olması zorunludur.

• Bir istasyonun konumu ve istasyon adı bulunur

• Bir personel sadece bir istasyonda çalışabilir, bir istasyonda birden çok personel çalışabilir.

• Bir istasyon sadece bir konumda bulunabilir, bir konumda birden çok istasyon bulunabilir.

• Bir rotanın başlangıç istasyonu ve hedef istasyonu mevcuttur.

• Bir trenin adı, kapasitesi, hızı ve türü mevcuttur.

• Belirli bir tren için bakım yapıldığında bakım türü ve tarihi kayıt edilir.

• Bir tren için birçok kez bakım yapılabilir, bir bakım sadece bir trene aittir

• Herhangi bir tren için durum tablosu oluşturulur; gidilen toplam mesafe, taşınan toplam yolcu, kazanılan toplam para kayıt edilir.

• Bir trenin sadece bir durum tablosu olabilir, bu tablo sadece bir trene ait olabilir.

• Yolculuklar; trenin numarası, takip edilecek rota ve kalkış tarihi ile kayıt edilir.

• Bir tren birden çok yolculuk yapabilir, bir yolculuk sadece o trene aittir.

• Herhangi bir yolculuğun gecikmesi durumunda yolculuk numarası ile beraber gecikme süresi ve gecikme sebebi kayıt edilir.

• Bir yolculuk birden fazla kez gecikebilir, ama bir gecikme sadece bir yolculuğa ait olabilir.

• Peronlar belirli bir istasyonda bulunur, istasyonNo ve trenNo kayıt edilir.

• Bir tren sadece bir peronda bulunabilir, bir peronda sadece bir tren bulunabilir.

• Bir istasyonda birden çok peron bulunabilir, bir peron sadece bir istasyonda bulunur.

• Duraklar için istasyonNo, yolculukNo, kalkış saati ve varış saati bilgileri mevcuttur.

• Bir durak sadece bir istasyonda bulunabilir, bir istasyonda birden çok durak bulunabilir.

• Bir yolculukta birden çok kez durak olabilir, ama bir durak sadece bir yolculukta gerçekleşir.

• Biletler için yolcu numarası, yolculuk numarası, kolktuk numarası ve ücret bilgileri mevcuttur.

• Bir yolcu birden çok bilet alabilir, ama bir bilet sadece bir yolcuya aittir.

• Bir yolculuk için birden çok bilet bulunabilir, ama bir bilet sadece bir yolculuğa aittir.

• Biletlerin satışından elde edilen kazanç, kazanç tablosunda saklanır.

• Yolcu tarafından herhangi bir bilet için geri bildirim verilebilir; bilet numarası, verilen puan ve yorum kayıt edilir.

• Belli bir yolcuya ait bilet için sadece bir yorum yapılabilir, bir yorum sadece belli bir bilete ait olabilir.

İlişkisel şema:

konumlar(konumNo: serial, ulkeAdi: varchar(50), sehirAdi: varchar(50), ilceAdi: varchar(50))

istasyonlar(istasyonNo: serial, istasyonAdi: varchar(50), konumNo: integer)

rotalar(rotaNo: serial, baslangicIstasyonNo: integer, hedefIstasyonNo: integer)

kisiler(kisiNo: serial, isim: varchar(50), soyisim: varchar(50), yolcuMu: bool, personelMi: bool)

yolcular(kisiNo: integer, telefon: varchar(14), eposta: varchar(50), kazanilanPuan: integer)

personel(kisiNo: integer, istasyonNo: integer, pozisyon: varchar(50), maas: integer)

trenler(trenNo: serial, trenAdi: varchar(50), trenKapasitesi: integer, trenHiziKmh: integer, trenTuru: varchar(50))

trendurumu(trenNo: integer, gidilenToplamMesafe: integer, tasinanToplamYolcu: integer, kazanilanToplamPara: integer)

trenbakimi(bakimNo: serial, trenNo: integer, bakimTuru: varchar(50), bakimTarihi: date)

yolculuklar(yolculukNo: serial, trenNo: integer, rotaNo: integer, kalkisTarihi: timestamp, varisTarihi: timestamp)

gecikmeler(gecikmeNo: serial, yolculukNo: integer, gecikmeSuresi: interval)

peronlar(peronNo: serial, istasyonNo: integer, trenNo: integer)

kazanc(toplamKazanc: integer)

duraklar(durakNo: serial, istasyonNo: integer, yolculukNo: integer, kalkisSaati:time, varisSaati:time)

biletler(biletNo: serial, yolcuNo: integer, yolculukNo: integer, koltukNo: integer, ucret: integer)

geribildirimler(geribildirimNo: serial, biletNo: integer, verilenPuan: integer, yorum: text)

Varlık Bağıntı Modeli:

VarlikBaginti

Note

SQL ifadeleri SQL.sql dosyasında bulunuyor

Saklı Yordam – Fonksiyonlar:

• bosKoltukSayisi(geciciYolculukNo integer): Parametre olarak girilen yolculuğa ait trenin kapasitesinden dolu olan koltuk miktarını çıkararak trende kaç koltuğun boş olduğunu gösteriyor.

• enKazancliTren(): Trendurumu tablosu üzerinden en çok para kazanan treni döndürüyor.

• ortalamaGecikmeHesapla(): Gecikmeler tablosundaki gecikme sürelerinin ortalamasını döndürüyor.

• ortalamaPuanHesapla(geciciYolculukNo integer): Parametre olarak girilen yolculuk için yolcuların verdiği puanların ortalamasını döndürüyor.

• yolcuyaPuanVer(IN geciciYolcuNo integer, IN verilecekPuan integer): Parametre olarak girilen yolcunun hesabına parametre üzerinden verilen miktar kadar puan ekliyor.

Tetikleyiciler:

• biletAlinincaTrendurumuGuncelle(): Biletler tablosuna yeni bilet eklendiğinde, ait olduğu yolculuğu yapan trenin trendurumu tablosu güncelleniyor (taşıdığı yolcu sayısı ve kazandığı para artıyor).

• biletSilininceTrendurumuGuncelle(): Biletler tablosundan bir bilet silinirse silinen biletin trendurumu tablosuna yaptığı etkisi geri çekiliyor.

• kazanciHesapla(): Trendurumu tablosunda meydana gelen herhangi bir değişiklikten sonra trenlerin toplam kazanç miktarı kazanc tablosuna kaydediliyor.

• kisiUygunluk(): Kisiler tablosuna yeni bir kişi eklenmeye çalışıldığında bu eklemenin uygunluğu kontrol ediliyor (yolcuMu ve personelMi değerleri aynı anda false olamaz).

• personelUygunluk():Personel tablosuna yeni bir kişi eklenmeye çalışıldığında bu eklemenin uygunluğu kontrol ediliyor (personelMi değeri true olmak zorunda).

• yolcuUygunluk(): Yolcular tablosuna yeni bir kişi eklenmeye çalışıldığında bu eklemenin uygunluğu kontrol ediliyor (yolcuMu değer true olmak zorunda).

• yolculukGecikinceGuncelle(): Eğer belli bir yolculuk için gecikme yaşanırsa, yolculuk tablosundaki varisTarihi değeri gecikme süresi kadar erteleniyor.

Ekran Görüntüleri:

arama Arama işlemi

ekleme Ekleme işlemi

silme Silme işlemi

guncelleme Güncelleme işlemi

demiryolu-yonetim-sistemi's People

Contributors

koc-ali88 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.