• Sonuç bulunamadı

itucsdb1605 IsteSen Proje Raporu

N/A
N/A
Protected

Academic year: 2022

Share "itucsdb1605 IsteSen Proje Raporu"

Copied!
83
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

itucsdb1605 IsteSen

December 30, 2016

(2)
(3)

1 Kullanıcı Kılavuzu 3

1.1 Halit U˘gurgelen Tarafından Yapılan Kısımlar . . . 3

1.2 Mert YILDIZ Tarafından Yapılan Kısımlar . . . 3

1.3 Hasan Hüseyin ÇA ˘GLAR Tarafından Yapılan Bölümler . . . 12

1.4 Mustafa Çoban Tarafından Yapılan Kısımlar . . . 20

1.5 Aydo˘gdu Demirci Tarafından Gerçeklenen Varlıklar . . . 26

1.6 ¸Sevket Cerit Tarafından Yapılan Kısımlar . . . 31

2 Geli¸stirici Kılavuzu 35 2.1 Veri Tabanı Tasarımı . . . 35

2.2 Kod . . . 36

3 Kurulum Kılavuzu 79

i

(4)
(5)

• ¸Sevket Cerit

• Halit U˘gurgelen

• Aydo˘gdu Demirci

• Mustafa Çoban

˙I¸steSen- Kariyer Odaklı Sosyal Medya Sitesi

˙Insanların, ö˘grencilerin, yeni mezunların, ¸sirketlerin, üniversitelerin ve ilgili ba˘glantılarının kariyer ba˘glamında birbirleriyle etkile¸sim kurabilecekleri bir sosyal medya platformu olarak tasarlanmı¸s bir sitedir. Bu sitenin veri tabanı konuyla alakalı olan varlıkların gerçeklendi˘gi çok çe¸sitli tablolar içermekte olup, kullanıcılara da bu tablolar üzerinde ekleme, silme, seçme ve güncelleme gibi i¸slemler yapmasına izin vermektedir.

Contents 1

(6)
(7)

Kullanıcı Kılavuzu

˙I¸steSen web sayfası her türlü kullanıcının kolayca kullanabilece˘gi ¸sekilde basit ve etkili bir tasarım yöntemi kullanılarak tasarlandı.

1.1 Halit U ˘ gurgelen Tarafından Yapılan Kısımlar

Burada projenin “Konular” kısmı ile ilgili bilgiler bulunmaktadır.

Sayfada bulunan en temel eleman konu listesi olup her satırda bilgi vermek amaçlı olarak konu ba¸slı˘gı ile açıkla- ması; bunlara ek olarak veri ekleme veya de˘gi¸stirme gibi i¸slemlerde giri¸s veya seçme gibi i¸sler için de seçim ve giri¸s kutuları bulunmaktadır.

Ana i¸slemler:

Ekleme

Konular sayfasında eklenecek olan konunun adı ile açıklaması ilgili liste elemanının yanında bulunan ilgili bo¸sluk- lara girilir, ardından da konu ekleme dü˘gmesine tıklanır. Böylece yenilenen sayfada az önce eklenmi¸s olan yeni konu görülebilir.

Güncelleme

Güncellenecek konu listede bulundu˘gu yere kar¸sılık gelen seçim kutusu ile seçilir, yeni konu adı ile açıklama da buradaki bo¸sluklara doldurularak güncelleme dü˘gnesine tıklanır ve sayfa yeni liste ile birlikte yenilenir.

Silme

Silinecek konu(lar) listeden seçim kutuları yoluyla seçilir ve silme dü˘gmesine tıklanır, yenilenen sayfada listenin yeni hali görülebilir.

1.2 Mert YILDIZ Tarafından Yapılan Kısımlar

Raporun bu kısımda projede Mert YILDIZ tarafından geli¸stirilen sayfalar ve bu sayfaların kullanımları hakkında detaylı olarak bilgilendirme yapılacaktır.

1.2.1 Altbilgi

Fig. 1.1: Sayfalarda Bulunan Altbilgi Kısmı Altbilgide bulunan ö˘geler

3

(8)

• ¸Sirket ismi ve Kurulu¸s Yılı: 2016 ˙I¸steSen,Inc

• Gizlilik: Sitenin gizlilik politikasına ula¸smayı sa˘glayan bir link

• ˙Ileti¸sim : Site yöneticileri ile ileti¸sime geçebilmek ve ¸sirketin ileti¸sim bilgilerini görüntülemek amacıyla olu¸sturulan sayfaya yönlendiren bir link

• Yerler : Sistemde kayıtlı olarak bulunan yerleri görüntülemek ve ekleme, seçme gibi i¸slemlerin yapılabildi˘gi sayfaya yönlendiren bir link

• Back to top : Sayfanın en ba¸sına yönlendirmek için kullanılan bir link

1.2.2 Üniversiteler Sayfası

Fig. 1.2: Üniversiteler Sayfasına Eri¸sim

Sitenin “Kategoriler” bölümünden “Üniversiteler” seçene˘gine tıklanarak sistemdeki üniversiteler hakkında çe¸sitli bilgilerin edinilebilece˘gi ve kullanıcıların ekleme, güncelleme, silme ve seçme gibi i¸slemler yapabilecekleri bu sayfaya eri¸smeleri mümkündür.

Fig. 1.3: Üniversiteler Sayfası Ekleme ve Seçme Fonksiyonları

(9)

harfinin büyük harfle ba¸slaması gerekti˘gidir.

Seçme ˙I¸slemi

Üniversiteler içinden “ ¸Sehir” ve “Tür” kriterlerine göre seçme i¸slemi yapılabilir. Bunun için sayfada bulunan

“Üniversite Seç” kısımdaki “ ¸Sehir” kısmına görüntülenmek istenen ¸sehrin ismi yazılmalı ve altındaki kontrol kutuları kullanılarak ise “Özel” yada “Devlet” tipi üniversitelerden hangilerinin seçilmek istendi˘gi belirtilmelidir.

Bu ¸sekilde kriterler belirtildikten sonra Seç butonuna basılır ve istenen özelliklere sahip olan üniversiteler ayrı bir sayfada listelenmi¸s olarak gösterilir. Örne˘gin, Ankara ilindeki devlet üniversiteleri seçilmek istenirse sonuç ekranı a¸sa˘gıdaki ¸sekildeki gibi olacaktır.

Bu kısımda da dikkat edilmesi gereken husus ¸sehir yazılırken ilk harfinin büyük olması gerekti˘gidir.

Fig. 1.4: Seçilen Üniversitelerin Gösterildi˘gi Ekran

Güncelleme ˙I¸slemi

Herhangi bir üniversite güncellenmek istendi˘ginde sayfada yer alan üniversitelerin listelenmi¸s oldu˘gu tabloda ilgili üniversitenin “Güncellensin mi?” sütunu altında bulunan “Güncelle” linkine tıklanmalıdır.

Fig. 1.5: Üniversite Güncelleme

Bu ¸sekilde güncellenmek istenen üniversitenin linkine tıklandıktan sonra seçilen üniversiteye ait bilgilerle dolu halde olan metin kutularının oldu˘gu yeni bir güncelleme sayfası açılır. Burada üniversiteye ait istenen bilgiler yenileriyle istenilen ¸sekilde de˘gi¸stirildikten sonra sayfanın sonunda bulunan Güncelle butonu tıklanmalıdır. Bu i¸slemden sonra üniversiteler sayfasına geri dönülecek ve güncellenmek için seçilmi¸s olan üniversite yeni hali ile listenin sonunda görülebilecektir.

1.2. Mert YILDIZ Tarafından Yapılan Kısımlar 5

(10)

Fig. 1.6: Üniversite Güncelleme Sayfası

Silme ˙I¸slemi

Herhangi bir üniversite silinmek istendi˘ginde sayfada yer alan üniversitelerin listelenmi¸s oldu˘gu tabloda ilgili üniversitenin “Silinsin mi?” sütunu altında bulunan kontrol kutusu i¸saretlenmelidir.

Fig. 1.7: Üniversite Silmek için ˙I¸saretleme ˙I¸slemi

Bu ¸sekilde silinmek istenen her üniversitenin kontrol kutusu i¸saretlendikten sonra sayfanın sonunda bulunan Sil butonu tıklanmalıdır. Bu i¸slemden sonra sayfa yenilenecek ve i¸saretlenmi¸s olan üniversiteler sayfadan ve arka planda veri tabanından kaldırılmı¸s olacaklardır.

Fig. 1.8: Üniversite Silme ˙I¸slemi

˙Istisnalar

*Seçme i¸slemi sırasında istenen özelliklere sahip üniversite yok ise bo¸s sayfa açılır.

*˙I¸slemler için yanlı¸s girdi de˘gerleri girilirse, örne˘gin seçme i¸slemi için sistemde olmayan bir ¸sehir girilirse, veya

¸sehir hatalı girilirse, bu durumlar için hazırlanmı¸s özel hata sayfası açılır.

• Seçme i¸slemi için “Tür” kısmında “Devlet” ve/ya “Özel” seçeneklerinden en az biri seçilmi¸s olmalıdır,

(11)

Fig. 1.9: Üniversite Bo¸s Seçme ˙I¸slemi

Fig. 1.10: Hata Sayfası

1.2.3 ¸ Sirketler Sayfası

Fig. 1.11: ¸Sirketler Sayfasına Eri¸sim

Sitenin “Kategoriler” bölümünden “ ¸Sirketler” seçene˘gine tıklanarak sistemdeki ¸sirketler hakkında çe¸sitli bilgilerin edinilebilece˘gi ve kullanıcıların ekleme, güncelleme, silme ve seçme gibi i¸slemler yapabilecekleri bu sayfaya eri¸smeleri mümkündür.

Ekleme ˙I¸slemi

Sisteme yeni bir ¸sirket eklemek için sitede tasarlanan form içindeki “ ¸Sirket Adı”,” ¸Sehir”, ve “Çalı¸san Sayısı”

bilgileri eksiksiz olarak girilmelidir. Bu alanlar doldurulduktan sonra Ekle butonuna basıldı˘gında yeni ¸sirket arka planda veri tabanındaki tablolara ve sayfada da alt kısımda bulunan tablonun son satırına eklenmi¸s oldu˘gundan buradan görülebilir.

