rr
rr
rr
rr
rr
Kapat
resim
Yazılım Geliştirme Uzmanı
search
  • anasayfa
    Anasayfa
  • anasayfa
    Hakkımda
  • anasayfa
    İletişim

  • ANASAYFA
  • HAKKIMDA
  • İLETİŞİM

© 2013 - 2019 Kodlama ve Tasarım Metin ÇİFTÇİ

 
Beni yeni makalelerden haberdar et
Yazılım Geliştirme Uzmanı
menumenu

Süper Bir C Şarp Projesi (AIRCRAFT PROGRAM) Uçak Bilet Satış Otomasyonu

UÇUŞ REZERVASYON OTOMASYONUN SİSTEMİNE GİRİŞ

Kullanıcı Girişi

Kullanıcı giriş formunda (Şekil 1.1.) altı adet label, iki adet textbox, bir adet buton ve bir adet linklabel  kullandım.

Birinci labele  “UÇUŞ REZERVASYON OTOMASYON”  kısmı için, ikinci ve üçüncü labelide “Kullanıcı adı” ve “Şifre” kısmı için ve eğer textboxlar boş geçilirse textboxların sağ kısmına yerleştirdim ve görünürlüğünü gizledim textboxların boş geçilmesi koşulu ile “!” işareti olarak boş geçilen textboxsun sağ tarafında ortaya çıkıyor ve bir diğer labelide uyarı maksatlı kullandım en alt bölümde, eğer kullanıcı giriş bilgileri hatalı ise uyarı verme maksatlı ortaya çıkıp belirtilen süre içinde tekrar  gizleniyor.  Textboxları  kullanıcı adı ve şifre bilgilerinin girişi için kullandım ve böylelikle verileri alıp değerlendiriyorum. Buton kısmında da textboxlardan  verileri alıyorum  tabi ilkin texboxları kontrol ediyorum içeriği boşmu değilmi diye eğer boş ise texboxların yanına bıraktığım label komponentleri çalıştırıp uyarıyı gösteriyorum. Textboxsu kontrol ettikten sonra bu sefer aldığım verileri  c#’ın Ado.Net komut sorgularında kullanıyorum.  Ado.net komut sorgularından “Select” i çekiyorum şart olarak sql tablomda olan alan adlarına göre kullanıcı adı olan textbox içindeki veri ve sifre olan textbox içindeki bilgileri sql sorgumda şart kısmına yazıp ona göre veri tabanından bilgi çekiyorum ve çekilen verileri sanal bir tabloya atıyorum. Ve burda bir şart koşulu yapıyorum eğer diyorum, verilerin atıldığı bu sanal tabloda satır sayısı sıfırdan büyük ise demekki bu kullanıcı ve şifre bilgilerine sahip bir kullanıcı var ve kullanıcıyı direk “Anasayfa” adındaki forma yönlendirip sonra kullanıcı girişi formumu kapatmıyorum sadece gizliyorum eğer kapatırsam uygulama kapanacak  çünkü ana form kullanıcı giriş formudur.

Bu formda statik iki adet string tipinde ve public özelliğinde değişken oluşturuyorum. Bu iki değişkeni ilerden anlatacım konularda değinecem ve girilen kullanıcı adı “Aktar” adlı statik string tipindeki  değişkene aktarıyorum bide Veri tabanında Kullanıcı tablomda “Gorev” adlı alandanda bilgileri çekmiştim kullanıcı ve şifre sorgusu yaparken, ve “Gorev” adındaki veriyide  “Gorevi ” adında oluşturduğum statik string tipindeki değişkene aktarıyorum çünkü bu bilgiler ilerki konularda anlatacığım formlar için lazım olacak. Eğer kullanıcının textboxtan girdiği veriler yanlış ise yani bu verileri sorgulama yaparken veri tabanında yok ise verileri çekip sanal tabir tabloya(Data Table) aktarıyorduk, bu sefer tablonun satır sayılarını sorguladığımızda satır sayıları sıfır olarak görünecek be bizim yapmış olduğumuz şart kısmında demiştik eğer satır sayıları sıfırdan büyük ise anasayfa formuna yönlendir değilse hemen  ekrana yani formun alt kısmında yerleştirdiğimiz label komponentinde uyarıyı yazdıracam ama görünmesi için labelin visible özelliğini bir timer  kontrolünde değiştiriyorum. Yani  uyarıyı labele yazdırıp timeri çalıştırıyorum ve timeri sürelendiriyorum nasıl mı? Global bir integer değişken üretiyorum değeririni sıfır yapıyorum, ve timer içinnde şart koşulu yapıyorum, diyorum ki eğer değişkenimin değeri ikiden büyük ise timeri çalışmasını durdur ve labelin visible özelliğini false yap yani gizle. Ve bu arada timerin çalışma süresini saniye de bir yapıyorum. Ve böylelikle saniyede bir kodları çalıştırmış oluyor. Dediğimiz gibi eğer veriler yanlış ise hata mesajı alıyoruz.

