PTasarım Belgesi  
 

 

 

Öğrenci Bilgi Sistemi

 

Duygu YİĞİT
Betül SOFUOĞLU
Çigdem ÖZAKIN
Nilay SAHIN

 

Tasarım Belgesi

Yazılım Geliştirme Projesi

Bilgi Teknolojileri Sertifika Programı

İDEA: ODTÜ Sanal Kampüsü
  

 

Tarih
25 Haziran 2009


 


Öz

Projemizin bu aşamasında veri tabanı ve arayüz tasarımı yapılmıştır. Proje analiz belgesinde sunulan use case diyagramlarına bağlı kalınarak iş birliği diyagramları oluşturulmuştur.

Kapsam

   Başlıca kullanıcı (müşteri) isterleri ve hedefler:

Yazılımın hedefi, web sitesinin kullanıcı tarafından kolay anlaşılabilir ve kullanılabilir şekilde tasarlanmasıdır. Tasarımda, özellikle başlıca müşteri isteri olan öğrenci,veli ve öğretmenin aynı mekanda bulunma zorluluğunun ortadan kaldırılması, zaman ve kaynak tasarrufu sağlanması amaçlanmaktadır. Ayrıca,tasarlanan arayüzler aracılığıyla kullanıcıların yetkileri arasında bir farklılaştırma oluşturulması hedeflenmektedir.

   Tasarım sınırlandırmaları:

Projede, açık kaynaklı olması, MySQL ile ortaya koyduğu yüksek performans ve Linux uyumluluğu nedeni ile PHP (Hypertext Preprocessor) dili tercih edilmiştir. PHP, sunucu tarafında çalışan (server side) ve HTML içine yerleştirme prensibine dayanan bir betik (script) dilidir. Ancak, bu dilin özellikleri nedeniyle ortaya çıkan sınırlılık, görsel tasarımının kodlama ile eşanlı olarak gerçekleştirilmesi zorunluluğudur. Bu nedenle, kodlama aşamasına gelinmeden görsel tasarım mümkün olmamış, gerçekleştirim evresinde gerekli olan arayüzlerin tanımları, değişkenler, fonksiyonlar, parametreler ve tipleri belirlenmeye çalışılmıştır.

Mimari Tasarım

Şekil 1: İşbirliği diyagramı (kullanım örneği -- sistem yöneticisi)

Şekil 2: İşbirliği diyagramı  (kullanım örneği -- öğretmen)

Şekil 3: İşbirliği diyagramı (kullanım örneği -- öğrenci)

Şekil 4: İşbirliği diyagramı  (kullanım örneği -- veli)

Şekil 6: Class diyagramı

Veri Tasarımı

Veri tasarımında nesne yönelimli strateji benimsenmiş ve Linux uyumlu olması nedeni ile MySQL Veri Tabanı Sunucusunda uygulanması planlanmıştır.

Şekil 7: Entity Relationship (ER) Diagramı

  Veri Sözlüğü

Dosya adı

Alan Adı Veri Tipi Uzunluk Açıklama
kullanıcılar ad varchar 20 kullanıcı adı
  soyad varchar 20 kullanıcı soyadı
  kullanıcı_tipi int 4 yetki seviyesi
  kullanici_no varchar   kullanıcı no
  sifre int   giriş şifresi
  index int   index
ögretmen ögretmen_no varchar   öğretmen no
  ders_sube_kodu varchar   şube kodu
ogrenci ogrenci_no varchar   öğrenci no
  veli_no varchar   öğrencinin veli numarası
  sinif_no varchar   öğrencinin okuduğu sınıf
  forum_puan int   öğrencinin puanı
veli veli_no varchar   velinin giriş numarası
forum_baslik soru_id int   soru numarası
  kullanici_no varchar   kullanıcının numarası
  ders_kodu int   dersin kodu
  baslik tinytext 50 sorunun başlığı
  baslik_icerik longtext 200 içerik
  tarih date   soru tarihi
  tarih date   soru tarihi
forum_cevap cevap_id int   cevap no
  kullanici_no varchar   kullanıcı no
  soru_id int   cevap verilen soru no
  cevap_icerik longtext   içerik
  ogrenci_onay int 4 öğrenci onay kodu
  ogretmen_onay int 4 öğretmen onay kodu
  tarih date   cevap verilen tarih
ders ders_sube_kodu varchar   ders&şube kodu
  ders_adi varchar 20 dersin adı
  ders_kodu int   ders kodu
alistirma alistirma_no int   aliştirma no
  soru varchar   aliştirma sorusu
  a varchar   a şıkkı
  b varchar   b şıkkı
  c varchar   c şıkkı
  d varchar   d şıkkı
  dogru_cevap varchar   doğru cevap
  ders_sube_kodu varchar   aliştirmanın dersi
