PGerçekleştirim Belgesi

 

Kongre Yönetim Sistemi

 

Mehmet Turan
Özgeçmiş

M. Sertaç Keleş
Özgeçmiş

 

Gerçekleştirim Belgesi

 

Yazılım Geliştirme Projesi

Bilgi Teknolojileri Sertifika Programı

İDEA: ODTÜ Sanal Kampüsü
  

 

25 Haziran 2004



Öz

Gerçekleştirim evresinde daha önce teslim edilmiş analiz ve tasarım belgelerine mümkün olduğunca bağlı kalınmaya çalışılarak proje kodlanmış ve çalışır hale getirilmiştir. Gerçekleştirme sonucunda ortaya çıkan sorunlar, tasarımdan sapmalar ve nedenleri, karşılaşılan sorunlar için düşünülen ve uygulanan çözümler incelenip bu belgede sunulmuştur.

Karşılaşılan Sorunlar ve Uygulanan Çözümler

Bu evrede karşılaşılan sorunlar ve uygulanan çözümler teklif aşamasında sunulan amacı etkileyecek düzeyde olmamıştır. Tasarım ve analiz evrelerinde yapılan bazı eksiklik ve yanlışlıklar giderilmiş, projede tamamlanmaya çalışılan programın daha çok esas programın bir  demo versiyonu olduğu göz önünde tutularak proje teklif aşamasında sunulan birkaç ufak özelliğin kodlamada kolaylık olması amacı ile değiştirilmesine karar verilmiştir. Bu değişiklikler ana hatlarıyla şöyledir:

  • Tasarımda verilen "kullanıcı" adlı kullanıcı tipine, karışıklık olmaması nedeniyle "normal" ismi verilmiştir.

  • Tasarımda verilen veritabanında yer alan kullanıcı tablosuna "activated" özelliği daha eklenmiştir. Bu üye alımlarında üye aktivite işlemleri için gereklidir ve tasarım esansında gözden kaçmıştır.

  • Veritabanında tasarım belgesinde sunulan "yetki seviyesindeki sayfalar" tablosu çıkartılmıştır. Bunun nedeni yetki sayfasındaki sayfaların kullanıcı tiplerine göre gösterimi sayfa içinde linklerle yapılmasıdır.

  • Veritabanındaki "bildiri" tablosundaki sayı tutan "Hakem No" ve "Yazar No" özellikleri, isimlerini tutan "hakem" ve "yazar_isim" özellikleri ile değiştirilmiştir. Bunun nedeni sistem yöneticisinin sorgu esnasında bu kişilerin direk isimlerini çağırması gerekliliğidir. Aslında tasarım belgesinde verilen format yapıya daha uygun gözükse de ikinci seçenek tercih edilmiştir.

  • Teklif ve tasarım aşamasında hakem-bildiri ilişkisi M-N olarak düşünülmüş ve sunulmuştur. Ancak programın demo olduğu göz önüne alınarak kolaylık açısından bu ilişki 1-1 olarak düzenlenmiştir.

  • Programın en son halinde kullanıcılar delege olarak birden fazla kayıt yaptırabilmekte, yazarlar ise birden fazla bildiri gönderebilmektedirler. Programın bu eksikliği farkedilmiş, ancak yine programı en basit haliyle sunmak amaç güdüldüğünden bu eksiklik ile ilgili bir çözüm düşünülmüş ve üretilmiş, ancak program sunucuya yüklendiği için çözüm gerçekleştirilememiştir. Bunun için başka bir sürüm çıkartılması düşünülmektedir.

  • Bundan önceki belgelerde yer alan yöneticinin kongre için bir deadline tarihi belirlemesi özelliği değiştirilmiştir. Yönetici bunu programa aslında girmeli ve bu özellik otomatik olarak çalışmalı ve kullanıcılar bu tarihten sonra programa hiçbir kayıt yaptıramamalıdır. Bu özellik şu anki sürüm içerisinde yoktur fakat yönetici bunu siteye erişimi açarak veya kapayarak yapabilmektedir. Bu özellik istenirse bir sonraki sürümde eklenecektir.

  • Tasarım belgesinde sunulan siteye kayıt olma arayüzüne kullanıcı tipi seçeneği eklenmiştir. Kullanıcılar siteye "Normal" veya "Yazar" kullanıcı tipleriyle kayıt olabilmektedirler. Hakemler ise yönetici tarafından belirlenir. Ama hakemler de siteye daha önce bu iki kullanıcı tipi içerisinden biri seçip kayıt olmalıdırlar.

  • Tasarım aşamasında sunulan kullanıcı sil ve hakem ata arayüzleri değiştirilmiştir. Güvenlik nedeniyle kullanıcıların şifrelerinin sistem yöneticisi tarafindan arayüzde görülmesi sakıncalı bulunmuş ve bu özellik kaldırılmıştır. Tüm arayüzlerin son halleri aşağıda yazılım bileşenleri başlığı altında verilmiştir.

  • Veritabanında tüm tarih tutan değişkenler tasarım belgesinde "date" tipi ile verilmiştir. Tarih formatının uygun olması açısından bu özellikler "varchar" ile değiştirilmiş ve bunun için  php'nin date() fonksiyonu kullanılmıştır. Bu nedenle tarihler şu haliyle veritabanına ingilizce olarak yazılmakta ve kullanıcılar tarafından programda bu haliyle görülmektedir.

  • Tasarım belgesinde verilen veritabanındaki tüm tabloların birçok özelliklerinin "field"ları herhangi bir sorun çıkmaması için arttırılmıştır.

  • Programa kullanıcı giriş sayfasından ulaşılabilecek bir "Şifremi Unuttum" modülü ve kayıt olurken gerekli "Aktivasyon" modülü eklenmiştir.

