airline reservation system

2025-12-07 0 318

Uçak Rezervasyon Sistemi


Anasayfa

Admin


Gerekli Kütüphaneler

mysql-connector-java-5.1.23-bin.jar

Uygulamamızı MySQL veri tabanına bağlamak için kullanılır.

JSTL 1.2.2

JSP sayfalarında JSTL ile çalışmak için kullanılır. JSTL, temel etiketler ve işlevlerden oluşan bir koleksiyondur. Bu etiketler ve işlevler, JSP kodunu verimli bir şekilde yazmamızı sağlar.

javax.mail.jar

E-postayı JavaMail API kullanarak göndermek için jar dosyasını projemize dahil ediyoruz.

commons-fileupload-1.4.jar

Form verileri POST isteğinde alınan, bir dosya veya form öğesine erişim sağlar. Dosya yükleme işlemi için kullanıyoruz.


Mimari

Projede MVC mimarisi kullanılmıştır.
MVC, Model, View ve Controller anlamına gelir.

  • Model – DAO : Uygulamada kullanılan verileri temsil eder. Veritabanına erişim, sınıflar, veritabanı ilişkileri gibi veri ile ilgili işlemlerin olduğu bölüm.
  • View : Projenin kullanıcılara sunulacak olan JSP dosyaları yer almaktadır. Bir görevi de, kullanıcılardan alınan istekleri Controller’ a iletmektir.

Admin Sayfaları

Kullanıcı Sayfaları

  • Controller : Controller, MVC’de projenin iç süreçlerini kontrol eden bölümdür. Bu bölümde View ile Model arasındaki bağlantı kurulur. Kullanıcılardan gelen istekler (request) Controller’larda değerlendirilir, isteğin detayına göre hangi işlemlerin yapılacağı ve kullanıcıya hangi View’ın döneceği (response) belirtilir.

Senaryo (Adminin oluşturulan uçuşlardan birini silmesi)

View bu değişiklik isteğini algılayıp bunu Controller iletecek.

Controller tüm kontrolleri yaptıktan sonra verinin silinmesi için DAO bölümüne güncelleme gönderir.

DAO bu güncellemeyi veri üzerine yansıttıktan sonra tekrardan Controller bu güncellemenin yapıldığı bilgisini gönderir ve bu doğrultuda View güncellenir.


Oluşturulan Sınıflar ve Açıklaması