odev odev_no int   ödev no
  odev_icerik longtext   ödev içerik
  ders_sube_kodu varchar   ödevin dersi
sinif ders_sube_kodu varchar   şube kodu
  sinif_no varchar   sınıf no
notlar ogrenci_no varchar   öğrenci no
  ders_kodu int   ders no
  ogretmen_no varchar   öğretmen no
  odev_notlari int   ödev not
  sinav_notlari int   sınav notları
  devamsizlik int   devamsızlık bilgisi
mesaj mesaj_id int   mesaj numarası
  kimden_no varchar   gönderen no
  kime_no varchar   alıcı no
  konu tinytext 20 mesaj başlığı
  mesaj_icerik longtext 100 mesaj içerik
  okundu_kodu int 4 okundu/okunmadı iletisi
  tarih date   mesaj tarihi

Veri yapısına ilişkin ilişki diyagramı Şekil 8'de sunulmaktadır.

Arayüz Tasarımı

Arayüz tasarımında kullanılacak nesne ve modüller şunlardır:

  • Veritabanı nesnesi (tüm veritabanı işlemleri) -- "database.php"
    • Değişkenler:
      • $vrt_sunucu: stirng (MySQL sunucu adı)
      • $vrt_kullanici: string (MySQL kullanıcı adı)
      • $vrt_sifre: string (kullanıcı şifresi)
      • $baglanti_no: int (bağlantı numarası)
      • $database: string (veritabanı adı)
      • $sorgu: string (sorgu dizgisi)
      • $sorgu_no: int (birden fazla sorguyu ayırabilmek için gerekli)
    • Fonksiyonlar
      • function database(): constructor
      • function SelectHost($v_host), veritabanı seçilmesi
      • fuction SelectUser($username, $password), kullanıcı seçilmesi
      • function SelectDatabase ($database), veritabanı seçilmesi
      • function Connect(), veritabanına bağlantı kurulması
      • fuction Close(), bağlantının kesilmesi
      • function Query ($query), SQL sorgusu
      • function TotalRows(), toplam sıra sayısının alınması
      • function Get_Res(), sorgu sonuçlarının object formunda sıralar halinde alınması
      • function rec_no(), INSERT ile yapılan kayıt numarasının alınması
      • function stop($error_message), hata durumunda işlemin durdurulması (hata giderme--debugging--amacıyla kullanılmıştır. Proje tamamlandığında güvenlik nedeniyle hata mesajı verilmeyecektir.)

       

  • Tüm kullanıcılar için anasayfa-- "anasayfa.php"
    • Değişkenler
      • $kullanici_adi: string (sisteme giriş kullanıcı adı)
      • $kullanici_sifre: string (sisteme giriş için şifre)
      • $yetki_seviyesi: int (sistem yöneticisi=0, öğretmen=1, öğrenci=2, veli=3)
    • Fonksiyonlar
      • function yetki_seviyesi_al($kullanici_adi): sisteme giriş yapanın seviyesinin belirlenmesi
      • function ogretmen_login($kullanici_adi, $kullanici_sifre): öğretmen girişinin yapılması
      • function ogrenci_login($kullanici_adi, $kullanici_sifre): öğrenci girişinin yapılması
      • function veli_login($kullanici_adi, $kullanici_sifre): veli girişinin yapılması
      • function admin_login($kullanici_adi, $kullanici_sifre): sistem yöneticisinin girişinin yapılması

       

  • Ogretmen nesnesi -- "ogretmen.php"(Öğretmen yetkisiyle giriş yapıldığındaki sayfa)
    • Değişkenler
      • $ogretmen_no: string (öğretmenin numarası)
      • $ders_kodu: int (öğretmenin verdiği dersler)
      • $ders_sube_kodu: int (öğretmenin girdiği ders ve sınıfı aynı anda gösterir.)
      • $sinif_no: int (öğretmenin girdiği sınıf şubesi)
    • Fonksiyonlar
      • function sinif_listele(): öğretmenin girdiği sınıf şubeleri listelenir. Menu açılır.
      • function sinif_goster($sinif_no): istenilen sınıf şubesi gösterilir.
      • function ders_listele(): öğretmenin girdiği dersler listelenir. Menu açılır.
      • function ders_goster($ders_sube_kodu): öğretmenin girdiği dersler gösterilir.
      • function foruma_git(): forum sayfasi açılır.
      • function profile_git (): profilini görüntüler

       

  • Sınıf nesnesi -- "sinif.php" (sinif_goster($sinif_no) fonksiyonuyla bu sayfa açılır.)
    • Değişkenler
      • $ogretmen_no:int
      • $ogrenci_no: int (öğrenci numarası)
      • $ogrenci_adi: string
      • $ogrenci_soyadi: string
      • $ders_sube_kodu: int
      • $sinav_notu: int
      • $kacinci_sinav: int (3 tane sınav varsa kaçıncı sınav olduğunu gösterir)
      • $odev_notu: int
      • $kacinci_odev:int (10 tane ödev varsa, kaçıncı ödev olduğunu gösterir.)
      • $ders_no: int (öğretmenin verdiği dersler)
      • $devamsizlik:int (öğrecinin devamsızlık bilgisi)
      • $yorum: string (öğretmen yorumu)
    • Fonksiyonlar
      • function ogrenci_listesi($sinif_no) ($sınıf_no daki bütün öğrenciler gösterilir-combo box)
      • function ders_listesi($sınıf_no, $ogretmen_no): ($sınıf_no’da $ogretmen_no’nun verdiği dersler gösterilir-combo box)
      • function odev_notu ekle($ders_no, $ogrenci_no, $odev_notu, $kacinci_odev)
      • function sinav_notu ekle($ders_no,$ogrenci_no, $sinav_notu, $kacinci_sinav)
      • function devamsizlik_ekle($ders_no,$ogrenci_no, $devamsizlik)
      • function yorum_ekle ($ders_no , $ogrenci_no, $yorum)
      • function submit() Yukardaki tüm fonksiyonlar (sorgular) çalışır

     

  • Dersler nesnesi -- "dersler.php"(ders_goster($ders_no) fonksiyonuyla bu sayfa açılır.)
    • Değişkenler
      • $ogretmen_no: object (öğretmen nesnesi)
      • $icerik: string (ders içeriği)
      • $ders_sube_kodu:string
      • $ödev: string
      • $alistirma: string
    • Fonksiyonlar
      • function icerik_ekle($ders_kodu,$icerik)
      • function odev_ekle($ders_sube_kodu,$odev)
      • function alistirma_ekle($ders_sube_kodu,$alistirma)
      • function submit() Yukardaki tüm fonksiyonlar (sorgular) çalışır

       

  • Forum giriş modülü -- "forum_giris.php"
    • Değişkenler
      • $db: object (veritabanı nesnesi)
      • $ders_kodu:int
      • $kullanıcı_no: string
    • Fonksiyonlar
      • ders_sec()

       

  • Forum anasayfa -- "forum_anasayfa.php"
    • Değişkenler
      • $db: object (veritabanı nesnesi)
      • $soru_id: int
      • $baslik_id: int
      • $kullanıcı_no: string
      • $baslik: string
      • $baslik_icerik: string
      • $baslik_yaratan_no: int
      • $baslik_yaratan: string
      • $son cevap yazan_no: int
      • $son cevap yazan: string
      • $yetki_seviyesi: int
    • $son cevap_tarihi: date
  • Fonksiyonlar
    • baslikyarat()
    • baslik_goster(baslik_id)
    •  

  • Forum anasayfa -- "forum_baslik.php(baslik_yarat($soru_id))"
    • Değişkenler
      • $db: object (veritabanı nesnesi)
      • $soru_id: int
      • $kullanici_no: string
      • baslik:string (yeni başlık konusu)
      • baslik_icerik: string (yeni başlığın içeriği)
      • $yetki_seviyesi: int
      • $kullanici_forum_puani: int (sadece öğrenci için)
  • Fonksiyonlar
    • cevap_bilgi_goster($soru_id): o başlıktaki tüm cevapları, yazıldığı tarihleri, cevap yazani gösterir.
    • redver($kullanıci_no)
    • onayver($kullanici_no)
    • cevap_yarat($kullanici_no, $soru_id, $cevap_id)
    • puan_azalt($kullanici_no, $yetki_seviyesi)
  •  

  • Forum anasayfa -- "forum_baslik.php(baslik_goster($soru_id))"
    • Değişkenler
      • $db: object (veritabanı nesnesi)
      • $soru_id: int
      • $cevap_id: int
      • $kullanici_no: string
      • baslik:string
      • baslik_icerik
      • $yetki_seviyesi: int
  • Fonksiyonlar
    • cevap_bilgi_goster($soru_id): o başlıktaki tüm cevapları, yazıldığı tarihleri, cevap yazani gösterir.
    • redver($kullanıci_no)
    • onayver($kullanici_no)
    • cevap_yarat($kullanici_no, $soru_id, $cevap_id)
  •  

  • Forum cevap modülü -- "forum_cevap.php"
    • Değişkenler
      • $db: object (veritabanı nesnesi)
      • $soru_id: int
      • $cevap_id: int
      • $kullanıcı_no: string
      • $cevap_icerik: string
      • $ogretmen_onay: int
      • $ogrenci_onay: int
    • Fonksiyonlar
      • cevapyaz()
      • submit()
    •  

  • Öğrenci nesnesi-- "ogrenci.php"(Öğrenci yetkisiyle giriş yapıldığındaki sayfa)
    • Değişkenler
      • $ogrenci_no: string (öğrencinin numarası)
      • $ders_kodu: int (öğrencinin aldığı dersler)
      • $ders_sube_kodu: int (öğrencinin hangi sınıfta hangi dersi aldığını aynı anda gösterir.)
      • $sinif_no: int (öğrencinin hangi sınıfta olduğunu gösterir)
    • Fonksiyonlar
      • function profile_git (öğrenci_no): profilini görüntüler
      • function ders_listele(): öğrencinin aldığı dersler listelenir. Menu açılır.
      • function ders_goster($ders_sube_kodu): öğrencinin aldığı dersler gösterilir.
      • function rapor_goruntule(): öğretmenin gönderdiği öğrenci raporunu görüntüler.
      • function sinif_listele(): öğrenci başka sınıflardan birisine ulaşmak isterse sınıflar listelenir. Menu açılır.
      • function sinif_goster($sinif_no): istenilen sınıf şubesi gösterilir.
      • function foruma_git(): forum sayfasi açılır.

       

  • veli nesnesi -- "veli.php"(veli yetkisiyle giriş yapıldığındaki sayfa)
    • Değişkenler
      • $veli_no: string (öğrenci numarasının başına harf eklenerek elde edilen veli numarası)
      • $ogrenci_no: string (velisi olduğu öğrenci numarası)
    • Fonksiyonlar
      • function rapor_goruntule(): öğretmenin gönderdiği öğrenci raporunu görüntüler.
      • function profile_git (veli_no): profilini görüntüler
      • function mesaj_gonder(): öğretmen ile mesajlaşır

       

  • Sistem yöneticisi nesnesi-- "sistem_yoneticisi.php"(sistem yöneticisi yetkisiyle giriş yapıldığındaki sayfa)
    • Değişkenler
      • $kullanici_no: string (öğretmen,öğrenci veya veliye verilen numara)
      • $ogretmen_no: string (öğretmenin numarası)
      • $ogrenci_no: string (öğrencinin numarası)
      • $veli_no: string (velinin numarası)
      • $yetki_seviyesi: int (kullanıcıların yetki seviyesini ayırt eden numaralar)
      • $ders_kodu: int (sisteme eklediği ve sistemden çıkarttığı dersler)
      • $ders_sube_kodu: int (öğretmen ve öğrencityi bağladığı sınıf ve dersleri gösterir)
      • $sinif_no: int (öğretmenin girdiği sınıf şubesi)
    • Fonksiyonlar
      • function kayit_ekle(kullanıcı_no,yetki seviyesi): yetki seviyesiyle kullanıcı numaraları ilişkilendirilerek kayıt eklenir.
      • function kayit_sil(kullanıcı_no): kullanıcı silinir
      • function kayit_değiştir(kullanıcı_no): hatalı kayıtların düzeltilmesi
      • function veli_ogrenci(veli_no,öğrenci_no):veli yanlızca kendi çocuğuna bağlanır,onunla ilişkilendirilr.
      • function ders_sube_kodu olustur(ders_kodu,sınıf_no,ögretmen_no): hangi öğretmenin, hangi sınıfta hangi dersi verdiği belirlenir.
      • function sinif_olustur(öğrenci_no,ders_sube_kodu): öğrencileri sınıflara yerleştirir,aynı zamanda aldığı derslerle öğretmenleride belirlenmiş olur.
      • function sinif_listele(): tüm sınıf şubeleri listelenir. Menu açılır.
      • function sinif_goster($sinif_no): istenilen sınıf şubesi gösterilir.
      • function ders_ekle(ders_kodu): branşına göre ders eklenir.
      • function ders_listele(): tüm dersler listelenir. Menu açılır.
      • function ders_goster($ders_sube_kodu): tüm dersler gösterilir.
      • function foruma_git(): forum sayfasi açılır.
      • function duyuru_ekle(): anasayfaya duyurular,okulla ilgili bilgiler eklenir.

       

    • Proje Planı ve Uygulama Takvimi

      Gerçekleştirim (8 Haziran 2009 - 03 Temmuz 2009):

      • MySQL veritabanı sunucusunda veritabanının oluşturulması
      • Programlama

      Test (03 Temmuz 2009 - 07 Temmuz 2009 ):

      • Testlerin belirlenmesi
      • Testlerin gerçekleştirilmesi

      Sunum(11-12 Temmuz 2009):

      • Projenin sunumu

      Şekil 10: Proje planı ve uygulama takvimi (Gantt şeması)

       



      Kaynakça

  •