2.2.Şifremi Unuttum

 Peki şifre unutulduysa ne olacak? Hemen buton kontrolünün yanına yerleştirdiğimiz linkbuton olan şifremi unuttum kısmına tıklayıp şifre öğrenme paneline geçiyoruz. Panele geçerken panelin aşağıdan yukarıya doğru kayarak gelmesini yapmak için tekrar timer kontrolunu kullandım ve int sayaç adında bir değişken ürettim ve değerini ikiyüz on altı yaptım. Ve şart oluşturdum, eğer sayaç altmış yediden büyük ise panelin top özelliğinin değerine o anki sayaç değerini aktarıp hemen altında sayacı onbeş eksiltiyorum ve böylelikle timer her çalıştığında bir döngü oluşuyor taki şartta belirttiğim şekilde sayaç  altmış yediden küçük olunca panel istenilen yere geliyor ve diğer belirttiğim şarta geçiyor yani eğer şart oluşmazsa yapılacak olan kodlamaya geçiyor  ve orada sayacımın değerini tekrar ikiyüz on altı yapıyorum ki bir daha şifremi unuttum kontrolüne basıldığında panelin aynı yerden kayarak istenilen yâre gelebilmesi için. Ve timeri burda stop ettiriyorum çalışmasın diye. Tabi bu arada Panelin başlangıç hali gizlidir yani visible değeri  false dir. Kontrole basıldığında görünmeye başlıyor  yani visible değeri  true  oluyor.  Bide bu arda şifremi unuttum kısmına geçerken bir önceki sayfada ki kontrolleri gizliyorum.

Burada(Şekil 1.2. Şifremi Unuttum) altı label, dört texbox  bir buton ve bir tane linklabel kontrolü var.  Burada kullanıcı adı,   e-pota adresi alınıyor ado.net kodlarıyla veri tabanında sorgulama işlemi yapıyorum.  Buton ismi ilkin “Ara” dır, butona basıldığında ilk önce texboxların boş olup olmadığını inceliyorum. Boş bir textbox var ise uyarıyı veriyo-rum label komponenti ile textboxların yanında “!” simgesi şeklinde.  Boş değil ise bilgileri alıp Ado.net sql sorgulama dili ile hemen veri ta-banından sorgulamayı yapıyorum çektiğim verilerde var ise veri tabanında gizli soru kısmına veri tabanında kullanıcıya ait gizli soruyu textboxa veriyorum ve Buton textini  “Göster” yapıyorum çünkü kod kısmında ona göre kodlama yapmışım ve kullanıcının bu  gizli soruyu cevaplaması için cevap kısmının textbox enable özelliği false dir onu true yapıyorum  ki veri girişi yapılsın. Ve kullanıcı buradan doğru cevabı girdiğinde sayfanın aşağısında yerleştirdi-ğim labellere bilgileri verip visible özelliklerini true yapıyorum.

Giriş sayfasına dön kısmına basıldığında ilk sayfaya(Şekil 1.1. Kullanıcı Girişi) gidiyor ve oradan giriş yapabilirsiniz.

2.3. Anasayfa

Anasayfa(Şekil 2.1.)  formunda yedi adet buton beş adet linklabel  bir adet menuStrip, Bir adet label var. Ana sayfa formu aslında görünen değil ansayfa formu ana formdur, içinde açılan ise anasayfam adında bir yavru formdur. Ve menuStrip bide iki adet buton ana formun üzerindedir. Menu strip te ilk menü anasayfa menüsü anasayfam adındaki formu açıyor. Tabi ana formun içinde açıyor. Yeni rezervasyon menüsü, yenirezervasyon  formunu ana formda açıyor. Pnr arama menüsü,  pnr arama formunu ana formda açıyor. Raporlar menüsü, raporlar formunu ana formda açıyor. Mesaj kutusu menüsü, mesaj kutusu formunu ana form da açıyor. Yönetim menüsü, yönetim formunu ana formda  açıyor. Kullanıcı değiştir menüsü de kullanıcı girişi(Şekil1.1.) formunu açıyor. Ana formun  üzerindeki diğer iki buton ise control box yerine yapılan ve bir tanesi formu minimize etmek için biride formu maximize etmek için kullandım. Anasayfam formunun üzerindeki beş buton ve beş liklabel menü striptekilerle aynı görevi görüyorlar.  Orta kısım da flash ile yaptım görsel bir slayt var.