Burada yeni bilgilerin girilmesi sırasında dikkat edilmesi gereken husus, ¸sehir bilgisi girilirken özellikle ilk harfinin büyük harfle ba¸slaması gerekti˘gidir.

1.2. Mert YILDIZ Tarafından Yapılan Kısımlar 7

(12)

Fig. 1.12: ¸Sirketler Sayfası Ekleme ve Seçme Fonksiyonları

Seçme ˙I¸slemi

¸Sirketler içinden “ ¸Sehir” veya “˙Isim” kriterlerine göre seçme i¸slemi yapılabilir. ˙Isme göre seçim yapmak için sayfada bulunan “ ¸Sirket Seç” kısımdaki “ ¸Sirketin ismine göre ara” kısmına görüntülenmek istenen ¸sirketin ismi yazılmalı ve yanında bulunan Seç butonuna basılmalıdır. Yada e˘ger ¸sehir kriterine göre arama yapılmak isteniy- orsa “ ¸Sirketin ¸sehrine göre ara” kısmına görüntülenmek istenen ¸sehir bilgisi girilmeli ve ardından Seç butonuna basılmalıdır. Bu ¸sekilde kriterler belirtildikten ve Seç butonuna basıldıktan sonra istenen özelliklere sahip olan

¸sirketler ayrı bir sayfada listelenmi¸s olarak gösterilir. Örne˘gin, Ankara ilindeki ¸sirketler seçilmek istenirse sonuç ekranı a¸sa˘gıdaki ¸sekildeki gibi olacaktır.

Bu kısımda da dikkat edilmesi gereken husus ¸sehir yazılırken ilk harfinin büyük olması gerekti˘gidir.

Fig. 1.13: Seçilen ¸Sirketlerin Gösterildi˘gi Ekran

Güncelleme ˙I¸slemi

Herhangi bir ¸sirket güncellenmek istendi˘ginde sayfada yer alan ¸sirketlerin listelenmi¸s oldu˘gu tabloda ilgili ¸sirketin

“Güncellensin mi?” sütunu altında bulunan “Güncelle” linkine tıklanmalıdır.

Bu ¸sekilde güncellenmek istenen ¸sirketin linkine tıklandıktan sonra seçilen ¸sirkete ait bilgilerle dolu halde olan metin kutularının oldu˘gu yeni bir güncelleme sayfası açılır. Burada ¸sirkete ait istenen bilgiler yenileriyle istenilen

¸sekilde de˘gi¸stirildikten sonra sayfanın sonunda bulunan Güncelle butonu tıklanmalıdır. Bu i¸slemden sonra ¸sir- ketler sayfasına geri dönülecek ve güncellenmek için seçilmi¸s olan ¸sirket yeni hali ile listenin sonunda görülebile- cektir.

Silme ˙I¸slemi

Herhangi bir ¸sirket silinmek istendi˘ginde sayfada yer alan ¸sirketlerin listelenmi¸s oldu˘gu tabloda ilgili ¸sirketin

“Silinsin mi?” sütunu altında bulunan kontrol kutusu i¸saretlenmelidir.

Bu ¸sekilde silinmek istenen her ¸sirketin kontrol kutusu i¸saretlendikten sonra sayfanın sonunda bulunan Sil butonu tıklanmalıdır. Bu i¸slemden sonra sayfa yenilenecek ve i¸saretlenmi¸s olan ¸sirketler sayfadan ve arka planda veri tabanından kaldırılmı¸s olacaklardır.

(13)

Fig. 1.14: ¸Sirket Güncelleme

Fig. 1.15: ¸Sirket Güncelleme Sayfası

Fig. 1.16: ¸Sirket Silmek için ˙I¸saretleme ˙I¸slemi

1.2. Mert YILDIZ Tarafından Yapılan Kısımlar 9

(14)

Fig. 1.17: ¸Sirket Silme ˙I¸slemi

• Seçme i¸slemi sırasında istenen özelliklere sahip ¸sirket yok ise bo¸s sayfa açılır.

Fig. 1.18: ¸Sirket Bo¸s Seçme ˙I¸slemi

• ˙I¸slemler için yanlı¸s girdi de˘gerleri girilirse, örne˘gin seçme i¸slemi için sistemde olmayan bir ¸sehir girilirse, veya ¸sehir hatalı girilirse, bu durumlar için hazırlanmı¸s özel hata sayfası açılır.

Fig. 1.19: Hata Sayfası

1.2.4 Yerler Sayfası

Sitenin “Altbilgi” bölümünden “Yerler” linkine tıklanarak sistemdeki yerler hakkında çe¸sitli bilgilerin edinilebile- ce˘gi ve kullanıcıların çe¸sitli i¸slemler yapabilecekleri bu sayfaya eri¸smeleri mümkündür.

Bu sayfada amaç sistemde kayıtlı olarak bulunan yerleri görüntüleyebilmek ve istenirse yeni yerler ekleyebilmek- tir. Çünkü bu bilgiler di˘ger sayfalarda bazı i¸slemleri yapabilmek için gerekli olabilmektedir. Hali hazırda Türkiye’nin tüm illeri plaka kodlarına göre sisteme eklenmi¸s haldedir.

Ekleme ˙I¸slemi

Sisteme yeni bir yer eklemek için sitede tasarlanan form içindeki “Yer numarası”,” ¸Sehir”, ve “Ülke” bilgileri eksiksiz olarak girilmelidir. Bu alanlar doldurulduktan sonra Ekle butonuna basıldı˘gında yeni yer arka planda veri tabanındaki tablolara ve sayfada da alt kısımda bulunan tablonun son satırına eklenmi¸s oldu˘gundan buradan

(15)

Fig. 1.20: Yerler Sayfasına Eri¸sim

Fig. 1.21: Kayıtlı Yerler

Fig. 1.22: Yerler Sayfası Ekleme Fonksiyonu

1.2. Mert YILDIZ Tarafından Yapılan Kısımlar 11

(16)

Burada yeni bilgilerin girilmesi sırasında dikkat edilmesi gereken husus, ¸sehir bilgisi girilirken özellikle ilk harfinin büyük harfle ba¸slaması gerekti˘gidir.

Di˘ger ˙I¸slemler

Yerler varlı˘gı için ekleme i¸slemi dı¸sında, silme, ve güncelleme i¸slemleri bu varlı˘gın di˘ger varlıklara ba˘glı olması nedeniyle kısıtlanmı¸stır. Bu nedenle sayfada da bu fonksiyonlar için bir arayüz tasarlanmamı¸stır.

Seçme i¸slemi ise zaten tablonun ba˘glı oldu˘gu di˘ger varlıkların sayfalarında( ¸Sirketler ve Üniversiteler gibi) yapılıyor olup, ayrıca bu sayfada da kayıtlı olan yerleri göstermek için kullanılmı¸stır.

1.3 Hasan Hüseyin ÇA ˘ GLAR Tarafından Yapılan Bölümler

Raporun bu bölümünde ˙I¸steSen adlı sosyal medya sitesinin Makaleler, Ba˘glantılar ve Etkinlikler say- falarının(varlıklarının) ekran görüntülerini ve bilgilerini inceleyebilirsiniz. Bu sayfalara eri¸sim için tüm sayfalarda görülebilen kategoriler sekmesine tıkladıktan sonra Makaleler, Ba˘glantılar veya Etkinlikler seçeneklerine tıkla- yarak eri¸sebilirler.

Fig. 1.23: Kategorilerden istenilen sayfalara eri¸sim

1.3.1 MAKALELER

Makaleler sayfası kullanıcıların ço˘gunlukla akademik kariyerlerinde önemli yer tutan makale yayınlarının bilgileri tutulması amacıyla geli¸stirilmi¸stir. Kullacılar yeni makale ekleyebilir, var olan makaleleri güncelleyebilir veya onları silebilir. Kullanıcılar diledikleri zaman veritabanında var olan tüm makaleleri listeleyebilirler.

Listeleme

Makaleleri Listele alanına tıklanır. Seçim sorguları kullanılarak varlı˘ga ait bütün mevcut kayıtlar listelenir. (Fig.

1.24’ü inceleyiniz.)

Ekleme

Makale Ekle alanına tıklanır. Yeni veriler girilerek Makale ekle butonuyla onaylanır, eklenen kayıt tekrar listelenip tabloya kaydedildi˘gi görülür. (Fig. 1.25 ve 1.26’yı inceleyiniz.)

(17)

Fig. 1.24: Tüm makaleler listelenir

Fig. 1.25: Yeni olu¸sturulacak makalenin verileri girilir

Fig. 1.26: Eklenen yeni makale listeleme alanında görülür

1.3. Hasan Hüseyin ÇA ˘GLAR Tarafından Yapılan Bölümler 13

(18)

Güncelleme

Makale Güncelle alanına tıklanır. Listeden bir kayıt ‘radiobutton’ ile seçilip onay butonuna basılır. ˙Ilgili kayıda ait gelen veriler tekrardan de˘gi¸stirilip Makale Güncelle butonuna basılarak onaya gönderilir. En son olarak de˘gi¸sen veriler listeleme alanından gözlemlenir. (Fig. 1.27, 1.28 ve 1.29’u inceleyiniz.)

Fig. 1.27: Güncellenmek istenen makale seçilir

Fig. 1.28: Yeni veriler girilir

Fig. 1.29: Güncellenen kayıt listelenir

Silme

Makale Sil alanına tıklanır. ‘CheckBox’lar ile istenilen kayıtlar seçilir, sonra Seçili Makaleleri Sil onay buto- nuna basılarak silme i¸slemi yapılır. Listeleme ekranında artık silinen kayıtlar görülmez. (Fig. 1.30 ve 1.31’i inceleyiniz.)

1.3.2 BA ˘ GLANTILAR

Ba˘glantılar sayfası kullanıcıların birbirleriyle arkada¸slık ili¸skilerini belirten ya da üniversite veya benzeri kurumsal

(19)