Yazılımın Bileşenleri ve Görevleri

  Veritabanı Yapısı

Tasarım belgesinde verilen veritabanı tasarımına genel hatlarıyla bağlı kalınmış ancak, programın kolay kodlanması için yukarıda verilen değişikler yapılmıştır.

'kullanici' tablosu

CREATE TABLE `kullanici` (
`No` INT( 4 ) NOT NULL AUTO_INCREMENT ,
`kullanici_adi` VARCHAR( 50 ) NOT NULL ,
`sifre` VARCHAR( 30 ) NOT NULL ,
`adi_soyadi` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
`yetki_seviyesi` VARCHAR( 15 ) DEFAULT 'Normal' NOT NULL ,
activated enum('0','1') NOT NULL default '0',
PRIMARY KEY ( `No` ) ,
UNIQUE (
`kullanici_adi`,`email`
)
) TYPE = MYISAM ;


'delegelik' tablosu

CREATE TABLE `delegelik` (

`No` INT( 4 ) NOT NULL AUTO_INCREMENT ,
`adi_soyadi` VARCHAR( 50 ) NOT NULL ,
`yas` INT( 2 ) NOT NULL ,
`adres` VARCHAR( 100 ) NOT NULL ,
`tel_no` VARCHAR( 20 ) NOT NULL ,
`firma` VARCHAR( 50 ) NOT NULL ,
`meslek` VARCHAR( 30 ) ,
`kalacagi_yer` VARCHAR( 50 ) ,
`ulasim` VARCHAR( 25 ) ,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `No` ) ,
UNIQUE (
`email`,`adi_soyadi`
)
) TYPE = MYISAM ;

 

'bildiri' tablosu


CREATE TABLE `bildiri` (

`No` INT( 4 ) NOT NULL AUTO_INCREMENT ,
`baslik` VARCHAR( 100 ) NOT NULL ,
`kategori` VARCHAR( 50 ) NOT NULL ,
`yazar_isim` VARCHAR( 50 ) NOT NULL ,
`govde` TEXT NOT NULL ,
`gonderilme_tarihi` VARCHAR( 50 ) NOT NULL ,
`son_duzenlenme_tarihi` VARCHAR( 50 ) NOT NULL default '0',
`hakem` VARCHAR( 50 ) default '0',
`durum` INT( 2 ) NOT NULL default '0',
PRIMARY KEY ( `No` )
) TYPE = MYISAM ;

 

Modüller

Tüm modüllerden kesitler, arayüzler "Yazılımdan Kesitler" başlığı altında verilmiştir. Bu bölümde modüllerin işlevlerini ve modüllerin kullandıkları bazı özel fonksiyon ve metotları göreceğiz. Modüllerin kodları tam anlamıyla verilmemiştir. Ancak tüm dosyalar sunucuda /proje/KYS/ dizininde çalışır halde mevcuttur.

 

  • Veritabanı modülü (db.php)

Veritabanı sınıfı tasarımda sunulan şekli ile gerçekleştirilmiştir. Yazılımın belkemiğini oluşturmaktadır. Veritabanı sınıfı, veritabanına bağlanmaya ihtiyaç duyan her modülün başında

include 'db.php';

satırı ile çağırılmaktadır.

$dbhost = 'localhost';
$dbusername = ******';
$dbpasswd = '******';
$database_name = '******';

$connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd")
or die ("Couldn't connect to server.");

$db = mysql_select_db("$database_name", $connection)
or die("Couldn't select database.");

satırları ile db.php modülü veritabanına bağlanmaktadır.

Her modülde db.php modülü kullanıldıktan sonra