2.4. Yeni Rezervasyon

Yeni rezervasyon(Şekil3.1.) da seksen adet label, kırk altı adet buton, on dokuz adet picturebox, otuz bir adet radio buton, yirmi iki adet group box ve sekiz adet panel kullandım. Şekil3.1. deki panelde nereden nereye kısmında texboxların  “TextChanged” özelliğine veri tabanından bilgileri çekip listbox a aktarıyorum ve listbox ı  textbox un hemen altına yerleştirdim ama visible özelliğini false yaptım başlangıçta görünmesin diye. Veritabanından girilen kelimeye veya karaktere göre veri var ise listbox a aktarıp ve listboxın visible özelliğini true yapıyorum. Ado.net kodlamasında like fonksiyonunu kullanarak  veriyi çekiyorum.  Textboxların yanına arama için buton kontrolü bıraktım veri tabanındaki bütün şehir isimlerini direk listboxa sıralaması için. Tek yön ve gidiş dönüş tercihleri için iki adet radio buton kullandım. Radio buton seçimine göre datetimepicker  kullandım. Mesela eğer gidiş dönüş seçili değil ise dönüş için yerleştirilen datetimepickerin enable özelliği falsedir. Datetimepickerlerde valueChacged özelliğinde veri tabanından o tarihte kaç  tane koltuk var bilgisinide alıyorum. Ado.net kodlamasında count() foksiyonunu kullanarak yapıtım.  Gidiş dönüşlerde, dönüş tarihi  gidiş tarihinden önce seçilmesini engelledim.  Hata mesajlarını lblSonuclar adında bir labelde gösteriyorum. Problem yoksa uçuş ara butona tıklayarak arama sonuçlarını tek yön (Şekil3.2.) yada gidiş dönüş (Şekil3.3. ;Şekil 3.4.)tercihlerine göre veriliyor.

Arama sonuçlarını veri tabanında sabit verilen tabi aynı zamand da kullanıcının güncelleme özelliğine sahib fiyatı alıp seçilen tarihi bugünün tarihinden çıkartım ve hergün başına ne kadarlık artış olması gerektiğini de veri tabanında kullanıcının tanımladığı yüzdeliğe göre sabit fiyatın bu yüzdeliğini alıp çıkan sonuç ile toplayıp radio butona veriyorum aynı zamanda tarihleri ona göre artırıyorum. Uçuş seçim kontrollerini de yaptım eğer bir fiyat ve saat seçilmezse messagebox(Şekil 3.5.) ile uyarı veriyorum. Seçim yapıldıktan sonra devam butonona tıklayıp özet ve kimlik bilgilerinin ve koltuk seçiminin olduğu panele geçiyoruz. Burada daha önce yani baştan(Şekil 3.1.) şu ana kadar  yapılan bütün tercihleri devam butonu altında yukardaki resimde(Şekil 3.6.) gereken yerlere bilgileri yerleştiriyorum. Koltuk atamasını yapmak için bir kontrol mekanizması yaptım. Denetlemek istediğiniz yönü seçerek seçtiğiniz tarihe, saate ve koltuk numarasına göre veri tabanından arama yaparak hangi koltukların boş veya dolu olduğunu gösteriyor. Dolu koltukları “Dolu” yazarak ve arka planlarını siyah yaptım ve ona göre koltuk atamalarını yapabilirsiniz. Text i “Dolu” olan butona tıklasanızda istenilen yere veriyi aktaramayacak. Ve bir sonraki denetleme için yenile butonuna tıklandıktan sonra denetleme yapmanız lazım. Alt taraflarda iki groupbox kullandım biri kimlik bilgileri için biride iletişim bilgileri için. Kimlik bilgilerinde ad, soyad, doğum tarihi, cinsiyet ve yolcu tipinde veri alınıyor. Burada yolcu seçimi fiyatı etkiliyor çocuk ve bebekte kullanıcın belirttği yüzdeliğe göre indirim yapılmakta. İletişim bölümünde ise ad, soyad, telefon ve mail adresi verilerini alıyorum. Telefon kısmında Masked Textbox kullandım. Devam et butonuna tıklandığında gereken fiyat hesaplamalarını ve eklenmesi gereken fiyatları ekleyip  ve kısa özet bilgilerini diğer sayfaya(Şekil 3.7.) aktarıyorum. Burada da bilgiler kısaca özetleniyor ve alt bölümde ödeme bilgileri girildiğinde ödeme yap butona basıldığında bilgileri değerlendirim hata yok ise message box(Şekil 3.8.) ile ödemenin gerçekleştiği bilgisi veriliyor. Bu arada fiyata eklenen ek ücretleride üste ek ücretler  bölümündeverilmektedir.