Fig. 1.30: Silme tekli veya çoklu olabilir

Fig. 1.31: Silinen makaleler artık listelenemez

veya üniversite bazında filtrelemeler yaparak listemeleler yapabilir. Bir ki¸siye yeni ba˘glantı eklenebilir veya bir ki¸siye ait ba˘glantılar tekli veya çoklu olarak silinebilir.

Ki ¸si Bazında Listeleme

Ki¸si Bazında Listeleme alanına tıklanır. Kullanıcı seçimi yapılır ve Ki¸siyi Seç onay butonuna basılır. Seçilen kullanıcının arkada¸sları ekrana listelenir. (Fig. 1.32’yi inceleyiniz.)

Fig. 1.32: Seçilen Ki¸siye göre gelen kayıtlar

Üniversite Bazında Listeleme

Üniversite Bazında Listeleme alanına tıklanır. Üniversite seçimi yapılır sonra Üniversiteyi Seç onay butonuna tıklanır. Seçilen üniversiteye ba˘glı kullanıcılar listelenir. (Fig. 1.33’ü inceleyiniz.)

1.3. Hasan Hüseyin ÇA ˘GLAR Tarafından Yapılan Bölümler 15

(20)

Fig. 1.33: Seçilen üniversite altında bulunan ba˘glantılar

Ba ˘glantı Ekle

Ba˘glantı Ekle alanına tıklanır. Seçilen kullanıcıya ba˘glantı olarak eklenmek isteyen arkada¸s kullanıcı seçilir, sonra Ba˘glantıyı Onayla’ta basılır. Eklenen ba˘glantı Ki¸si Bazında Listeleme alanından kontrol edilir. (Fig. 1.34 ve 1.35’i inceleyiniz.)

Fig. 1.34: Eklemek üzere yeni bir ba˘glantı seçilir

Fig. 1.35: Eklenen yeni ba˘glantı da listelenir

Ba ˘glantı Sil

Ba˘glantı Sil alanına basılır. ‘CheckBox’lar ile seçilen kullanıcılar ba˘glantıdan çıkarılmak üzere Seçili Ba˘glan- tıları Sil Butonuna basılır. Silinen ba˘glantılar artık listeleme bölümünde görünmeyecektir. (Fig. 1.36 ve 1.37’yi inceleyiniz.)

(21)

Fig. 1.36: Silinecek ba˘glantılar seçilir

Fig. 1.37: Ba˘glantıların son hali de listelenir

1.3.3 ETK˙INL˙IKLER

Etkinlikler sayfası kullanıcılar tarafından olu¸sturulan ve belli bir konu hakkında belli bir mekanda düzenlemeyi planladıkları aktiviteler için i¸slemlerin gerçekle¸sti˘gi sayfadır. Tıpkı makalelerde oldu˘gu gibi listeleme, ekleme, silme ve güncelleme i¸slemleri yapılır.

Etkinlikler(Listeleme)

Etkinlikler alanına tıklanır. Seçim sorguları kullanılarak varlı˘ga ait bütün mevcut kayıtlar listelenir. (Fig. 1.38’i inceleyiniz.)

Fig. 1.38: Tüm etkinlikler listelenir

Etkinlik Olu ¸stur

Etkinlik Olu¸stur alanına tıklanır. Yeni veriler girilerek Etkinli˘gi Olu¸stur butonuyla onaylanır, eklenen kayıt tekrar listelenip tabloya kaydedildi˘gi görülür. (Fig. 1.39 ve 1.40’ı inceleyiniz.)

1.3. Hasan Hüseyin ÇA ˘GLAR Tarafından Yapılan Bölümler 17

(22)

Fig. 1.39: Yeni etkinli˘gin verileri girilir

Fig. 1.40: Eklenen etkinlik listelenir

Etkinli ˘gi Kaldır

Etkinli˘gi Kaldır alanına tıklanır. ‘CheckBox’lar ile istenilen kayıtlar seçilir, sonra Seçili Etkinlikleri Kaldır onay butonuna basılarak silme i¸slemi yapılır. Listeleme ekranında artık silinen kayıtlar görülmez. (Fig. 1.41 ve 1.42’yi inceleyiniz.)

Fig. 1.41: Silinecek kayıtlar seçilir

Etkinli ˘gi Güncelle

Etkinli˘gi Güncelle alanına tıklanır. Listeden bir kayıt ‘radiobutton’ ile seçilip onay butonuna basılır. ˙Ilgili kayıda ait gelen veriler tekrardan de˘gi¸stirilip Etkinli˘gi Güncelle butonuna basılarak onaya gönderilir. En son olarak de˘gi¸sen veriler listeleme yalanından gözlemlenir. (Fig. 1.43, 1.44 ve 1.45’i inceleyiniz.)

(23)

Fig. 1.42: Silinen veriler listeden kalkar

Fig. 1.43: Güncellenecek etkinlik seçilir

Fig. 1.44: Yeni etkinlik verileri girlir

Fig. 1.45: Güncellenen veri listelenir

1.3. Hasan Hüseyin ÇA ˘GLAR Tarafından Yapılan Bölümler 19

(24)

1.4 Mustafa Çoban Tarafından Yapılan Kısımlar

1.4.1 ˙I ¸ S ˙ILANLARI

˙I¸s ˙Ilanları ile ilgili sayfalarda a¸sa˘gıdaki i¸slemler gerçekle¸stirilebilmektedir:

• ˙I¸s ˙Ilanlarını Görüntüleme

• Yeni ˙I¸s ˙Ilanı Ekleme

• ˙I¸s ˙Ilanlarını Güncelleme

• ˙I¸s ˙Ilanlarını Silme

Fig. 1.46: ˙I¸s ˙Ilanları Görüntüleme Sayfası

Bu sayfada kullanıcılar veritabanında tutulan bütün i¸s ilanlarını tablo biçiminde görüntüleyebilirler.

Fig. 1.47: ˙I¸s ˙Ilanı Ekleme Sayfası

Bu sayfada kullanıcılar dropdown listeden i¸s ilanı eklemek istedikleri ¸sirketi seçtikten sonra pozisyon ve maa¸s bilgisini girerek “Ekle” butonu aracılı˘gıyla istedikleri i¸s ilanını ekleyebilirler. Ekle butonu i¸s ilanları görüntüleme sayfasına yönlendirerek eklenen i¸s ilanının listeden kontrol edilmesini sa˘glamaktadır.

(25)

Fig. 1.48: ˙I¸s ˙Ilanı Güncelleme Ana Sayfası

˙I¸s ilanı güncelleme sayfasında kullanıcıya öncelikle bütün i¸s ilanları tablo halinde listelenir. Kullanıcı güncellemek istedi˘gi i¸s ilanının yanında bulunan güncelle linkine tıklayarak ilgili i¸s ilanının güncelleme sayfasına yönlendirilir.

Fig. 1.49: Güncellenecek ˙I¸s ˙Ilanının Güncelleme Sayfası

Bu sayfada kullanıcının seçti˘gi i¸s ilanının bilgileri önceden ilgili alanlara eklenir, bu sayede kullanıcı güncelleye- ce˘gi i¸s ilanının bilgilerini görür ve güncellemek istedi˘gi bölümleri de˘gi¸stirdikten sonra Güncelle butonuna basarak ilgili i¸s ilanını günceller.

˙I¸s ilanı silme sayfasında kullanıcı bütün i¸s ilanlarının bulundu˘gu tablodan silmek istedi˘gi i¸s ilanlarının yanlarında bulunan seçim kutularını i¸saretledikten sonra Sil butonuna basarak istedi˘gi i¸s ilanlarını silebilir.

1.4.2 GRUPLAR

Gruplar ile ilgili sayfalarda a¸sa˘gıdaki i¸slemler gerçekle¸stirilebilmektedir:

• Grupları ve Üyelerini Görüntüleme

• Gruplara Üye Ekleme

• Yeni Grup Olu¸sturma

1.4. Mustafa Çoban Tarafından Yapılan Kısımlar 21

(26)

Fig. 1.50: ˙I¸s ˙Ilanı Silme Sayfası

• Grupları Güncelleme

• Grupları Silme

Fig. 1.51: Grup Görüntüleme Sayfası

Bu sayfada bütün gruplar tablo halinde listelenmektedir. Her grubun adı ve tanımı o grubun içeri˘gine yönlendiren linkler olarak kullanılmaktadır. Her grubun yanında bulunan Üye ol check boxı ile kullanıcı istedi˘gi gruba üye olabilmektedir.

Grupların içeri˘ginde o grupta bulunan üyelerin listeleri tablolar halinde gösterilmektedir.

Grup ekleme sayfasında grup adı ve grup tanımı bölümleri girilerek Ekle butonu aracılı˘gıyla yeni gruplar olu¸stu- rulabilmektedir.

Grupları güncelleme sayfasında kullanıcıya öncelikle bütün gruplar tablo halinde listeleniyor. Kullanıcı güncelle- mek istedi˘gi grubun yanında bulunan güncelle linkine tıklayarak ilgili grubun güncelleme sayfasına yönlendirilir.

(27)

Fig. 1.52: Grup ˙Içeri˘gi Görüntüleme Sayfası

Fig. 1.53: Grup Ekleme Sayfası

Fig. 1.54: Grup Güncelleme Sayfası

1.4. Mustafa Çoban Tarafından Yapılan Kısımlar 23

(28)

Fig. 1.55: Seçilen Grubun Güncelleme Sayfası

Bu sayfada kullanıcının seçti˘gi grubun bilgileri önceden ilgili alanlara eklenir, bu sayede kullanıcı güncelleyece˘gi grubun bilgilerini görür ve güncellemek istedi˘gi bölümleri de˘gi¸stirdikten sonra Güncelle butonuna basarak ilgili grubu günceller.

Fig. 1.56: Grup Silme Sayfası

Grupları silme sayfasında kullanıcıya bütün gruplar tablo ¸seklinde listelenir ve kullanıcı silmek istedi˘gi grupların yanlarındaki seçme kutularını i¸saretleyerek Sil butonu aracılı˘gıyla istedi˘gi grupları silebilmektedir.

1.4.3 MESAJLAR