Cevap

  • Cevap.java : Cevap tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • CevapDAO.java : Cevap tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; cevapların listelenmesi, cevapların incelenmesi, gelen mesaja cevap verilmesi, cevabın veritabanından silinmesi.

  • CevapServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen mesaj cevaplama, cevapları listeleme, cevap silme veya cevap inceleme işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Firma

  • Firma.java : Firma tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • FirmaDAO.java : Firma tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; firmaların listelenmesi, firma eklenmesi, firmanın bilgilerinin güncellenmesi, firmanın veritabanından silinmesi.

  • FirmaServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen firmaları listeleme, yeni firma oluşturma, firma güncelleme, firma silme işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Havaalanı

  • Havaalani.java : Havaalani tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • HavaalaniDAO.java : Havaalani tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; havaalanlarının listelenmesi, havaalanı eklenmesi, havaalanının bilgilerinin güncellenmesi, havaalanının veritabanından silinmesi.

  • HavaalaniServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen havaalanları listeleme, yeni havaalanı oluşturma, havaaalanı güncelleme, havaalanı silme işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Havaalanı Şehir

  • Havaalani_sehir.java : Havaalani_sehir tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • Havaalani_sehirDAO.java : Havaalani_sehir tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; şehirlerin listelenmesi, şehir eklenmesi, şehir bilgilerinin güncellenmesi, şehrin veritabanından silinmesi.

  • Havaalani_sehirServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen şehirleri listeleme, yeni şehir oluşturma, şehir güncelleme, şehir silme işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Havaalanı Ülke

  • Havaalani_ulke.java : Havaalani_ulke tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • Havaalani_ulkeDAO.java : Havaalani_ulke tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; ülkelerin listelenmesi, ülke eklenmesi, ülke bilgilerinin güncellenmesi, ülkenin veritabanından silinmesi.

  • Havaalani_ulkeServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen ülkeleri listeleme, yeni ülke oluşturma, ülke güncelleme, ülke silme işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Kullanıcılar

  • Kullanici.java : Kullanicilar tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • KullaniciDAO.java : Kullanicilar tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; kullanıcıların listelenmesi, sisteme giriş yaparken şifrenin kontrol edilmesi, unutulan şifrenin veritabanından çekilmesi, kullanıcı bilgilerinin güncellenmesi, yeni kullanıcı / admin oluşturulması, kullanıcının / adminin veritabanından silinmesi.

  • KullaniciServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen üye olma, sisteme giriş yapma, yeni şifre talebi, sistemden çıkış yapma, kullanıcıların listelenmesi, kullanıcıların silinmesi, kullanıcı/admin bilgilerinin güncellenmesi işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Mesaj

  • Mesaj.java : Mesaj tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • MesajDAO.java : Mesaj tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; gelen mesajların veritabanına kaydedilmesi, gelen mesajların listelenmesi, mesaj okunmuşsa okundu bilgisinin güncellenmesi, mesaja cevap verilmişse cevap bilgisinin güncellenmesi, mesajın veritabanından silinmesi.

  • MesajServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen mesajları listeleme, gelen mesajın silinmesi, gelen mesajın veritabanına eklenmesi, iletişim sayfasına erişim sağlanması işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Rezervasyon

  • Rezervasyon.java : Rezervasyon tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • RezervasyonDAO.java : Rezervasyon tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; kullanıcıdan alınan bilgilere göre uçuş listelenmesi, uçuştan 2 saat önceye kadar iptal yada bilgi güncellemesi yapabilme işlemi, seçilen koltuğun dolu-boş olmasının kontrolü, veritabanına rezervasyon bilgilerinin eklenmesi, rezervasyon bilgilerinin güncellenmesi, seçilen uçuş bilgilerine erişim.

  • RezervasyonServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Uçuş sorgulama, rezervasyon listelenmesi, rezervasyonun iptal edilmesi, rezervasyon sorgulaması, rezervasyon oluşturulması, rezervasyon bilgilerinin güncellenmesi işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Uçak

  • Ucak.java : Ucak tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişken olarak oluşturmuş hali , bu değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • :UcakDAO.java : Ucak tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; uçakların listelenmesi, seçilen uçağın silinmesi, veritabanına uçak eklenmesi, uçak bilgilerinin güncellenmesi.

  • UcakServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen uçakları listeleme, yeni uçak bilgileri oluşturma, uçak bilgileri güncelleme, uçak silme işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Uçuş

  • Ucus.java : Ucus tablosunun modelini oluşturmaktadır.
    İçerisinde tablodaki niteliklerin değişkenlerin getter setter metotları ve yapılandırıcı metotlar bulunmaktadır.

  • :UcusDAO.java : Ucus tablosunun veri erişim sınıfıdır.
    Gerçekleşen İşlemler; güncel ve geçmiş uçuşların listelenmesi, seçilen uçuşun silinmesi, seçilen uçağın müsaitlik durumuna göre veritabanına uçuş eklenmesi, uçuş bilgilerinin güncellenmesi.

  • UcusServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar. Kullanıcıdan gelen güncel veya geçmiş uçuşların listelenmesi, uçağın müsaitlik durumuna göre yeni uçuş bilgileri oluşturma, uçuş bilgilerinin güncelleme, oluşturulan uçuşu silme işlemlerinden kullanıcının isteğine göre hangi işlemin yapılacağını ve kullanıcıya hangi JSP sayfasının döneceğini belirtir.

Anasayfa

Kullanıcı Anasayfası