2.5. Pnr Yönetim

Pnr yönetiminde iki adet panel, iki adet picturebox, yirmi iki adet label, üç adet group box, yirmi bir adet texbox, dört adet buton ve üç adet combobox kullandım. Birinci panelde(Şekil 4.1.) ilk group boxta pnr no ile işlem tipi seçimlerine göre arama yapıyor. İşlem tipi belirledim çünkü veri tabanımda iki tablom var, biri tek yönler için diğeri ise gidiş-dönüş için. İkinci groupbox ise bilet no ve işlem tipine göre arama yapmaktadır. Ve aşağıda olan group box ise Ad, soyad, Pnr no, bilet no ve işlem tipine göre arama özeeliği verdim.  Tabi ara butonlarına basılmadan önce hepsinde oldu gibi boş olu olmadığını kontrol ediyor ve ikincisi eğer kayıt yok ise message box(Şekil 4.2.) ile mesajı   veriyor.

Doğru bilgiler girildiğinde arama sonucu panele(Şekil 4.3.) geçiliyor. Ve burada bütün bilgile-ri textbox ta gösterilmektedir ama textbox un readonly özelliği  truedir.

2.6. Raporlar

Raporlar kısmında pek fazla bişey yapmadım.  Ve bu formda dört adet buton, dört label ve iki groupbox kullandım. Bu formda sistem günlük satışlarında o günün tarihini göre veritabanında tablolarda o günün kayıtlarının “Count()” fonsiyonu ile alıyorum ve ücretleride “Sum()” fonksiyonu ile toplayıp textbox ayazdırıyorum. Tabi genel satışlarıda toptan topluyorum.

2.7. Mesaj Kutusu

Mesaj kutusu formunda  dört adet panel,  iki adet picturebox, beş adet buton, beş adet textbox,  altı adet label ve bir adet datagridview kullandım. Birinci panelde (Şekil 6.1.)  gelen kutusunu gösteriyor. Datagiridview durumu yani okunup okunmadığını gösterme, kime,  kimden geldiğini, konu ve mesaj gösteriyor. Datagiridview in alt kısmında iki adet texbox var bunlar datagiridview den okunmasını istediğiniz mesaja basıldığında o mesajı göstemek için visible özelliğini true yapıyor ve mesajı datagridview den alıp sadece konuyu ve mesajı yayınlıyor

Datagiridview basıldığında okunan mesajı veri tabanında hangi mesaj ise okundu diye güncelleyip datagiridview tekradan yükleyip son halini gösteriyorum ve böylece okunan mesajlar okundu olarak görünüyor.  Mesajı silmek içinde alt kısma yerleştirdiğm sil butona basıldığında o anki okunan mesaj siliniyor. Başka bir kullanıcıya mesaj göndermek isterseniz yeni butonuna tıkladığınızda karşınıza mesaj gönderme(Şekil 6.3.) paneli açılacak burada istediğiniz kullanıcıya mesaj iletebiliyorsunuz.

2.8. Yönetim Paneli