Mesajlar ile ilgili sayfalarda a¸sa˘gıdaki i¸slemler gerçekle¸stirilebilmektedir:

• Yeni Mesaj Gönderme

• Gelen Mesajları Görüntüleme

• Gönderilen Mesajları Görüntüleme

Yeni mesaj göndermek için kullanıcı dropdown menüden mesaj göndermek istedi˘gi kullanıcıyı seçtikten sonra mesaj kısmına mesajını yazıp Gönder butonuna basarak istedi˘gi üyeye mesaj gönderebilmektedir.

(29)

Fig. 1.57: Yeni Mesaj Sayfası

Fig. 1.58: Gelen Kutusu

Fig. 1.59: Giden Kutusu

1.4. Mustafa Çoban Tarafından Yapılan Kısımlar 25

(30)

Gönderilen mesajlar sayfasında kullanıcının gönderdi˘gi mesajlar listelenmektedir.

1.5 Aydo ˘ gdu Demirci Tarafından Gerçeklenen Varlıklar

1.5.1 ˙I¸s Ortakları Düzenleme Sayfası

Nedir: “˙I¸s Ortakları” sayfasında, i¸se alımlarını “˙I¸steSen” aracılı˘gıyla yapan ¸sirketler görüntülenebilir ve bu ¸sir- ketlere ait bilgiler düzenlenebilir. “˙I¸s Ortakları” sayfasına eri¸sim için sitenin sol üst kö¸sesinde yerle¸sik bulunan

“Kategoriler” ba¸slı˘gı altındaki “˙I¸s Ortakları” sekmesine tıklanabilir.

Genel Görünüm: “˙I¸s Ortakları” sayfası ziyaret edildi˘ginde ilk olarak, her bir i¸s orta˘gı ismi, kurulu¸s yılı ve ülkesi gibi bilgilerin yanı sıra kendisine ait bir seçim kutucu˘gu ile birlikte listelenmi¸s olarak görülür.

Silme ˙I¸slemi: Kayıt silmek için kullanıcı önce kaydını silmek istedi˘gi i¸s orta˘gına ait seçim kutucu˘guna tıklar.

Sistem birden fazla kaydın aynı anda silinmesine olanak tanımaktadır. Bunun için kullanıcı bir veya birden fazla kutucu˘gu i¸saretleyebilir. Kaydının silinmesi istenen i¸s ortaklarına ait kutucuklar i¸saretlendikten sonra, üzerine

˙I¸saretli ˙I¸s Orta˘gını Sil yazılı butona tıklanır ve silme i¸slemi gerçekle¸stirilir.

Ekleme ˙I¸slemi: Kayıt ekleme için kullanıcı önce kaydını eklemek istedi˘gi i¸s orta˘gına ait bilgileri kutucuklara yazar. Bilgilerin giri¸si tamamlandıktan sonra, üzerine ˙I¸s Orta˘gı Ekle yazılı butona tıklanarak yeni i¸s orta˘gı kaydı listeye eklenir.

˙Istisna

• Kayıt ekleme esnasında yıl bilgisi olarak bir sayı girilmelidir. Sistem yıl bilgisi olarak yalnızca sayı gir- ilmesine izin verir.

Güncelleme ˙I¸slemi: Güncelleme ekranında kayıtlı tüm i¸s ortaklarına bilgiler kendilerine ait form kutucuklarına yazılı ve listelenmi¸s olarak gelir. Kullanıcı kaydını güncellemek istedi˘gi i¸s orta˘gına ait bilgileri ilgili form ku- tucu˘guna girerek düzenler ve kaydını düzenledi˘gi i¸s orta˘gına ait Güncelle butonuna tıklar. Bu i¸slem sonucunda

(31)

Fig. 1.60: ˙I¸s Ortakları Sayfası Genel Görünümü

Fig. 1.61: ˙I¸s Orta˘gı Kaydı Silme Ekranı

Fig. 1.62: ˙I¸s Orta˘gı Kaydı Ekleme Ekranı

1.5. Aydo ˘gdu Demirci Tarafından Gerçeklenen Varlıklar 27

(32)

Fig. 1.63: ˙I¸s Orta˘gı Kaydı Güncelleme Ekranı

˙Istisna

• Güncelleme esnasında yıl bilgisi olarak bir sayı girilmelidir. Sistem yıl bilgisi olarak yalnızca sayı girilme- sine izin verir.

1.5.2 Projeler Düzenleme Sayfası

Nedir: “Projeler” sayfasında, i¸se alımlarını “˙I¸steSen” aracılı˘gıyla yapan ¸sirketlere ait projeler görüntülenebilir ve bu projelere ait bilgiler düzenlenebilir. “Projeler” sayfasına eri¸sim için sitenin sol üst kö¸sesinde yerle¸sik bulunan

“Kategoriler” ba¸slı˘gı altındaki “Projeler” sekmesine tıklanabilir.

Genel Görünüm: “Projeler ” sayfası ziyaret edildi˘ginde ilk olarak, her bir projenin ismi, tamamlandı˘gı yıl ve projeyi gerçekle¸stiren ¸sirket gibi bilgilerin yanı sıra kendisine ait bir seçim kutucu˘gu ile birlikte listelenmi¸s olarak görülür.

Silme ˙I¸slemi: Kayıt silmek için kullanıcı önce kaydını silmek istedi˘gi projeye ait seçim kutucu˘guna tıklar. Sistem birden fazla kaydın aynı anda silinmesine olanak tanımaktadır. Bunun için kullanıcı bir veya birden fazla kutucu˘gu i¸saretleyebilir. Kaydının silinmesi istenen projelere ait kutucuklar i¸saretlendikten sonra, üzerine ˙I¸saretli Projeyi Sil yazılı butona tıklanır ve silme i¸slemi gerçekle¸stirilir.

Ekleme ˙I¸slemi: Kayıt eklemek için kullanıcı önce kaydını eklemek istedi˘gi projeye ait bilgileri kutucuklara yazar.

Bilgilerin giri¸si tamamlandıktan sonra, üzerine Proje Ekle yazılı butona tıklanarak yeni proje kaydı listeye eklenir.

˙Istisna

• Kayıt ekleme esnasında yıl bilgisi olarak bir sayı girilmelidir. Sistem yıl bilgisi olarak yalnızca sayı gir- ilmesine izin verir.

Güncelleme ˙I¸slemi: Güncelleme ekranında sisteme kayıtlı tüm projelere bilgiler kendilerine ait form kutucuk- larına yazılı ve listelenmi¸s olarak gelir. Kullanıcı kaydını güncellemek istedi˘gi projeye ait bilgileri ilgili form kutucu˘guna girerek düzenler ve kaydını düzenledi˘gi projeye ait Güncelle butonuna tıklar. Bu i¸slem sonucunda ilgili projeye bilgiler güncellenmi¸s olur.

(33)

Fig. 1.64: Projeler Sayfasına Eri¸sim

Fig. 1.65: Projeler Sayfası Genel Görünümü

1.5. Aydo ˘gdu Demirci Tarafından Gerçeklenen Varlıklar 29

(34)

Fig. 1.66: Proje Kaydı Silme Ekranı

Fig. 1.67: Proje Kaydı Ekleme Ekranı

(35)

1.6 ¸ Sevket Cerit Tarafından Yapılan Kısımlar

Raporun bu kısımda projede ¸Sevket Cerit tarafından geli¸stirilen sayfalar ve bu sayfaların kullanımları hakkında detaylı olarak bilgilendirme yapılacaktır.

1.6.1 Giri ¸s Sayfası

Fig. 1.69: Kullanıcı Giri¸s Sayfası Ekranı

Siteye kayıtlı kullanıcıların mail adreslerini ve ¸sifrelerini girerek giri¸s yapabilecekleri bölümdür.

1.6.2 Kayıt Ol Sayfası

Siteye kayıt olmak isteyen kullanıcılar buradan kayıt olun linkine tıklayarak kullanıcı kayıt sayfasına geçi¸s yapa- bilirler.

Kayıt Ol Sayfası

Kayıt olmak isteyen kullanıcılar istenilen bilgilerini girerek siteye kayıt olabilirler.Tüm alanların doldurulması zorunludur.Üniversite bilgisi için sistemde kayıtlı üniversitelerden biri girilmelidir.

1.6.3 Kullanıcı Profil Sayfası

Kullanıcı profil Sayfasına Eri¸sim

Kullanıcılar altındaki profil linkine tıklayarak kullanıcı profil sayfasına eri¸silebilir.

Kullanıcı profil Sayfası

1.6. ¸Sevket Cerit Tarafından Yapılan Kısımlar 31

(36)

Fig. 1.70: Kullanıcı Kayıt Sayfasına Eri¸sim Ekranı

Fig. 1.71: Kullanıcı Kayıt Ekranı

(37)

Fig. 1.72: Kullanıcı Profil Sayfası Eri¸sim Ekranı

Fig. 1.73: Kullanıcı Profil Sayfası Ekranı

1.6. ¸Sevket Cerit Tarafından Yapılan Kısımlar 33

(38)

Kullanıcı profil sayfasında kullanıcılar kayıtlı bilgilerini görüntüleyebilir.De˘gi¸stirmek istedikleri bilgileri girdikten sonra submit butonuyla yeni bilgilerini sisteme kayıt edebilirler.

(39)

Geli ¸stirici Kılavuzu

2.1 Veri Tabanı Tasarımı

Bu proje kapsamında 15 tablo gerçeklenmi¸s olup, bu tablolar arasındaki ili¸skiler a¸sa˘gıdaki varlık-ili¸ski diagramı ile gösterilmi¸stir.

Fig. 2.1: Varlık-˙Ili¸ski Diagramı

35

(40)

Tablolar ve birbirleriyle ili¸skileri hakkında daha detaylı bilgi her tasarımcının kendi kısmında ayrıca verilecektir.

PK ve FK sembolleri sırasıyla birincil ve dı¸s anahtarları belirtir.

2.2 Kod

2.2.1 ¸ Sevket Cerit Tarafından Yapılan Kısımlar

Kullanıcılar Tablosu

