Professional Documents
Culture Documents
BİLGİSAYAR MÜHENDİSLİĞİ
YÜKSEK LİSANS PROGRAMI
DÖNEM PROJESİ
TBİL-TYBS-TİŞL-699
Hazırlayan
Kenan ÇETİNKAYA (0773G048)
Kenan.cetinkaya@sdu.edu.kz
ALMATI
Danışman
ŞUBAT 2009
İÇİNDEKİLER
1.3 – Ağ Ayarları
Bu projede, Linux üzerine Oracle veritabanı kurup, basit bir üniversite not otomasyon veritabanı hazırlayıp bu
veritabanına en hızlı ve kullanışlı bir web arayüzü ile interet yada intranet ortamında kullanıma sunmayı hedeflemiş
bulunmaktayım.
Bana gore en sağlam server+veritabanı ikilisi Suse Linux Enterprise Server 10sp2 üzerine kurulan Oracle11gR1 veri
tabanı.
Projemde Suse Linux Enterprise Server 10sp2 kurulumu ve gerekli olan bütün ayarlamalarla birlikte Oracle11gR1
kurulumu ve universite veri tabanı objelerinin eklenmesine, veri tabanını web sitesine dönüştüren ASPRunner 6.0
programının kullanımına kadar pek çok ayrıntılı bilgi verilmiştir.
1-Suse Linux Enterprise Server 10SP2 : (IP adresi : 192.168.0.1) Veritabanı için kullanılmıştır.
2-Windows Server 2003 :(IP Adresi : 192.168.0.4) Bu bilgisayarda ASP Runner 6.0 kurulmuş ve veritabanına bağlı
web sayfaları oluşturularak IIS(Internet Information Services) de yayınlanması sağlanmış yani web server olarak
kullanılmıştır.
Üniversite not otomasyon sistemi veri tabanı aşağıdaki şekilde görülen tablolardan, sorgulardan,trigger ve
fonksiyonlardan oluşmaktadır.
Bütüm bu işlemler web sayfası aracılığı ile yetkilendirilen dekan, dekan sekreteri ve hocalar tarafından girilir.Her bir
işlem için TIMELINE tablosunda bir zaman aralığı belirlenmiştir sadece o aralıkta bu işlemler gerçekleştirilir. Not
giriş tarihi geçtikten sonra web arayüzünden yada veritabanından DML komutlarıyla dahi olsa veri girişi yapılamaz.
1-Suse Linux Enterprise Server 10 SP2 ( SLES 10SP2 )Kurulumu
1.2.1-Hazırlamış olduğumuz SLES SP2 DVD yada CD' sini sürücüye yerleştirerek bilgisayarımızın CD sürücüden
açılmasını sağlıyoruz. Şekil-2'deki ekran görüntüsünde görüldüğü gibi “installatıon” seçeneğini seçerek Enter tuşuna
basıyoruz.
1.2.2-Şekil-3'de görüldüğü gibi “Start Installation and System” seçeneğini seçerek OK butonuna basıyoruz.
1.2.3- Dil seçeneğinden istediğimiz dili seçiyoruz(Şekil-4)
1.2.4- “Yes,I agree to licence Aggreement” seçeneğini seçerek “yes” butonuna basıyoruz.
1.2.5 – “New Installation” seçeneğini seçerel “Next” butonuna basıyoruz.
1.2.10- Açılış menüsünden Suse Linux Enterprise Server 10 SP2 seçeneğini seçiyoruz.
1.2.11- Donanım tanma işlemleri devam ediyor.
1.2.13- Bilgisayarımıza isim veriyoruz ve hangi domain altında çalışacaksa onu tanımlıyoruz.
1.2.14- Firewall altında bulunan SSH servisini açıyoruz ve “Next” butonuna basarak devam ediyoruz.
1.2.15-Ağda paylaşılan bir internet bağlantısı varsa bağlantının bu bilgisayarda çalışıp çalışmadığını test edebilirsiniz.
1.2.16-Bilgisayarımız Domain altında çalışacaksa Windows domain, LDAP yada NIS seçeneklerinden kullandığınız
domain türüne göre biri seçilir.
1.2.17 – Lokal bir kullanıcı için hesap açıyoruz. “Automatic Login” seçeneği ile bilgisayarımıza şifre gitrmeden bu
kullanıcı ile açılmasını sağlıyoruz.
1.2.18-Kurulum işlemlerini tamamlıyoruz ve bilgisayarımız kapanıp açılıyor. Suse Linux Enterprise Server kurulmuş
ve ilk oturumumuz açılmış oldu.
1.3 – Ağ Ayarları
Ekranımız sol alt tarafında bulunan Computer ikonuna tıkladığımızda açılan menüden YAST ikonuna tıklıyoruz.
Root şifresini girdikten sonra açılan Yast Control Center'dan Software menüsü içinden
2-Oracle 11gR1 Kurulumu
Oracle web sitesinden Linux için Oracle 11gR1 programını bilgisayarımıza indirioruz.
2.1.1-Kurulum Ön Hazırlıkları
2.1.1.1 - Masa üstüne sağ tıklayarak, open terminal 'ı seçip aşağıdaki komutlar ile “oracle” adiyla yeni bir kullanıcı ve
“dba” adıyla bir grup oluşturuyoruz.
Computer/Yast/Security and Users/User Management'dan oracle kullanıcısını seçerek edit butonuna basıyoruz.
Karşımıza çıkan pencerede “Disable User Login” seçeneğindeki sekmeyi kaldırıp Accept butonuna basarak
kulanıcımıza oturum açma iznini vermiş oluyoruz.
Aşağıdaki satırları /etc/sysctl.conf dosyasına ekliyoruz. Ekleme işlemi bittikten sonra dosyayı kaydedip çıkıyoruz ve
Terminal console'da sysctl -p komutunu çalıştırıyoruz ve ayarlarımız aktif olmuş oluyor.
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6553600
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
• unixODBC-devel-2.2.11
• sysstat-6.0.2
Ekranımızın sol alt köşesindeki Computer butonuna bastığımızda açılan menüden YAST/Software/Software
Management linkine tıklıyoruz ve yukarıdaki paketleri kuruyoruz.
2.1.1.5 – Kurulumu Başlatma
Mevcut oturumumuzu kapatıp “oracle” adlı kullanıcıyla yeni bir oturum açıyoruz.
Linux_11gR1_database_1013.zip dosyasina tiklarak Archive Manager ile masaüsüne Extract komutuyla açıyoruz.
Masaüstüne “database” adlı dizinine açılır.
Veritabanımızın yüklü olduğu bilgisayarda Firefox web tarayıcısını açıyoruz ve addres kısmına
https://localhost:115//em yazarak Veritabani Web Kontrol Panelini açıyoruz. System ve şifresini yazarak
bağlanıyoruz.
4- SQLDeveloper Programının Kurulumu ve Veritabanı Yönetimi
Veritabanı kurulumu bittikten sonra veritabanı üzerindeki çalışmalarımızı SQLDeveloper programı ile yapacağız.
Database üzerinde çalışacağımız platform linux yada windows olabilir.SQLDeveloper programının windows ve Linux
versiyonları mevcuttur.Ben Linux (Mandriva 2009) ortamında veritabanını hazırlayacağım.
Oracle sitesinden indirdiğim sqldeveloper-1.5.54.40-1.noarch.rpm dosyasına sağ tıklayarak install software ile
çalıştırıyorum. Kurulum işlemi bittikten sonra console ile programı çalıştırıyourm.
Şuanda kullandığımız bilgisayarın IP adresi 192.168.0.6, veritabanımızın bulunduğu biigisayarın IP adresi
192.168.0.4 dür.
Şimdi Connection üzerinde sağ tıklayarak yeni bir connectin açıp veritabanımıza bağlanacağız.
Port :1521
USERS
Kullanıcı Bilgilerinin tutulduğu tablodur. AUTHORITY_ID ile sisteme bağlanan kullanıcılara farklı yetkiler
verebilmek için konulmuştur.
Authorıty_id = -1 Yönetici
Authorıty_id = 1 Dekanlar
Authorıty_id = 5 Öğrenci
Authorıty_id = 6 Öğretmen
Şekilnde tanımlanmıştır.
TIMELINE
Bu tabloda her işe bir vakit aralığı verilmiştir. Mesela öğretmenlerin not gireceği tarih TIMELINE da belirtiliyor.O
tarih geçtikten sonar web den yada database den DML komutlarıyla bile değişiklik yapılmasına izin verilmiyor.
STUDENT
Bütün öğrencilerin aldıkları her ders için bir satır otomatik olarak bu tabloda açılmakta ve öğretmenler bu satırlarakı
not bölümüne not girebilmektedirler.
REGISTER_COURSE
REGISTER_CLASS
Her yıl başında yeni sınıf isimleri tanımlayıp o sınıfda hangi öğrencilerin okuyacağını belirtiyoruz.
GRADE_TABLES
EMPLOYEES
DEPARTMENTS
COURSES
Her dönem başında açılan dersler , kodları ve kredileri şle birlikte bu tabloya girilir.
AUTHORITY
Yetkilendirme tablosu
ADVISORS
Her sınıf için Danışman hocaların belirtildiği tablodur.
Yukarıdaki tablo isimleri ve alan isimlerini tesbit ettikten sonra Veritabanımızda oluşturacağız.
Table linkine sağ tuş ile tıklayarak Create Table seçeneğini seçiyoruz ve aşağıdaki pencereyi kullanarak yukarıda
karar verdiğimiz tablo ve alanları tek tek oluşturuyoruz.
4.1.4 – Trigger Oluşturulması
Veritabanımızda bir tabloya bilgi giriş ve değişikliğinde, bu değişikliklerin diğer tablolara da istenen şekilde
yansıması veya tablolara DML komutları ile istenen zamanlarda değişiklik yapılmasını önlemek için trigger
kullanacağiz.
Örneğin yeni bir öğrenci STUDENT tablosuna eklendiğinde, bu tabloya bağlı trigger bu yeni öğrenci için USERS
tablosuna yeni bir kullanıcı ekleyecek ve rastgele bir şifre üreterek öğrencinin kullanıcı hesabı açılmış olacak.
EMPLOYEES tablosuna yeni bir öğretmen eklendiğinde de aynı durum söz konusu olacaktır.
ADD_EMPLOYEE_TO_USERS
BEGIN
VALUES(:NEW.EMPLOYEE_ID,DBMS_RANDOM.STRING('U',6),:NEW.AUTHORITY_ID);
END IF;
IF UPDATING THEN
user_id=:NEW.EMPLOYEE_ID;
END IF;
END;
ADD_STUDENT_TO_USERS
BEGIN
END;
CONTROL_ADVISORS
BEGIN
IF INSERTING THEN
:NEW.SEMESTER:= get_term_number;
:NEW.YEARS:= GET_YEAR;
END IF;
END;
CONTROL_COURSES
BEGIN
END;
CONTROL_DEPARTMENT
BEGIN
END;
CONTROL_EMPLOYEES
BEGIN
IF get_current_event not in(1,5) then RAISE_APPLICATION_ERROR (-20205,'You may only make
changes during right time'); end if;
END;
CONTROL_REGISTER_CLASS
BEGIN
:NEW.SEMESTER:= calculate_semester(:new.student_id );
:NEW.YEARS:= get_year;
END;
CONTROL_REGISTER_COURSE
Öğrenciler sınıflara atandıktan sonra, ders-sınıf-hoca eşleşmeleri REGISTER_COURSE tablosuna girildiği zaman
Triggerımız ders ve hocayı o sınıfda bulunan öğrencilerle çaprazlayarak öğrenci not tablosunu oluşturup,
REGISTER_GRADE tablosuna girecek. Bu şekilde o dersi alan bütün öğrenciler için not girilecek veriler
hazırlanacaktır.
DECLARE
SINIF REGISTER_CLASS%ROWTYPE;
YEARS1 NUMBER;
START_DATE2 VARCHAR(4);
START_DATE1 NUMBER;
BEGIN
------------------------------------------------------------------
IF INSERTING THEN
LOOP
END LOOP;
END IF;
-------------------------------------------------------------------
IF DELETING THEN
END IF;
------------------------------------------------------------------
IF UPDATING THEN
IF :OLD.COURSE_ID=:NEW.COURSE_ID THEN
ELSE
UPDATE register_grade SET course_id=:NEW.COURSE_ID WHERE
instructor_id=:OLD.INSTRUCTOR_ID AND CLASS_ID=:OLD.CLASS_ID AND
semester=:OLD.SEMESTER AND years=:OLD.YEARS;
END IF;
END IF;
END;
CONTROL_REGISTER_GRADES
BEGIN
:NEW.SCORE:= mark_to_score(:NEW.MARK);
END;
CONTROL_STUDENTS
BEGIN
END;
CONTROL_USERS
BEGIN
END;
GET_CREDIT(Ders_ic,Bolum_id)
CREDIT1 NUMBER;
BEGIN
RETURN CREDIT1;
END GET_CREDIT;
CALCULATE_SEMESTER (ogrenci_id)
YEARS1 NUMBER;
START_DATE1 NUMBER;
BEGIN
SELECT TO_NUMBER(TO_CHAR(START_DATE,'YYYY'),'9999')
RETURN 2*(get_year-start_date1)+get_TERM_NUMBER;
END CALCULATE_SEMESTER ;
GET_CURRENT_EVENT
event_id1 number;
BEGIN
SELECT event_id INTO event_id1 FROM TIMELINE WHERE sysdate BETWEEN start_event AND
end_event;
RETURN event_id1;
END GET_CURRENT_EVENT;
GET_DEPARTMENT (ogrenci_id)
DEPARTMENT1 VARCHAR2(10);
BEGIN
RETURN department1;
END GET_DEPARTMENT;
GET_TERM_NUMBER
TERM_NUMBER1 NUMBER;
BEGIN
RETURN term_number1;
END GET_TERM_NUMBER;
GET_TERM_TEXT
TERM_TEXT1 VARCHAR2(10);
BEGIN
RETURN term_text1;
END GET_TERM_TEXT;
GET_YEAR
YEARS1 NUMBER;
BEGIN
RETURN YEARS1;
END GET_YEAR;
MARK_TO_SCORE
RETURN NUMBER AS
SCORE1 NUMBER;
BEGIN
RETURN SCORE1;
END MARK_TO_SCORE;
GROUP BY STUDENT_ID,SEMESTER
GROUP BY STUDENT_ID
and
FROM DUAL
5-Web Server Kurulumu
Hazırlayacağımız web arayüzünü Windows 2003 Server kurulu bir bilgisayarda kuracağımız ASPRunner 6.0
programıyla hazırlayıp ayni bilgisayardaki IIS de yayınlayacağız.
ASPRunner 6.0 dan Oracle veritabanımıza bağlanabilmek için Oracle win32_11gR1_client programını kurmamız
gerekmektedir.
Oracle sitesinden indirdiğimiz win32_11gR1_client dosyayı Windows Server 2003 bilgisayayarımıza kuruyoruz.
4
4
5.1-Oracle win32_11gR1_client Ayarları
4
5.2- ASP Runner 6.0 Kurulumu
http://xlinesoft.com web sitesinden ASP Runner 6.0 indirip Windows 2003 Server bilgisayarımıza kuruyoruz.
4
4
5.3 – Windows 2003 Server'da IIS (Internet Information Server)kurulumu
Application Servers
Internet Information Services(IIS)'i seçip OK butonuna basıyoruz. Windows Server 2003 CD'sini CD sürücüye takıp
kurulum işlemini tamamlıyoruz.
4
5.4-ASPRunner 6.0 ile Web Arayüzü Oluşturma
5.4.1 - ASP Runner Programını çalıştırıp web sayfamız için bir proje oluşturuyoruz. Database bağlantısı için "ODBC
driver dialog" seçeneğini işaretliyoruz ve Next butonuna basıyoruz.
5
Veritabanımıza bağlanmak için kullanıcı bilgilerimizi giriyoruz.
51
Bu pencerede seçmiş olduğumuz tabloların SQL kodları görülmektedir.Standart kodlarda bazı değişiklikler yapıyoruz.
5.4.4 - ADVISOR tablosunda sadece aktif dönemdeki bilgileri göstermesi ,ç,n gerekli kodları ilave ediyoruz.
5
EMPLOYEES tablosunda sadece öğretmenleri göstermesi için ilave kodlar.
5
REGISTER_COURSES tablosunda aktif dönemdeki kayıtlı dersleri göstemesi için ilave kodlar.
REGISTER_GRADE tablosunda aktif dönemdeki ders notlarını göstemesi için ilave kodlar.
USERS tablosunda bilgilerle beraber EMPLOYEES tablosundaki isim ve soyisim bilgilerinin beraber listelenmesi için
ilave kodlar.
5
5.4.5 - Her tablo için gerekli olan List,Edit, Delete,View hakları tanımlanıyor.
5
5
5
5
5
6
6
5.4.6 - Herbir tablonun alanlarından hangilerine list,edit,delete vesaire haklar tanımlanıyor.
5.4.7 - Herbir tablonun alan sırası, formların yatay yada dikey olması, satır sayısı, menu linklerinin sıralanması gibi
ayarlamalr yapılıyor.
6
5.4.8 - Web sayfasının hangi dilde olacağına karar veriliyor.İngilizce, Türkce,Rusca vesaire olabilir.
Ayni zamanda LABEL EDİTOR ile her menüdeki link ve alan adları istenen dillere çevriliyor
6
5.4.9- Bu alanda Login sayfası oluşturuluyor. Login bilgileri USERS tablomuzdan alınıyor.
6
Permissons butonuna basarak her tablo için tanımladığımız gruplara değişik haklar veriyoruz.
User can see and edit other users data : Kullanıcılar bu tablodaki bütün kullanıcılara ait olan bilgieri görebiliyor eğer
permission'da izin verilmişse değiştirebiliyor.
User can see and edit their own data only : Kullanıcılar sadece kendi bilgierini görebiliyor ve eğer permission'da izin
verilmişse değiştirebiliyor.
User can see other users data, can edit tehir own data only : Kullanıcı bütün bilgileri görür ancak sadece kendi
bilgilerini değiştirebilir.
6
5.4.10- Web arayüzümüz için tema seçiyoruz.
6
5.4.12- Kullanıcıların tablolarda yaptıkları işlemlere göre çalışacak kodlar yazabiliyoruz. Mesela bir tabloya bilgi
giridiğinde ilgili kişiye mail atarak haber verebilirsiniz.
5.4.13- Son adımda bitirmiş olduğumuz web sayfamızı artık yayınlayabiliriz. Lokal bilgisayarımızda web server'a
yayınlayarak bitirebiliriz.
6
Örneğimizde
Web tarayıcımızı açarak, http://localhost/erp yada http://192.168.0.1/erp yazarak sitemize giriş yapıyoruz.
6
Karşımıza çıkan menüden EMPLOYEE linkine tıklayalim.
ADD NEW butonuna basarak yeni bir personel girebilirsiniz. Yeni bir öğretmen girdiğimiz zaman EMPLOYEES
tablosuna bağlı trigger bu öğretmen için USERS
Geliştirilmeye açık ve faydalı olacağını umduğumu bu proje ile başından sonuna kadar istenen bir amacı
gerçekleştirmeye çalıştım.
Bu projeye bir üniversitede kullanılabilecek muhasebe, personel daire başkanlığı, bilgi işlem ve öğrenci işlerinin birer
modül olarak eklenmesiyle ticari bir yazılım üretilebilmesi mümkündür.
71
Kaynaklar
http://www.oracle.com
http://www.novell.com
http://xlinesoft.com
http://microsoft.com