Yönetim panelinde iki adet picturebox, kırkın üzerinde label kullanımı, iki adet panel, altı adet buton, onsekiz adet textbox  üç adette datagiridview kullandım. Burada form yüklenirken ilk olarak veri tabanındaki tekyön için oluşturduğum tabloyu ve gidiş dönüş için oluştur duğum tablodaki verileri Ado.net sorgulama dil kodlarıyla veriyi alıp datagiridview lere(Şekil 7.1.) aktarıyorum. Bura da bütün kayıt bilgilerine bakılabilir. Daha sonra  kullanıcı ve ücret ayarları butonona basıp kullanıcı ekleme, silme ve güncelleme  bide ücret ve indirim yüzdelikleri gibi  işlemlerinin yapıldığı panele(Şekil 7.2.) geçilir. Bu kısımda yeni kullanıcı eklenebilir ve kayıtlı kullanıcıların bilgilerini düzenlemek için DataGridview de istenilen kullanıcının üstüne tıklayarak bilgiler textboxlara  geçer ordan düzenleme yapıp güncelleme butonuna basıldığında güncellemek için veri hatası yoksa bilgiler güncellenir. Tabiki burda da texboxları kontrol etmeler var. Ve kullanıcıyı yöneticimi yada normal bir kullanıcı olarakta ekleyebiliyorsunuz.  Hatırlarsanız kullanıcı ilk giriş yaptığı panelde, kullanıcı giriş(Şekil 1.1.) panelinde statik bir strin tipinde bir değişken üretmiştik ve o değişkene giriş yapan kullanıcı adı değerini verdik. Şimdi burda  o kullanıcının yönetici olup olmadığını  denetleyip sonra bu panele geçiyoruz yoksa mesagebox ile hata mesajı yayınlanır.

2.9. Kullanıcı Değiştirme

Bu menüye tıklandığında ana formu kapatıp kullanıcı girişi formunu active eder. Ve böylelikle yeni giriş yapılır.

BÖLÜM 3. MSSQL SERVER 2008 VERİ TABANI

3.1 İletişim Bilgileri İçin Oluşturulan Tablo

Görüldüğü gibi pkid alanının veri tipi int diğerlerin hepisinin veri tipi nvarchardır. Bu tabloda girilen iletişim bilgileri kayıt ediliyor ve pnr numarasına göre işlem yapıyorum.

3.2 Gidiş-Dönüş İçin Oluşturulan Tablo

PnrNo, BiletNo, Ad, Soyad, DogumTarihi, Cinsiyet, NeredenGidis, NereyeGidis, NeredenDonus, NereyeDonus, Islem, IslemTarihi, UcusTarihiGidis, UcusTarihiDonus, SaatGidis, KoltukNo, SaatDonus, Koltuk-Donus alanadlarına sahip gidiş-dönüş bilgilerini tutulduğu tablodur.

3.3 Tek Yön İçin Oluşturulan Tablo

PnrNo, BiletNo, Ad, Soyad, DogumTarihi, Cinsiyet, Nereden,Islem, IslemTarihi, UcusTarihi, Saat, KoltukNo, alanadlarına sahip tek yön bilgilerini tutulduğu tablodur.

3.4 Kullanıcı Bilgileri İçin Oluşturulan Tablo

Kullaniciadi, Sifre, GizliSoru, GizliSoruCevabi, Posta, KayitTarihi,Gorevi alan adlarından oluşan kullanıcı bilgilerinin tutulduğu tablodur.

3.5 Mesaj Kutusu Bilgileri İçin Oluşturulan Tablo

Durum, Kime,Kimden,Mesaj ve Konu gibi alanların bulunduğu kullanıcı mesaj bilgilerinin tutulduğu tablodur.   

3.6 Rapor Bilgileri İçin Oluşturulan Tablo

PnrNo, KayitTarihi ve Ucret  alanlarından oluşan tablodur. Günlük ve genel raporları analiz etmek için kullanılır.   

3.7 Şehirler  Bilgileri İçin Oluşturulan Tablo

Bu tabloda SehirAdi, Havalimani ve YerSayisi alanlarından oluşan Havalimanı bilgileri, şehirlerin isimleri ve aralarındaki mesafeleri ücretlendirmede kullanmak için oluşturduğum yer sayısı adında alandan oluşuyor.

3.8 Yönetim Bilgisi  İçin Oluşturulan Tablo

Kontenjan, Yuzdelik, BirinciFiyat, IinciFiyat, UcuncuFiyat, Hizmetbedeli, Vergi, YakitHarci, BirinciUcusSaati, IkinciUcusSaati, CocukIndirimi ve Bebek indirimi alanların bulunduğu bilgilerin tutulduğu tablodur. Ve bu tablodaki bilgilere  göre fiyatlar belirtilir.


© 2013-2019 Kodlama ve Tasarım Metin Çiftçi

yukari