Kullanıcıları temsil etmek icin “users” tablosu olu¸sturuldu.Users tablosu “userId” birincil anahtar ve serial olarak tanımlandı. “Firstname” kullanıcının ismi ,”Lastname” kullanıcının soyismi ,”Email_adress” kullanıcının mail adresi ,”password” kullanıcının siteye giri¸s yapmak için kullanaca˘gı ¸sifresi ve universities tablosuna dı¸s anahtar olan “uni” niteliklerine sahiptir.

def users(self):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "DROP TABLE IF EXISTS users CASCADE"

cursor.execute(query)

query = """CREATE TABLE users (

uni VARCHAR (100) NOT NULL REFERENCES universities(title) ON DELETE CASCADE

ON UPDATE CASCADE,

UserId SERIAL PRIMARY KEY, Firstname VARCHAR (80) NOT NULL, Lastname VARCHAR (80) NOT NULL ,

Email_adress VARCHAR (100) NOT NULL UNIQUE, password VARCHAR(10) NOT NULL

)"""

cursor.execute(query)

query = """INSERT INTO users(Firstname, Lastname, Email_adress,uni,password) VALUES ('Sevket','Cerit','cerits@itu.er','Ankara Üniversitesi','sevko'),

('Mert','Yıldız','yildiz@itu.edr','˙Istanbul Üniversitesi','mert'),

('Halit','Ugurgelen','ugurgelen@itu.edu.tr','Bo˘gaziçi Üniversitesi','halit'), ('Hasan','Caglar','caglarh@itu.edu','˙Istanbul Teknik Üniversitesi','hhc'), ('Donald','Hearn','Hearn@ise.ufl.edu','Bo˘gaziçi Üniversitesi','hearn'),

('Ulug','Bayazit','ulugbayazit@itu.edu.tr','˙Istanbul Teknik Üniversitesi','ulug'), ('Fatih','Guler','gulerfa','˙Istanbul Teknik Üniversitesi','feg');

"""

cursor.execute(query) connection.commit()

Kullanıcı Giri ¸si

Kullanıcıların sayfaya giri¸si için mail adresleri ve ¸sifreleri veritabanında kontrol edildi.E¸sle¸sme sa˘glanırsa sitenin anasayfasına yönlendirildi.

@app.route('/home', methods = ['POST', 'GET']) def page_login():

with dbapi2.connect(app.config['dsn']) as connection:

cursor = connection.cursor() if request.method == 'POST':

mailentered = request.form['mail']

passentered = request.form['password']

query = """SELECT Firstname,Lastname,Email_adress FROM users WHERE Email_adress='%s' AND password='%s' """ % (mailentered, passentered) cursor.execute(query)

global allusers

allusers = cursor.fetchall()

(41)

return render_template('signup.html') elif request.method == 'GET':

return render_template('signup.html')

Kullanıcı Kayıt

Siteye kayıt olmak isteyen kullanıcılar email,ad,soyad,üniversite ve ¸sifre formlarını doldurarak kayıt olur.Girilen bilgiler veritabanına kaydedilir.Kayıt i¸sleminden sonra giri¸s sayfasına yönlendirilir.

@app.route('/user_add', methods=['GET', 'POST']) def user_add():

user = users(app.config['dsn']) if request.method == 'GET':

now = datetime.datetime.now()

return render_template('signup.html', current_time=now.ctime()) if request.method == 'POST':

user.set_mail(request.form['email']) user.set_name(request.form['firstname']) user.set_lastname(request.form['lastname']) user.set_uni(request.form['uni'])

user.set_password(request.form['password']) user.add_user()

now = datetime.datetime.now()

return redirect(url_for('page_login'))

Kullanıcı Profil

Kullanıcı profil sayfasında bilgilerini güncelleyebilir.Formda yer alan mail bilgisi veritabanında kontrol edilir ve e¸slesen kullanıcının yeni girilen bilgileri veritabanına kaydedilir.

@app.route('/user_update', methods=['GET', 'POST']) def user_update():

user = users(app.config['dsn']) if request.method == 'GET':

now = datetime.datetime.now()

return render_template('signup.html', current_time=now.ctime()) if request.method == 'POST':

name = request.form['firstname']

mail = request.form['email']

uni = request.form['uni']

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """UPDATE users

SET Firstname='%s',uni='%s'

WHERE Email_adress='%s'""" % (name, uni, mail) cursor.execute(statement)

connection.commit()

now = datetime.datetime.now()

return redirect(url_for('page_profile'))

2.2. Kod 37

(42)

2.2.2 Mert YILDIZ Tarafından Yapılan Kısımlar

Psycopg2 Metodunun Açıklaması

con(): PostgreSQL veri tabanına ba˘glantı sa˘glanmasını halleder.

cursor(): PostgreSQL komutlarının python kodunda çalı¸stırılmasını sa˘glar.

execute(): Veri tabanı i¸sleminin çalı¸stırılmasını sa˘glar.(Sorgu yada komutların) commit(): bekleyen de˘gi¸siklik yada i¸slemleri veri tabanına i¸sler.

fetchall(): Sorgu sonucunu alır ve satırlar halinde döner.

Üniversiteler

Üniversiteleri temsil etmek için sistemde iki adet tablo gerçeklendi. Bunlardan ilki olan “universities” tablosu “id”

ve “title” niteliklerinden olu¸san basit bir tablodur. “id” niteli˘gi birincil anahtar olup “Serial” olarak tanımlanmı¸stır.

Di˘ger nitelik olan “title” da ise üniversitelerin isimleri yer almaktadır. Bu tablo site açıldı˘gında a¸sa˘gıdaki kod ile olu¸sturulup, ilk de˘gerleri atanmaktadır.

def universities(self):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "DROP TABLE IF EXISTS universities CASCADE"

cursor.execute(query)

query = """CREATE TABLE universities ( id SERIAL PRIMARY KEY,

title VARCHAR(40) UNIQUE NOT NULL )"""

cursor.execute(query)

cursor.execute("""INSERT INTO universities (title) VALUES ('Ankara Üniversitesi'),

('Gazi Üniversitesi'), ('Bilkent Üniversitesi'), ('Hacettepe Üniversitesi'),

('Orta Do˘gu Teknik Üniversitesi'), ('Ege Üniversitesi '),

('Dokuz Eylül Üniversitesi'), ('Kocaeli Üniversitesi'), ('Sakarya Üniversitesi'), ('Bo˘gaziçi Üniversitesi'), ('Yıldız Teknik Üniversitesi'), ('˙Istanbul Üniversitesi'), ('Bahçe¸sehir Üniversitesi'), ('Galatasaray Üniversitesi'), ('˙Istanbul Teknik Üniversitesi'), ('Özye˘gin Üniversitesi'),

('Sabancı Üniversitesi'), ('Koç Üniversitesi'), ('Munzur Üniversitesi'), ('Gebze Teknik Üniversitesi'), ('Karadeniz Teknik Üniversitesi'), ('I¸sık Üniversitesi'),

('Kadir Has Üniversitesi'), ('Bursa Teknik Üniversitesi'), ('Fırat Üniversitesi'),

('Osmangazi Üniversitesi'), ('Kırıkkale Üniversitesi'), ('Sinop Üniversitesi'),

(43)

('¸Sehir Üniversitesi'), ('Atatürk Üniversitesi'), ('Yeditepe Üniversitesi'), ('Marmara Üniversitesi'), ('Uluda˘g Üniversitesi'), ('Düzce Üniversitesi'), ('Trakya Üniversitesi'), ('Bilgi Üniversitesi');

""")

connection.commit()

Üniversiteler hakkında daha detaylı bilgilerin bulundu˘gu di˘ger bir tablo ise “universities_info” tablosudur. Bu tabloda “uni_id”,”local”,”population” ve “type” olmak üzere dört nitelik vardır. Bunlardan uni_id universities tablosundaki id ile ili¸skili dı¸s anahtar, local ise locations tablosundaki loc_id ile ili¸skili bir dı¸s anahtardır. Bu tabloda üniversitelere ait yeri, ö˘grenci sayısı ve türü(özel yada devlet) gibi bilgiler tutulmaktadır. Tablonun olu¸s- turulması ve ilk de˘gerlerin atanması a¸sa˘gıdaki kod ile site açıldı˘gında yapılmaktadır.

def universities_info(self):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "DROP TABLE IF EXISTS universities_info CASCADE"

cursor.execute(query)

query = """CREATE TABLE universities_info (

uni_id INTEGER NOT NULL REFERENCES universities(id) ON DELETE CASCADE

ON UPDATE CASCADE,

local INTEGER NOT NULL REFERENCES locations(loc_id) ON DELETE CASCADE

ON UPDATE CASCADE, population NUMERIC(10), type VARCHAR(10), UNIQUE (uni_id) )"""

cursor.execute(query)

query = """INSERT INTO universities_info VALUES (1, 6, 15020,'Devlet'),

(2, 6, 25010,'Devlet'), (3, 6, 21008,'Özel'), (4, 6, 12504,'Devlet'), (5, 6, 27500,'Devlet'), (6, 35, 25412,'Devlet'), (7, 35, 10997,'Devlet'), (8, 41, 17627,'Devlet'), (9, 54, 6570,'Devlet'), (10, 34, 8879, 'Devlet'), (11, 34, 8690, 'Devlet'), (12, 34, 11994, 'Devlet'), (13, 34, 33424, 'Özel'), (14, 34, 11586, 'Devlet'), (15, 34, 17215, 'Devlet'), (16, 34, 15990,'Özel'), (17, 34, 3944,'Özel'), (18, 34, 3338, 'Özel'), (19, 62, 1330,'Devlet'), (20, 41, 1219, 'Devlet'), (21, 61, 8879, 'Devlet'), (22, 34, 8600, 'Özel'),

2.2. Kod 39

(44)

(23, 34, 11994,'Özel'), (24, 16, 3384, 'Devlet'), (25, 23, 11586,'Devlet'), (26, 26, 17615,'Devlet'), (27, 71, 5110, 'Devlet'), (28, 57, 3774,'Devlet'), (29, 6, 3338,'Özel'), (30, 24, 2030, 'Devlet'), (31, 65, 1439,'Devlet'), (32, 26, 38424,'Devlet'), (33, 7, 11586,'Devlet'), (34, 6, 17215, 'Özel'), (35, 34, 24190,'Özel'), (36, 25, 7944, 'Devlet'), (37, 34, 3338,'Özel'), (38, 34, 9030,'Devlet'), (39, 16, 4139,'Devlet'), (40, 81, 2558, 'Devlet'), (41, 22, 9030,'Devlet'), (42, 34, 4239, 'Özel');

"""