mysql_close($connection);

satırı ile bağlantı kapatılmaktadır.

  • Menü modülü (menu.php)

Programa giriş yapıldıktan sonra ekrana çıkan sayfa 3 frame'den oluşmaktadır. Üst frame "top.html" ismindedir ve her kullanıcı için statiktir. Sağ frame "menu.php"dir ve her kullanıcı tipi için değişmektedir. Kullanıcının yetki seviyesi $_SESSION['yetki_seviyesi']  değişkeni kontrol edilerek kullanıcının yetki seviyesinde sayfaların linkleri menü penceresi üstünde bastırılır. Menü penceresindeki seçenekler seçildiği takdirde açılan modüller orta göbekteki pencerede açılacaktır.

  • Kullanıcı Giriş modülü (uye_kontrol.php)

Programın anasayfa ismi "index.php"dir. Bu modüldeki bir header() fonksiyonuyla kullanıcı içinde kullanıcı girişi ile ilgili bir form yer alan "giris.html" sayfasına yönlendirilir. Burada girilen bilgiler "POST" metodu ile "uye_kontrol.php" modülüne gönderilerek veritabanına bağlanılarak kontrol edilir ve bir hata varsa hata bastırılır, hata yoksa siteye giriş gerçekleştirilir..

  • Kullanıcı Kayıt modülü (kayit.php)

Ziyaretçi siteye üye olmak isterse "giris.html" sayfasından bir link ile "kayit.html" sayfasına ulaşır. Burada kayıt bilgilerini içeren bir form vardır ve bu formdaki bilgiler yine "POST" metodu ile "kayit.php" modülüne gönderilir. Burada gerekli kontroller yapılır. Eğer bir hata mevcutsa hata ekrana bastırılır ve kaydın tekrar yapılması istenir. Bir hata mevcut değilse "POST" metodu ile kaydedilen değişkenlerdeki bilgiler kullanılarak kayıt yaptıran ziyaretçiye içinde aktifleştirme modülünün linki yer alan bir e-mail gönderilir. Diğer bilgileri veritabanına eklenir.

  • Aktivasyon modülü (activate.php)

Ziyaretçiye giden maildeki link ile bu modüle ulaşılır. $_REQUEST ile kaydedilen değişkenler kullanılarak veritabanındaki kullanıcıya ait tablo ve satır bulunur, bu sütundaki "activated" özelliği "1" olarak değiştirilir. Böylece üyelik aktifleştirilmiş olur. Üye siteye giriş yapma hakkı almıştır.

  • Kongre Bilgisi, Delege ve Bildiri Listesi Gösterme modülü (kongrebilgi.html, delege_listesi.php, bildiri_listesi.php)

Yönetici dışındaki kullanıcıların statik kongre bilgileri, statik olmayan kayıtlı delege ve bildirileri görmek için kullandığı bir modüldür. Yönetici dışındaki tüm kullanıcılar için ortaktır. Veritabanına bağlanarak bildiri ve delegelik tablolarındaki bazı bilgileri ekrana bastırır.

  • Delege Kayıt modülü (delege_form.php, delege_kontrol.php)

Normal kullanıcı, yazar ve hakem içindir. Kullanıcının kongreye delege olarak kayıt yaptırmak için kullanacağı modüldür. Bir form doldurularak delege_kontrol.php sayfasına gönderilir. Burada programda herhangi bir çelişki çıkmaması açısından kullanıcının siteye kayıt yaptırırken girdiği adı-soyadı ve e-mail adresi otomatik olarak form içinde yer alacaktır. Gönderilen bilgiler kontrol edilerek hata yoksa veritabanına işlenir.

  • Bildiri Gönderme modülü (bildiri_form.php, bildiri_kontrol.php)

Yazar içindir. Kullanıcının kongreye bildiri göndermesi için kullanacağı modüldür. Bir form doldurularak bildiri_kontrol.php sayfasına gönderilir. Burada programda herhangi bir çelişki çıkmaması açısından kullanıcının siteye kayıt yaptırırken girdiği adı-soyadı otomatik olarak form içindeki "yazar adı" bölgesine konulur. Gönderilen bilgiler kontrol edilerek hata yoksa gönderilen bilgiler "gönderilme tarihi" ile birlikte veritabanına işlenir. Gönderilen bildirilerin "hakem" ve "son düzenlenme tarihi" özellikleri default olarak veritabanına "0" değeri ile yazılır.

  • Bildiri Düzenleme modülü (bildiri_duzenle.php, bildiri_duzenle_kontrol.php)

