|
Öğ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
- 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
Öğ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):
Şekil 10: Proje planı ve uygulama takvimi (Gantt şeması)
Kaynakça
|
|