cursor.execute(query) connection.commit()

Üniversite Sınıfının Yapısı ve Kurucu Fonksiyonu

Üniversiteleri temsil etmek için olu¸sturulan sınıfın yapısı elemanları ve kurucu fonksiyonu a¸sa˘gıdaki gibidir.

class University:

def __init__(self, title, local, population, type):

self.Title = title self.Local = local

self.Population = population self.Type = type

Üniversiteler ˙Için Yazılan Fonksiyonlar

Bu varlı˘gın tablolarına ekleme, silme, güncelleme ve seçme i¸slemlerinin yapılabilmesi için gerekli olan kodlar projede “universities.py ” dosyasının altındadır.

Üniversite Ekleme

Sitenin arayüzünden girilen bilgileri kullanarak öncelikle “universities” tablosuna yeni üniversitenin adını, “uni- versities_info” tablosuna da girilen di˘ger ilgili bilgileri ekler. Bu ¸sekilde yeni bir üniversite eklenmi¸s olur. Bu i¸slem yazılan kod a¸sa˘gıdaki gibidir.

def add_university(self, title, local, population, type):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "INSERT INTO universities (title) VALUES ('%s')" % (title) cursor.execute(query)

query = "SELECT * FROM universities WHERE title = '%s' " % (title) cursor.execute(query)

row = cursor.fetchone() uni_id = row[0]

query = "SELECT loc_id FROM locations WHERE city = '%s' " % (local) cursor.execute(query)

row = cursor.fetchone()

(45)

Bu ekleme fonksiyonu server.py’daki üniversiteler ile ilgili olan kısımda ekleme i¸slemi yapılaca˘gı zaman kullanılır.

Üniversite Silme

Arayüzdeki kontrol kutuları i¸saretlenen üniversitelerin id de˘gerlerini alarak bu üniversiteleri tablodan kaldırır.

Silme i¸slemi için kullanılan kod a¸sa˘gıdaki gibidir. Bu kod server.py’da yazılmı¸s olup, e˘ger arayüzde herhangi bir kontrol kutusu i¸saretlenmi¸sse çalı¸sır. Öncelikle “universities” ardından ba˘glantılı oldu˘gu di˘ger tablo olan

“universities_info” tablosundan kaldırılır.

elif 'unis_to_delete' in request.form:

ids = request.form.getlist('unis_to_delete') for id in ids:

id = id.split('/', maxsplit=1) id = id[0]

unis.delete_university(id)

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT * FROM universities"""

cursor.execute(statement) ulist = cursor.fetchall()

statement = """SELECT uni_id, locations.city, locations.country, population, type FROM universities_info JOIN locations ON universities_info.local = locations.loc_id"""

cursor.execute(statement) ilist = cursor.fetchall() connection.commit()

now = datetime.datetime.now()

return render_template('universities.html', UniversityList = ulist, InfoList=ilist, current_time = now.ctime())

Üniversite Güncelle

Üniversite güncellemek için önce arayüzde istenen üniversitenin yanındaki “Güncelle” linkine tıklanması ardından açılan yeni sayfada yeni bilgilerin girilerek “Güncelle” butonuna basılması gerekmektedir. ˙I¸ste Html kodunda, is- tenen üniversitenin yanındaki linke tıklandı˘gında bu üniversitenin id de˘gerinin gönderilmesiyle “/universiteler/id”

uzantılı yeni bir sayfa açılır. Daha sonra bu id de˘gerine sahip üniversite için yeni girilen bilgiler kullanılarak güncelleme i¸slemi yapılır. Html kısmındaki yeni sayfaya yönlendiren ve id de˘gerini gönderen kod ¸su ¸sekildedir.

<br>

<h3>Üniversiteler</h3>

<br>

<form method="POST">

<table class="table table-hover">

<thead>

<tr>

<th>Adı</th>

<th>¸Sehir</th>

<th>Ülke</th>

<th>Ö˘grenci Sayısı</th>

<th>Türü</th>

<th>Güncellensin Mi?</th>

<th>Silinsin Mi?</th>

</tr>

</thead>

<tbody>

2.2. Kod 41

(46)

{% for i in range(0,UniversityList|count) %}

<tr>

{% for j in range(1,2) %}

<td>{{UniversityList[i][j]}}</td>

{% endfor %}

{% for k in range(1,5) %}

<td>{{InfoList[i][k]}}</td>

{% endfor %}

<td><a href="{{request.path}}/{{InfoList[i][0]}}" class="text-info" name="unis_to_update">Güncelle</a></td>

<td><input type="checkbox" name="unis_to_delete" value= {{UniversityList[i][0]}}/></td>

</tr>

{% endfor %}

</tbody>

</table>

Buradan gelen id ile yeni açılan sayfaya ait server.py daki kod ise a¸sa˘gıdaki gibidir. Bu koda göre öncelikle say- fanın metodu “GET” ise güncellenecek olan üniversitenin bilgileri yeni açılan sayfadaki metin kutularına doldu- rulur. E˘ger “POST” ise yani “Güncelle” butonuna basılırsa, seçili üniversitenin id de˘gerine göre seçim yapılarak yeni veriler ile güncelleme i¸slemi yapılır ve ardından üniversiteler sayfasına geri dönülür.

@app.route('/universiteler/<int:id>', methods=['GET','POST']) def uni_update_page(id):

unis = Universities(app.config['dsn']) fn = Func(app.config['dsn'])

if request.method == 'GET':

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT * FROM universities WHERE id={}""".format(id) cursor.execute(statement)

univ = cursor.fetchall()

statement = """SELECT uni_id, locations.city, locations.country, population, type FROM universities_info JOIN locations ON universities_info.local = locations.loc_id WHERE uni_id={}""".format(id) cursor.execute(statement)

infos = cursor.fetchall() connection.close()

now = datetime.datetime.now()

return render_template('a_university.html',ID=id, UniversityList = univ, InfoList=infos, current_time=now.ctime())

#elif 'universities_to_update' in request.form:

if request.method == 'POST':

#unis.update_a_university(id,request.form['uni'],request.form['city'],request.form['cont'],request.form ['number'],request.form['type']) connection = dbapi2.connect(app.config['dsn'])

cursor = connection.cursor()

statement = """UPDATE universities SET title ='{}' WHERE id={};""".format(request.form['uni'],id) cursor.execute(statement)

statement ="""SELECT loc_id FROM locations WHERE city='{}';""".format(request.form['city']) cursor.execute(statement)

row = cursor.fetchone() if row is None:

return None loca_id = row[0]

statement = """UPDATE universities_info

SET local='{}', population='{}', type='{}' WHERE uni_id = {};""".format(loca_id,request.form ['number'],request.form['type'],id) cursor.execute(statement)

statement = """SELECT * FROM universities"""

cursor.execute(statement) ulist = cursor.fetchall()

statement = """SELECT uni_id, locations.city, locations.country, population, type FROM universities_info JOIN locations ON universities_info.local = locations.loc_id"""

cursor.execute(statement) ilist = cursor.fetchall() connection.commit()

now = datetime.datetime.now()

(47)

listelenir. Bu i¸slemler için server.py’da yazılan kod ¸su ¸sekildedir:

elif 'universities_to_select' in request.form:

vals = request.form.getlist('unis_to_select') City=request.form['city']

length=len(vals) if length==2:

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT loc_id FROM locations WHERE city='{}';""".format(City) cursor.execute(statement)

row = cursor.fetchone() if row is None:

now = datetime.datetime.now()

return render_template('404.html', current_time = now.ctime()) loca_id = row[0]

statement = """SELECT universities.title, universities_info.population, universities_info.type FROM universities JOIN universities_info ON universities_info.uni_id = universities.id WHERE local ={}""".format(loca_id) cursor.execute(statement)

ilist = cursor.fetchall() connection.commit()

now = datetime.datetime.now() if ilist is None:

return render_template('404.html', current_time = now.ctime())

return render_template('b_university.html', UniversityList = ilist, current_time = now.ctime()) elif length==1:

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT loc_id FROM locations WHERE city='{}';""".format(City) cursor.execute(statement)

row = cursor.fetchone() if row is None:

now = datetime.datetime.now()

return render_template('404.html', current_time = now.ctime()) loca_id = row[0]

statement = """SELECT universities.title, universities_info.population, universities_info.type FROM universities JOIN universities_info ON universities_info.uni_id = universities.id WHERE universities_info.local ={} AND universities_info.type='{}'""".format(loca_id,vals[0]) cursor.execute(statement)

ilist = cursor.fetchall() connection.commit()

now = datetime.datetime.now() if ilist is None:

return render_template('404.html', current_time = now.ctime())

return render_template('b_university.html', UniversityList = ilist, current_time = now.ctime()) Görüldü˘gü üzere öncelikle “Seç” butonuna basılması beklenir, bu butona basılırsa, “Özel” ve “Devlet” de˘gerlerini

ta¸sıyan kontrol kutularının de˘gerleri ve girilen ¸sehir bilgisi alınır. Önce kontrol kutularının ikisininde mi yoksa birinin mi seçildi˘gine bakılır. ˙Ikiside seçildiyse girilen ¸sehre göre seçme i¸slemi yapılır. E˘ger yanlızca “Özel” veya

“Devlet” seçildiyse o zaman bu kriterde seçimde göz önüne alınır.

E˘ger yanlı¸s de˘ger girilirse hata sayfasına yönlendirilir.(404.html)

¸

Sirketler