Yazar içindir. Kullanıcının gönderdiği bildiriyi düzenlemesi için kullanacağı modüldür. Kullanıcıya ait bildiri veritabanından çekilerek aynı form içine bastırılır. Kullanıcı gerekli düzeltmeleri yaparak formu tekrar gönderir ve hata yoksa bilgiler tekrar veritabanına yazılır. Bu modülde veritabanına ayrıca "son düzenlenme tarihi" özelliği de eklenir.

  • Onay Verme modülü (onay.php, onay_tamamla.php)

Yönetici bir kullanıcıyı hakem olarak bir bildiriye atarsa o kullanıcı hakem kullanıcı tipini alır ve bildiriye onay verme hakkına erişir. Burada hakemin yetkisindeki bildiri detayları ekrana basılarak kullanıcıdan onay ya da red verme işlemini yapması istenir. Bilgi "onay_tamamla.php" ye gönderilerek bildiri tablosundaki "durum" özelliğine gerekli bilgi atanır. Bildirilerin "durum" özelliği default olarak "0" dır ve bu bekleme durumuna karşılık olarak gelmektedir. "1" onay, "2" reddi belirtmektedir.

  • Çıkış modülü (cikis.php)

Sistemden çıkmak için kullanılır. Çıkma işlemi onaylanırsa session_destroy() ile oturum kapatılırak kullanıcı sistem dışına çıkartılır.

  • Kullanıcı, Delege ve Bildiri Listesi Göstermesi modülleri (kullanici_goster.php, delege_liste_yonetici.php, bildiri_liste_yonetici.php)

Yöneticinin kullanabileceği modüllerdir. Kayıtlı kullanıcıların, delegelerin, bildirilerin listesini veritabanından çekerek ekrana bastırır. Diğer kullanıcıların kullandığı listeleme modüllerinden farklı olan tarafı yöneticinin delege veya bildiri numarası girerek istediği delege veya bildirinin tüm kayıtlı bilgilerini görebilmesidir.

  • Hakem Atama modülü (hakem_ata.php, hakemata_tamamla.php)

Yöneticinin bir kullanıcıyı hakem olarak bir bildiriye atamak için kullandığı modüldür. Kullanıcı ve bildiri listeleri ekrana bastırılır ve yöneticiden hangi numaralı kullanıcıyı hangi numaralı bildiriye hakem olarak atamak istediği bilgileri istenir. Bu bilgiler "hakemata_tamamla.php" sayfasına gönderilerek işlem gerçekleştirilir ve veritabanına işlenir.

  • Kullanıcı Silme modülü (kullanici_sil.php, kullanicisil_tamamla.php)

Yöneticinin bir kullanıcıyı silmek için kullanacağı modüldür. Kullanıcı isim ve numaraları ekrana kullanıcı adlarıyla birlikte bastırılır ve yöneticiden silmek istediği kullanıcın numarası istenir. Bilgi "kullanicisil_tamamla.php" sayfasına gönderilerek veritabanında işlem gerçekleştirilir.

  • Şifre Unuttum modülü (sifre.php)

Bir kullanıcı eğer şifresini unutursa bu modülü kullanır. Giriş sayfasından bu modüle ulaşarak e-mail adresini gerekli forma yazarak gönderir. "sifre.php" modülüne gelen bilgi kullanılarak veritabanında ilgili kullanıcıya ait şifre çekilerek kullanıcının e-mail adresine mail() fonksiyonu kullanılarak gönderilir.

 

Yazılımdan Kesitler

Yazılım çalışır halde http://idea.metu.edu.tr/~s07033/proje/KYS/  adresinden incelenebilir. Yazılımın incelenebilmesi amacıyla test kullanıcıları oluşturulmuştur.

 

Aşağıda http://idea.metu.edu.tr/~s07033/proje/KYS/ girildiğinde ekrana çıkan arayüz görülmektedir. Giriş arayüzü aşağıdaki gibidir.

 

Aşağıda kayıt arayüzü görülmektedir.

Aşağıda sisteme yönetici olarak giriş yapıldığı zaman alınacak görüntü yer almaktadır. Orta göbek pencerede kullanıcının ismi ve kullanıcı tipi bastırılmaktadır. Solda menü penceresi ve üstteki statik pencere gözükmektedir.

 

Tüm bu arayüz ve çıktılara programın adresi izlenerek ulaşılabilir. Bütün çıktıları bu belgede  vermenin mümkün olmaması nedeniyle yukarıdaki 3 resim örnek olarak seçilmiştir.

 

Kullanıcı Kılavuzu

Kullanıcı kılavuzuna burayı tıklayarak ulaşabilirsiniz.

 

Kaynaklar

- www.php.net

- www.phpfreaks.com

- www.mysql.com

- çeşitli kongre şirket sayfaları