Admin Anasayfası

  • AnasayfalarServlet.java : JSP sayfası ile Model – DAO sınıfı arasında bağlantı kurar.
    Kullanıcıdan gelen anasayfa görüntüleme işleminde eğer görüntülenmek istenen sayfa admin anasayfası ise veritabanından aylık rezervasyon sayısı, planlanan uçuşlar ve okunmamış mesajların sayısı çekilecektir ve kullanıcıya JSP sayfası olarak admin anasayfası dönecektir.
    Kullanıcıdan gelen anasayfa görüntüleme işleminde eğer görüntülenmek istenen sayfa kullanıcı anasayfası ise veritabanında kayıtlı havayolları çekilecektir gidiş ve varış yeri olarak kullanıcıda görüntülenecektir ve kullanıcıya JSP sayfası olarak kullanıcı anasayfası dönecektir.

Kod Parçaları & Ekran Görüntüleri

Giriş Yapma

private void gostergiris(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException {
        HttpSession session = request.getSession();
        if ((Integer) session.getAttribute(\"kullanici_yetki\") == null) {
            String kullanici_email = request.getParameter(\"kullanici_email\");
            String kullanici_sifre = request.getParameter(\"kullanici_sifre\");

            Boolean kontrol = kullaniciDAO.uyegiriskontrol(kullanici_email, kullanici_sifre);
            if (kontrol == true) {
                Kullanici uye = kullaniciDAO.uyegiris(kullanici_email, kullanici_sifre);
                int kullanici_yetki = uye.getKullanici_yetki();
                String kullanici_ad = uye.getKullanici_ad();
                String kullanici_soyad = uye.getKullanici_soyad();
                int kullanici_id = uye.getKullanici_id();

                session.setAttribute(\"kullanici_id\", kullanici_id);
                session.setAttribute(\"kullanici_ad\", kullanici_ad);
                session.setAttribute(\"kullanici_soyad\", kullanici_soyad);
                session.setAttribute(\"kullanici_email\", kullanici_email);
                session.setAttribute(\"kullanici_yetki\", kullanici_yetki);
                session.setAttribute(\"kullanici_sifre\", kullanici_sifre);

                response.sendRedirect(\"ucakbileti\");
            } else {
                response.sendRedirect(\"giris?durum=basarisiz\");
            }
        } else {
            response.sendRedirect(\"ucakbileti\");
        }
    }

Aşağıdaki kod satırı ile

Boolean kontrol = kullaniciDAO.uyegiriskontrol(kullanici_email, kullanici_sifre);

giriş yapmak isteyen kullanıcının sistemde kayıtlı olup olmadığını kontrol ediyoruz.

Eğer kullanıcı sistemde kayıtlıysa aşağıdaki işlem ile

kullaniciDAO.uyegiris(kullanici_email, kullanici_sifre);

kullanıcının bilgilerini veritabanından çekip bu bilgiler ile setAttribute işlemini gerçekleştiriyoruz.

Eğer sistemde kayıtlı olmayan bir kullanıcı ise Giriş başarısız hatası verecektir.

Çıkış Yapma

private void uyecikis(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException {

        HttpSession session = request.getSession();
        session.invalidate();
        response.sendRedirect(\"ucakbileti\");
        }

Aşağıdaki kod satırı ile

session.invalidate();

oturum işlemini sonlandırıyoruz.

Admin Panelinde Çıkış

Kullanıcı Ekranından Çıkış

response.sendRedirect(\"ucakbileti\"); Çıkış işlem gerçekleştikten sonra anasayfaya yönlendiriliyor.

Üye Olma

private void gosteruyeol(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException {
        HttpSession session = request.getSession();
        if ((Integer) session.getAttribute(\"kullanici_yetki\") == null) {
            String kullanici_ad = request.getParameter(\"kullanici_ad\");
            String kullanici_soyad = request.getParameter(\"kullanici_soyad\");
            String kullanici_email = request.getParameter(\"kullanici_email\");
            String kullanici_sifre = request.getParameter(\"kullanici_sifre1\");
            Boolean kontrol = kullaniciDAO.uyekontrol(kullanici_email);
            if (kontrol == true) {
                Kullanici yeniKullanici = new Kullanici(kullanici_ad, kullanici_soyad, kullanici_email, kullanici_sifre);
                kullaniciDAO.uyeol(yeniKullanici);
                response.sendRedirect(\"uyeol?durum=basarili\");
            } else {
                response.sendRedirect(\"uyeol?durum=basarisiz\");
            }
        } else {
            response.sendRedirect(\"ucakbileti\");
        }
    }

Aşağıdaki kod satırı ile

Boolean kontrol = kullaniciDAO.uyekontrol(kullanici_email);

üye olmak isteyen kullanıcının email adresinin sistemde kayıtlı olup olmadığını kontrol ediyoruz. Eğer email adresi sistemde kayıtlı değilse aşağıdaki işlem ile

kullaniciDAO.uyeol(yeniKullanici);

yeni kullanıcıyı veritabanına ekliyoruz.

Eğer sistemde kayıtlı bir email adresi kullanarak üye olmaya çalışır ise Bu Email kullanılıyor. hatası verecektir.

Mesaj Durum – Mesaj Cevap

  1. ?️‍?️ mesajın okunup okunmadığı ile ilgidir. Göz ikonunun üstünde slash işareti varsa henüz mesajın okunmadığı anlamına gelir.

  2. mesaja cevap verilip verilmediğini belirtir. Çarpı işareti varsa henüz mesaja cevap verilmediği anlamına gelir.

Okunmuş ve cevap verilmiş görünümü

Mesaja cevap verme işlemi ise

private void gostermesajcevapla(HttpServletRequest request, HttpServletResponse response)
    throws SQLException, IOException {
        HttpSession sessionn = request.getSession();
        if ((Integer) sessionn.getAttribute(\"kullanici_yetki\") == null) {
            response.sendRedirect(\"giris\");
        }else if((Integer) sessionn.getAttribute(\"kullanici_yetki\") != 2){
            response.sendRedirect(\"../ucakbileti\");
        }else{
            int mesaj_id = Integer.parseInt(request.getParameter(\"mesaj_id\"));
            String mesaj_email = request.getParameter(\"mesaj_email\");
            String cevap_baslik = new String((request.getParameter(\"cevap_baslik\")).getBytes(\"ISO-8859-1\"), \"UTF-8\");
            String cevap_icerik = new String((request.getParameter(\"cevap_icerik\")).getBytes(\"ISO-8859-1\"), \"UTF-8\");
            Cevap yenicevap = new Cevap(mesaj_id,cevap_icerik,cevap_baslik);

            final String to = mesaj_email; 
            final String subject = cevap_baslik;
            final String messg = cevap_icerik;
            final String from = \"mail@gmail.com\";
            final String pass = \"sifre\";

            Properties props = new Properties();    
            props.put(\"mail.smtp.host\", \"smtp.gmail.com\");    
            props.put(\"mail.smtp.socketFactory.port\", \"465\");    
            props.put(\"mail.smtp.socketFactory.class\", \"javax.net.ssl.SSLSocketFactory\");    
            props.put(\"mail.smtp.auth\", \"true\");    
            props.put(\"mail.smtp.port\", \"465\");     
            Session session = Session.getDefaultInstance(props,    
            new javax.mail.Authenticator() {    
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {    
                    return new PasswordAuthentication(from,pass);  
                }    
            });       
            try {    
               MimeMessage message = new MimeMessage(session);
               message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));    
               message.setSubject(subject, \"UTF-8\");    
               message.setText(messg, \"UTF-8\");    
               Transport.send(message);    
            } catch (MessagingException e) {throw new RuntimeException(e);

            }        
            mesajDAO.mesajcevap(mesaj_id);
            cevapDAO.cevapekle(yenicevap);
            response.sendRedirect(\"cevapliste\");
        }    
    }

SMTP protokolü ile kullanıcının mesajına dönüş yapıyoruz.

Uçuş oluşturma – Uçak Kontrol

private void gosterucusolustur(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException {
        HttpSession session = request.getSession();
        if ((Integer) session.getAttribute(\"kullanici_yetki\") == null) {
            response.sendRedirect(\"giris\");
        } else if ((Integer) session.getAttribute(\"kullanici_yetki\") != 2) {
            response.sendRedirect(\"../ucakbileti\");
        } else {
            int ucus_kalkis_id = Integer.parseInt(request.getParameter(\"ucus_kalkis_id\"));
            int ucus_varis_id = Integer.parseInt(request.getParameter(\"ucus_varis_id\"));
            String ucus_tarih = request.getParameter(\"ucus_tarih\");
            String ucus_saat = request.getParameter(\"ucus_saat\");
            String ucus_sure = request.getParameter(\"ucus_sure\");
            int firma_id = Integer.parseInt(request.getParameter(\"firma_id\"));
            int ucak_id = Integer.parseInt(request.getParameter(\"ucak_id\"));
            double ucus_ucret = Double.parseDouble(request.getParameter(\"ucus_ucret\"));

            Ucus yeniucus = new Ucus(ucus_kalkis_id, ucus_varis_id, ucus_tarih, ucus_saat, ucus_sure, firma_id, ucak_id, ucus_ucret);
            Boolean sonuc = ucusDAO.ucuskontrol(yeniucus);
            if (sonuc == false) {
                response.sendRedirect(\"guncelucusliste?durum=basarisiz\");
            } else {
                ucusDAO.ucusolustur(yeniucus);
                response.sendRedirect(\"guncelucusliste\");
            }
        }
    }

Aşağıdaki kod satırı ile

Boolean sonuc = ucusDAO.ucuskontrol(yeniucus);

seçilen uçağın belirtilen saatler arasında uçuşu olup olmadığını kontrol ediyoruz. Eğer o saatler arası başka uçuşu yoksa uçuş oluşturma işlemini gerçekleştirecektir.

Eğer başka uçuş varsa

uyarısını verecektir.

Uçuş Sorgulama

private void ucussorgulama(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, ServletException, IOException {
        int havaalani_kalkis_id = Integer.parseInt(request.getParameter(\"gidis\"));
        int havaalani_varis_id = Integer.parseInt(request.getParameter(\"varis\"));
        String ucus_tarih = request.getParameter(\"gidis_tarih\");
        int yetiskin_sayi = Integer.parseInt(request.getParameter(\"yetiskin\"));
        int cocuk_sayi = Integer.parseInt(request.getParameter(\"cocuk\"));

        Rezervasyon rezervasyon = new Rezervasyon(havaalani_kalkis_id, havaalani_varis_id, ucus_tarih, yetiskin_sayi, cocuk_sayi);
        request.setAttribute(\"rezervasyon\", rezervasyon);
        List<Rezervasyon> tekyonsorgula = rezervasyonDAO.tekyonsorgulama(rezervasyon);
        request.setAttribute(\"ucussorgulama\", tekyonsorgula);
        List<Havaalani> havaalaniliste = havaalaniDAO.havaalaniliste();
        request.setAttribute(\"havaalaniliste\", havaalaniliste);
        RequestDispatcher dispatcher = request.getRequestDispatcher(\"ucussorgulama.jsp\");
        dispatcher.forward(request, response);
    }

Kullanıcı bilgileri girdikten sonra uçuş arama işlemini gerçekleştiriyor. Eğer girilen bilgilere uygun uçuş varsa aşağıdaki listelenecektir.

Girilen bilgilere uygun uçuş yoksa Uçuş Bulunamadı uyarısını alacaklardır.

Veritabanında sorgulama yapmadan önce girilen bilgilerden tarih değerini kontrol ediyoruz. Eğer uçuşu arattığı tarih bugün ise uçuşa 1 saatten az vakti kalan uçuşlar kullanıcıya listelenmeyecektir. Eğer bugün uçuşu arattığı tarih bugün değil ise o gün içindeki tüm uçuşları listeleyecektir.

Sorgulama yaparken yolcu sayısı uçaklardaki boş koltuk sayısı ile karşılaştırılıp uçakta yer varsa sorgulama sonucu verecektir. Yer yoksa kullanıcılara bu uçuşlar gösterilmeyecektir.

Rezervasyon oluşturma – Koltuk kontrol

Yukarıdaki rezervasyon oluşturma formunda kullanıcı gerekli tüm bilgileri girdikten sonra aşağıdaki gosterrezervasyonislemlerim fonksiyonunu çağırıyor.

private void gosterrezervasyonislemlerim(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException {
        HttpSession session = request.getSession();
        if ((Integer) session.getAttribute(\"kullanici_yetki\") == null) {
            response.sendRedirect(\"giris\");
        } else if ((Integer) session.getAttribute(\"kullanici_yetki\") != 1) {
            response.sendRedirect(\"ucakbileti\");
        } else {
            int ucus_id = Integer.parseInt(request.getParameter(\"ucus_id\"));
            int kullanici_id = (int) session.getAttribute(\"kullanici_id\");
            String yolcu_email = request.getParameter(\"yolcu_email\");
            String yolcu_tel = request.getParameter(\"yolcu_tel\");
            String pnr_no;
            int c_sayi = Integer.parseInt(request.getParameter(\"c_sayi\"));
            int y_sayi = Integer.parseInt(request.getParameter(\"y_sayi\"));
            Double u_ucret = Double.parseDouble(request.getParameter(\"u_ucret\"));
            int yolcu_tip;
            String yolcu_ad;
            String yolcu_soyad;
            String yolcu_tc;
            String yolcu_tarih;
            String yolcu_koltuk;
            Boolean sonuc = false;
            for (int i = 1; i <= (c_sayi + y_sayi); i++) {
                yolcu_koltuk = request.getParameter(\"yolcu_koltuk\" + i);
                sonuc = rezervasyonDAO.koltukkontrol(ucus_id, yolcu_koltuk);
            }
            if (sonuc == true) {
                response.sendRedirect(\"rezervasyonislemlerim?durum=basarisiz\");
            } else {
                for (int i = 1; i <= (c_sayi + y_sayi); i++) {
                    pnr_no = getAlphaNumericString(8);
                    yolcu_tip = Integer.parseInt(request.getParameter(\"yolcu_tip\" + i));
                    yolcu_ad = new String((request.getParameter(\"yolcu_ad\" + i)).getBytes(\"ISO-8859-1\"), \"UTF-8\");
                    yolcu_soyad = new String((request.getParameter(\"yolcu_soyad\" + i)).getBytes(\"ISO-8859-1\"), \"UTF-8\");
                    yolcu_tc = request.getParameter(\"yolcu_tc\" + i);
                    yolcu_tarih = request.getParameter(\"yolcu_tarih\" + i);
                    yolcu_koltuk = request.getParameter(\"yolcu_koltuk\" + i);
                    Rezervasyon rezervasyon = new Rezervasyon(pnr_no, yolcu_ad, yolcu_soyad, yolcu_email, yolcu_tel, yolcu_tc, yolcu_tip, yolcu_koltuk, kullanici_id, ucus_id, yolcu_tarih, u_ucret);
                    rezervasyonDAO.rezervasyonekle(rezervasyon);
                }

                response.sendRedirect(\"rezervasyonislemlerim?durum=basarili\");
            }
        }
    }

Formdaki kullanıcıdan girilen tüm bilgileri ve seçilen koltuk numaralarını alarak kontrol işlemini gerçekleştiriyoruz. Eğer seçilen koltuk başka bir kullanıcı tarafından alınmışsa aşağıdaki uyarıyı verecektir.

Eğer seçilen koltuklar boşsa rezervasyon oluşturma işlemini gerçekleştirecektir.

Rezervasyon iptal ve Bilgi güncelleme

Rezervasyon oluşturduktan sonra uçuş süresinden 2 saat önceye kadar uçuşu iptal edebiliriz.

İptal etme işlemini gerçekleştirmek için şifre girmek gerekmektedir.

private void reziptal(HttpServletRequest

下载源码

通过命令行克隆项目:

git clone https://github.com/nejlasahin/airlinereservation-system.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 airline reservation system https://www.zuozi.net/31320.html

atlas
上一篇: atlas
AspNetCore ReCAPTCHAv3
下一篇: AspNetCore ReCAPTCHAv3
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务