¸Sirketleri temsil etmek için sistemde “companies” tablosu gerçeklendi. Tablo “id”, “title”, “local2” ve “popula- tion” olmak üzere dört nitelikten olu¸smaktadır. Bunlarda sırasıyla ¸sirketin sıra numarası(birincil anahtar olarak kullanıldı.), ¸sirketin ismi, yer bilgisi(“locations” tablosuna dı¸sa anahtar olarak) ve çalı¸san sayısı bilgileri tutulmak- tadır. Bu tablo site açıldı˘gında a¸sa˘gıdaki kod ile olu¸sturulup, ilk de˘gerleri atanmaktadır.

2.2. Kod 43

(48)

def companies(self):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "DROP TABLE IF EXISTS companies CASCADE"

cursor.execute(query)

query = """CREATE TABLE companies ( id SERIAL PRIMARY KEY,

title VARCHAR(40) UNIQUE NOT NULL,

local2 INTEGER NOT NULL REFERENCES locations(loc_id) ON DELETE CASCADE

ON UPDATE CASCADE, population NUMERIC(10) )"""

cursor.execute(query)

cursor.execute("""INSERT INTO companies(title,local2,population) VALUES ('Apple', 34, 1200),

('Turkcell', 34, 4500), ('Vodafone', 34, 2100), ('Airties', 34, 800), ('Microsoft', 34, 6800), ('Google', 34, 1700), ('Avea', 34, 1700), ('Akbank', 41, 2700), ('Tüpra¸s', 41, 5800), ('Arkas', 35, 900), ('Logosoft', 6, 1700), ('NVIDIA', 34, 360);

""")

connection.commit()

¸

Sirket Sınıfının Yapısı ve Kurucu Fonksiyonu

¸Sirketleri temsil etmek için olu¸sturulan sınıfın yapısı elemanları ve kurucu fonksiyonu a¸sa˘gıdaki gibidir.

class Company:

def __init__(self, title, local, population):

self.Title = title self.Local = local

self.Population = population

Üniversiteler ˙Için Yazılan Fonksiyonlar

Bu varlı˘gın tablolarına ekleme, silme, güncelleme ve seçme i¸slemlerinin yapılabilmesi için gerekli olan kodlar projede “companies.py” dosyasının altındadır.

¸

Sirket Ekleme

Sitenin arayüzünden girilen bilgileri kullanarak “companies” tablosuna yeni ¸sirketin adını, çalı¸san sayısını, ¸sehrini gibi ilgili bilgileri ekler. Bu ¸sekilde yeni bir ¸sirket eklenmi¸s olur. Bu i¸slem yazılan kod a¸sa˘gıdaki gibidir.

def add_company(self, title, local, population):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "SELECT loc_id FROM locations WHERE city = '%s' " % (local) cursor.execute(query)

row = cursor.fetchone()

(49)

Bu ekleme fonksiyonu server.py’daki ¸sirketler ile ilgili olan kısımda ekleme i¸slemi yapılaca˘gı zaman kullanılır.

¸

Sirket Silme

Arayüzdeki kontrol kutuları i¸saretlenen ¸sirketlerin id de˘gerlerini alarak bu ¸sirketleri tablodan kaldırır. Silme i¸slemi için kullanılan kod a¸sa˘gıdaki gibidir. Bu kod server.py’da yazılmı¸s olup, e˘ger arayüzde herhangi bir kontrol kutusu i¸saretlenmi¸sse çalı¸sır.

elif 'comps_to_delete' in request.form:

ids = request.form.getlist('comps_to_delete') for id in ids:

id = id.split('/', maxsplit=1) id = id[0]

comps.delete_company(id)

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT id, title, locations.city, locations.country, population FROM companies JOIN locations ON companies.local2 = locations.loc_id"""

cursor.execute(statement) clist = cursor.fetchall() connection.commit()

now = datetime.datetime.now()

return render_template('companies.html', CompanyList = clist, current_time = now.ctime())

¸

Sirket Güncelle

¸Sirket güncellemek için önce arayüzde istenen ¸sirketin yanındaki “Güncelle” linkine tıklanması ardından açılan yeni sayfada yeni bilgilerin girilerek “Güncelle” butonuna basılması gerekmektedir. ˙I¸ste Html kodunda, istenen

¸sirketin yanındaki linke tıklandı˘gında bu ¸sirketin id de˘gerinin gönderilmesiyle “/sirketler/id” uzantılı yeni bir sayfa açılır. Daha sonra bu id de˘gerine sahip ¸sirket için yeni girilen bilgiler kullanılarak güncelleme i¸slemi yapılır. Html kısmındaki yeni sayfaya yönlendiren ve id de˘gerini gönderen kod ¸su ¸sekildedir.

<form method="POST">

<table class="table table-hover">

<thead>

<tr>

<th>Adı</th>

<th>¸Sehir</th>

<th>Ülke</th>

<th>Çalı¸san Sayısı</th>

<th>Güncellensin Mi?</th>

<th>Silinsin Mi?</th>

</tr>

</thead>

<tbody>

{% for i in range(0,CompanyList|count) %}

<tr>

{% for k in range(1,5) %}

<td>{{CompanyList[i][k]}}</td>

{% endfor %}

<td><a href="{{request.path}}/{{CompanyList[i][0]}}" class="text-info" name="comps_to_update">Güncelle</a></td>

<td><input type="checkbox" name="comps_to_delete" value= {{CompanyList[i][0]}}/></td>

</tr>

2.2. Kod 45

(50)

{% endfor %}

</tbody>

</table>

Buradan gelen id ile yeni açılan sayfaya ait server.py daki kod ise a¸sa˘gıdaki gibidir. Bu koda göre öncelikle sayfanın metodu “GET” ise güncellenecek olan ¸sirketin bilgileri yeni açılan sayfadaki metin kutularına doldurulur.

E˘ger “POST” ise yani “Güncelle” butonuna basılırsa, seçili ¸sirketin id de˘gerine göre seçim yapılarak yeni veriler ile güncelleme i¸slemi yapılır ve ardından ¸sirketler sayfasına geri dönülür.

@app.route('/sirketler/<int:id>', methods=['GET','POST']) def comp_update_page(id):

comps = Companies(app.config['dsn']) fn = Func(app.config['dsn'])

if request.method == 'GET':

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT id, title, locations.city, locations.country, population FROM companies JOIN locations ON companies.local2 = locations.loc_id WHERE id={}""".format(id) cursor.execute(statement)

clist = cursor.fetchall() connection.close()

now = datetime.datetime.now()

return render_template('a_company.html',ID=id, CompanyList = clist, current_time=now.ctime()) if request.method == 'POST':

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement ="""SELECT loc_id FROM locations WHERE city='{}';""".format(request.form['city']) cursor.execute(statement)

row = cursor.fetchone() if row is None:

return None loca_id = row[0]

statement = """UPDATE companies

SET title='{}', local2='{}', population='{}' WHERE id = {};""".format(request.form['comp'],loca_id,request.form['number'],id)

cursor.execute(statement)

statement = """SELECT id, title, locations.city, locations.country, population FROM companies JOIN locations ON companies.local2= locations.loc_id"""

cursor.execute(statement) clist = cursor.fetchall() connection.commit()

now = datetime.datetime.now()

return redirect(url_for('company_page'))

¸

Sirket Seçme

Arayüzde girilen belirli kriterlere göre ¸sirket bilgilerini seçme i¸slemi yapmak için kullanılan kısımdır. Seçme i¸slemi için ¸sehir yada ¸sirket ismi kriter olarak kullanılabilir. Yapılan bu seçimlere göre tablolardan istenen kriter- lere uyan ¸sirketler çekilerek yeni bir sayfada listelenir. Bu i¸slemler için server.py’da yazılan kod ¸su ¸sekildedir:

elif 'companies_to_select' in request.form:

City=request.form['city']

#l_id=fn.get_id("locations",City)

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT loc_id FROM locations WHERE city='{}';""".format(City) cursor.execute(statement)

row = cursor.fetchone() if row is None:

now = datetime.datetime.now()

return render_template('404.html', current_time = now.ctime()) loca_id = row[0]

(51)

if clist is None:

return render_template('404.html', current_time = now.ctime())

return render_template('b_company.html', CompanyList = clist, current_time = now.ctime()) elif 'companies_to_select2' in request.form:

Title=request.form['title']

#l_id=fn.get_id("locations",City)

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT id, title, locations.city, locations.country, population FROM companies JOIN locations ON companies.local2= locations.loc_id WHERE title ='{}'""".format(Title) cursor.execute(statement)

clist = cursor.fetchall() connection.commit()

now = datetime.datetime.now() if clist is None:

return render_template('404.html', current_time = now.ctime())

return render_template('b_company.html', CompanyList = clist, current_time = now.ctime()) Görüldü˘gü üzere öncelikle “Seç” butonuna basılması beklenir, iki farklı “Seç” butonu vardır. ˙Ilki olan “compa-

nies_to_select” butonuna basılırsa seçme için ¸sehir kriterine bakılaca˘gı anlamına gelir. Bu nedenle girilen ¸sehir de˘geri kullanılarak buna uygun olan ¸sirketler tablodan çekilerek, yeni bir sayfada listelenir. E˘ger ikinci buton olan

“companies_to_select2” kullanılırsa bu isme göre seçme yapılaca˘gını gösterir ve girilen isim de˘geri kullanılarak i¸slem yapılır. Bulunan sonuçlar yeni bir ekranda listelenir.

E˘ger yanlı¸s de˘ger girilirse hata sayfasına yönlendirilir.(404.html)

Hata Sayfası

E˘ger kullanıcı seçme gibi i¸slemlerde yanlı¸s yada sistemde olmayan veriler girerse “internal server error” hatası yerine bu hazırlanan sayfanın görünmesi sa˘glandı. Bunun için bu ko¸sula uygun durumlar belirlenerek server.py dosyasında gerekli yerlerde yönlendirmeler yapıldı. Örnek kullanım yerleri a¸sa˘gıda gösterilmi¸stir.

¸Sirketler için:

elif 'companies_to_select2' in request.form:

Title=request.form['title']

#l_id=fn.get_id("locations",City)

connection = dbapi2.connect(app.config['dsn']) cursor = connection.cursor()

statement = """SELECT id, title, locations.city, locations.country, population FROM companies JOIN locations ON companies.local2= locations.loc_id WHERE title ='{}'""".format(Title) cursor.execute(statement)

clist = cursor.fetchall() connection.commit()

now = datetime.datetime.now() if clist is None:

return render_template('404.html', current_time = now.ctime())

return render_template('b_company.html', CompanyList = clist, current_time = now.ctime())

Yerler

Yerler temsil etmek için sistemde “locations” tablosu gerçeklendi. Tablo “id”, “city” ve “country” olmak üzere üç nitelikten olu¸smaktadır. Bunlarda sırasıyla yerin numarası(birincil anahtar olarak kullanıldı.), ¸sehir ve ülke bilgi- leri tutulmaktadır. Bu tablo site açıldı˘gında a¸sa˘gıdaki kod ile olu¸sturulup, ilk de˘gerleri atanmaktadır. Ba¸slangıç için Türkiye’deki 81 ilin hepsi plaka kodlarına göre eklenmi¸stir.

2.2. Kod 47

(52)

def locations(self):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "DROP TABLE IF EXISTS locations CASCADE"

cursor.execute(query)

query = """CREATE TABLE locations ( loc_id INTEGER PRIMARY KEY, city VARCHAR(40) NOT NULL, country VARCHAR(40), UNIQUE (loc_id), UNIQUE (city) )"""

cursor.execute(query)

query = """INSERT INTO locations VALUES (1, 'Adana','Türkiye'),

(2, 'Adıyaman', 'Türkiye'), (3, 'Afyon', 'Türkiye'), (4, 'A˘grı', 'Türkiye'), (5, 'Amasya', 'Türkiye'), (6, 'Ankara', 'Türkiye'), (7, 'Antalya', 'Türkiye'), (8, 'Artvin', 'Türkiye'), (9, 'Aydın', 'Türkiye'), (10, 'Balıkesir','Türkiye'), (11, 'Bilecik', 'Türkiye'), (12, 'Bingöl', 'Türkiye'), (13, 'Bitlis', 'Türkiye'), (14, 'Bolu', 'Türkiye'), (15, 'Burdur', 'Türkiye'), (16, 'Bursa', 'Türkiye'), (17, 'Çanakkale', 'Türkiye'), (18, 'Çankırı', 'Türkiye'), (19, 'Çorum', 'Türkiye'), (20, 'Denizli', 'Türkiye'), (21, 'Diyarbakır','Türkiye'), (22, 'Edirne', 'Türkiye'), (23, 'Elazı˘g', 'Türkiye'), (24, 'Erzincan', 'Türkiye'), (25, 'Erzurum', 'Türkiye'), (26, 'Eski¸sehir', 'Türkiye'), (27, 'Gaziantep', 'Türkiye'), (28, 'Giresun', 'Türkiye'), (29, 'Gümü¸shane', 'Türkiye'), (30, 'Hakkari', 'Türkiye'), (31, 'Hatay', 'Türkiye'), (32, 'Isparta', 'Türkiye'), (33, 'Mersin', 'Türkiye'), (34, '˙Istanbul', 'Türkiye'), (35, '˙Izmir', 'Türkiye'), (36, 'Kars', 'Türkiye'), (37, 'Kastamonu', 'Türkiye'), (38, 'Kayseri', 'Türkiye'), (39, 'Kırklareli','Türkiye'), (40, 'Kır¸sehir', 'Türkiye'), (41, 'Kocaeli', 'Türkiye'), (42, 'Konya', 'Türkiye'), (43, 'Kütahya', 'Türkiye'), (44, 'Malatya', 'Türkiye'), (45, 'Manisa', 'Türkiye'),

(46, 'Kahramanmara¸s', 'Türkiye'), (47, 'Mardin', 'Türkiye'),

(53)

(54, 'Sakarya', 'Türkiye'), (55, 'Samsun', 'Türkiye'), (56, 'Siirt', 'Türkiye'), (57, 'Sinop','Türkiye'), (58, 'Sivas', 'Türkiye'), (59, 'Tekirda˘g', 'Türkiye'), (60, 'Tokat', 'Türkiye'), (61, 'Trabzon', 'Türkiye'), (62, 'Tunceli', 'Türkiye'), (63, '¸Sanlıurfa', 'Türkiye'), (64, 'U¸sak', 'Türkiye'), (65, 'Van', 'Türkiye'), (66, 'Yozgat', 'Türkiye'), (67, 'Zonguldak', 'Türkiye'), (68, 'Aksaray', 'Türkiye'), (69, 'Bayburt', 'Türkiye'), (70, 'Karaman', 'Türkiye'), (71, 'Kırıkkale', 'Türkiye'), (72, 'Batman', 'Türkiye'), (73, '¸Sırnak', 'Türkiye'), (74, 'Bartın', 'Türkiye'), (75, 'Ardahan', 'Türkiye'), (76, 'I˘gdır', 'Türkiye'), (77, 'Yalova','Türkiye'), (78, 'Karabük', 'Türkiye'), (79, 'Kilis', 'Türkiye'), (80, 'Osmaniye', 'Türkiye'), (81, 'Düzce', 'Türkiye');

"""

cursor.execute(query) connection.commit()

Yerler Sınıfının Yapısı ve Kurucu Fonksiyonu

Yerleri temsil etmek için olu¸sturulan sınıfın yapısı elemanları ve kurucu fonksiyonu a¸sa˘gıdaki gibidir.

class Location:

def __init__(self, loc_id, city, country):

self.Loc_id = loc_id self.City = city self.Country = country

Yerler ˙Için Yazılan Fonksiyonlar

Bu varlı˘gın tablolarına ekleme, silme, güncelleme ve seçme i¸slemlerinin yapılabilmesi için gerekli olan kodlar projede “locations.py” dosyasının altındadır.

Yer Ekleme

Sitenin arayüzünden girilen bilgileri kullanarak “locations” tablosuna yeni yerin numara, ¸sehir ve ülke gibi ilgili bilgileri ekler. Bu ¸sekilde yeni bir yer eklenmi¸s olur. Bu i¸slem yazılan kod a¸sa˘gıdaki gibidir.

2.2. Kod 49

(54)

def add_location(self, id, city, country):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "INSERT INTO locations (loc_id,city,country) VALUES ('%s','%s','%s')" % (id,city,country) cursor.execute(query)

connection.commit() return

Bu ekleme fonksiyonu server.py’daki yerler ile ilgili olan kısımda ekleme i¸slemi yapılaca˘gı zaman kullanılır.

Yer Silme

Bu tablo di˘ger tablolarla ba˘glantılı oldu˘gu(dı¸s anahtar ve restrict özellikten dolayı) ve bu yerlerin sistemden sil- inmemesi istendi˘gi için arayüzde bu i¸slem yapılamamaktadır. Ancak yinede gerekli durumlarda kullanılabilir dü¸süncesiyle bu i¸slem içinde kod yazılmı¸stır. Bu koda göre id de˘gerine göre silme i¸slemi yapılır.

def delete_location(self, id):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "DELETE FROM locations WHERE loc_id = '%s'" % (id) cursor.execute(query)

connection.commit() return

Yer Güncelle

Bu tablo di˘ger tablolarla ba˘glantılı oldu˘gu(dı¸s anahtar ve restrict özellikten dolayı)için arayüzde bu i¸slem yapıla- mamaktadır. Ancak yinede gerekli durumlarda kullanılabilir dü¸süncesiyle bu i¸slem içinde kod yazılmı¸stır.

def update_location(self, id, city, country):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "UPDATE locations SET loc_id= '%s', city= '%s', country='%s' WHERE id = '%d'" % (id,city,country,id) cursor.execute(query)

connection.commit() return

Yer Seçme

Arayüzde tüm yerleri listelemek için kullanılmı¸stır. Kodu a¸sa˘gıdaki gibidir.

def get_locationlist(self):

with dbapi2.connect(self.cp) as connection:

cursor = connection.cursor()

query = "SELECT loc_id, city, country FROM locations"

cursor.execute(query) rows = cursor.fetchall() return rows

Hata Sayfası

E˘ger kullanıcı seçme gibi i¸slemlerde yanlı¸s yada sistemde olmayan veriler girerse “internal server error” hatası yerine bu hazırlanan sayfanın görünmesi sa˘glandı. Bunun için bu ko¸sula uygun durumlar belirlenerek server.py dosyasında gerekli yerlerde yönlendirmeler yapıldı. Örnek kullanım yerleri a¸sa˘gıda gösterilmi¸stir.

¸Sirketler için:

Referanslar

Benzer Belgeler

Dedeağaç Limanı’nın yeniden düzenlenmesi de Edirne Vilayeti’nde ekonominin canlanması için mahallî idarenin Babıâli’ye sunduğu öneriler arasında yer almaktaydı.

Bu sistemde do˘ gru y¨ onlendirme oldu˘ gunda da hasta kayıt ve resmi evraklarda 0.20 olasılıkla eksiklikler g¨ ozlenmekte bu da bekleme s¨ uresini 12 dk.. kısaltmak yerine sadece

Data sayısının çok olduğu durumlarda her bir veriye yeni bir değişken tanımlamak ya da aynı verilerin tekrardan kullanılması durumlarında

(Evcil hayvanlar ölü doğar ya da yaşamın ilk birkaç haftasında böbrek yetersizliği sonucu ölür. Makroskobik olarak böbrekler büyük ve solgun

Beer-Lambert yasas¬ bir noktadaki ¬¸ s¬n ¸ siddetinin yer de¼ gi¸ skenine göre de¼ gi¸ sim oran¬n¬n, mevcut ¬¸ s¬n ¸ siddetiyle orant¬l¬oldu¼ gunu ifade

İlginç bir şekilde, CaM kinaz tarafından fosforlu olan transkripsiyon faktörlerinin bir (daha önce anlatıldığı gibi) CREB Bu fosforilasyon, Ca 2+ ve

nan tek merkezde n bildirilen bifurkasyon stenti seri - si içinde en umut vereni Chevalie r ve arkadaş larına (7) a it olan olma sına rağmen 50 olguluk seride de birden

[r]