Kocaeli Üniversitesi Randevu Yönetim Sistemi Raporu

5,687 views

Published on

Published in: Education, Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,687
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Kocaeli Üniversitesi Randevu Yönetim Sistemi Raporu

  1. 1. İÇİNDEKİLER ŞEKİLLER DİZİNİ..............................................................................................................................2 TABLOLAR DİZİNİ............................................................................................................................3 ÖZET....................................................................................................................................................4 SUMMARY..........................................................................................................................................5 ÖNSÖZ................................................................................................................................................5 BÖLÜM I...............................................................................................................................................6 GİRİŞ...............................................................................................................................................6 BÖLÜM II..............................................................................................................................................7 2.1. PROJEDE KULLANILAN TEKNOLOJİLER........................................................................8 2.1.1. ASP.NET Ve .NET Framework........................................................................................8 2.1.1.1. .NET FRAMEWORK .............................................................................................8 2.1.1.2. Server Kontrol ..........................................................................................................8 2.1.1.3. Web.Config ...............................................................................................................8 2.1.1.4. State Management.....................................................................................................9 2.1.1.5. XML........................................................................................................................10 2.1.1.6. Master Page.............................................................................................................11 2.1.1.7. Web User Control ...................................................................................................15 2.1.1.7.1 Özellikleri ........................................................................................................15 2.1.2.SQL Ve MSSQL...............................................................................................................16 2.1.2.1. SQL Veri Tanımlama Deyimleri..............................................................................16 2.1.2.2. SQL Deyimleri........................................................................................................17 2.1.2.3. DML (Data Manipulation Language) Deyimleri....................................................18 2.1.2.4. DCL (Data Control Language) Deyimleri...............................................................23 2.1.2.5. SQL FONKSİYONLARI........................................................................................23 2.1.2.5.1. Gruplama Fonksyonları...................................................................................23 Değerlerin toplamlarını verir. SUM fonksiyonu sadece sayısal alanlarda kullanılır................25 2.2. Kodlama Standartları..............................................................................................................26 2.2.1. Tanımlar ve Kısaltmalar..................................................................................................26 2.2.1.1. PascalCase...............................................................................................................26 2.2.1.2. CamelCase...............................................................................................................26 2.2.1.3. UpperCase...............................................................................................................26 2.2.1.4. LowerCase...............................................................................................................26 2.2.2. C# İsimlendirme Standartları..........................................................................................26 2.2.2.1. Değişken Tanımlama Standartları...........................................................................27 2.2.2.2. Genel Hata Yönetimi...............................................................................................27 2.2.2.3. Programlama Pratikleri............................................................................................27 2.2.2.4. Veritabanı Nesne Adlandırma Kuralları..................................................................28 2.2.2.5. Tabloların İsimlendirilmesi.....................................................................................28 2.2.2.6. Saklı Prosedürlerin İsimlendirilmesi.......................................................................29 2.2.2.7. Tetikleyicilerin (Trigger) İsimlendirilmesi..............................................................30 2.2.2.8. Birincil Anahtarlar (Primary Keys).........................................................................30 2.2.2.9. Sekanslar(Sequences)..............................................................................................30 1
  2. 2. 2.2.3. PROJE İÇERİĞİNİN ANLATILMASI..........................................................................30 2.2.3.1.UYGULAMA KISMI...............................................................................................30 2.2.3.1.1. Öğrenci Kısmı..................................................................................................32 2.2.3.1.2. Öğretim Üyesi Kısmı........................................................................................37 2.2.3.1.3. Admin Kısmı....................................................................................................40 2.2.3.1. VERİTABANI KISMI.............................................................................................44 2.2.3.1.1. Saklı Yordamlar - Stored Procedures...............................................................44 2.2.3.1.2. Tablolar............................................................................................................47 SONUÇ VE ÖNERİLER...................................................................................................................52 KAYNAKLAR...................................................................................................................................53 ŞEKİLLER DİZİNİ Şekil 2.1. State Management olmadığı durum Şekil 2.2. State management olduğu durum Şekil 2.3. Master Page ve aspx sayfalarının ortak çalışma mimarisi Şekil 2.4. Master page oluşturma Şekil 2.5. Master Page oluşturma 2
  3. 3. Şekil 2.6. Saklı yordamların avantajları Şekil 2.7. Projeye ait solution explorer görüntüsü Şekil 2.8. Tüm kullanıcıların giriş yaptığı anasayfa Şekil 2.9. Randevu Al sayfası. Şekil 2.10. Randevu Al sayfasında öğrenci bilgilerinin girilmesi ve dosya ekleme işlemi Şekil 2.11. Randevu Al sayfası tüm bilgilerin girilmiş hali Şekil 2.12. Randevu Sil sayfasında randevuların listelenmesi Şekil 2.13. Randevu Sil sayfasında randevu silindikten sonraki uyarı ekranı Şekil 2.14. Öğretim üyelerinin sisteme giriş yaptıkları sayfa. Şekil 2.15. Şifre Hatırlatma Sayfası Şekil 2.16. Öğretim görevlilerine ait anasayfa Şekil 2.17. Ofis Saatleri sayfasında uygun randevu saatlerinin listelenmesi ve ayarlanması. Şekil 2.18. Öğretim görevlisine ait randevu görüntüleme ve düzenleme sayfası Şekil 2.19. Sistem yöneticisi giriş sayfası Şekil 2.20. Sistem yöneticisi anasayfası Şekil 2.21. Sistem yöneticisinin bölüm eklemek ve silmek için kullandığı sayfa Şekil 2.22. Sistem yöneticisinin fakülte eklemek ve silmek için kullandığı sayfa Şekil 2.23. Sistem yöneticisinin başka bir sistem yöneticisi eklediği sayfa Şekil 2.24. Sistem yöneticisinin öğretim üyesi kaydı yaptığı sayfa Şekil 2.25. Sistem yöneticisi tarafından kullacıların listelenmesi ve silinmesi işlemleri sayfası TABLOLAR DİZİNİ Tablo 2.1. Bölümler Tablosu Tablo 2.2. Fakülteler Tablosu Tablo 2.3. Kullanıcı Bilgileri Tablosu 3
  4. 4. Tablo 2.4. Kullanıcı Bilgileri Tablosu Tablo 2.5. Eklenen randevular tablosu Tablo 2.6. Randevu Saatleri Tablosu ÖZET Online Okul Web Otomasyon Sistemi; ilköğretim, Lise, Yüksekokul ve Özel eğitim kurumları için hazırlanmış bir otomasyon sistemidir. Bu sistem ile okullara ait her türlü bilgi, duyuru, doküman, resim gibi içerikleri online bir şekilde web sitesinde yayınlanabilmektedir. Sistem sadece web üzerinden yayınlanan içeriklerden öte, öğrenci bilgi sistemini de içermektedir. Bu sistem ile öğrenci ve veliler not, devamsızlık, öğretmen görüşleri ve ödevlerini internet üzerinden takip edebilirler. 4
  5. 5. Okulda kullanılan programa girilen bilgilerin ayrıca web not sistemine girilmesine gerek kalmadan tüm bilgiler web sayfasına aktarılabilmektedir.. Bu işlem sayesinde büyük bir kolay sağlanmakta, bilgilerin teker teker girilerek işlemlerin zorlaşması önlenmektedir. Öğretmenler internet erişimi olan her bilgisayardan öğrenci notları, ödevleri ve öğrenciler hakkındaki görüşleri sisteme girebilirler. Ayrıca öğretmenlerin genel ihtiyaçları arasında olan sınıf listeleri, öğrenci not durumu, devamsızlıklık durumu gibi listelere sistem üzerinden ulaşabilirler. Sistemin en büyük amacı öğrenci-Veli-Öğretmen-İdareci işbirliğini arttırmak ve bunun sonucu olarak eğitimde kaliteyi yükseltmeyi hedeflemektedir. Sistemin kolay kullanılması, web üzerinden güncellenebilmesi, sistemi kullanmak için ekstra internet bilgisine gerek kalmaması öğrenci ,veli ve öğretmenlerin işlemlerini kolaylaştırması büyük önem taşımaktadır. SUMMARY ÖNSÖZ Sunmuş olduğumuz proje online bir Okul Otomasyon sistemidir. Sistem okullara ait her türlü bilgi, doküman, duyuru gibi bilgilerin paylaşılmasına, öğretmenlerin, ilgili öğrencilerinin notlarını kolay bir şekilde sisteme kaydedebilmesi, yönetebilmesi ve değerlendirebilmesine, öğrencilere ait bilgilerin kolayca erişilebilmesine, öğrencilerin kendilerine ait not listesi, devamsızlık listesi gibi bir takım bilgilere ulaşabilmesine olanak sağlamaktadır. Ayrıca idareciler de kendileri ile ilgili sorumlulukları dahilindeki alanlara veri girme, güncelleme işlemlerini kolayca gerçekleştirebilmektedir. Bu proje ile öğrenci-Veli-Öğretmen-İdareci işbirliğini arttırmak ve bunun sonucu olarak eğitimde kaliteyi yükseltmeyi hedeflemiştir. Saygılarımızla, 5
  6. 6. Enes ÇAĞLAR - Şeyda YILMAZ BÖLÜM I GİRİŞ Online Okul Web Otomasyon Sistemi; ilköğretim, Lise, Yüksekokul ve Özel eğitim kurumları için hazırlanmış bir otomasyon sistemidir. Bu sistem ile okulunuza ait her türlü bilgi, duyuru, doküman, resim gibi içerikleri online bir şekilde web sitenizde yayınlayabilirsiniz. 6
  7. 7. Sistem sadece web üzerinden yayınlanan içeriklerden öte, öğrenci bilgi sistemini de içermektedir. Bu sistem ile öğrenci ve veliler not, devamsızlık, öğretmen görüşleri ve ödevlerini internet üzerinden takip edebilirler. Okulda kullandığınız programa girdiğiniz bilgileri ayrıca web not sistemine girmenize gerek kalmadan tüm bilgileri web sayfasına aktarabilirsiniz. Bu işlem sayesinde büyük bir kolay sağlanmakta, bilgilerin teker teker girilerek işlemlerin zorlaşması önlenmektedir. Öğretmenler internet erişimi olan her bilgisayardan öğrenci notları, ödevleri ve öğrenciler hakkındaki görüşleri sisteme girebilirler. Ayrıca öğretmenlerin genel ihtiyaçları arasında olan sınıf listeleri, öğrenci not durumu, devamsızlıklık durumu gibi listelere sistem üzerinden ulaşabilirler. Sistemin en büyük amacı öğrenci-Veli-Öğretmen-İdareci işbirliğini arttırmak ve bunun sonucu olarak eğitimde kaliteyi yükseltmeyi hedeflemektedir. Sistemin kolay kullanılması, web üzerinden güncellenebilmesi, sistemi kullanmak için ekstra internet bilgisine gerek kalmaması öğrenci ,veli ve öğretmenlerin işlemlerini kolaylaştırması büyük önem taşımaktadır. Okul otomasyon sistemi .Net kullanılarak hazırlanmıştır. Veritabanı olarak MSSQL veritabanı kullanılmıştır. ASP.NET ile üç katmanlı mimari ile hazırlanmış olup veritabanı işlemleri için stored procedur ler kullanılarak güvenlik sağlanmıştır. Proje dört ana kısımda incelenebilir. Bunlar öğrenci, öğretmen, editör ve idareci kısımlarıdır. Her bir kullanıcının görevleri ayrıdır ve sistemden bu görevleri yerine getirebilirler. Her bir kullanıcı kendilerine ait kullanıcı adı ve şifrelerini kullanarak sisteme giriş yaparlar ve kendilerine ait alanları görebilirler. Aşağıda her bir kullanıcı için kullanıcının yapabileceği işlevler belirtilmiştir. Öğrenci ve Veliler internet üzerinden öğrencinin derslerine ait yazılı, sözlü ve ödev notlarını görebilir, Öğrencinin yapmış olduğu devamsızlıklık durumunu sistemden öğrenebilirler. Ayrıca ders öğretmenleri tarafından verilen ödevleri ve öğretmenlerin öğrenci hakkındaki görüşlerini sistemden takip edebilirler. BÖLÜM II PROJEDE KULLANILAN TEKNOLOJİLER KODLAMA STANDARTLARI PROJE İÇERİĞİNİN ANLATILMASI 7
  8. 8. 2.1. PROJEDE KULLANILAN TEKNOLOJİLER Proje ASP.NET ve C# yazılım dilleri kullanılarak yazılmıştır. Veritabanı sunucusu olarak ise Microsoft SQL Server 2005 veritabanı sunucusu kullanılmıştır. ASP.NET teknolojisi çok geniş bir alana yayılmaktadır. Aşağıda bu teknolojinin projede kulanılan bazı kısımlarına değinilmektedir. 2.1.1. ASP.NET Ve .NET Framework 2.1.1.1. .NET FRAMEWORK .Net Framework, .Net platformunun bir dayanak noktasıdır. .Net Framework gücünü içerisinde barındırdığı yüzlerce sınıf (class) kütüphanesinden alır. .Net framework, sunucu tarafında çalışan bir yapı kurulabilmesini sağlar, olaya dayalı programlama modeli sayesinde daha hızlı ve verimli uygulamalar geliştirebilmesini ve bunları istenilen programlama diliyle yazabilmesini sağlar. .Net’in destek verdiği diller Visual Basic C# Microsoft Microsoft Jscript Microsoft Visual C++ .Net Visual J# .NET .Net Pyhton Oberon Perl Haskell APL Cobol Scheme Pascal ML Eiffel Mercury Ada SmallTalk Caml C Çoklu dil desteğinin avantajları: • • Kod modülleri yeniden kullanılabilir. Bir kod modülü, bir dil içinde yazılıp farklı diller içinde kullanılabilir. • Tüm diller için object kütüphanesi aynıdır ve aynı object modeli kullanılır. • Eski dillerde yazılmış programlar güncellenebilir. • .NET Framework içindeki tüm diller eşit performansa sahiptir. Bütün .NET tabanlı diller Microsoft Intermediate Language (MSIL)’a derlenir. Tüm MSIL ler native kod’a derlenir. Bu run-time’dır ve hepsi aynı derleyici kullanır. 2.1.1.2. Server Kontrol Kullanıcı arabirimi veya diğer ilişkisel fonksiyonlar oluşturmak üzere Server üzerinde çalışan componentlere server kontrol denir. Server kontroller runat= “server” özelliğine sahiptirler. 2.1.1.3. Web.Config Asp.Net’in yeniliklerinden olan web.config dosyası aslında bir ayar dosyasıdır. Ayarları bir XML formatında oluşturur ve ona göre kullanıcı işlemleri gerçekleştirilir. Web.config dosyası Asp.Net 8
  9. 9. çalışmalarında mutlaka olmalıdır. Web.Config olmadığı durumlarda daha üst bir seviyede olan machine.config dosyası bulunmaktadır. Web.Config olmadığı durumlarda bu dosyadan ayarlar okunur. Bir web site oluşturulduğunda Soution Explorer'da web.config dosyasının eklendiğini görülür. Web.Config dosyamızın birimleri aşağıdaki gibidir. Birim Adı Tanımı <trace> Asp.Net trace ayarlarının yapılmasını sağlar. <globalization> Uygulada herhangi bir hata verdiğinde ne yapılması gerektiği belirlenebilir. Hata sayfasına git, mesaj iletisi ver gibi işlemler yapılabilir. <authentication> Üyelik sistemlerinde kullanıcıların geçerliliğini sağlamak için kullanılır. <sessionState> Session state ayarlarını bulundurur. <webservices> Web servisleri ile ilgili ayarları tutar. <securityPolicy> Kullunılabilecek güvenlik ayarlarını içerir. Örnek verilecek olursa; KOURYS projesinde veritabanına bağlanmak için tanımlanan connection string nesnesi, webconfig dosyasında şu şekilde tanımlanmıştır. <appSettings> <add key="systemConnectionString" value="Data Source=SEYDA-PCSQLEXPRESS; Initial Catalog=OkulOtomasyon; Integrated Security=sspi"></add> </appSettings> 2.1.1.4. State Management Web sayfalarında en çok kullanılan yöntemlerden biriside bir bilginin sayfalar arasın geçiş yapmasıdır. Bunun en iyi örneği üye girişi yapan bir kullanıcının web sitesinde dolaşabilmesidir. Asp.Net teknolojisi sayfalar arasında kullanıcı bilgilerini tutmayı (state) sağlar. Bu tarz uygulamalar windows uygulamalarda rahatlıkla yapılırken, her isteği sürekli olarak server’a post edilmesinden dolayı Asp.Net uygulamalarından biraz farklıdır. State management yok ise gönderilen bilgileri diğer sayfalar algılayamayacaktır. 9
  10. 10. Şekil 2.1. State Management olmadığı durum Şekil 2.2. State management olduğu durum Kullanıcı bilgilerini saklamak ve kullanmak için kullanabilecek yöntemler vardır. Bunlar: • View State • Session State • Application State View State kontrolü kendisine verilen bilgiyi gizli bir alanda tutar. Bu bilgi hafızaya Base64 formatında bir karakter dizisi olarak yazılır ve her geri postalamada(postback) sunucuya getirilir. Ancak viewstate özelliği sunucu kontrolleriyle sınırlıdır. Yüklenen bilgi ya sizin tarafınızdan oluşturlan bir custom object ya da basit bir bilgi türü olmak zorundadır. Session State kontrolü HttpSessionState sınıfını kullanır. Kullanıcıların bilgilerini içeren kod bilgileri, 120‐bit’lik Session ID’de tutulur. Bilgileri tespit etmek, Session ID yardımı ile olur. Session tanımlama ASP.NET'te şu şekilde olabilir: Session["OgrenciNo"] = reader["OgrenciAdi"].ToString(); Burada veritabanından dönen bir değer Session[“OgrenciNo”] isimli session a atılmıştır. Diğer sayfalara geçiş yapıldığında bu nesne kullanılabilecektir. Application State web uygulaması içindeki türm sayfalar için global bir sistemdir. Ziyaretçi sayısını tutulması Application üzerinden kullanılır. 2.1.1.5. XML Bağımsız bir kuruluş olan W3C (World Wide Web Consortium) organizasyonu tarafından tasarlanan ve herhangi bir kurumun tekelinde bulunmayan XML (eXtensible Markup Language), kişilerin kendi sistemlerini oluşturabilecekleri, kendi etiketlerini tanımlayarak çok daha rahat ve etkin programlama yapabilecekleri ve bu belirlenen etiketleri kendi yapıları içerisinde standardize 10
  11. 11. edebilecekleri esnek, genişleyebilir ve kolay uygulanabilir bir meta dildir. Çok farklı tipteki verileri orjinal formatlarında tek bir havuzda tutabilen XML, bilgiye hızlı, kolay ve ortamdan bağımsız olarak erişebilme imkanı sunar. Günlük yaşantımızda kullanmakta olduğumuz verilerin %80'ini oluşturan ve "unstructured" olma özellikleri nedeniyle kendi bulundukları medya dışında veri özelliklerini koruyamayan (kelimeişlem, elektronik tablo çıktıları, PDF dokümanları, ses,resim vb) farklı tipteki verilerin, oryantasyona gerek duymadan hiyerarşik bir yapıda kullanılabilmelerine olanak vermekte ve bu verilerin hızlı bir şekilde sorgulanabilmelerini sağlamaktadır. Öncelikle veri transferinin kolaylaşmasını ve verinin içerik bilgisiyle saklanabilmesini hedefleyen XML, içerik ve sunum bilgilerini birbirinden ayırır. Bu özelliği ile de HTML'den farklılaşır. • XML bir document'in(belgenin) yapısını ve görünümünü tanımlamak için kullanılan uluslararası bir standartdır. • XML (Extensible Markup Language - Genişletilebilir İşaretleme Dili) yapılandırılmış belge ve verilerin evrensel formatıdır • XML text tabanlı markup dilidir ve data alış verişinde kullanılan bir standard'ır • XML bilginin yapısını tanımlamak için kullanılan bir teknolojidir. • XML bilgiyi tanımlayan ve web'te bilgi alış verişi için kullanılan standard bir biçimdir. • XML markup dillerini tanımlayan bir metadilidir. • XML verinin yapılandırılması ve tanımlanması için kullanılan bir teknolojidir. XML herhangi bir verinin biçimlenmesi,tanımlanması için kullanılan bir teknolojidir. Yukarıdaki tanımlar birbirine benzemektedir. Bazı kelimeler veri, tanımlama,standart vs.. gibi çok fazla kullanılmış. Tanımlardaki bir farklılık XML'in hem bir teknoloji hem de bir dil olmasından doğmaktadır. Bazı tanımlar sadece XML teknolojisini tanımlarken bazıları dil olarak XML'i tanımlamışlardır. Bütün bu tanımlardan şu sonuçlar çıkarılabilir: • XML hem bir teknolojidir hem de bir dildir. • XML dil olarak markup dil'leri yaratmaya yarar. • XML verileri tanımlamak için kullanılan bir teknolojidir. • XML verileri tanımlamak için bir standart oluşturmak için yaratılmıştır. • XML verileri standart bir şekilde tanımladığından web'te veya herhagi iki program arasında veri alış verişi kolaylaştırmaktadır. XML dil olarak markup dil'i yaratmaya yarar. Markup dillerine örnek olarak HTML,WML gibi örnekler verilebilir. Bu dillerde veriler bazı işaretlerle (etiket) işaretlenirler. Örneğin bir HTML kodunda bir başlık yazısı <h1> etiketi ile işaretlenir. Sonuç olarak bir belgedeki verileri işaretlemeye yarayan dillere markup dilleri denir. 2.1.1.6. Master Page Internet siteleri göz önüne aldındığında, siteye ait sayfaların sıklıkla aynı şablonları kullandığı görülmektedir. Özellike, header, footer, navigasyon ve advertisement alanları, çoğunlukla siteye ait tüm sayfalarda aynı yerlerde kullanılır. Bu, siteye ait sayfaların standart olarak aynı görünümde olmasını sağlamakla kalmaz, değişen içeriğinde ortak bir şablon üzerinde durmasına imkan tanır. 11
  12. 12. Html’ in ilk zamanlarında, bu tarz işlemleri gerçekleştirmek için, ortak olan alanlar kopyalanarak diğer sayfalara yapıştırılırdı. Ya da, ana şablonu ihtiva eden bir sayfadan diğer sayfalar "save as" metodu ile oluşturulur ve içerikleri değiştirilirdi. Bu tekniğin en büyük dezavantajı, şablondaki herhangi bir değişikliğin diğer sayfalara yansıtılması sırasında ortaya çıkmaktadır. Nitekim yüzlerce alt sayfaya aynı şablon uygulanıyorsa, bu gerçekten büyük bir problemdir. Bu soruna çözüm Asp ile gelmiştir. Asp, include takılarını kullanarak, sayfalarda tekrar eden içeriklerin kolayca kullanılabilmesini ve değişikliklerin tüm sayfalarda görünebilmesini sağlamıştır. Ancak elbetteki include takısınında bir takım sorunları vardır. Bunlardan birisi, tasarım zamanında include takısının işaret ettiği içeriğin görünememesidir. Dolayısıyla sayfanın bütünün nasıl göründüğünü inceleyebilmek için mutlaka çalıştırmak gerekmektedir. Diğer yandan, include tekniği takılar üzerine kurulu olduğundan, özellikle açık unutulan takılar sayfalarda istenmeyen Html çıktılarının oluşmasına yol açmaktadır. Asp.Net, bu tip ortak içeriklerin kullanılmasına daha güçlü ve etkin bir yaklaşımı getirmiştir. User Controls (Kullanıcı tanımlı kontroller), normal aspx içeriğine sahip olabilmekte ve .Net mimarisinin güçlü özelliklerini kullanabilmektedir. Her ne kadar etkili bir teknik olsada, user control’'ler içinde tek bir sorun öne çıkmaktadır. Bu sorun, tasarım zamanında user control içeriğinin görülememesidir. Asp.Net 2.0, Master Page yaklaşımı ile, yukarıda bahsedilen dezavantajları ortadan kaldırmayı başarmıştır. Bir Master Page, uygulandığı diğer aspx sayfalarının nasıl görünmesi gerektiğine karar veren bir şablon gibidir. Ancak, sağladığı ContentPlaceHolder bileşeni sayesinde, Master Page’ leri uygulayan diğer aspx sayfalarının, istenilen içeriğe sahip olmasınıda sağlamaktadır. En güzel yanı ise, normal bir aspx sayfası gibi tasarlanabilmesi, yani html, image, server control gibi üyeleri içerebilmesidir. Bunlara ek olarak, olay güdümlü programlama modelinide destekler. Dolayısıyla bir Master Page aslında bir aspx sayfasından farksızdır. Ancak asıl fark, bir Master Page bir aspx sayfasına uygulandığında ortaya çıkar. Master Page’ i uygulayan bir aspx sayfası tarayıcıda açıldığında tarayıcıya gelen sayfa, Master Page ile aspx sayfasının birleştirilmesi sonucu ortaya çıkan başka bir aspx sayfasıdır. Bu, .net framework’ ün getirdiği partial class tekniği sayesinde gerçekleşebilmektedir. Bunun, Master Page’ i uygulayan aspx sayfalarına getirdiği değişik kodlama etkileride vardır. Projede kullanılan Master Page'in oluşturulma aşamalarına değinildiğinde, ilk olarak, Visual Studio.Net 2008'de bir web sitesi açılmalıdır. Siteye Master Page eklemek için tek yapılması gereken, Solution’'a sağ tıklamak ve Add New Item’ den gelen pencerede, Master Page tipini seçmektir. Master Page’ ler master uzantılı dosyalardır. 12
  13. 13. Şekil 2.4. Master page oluşturma Masterpage'i oluşturduktan sonra bu sayfalara her bir yeni sayfa türetildiğinde eklenecek yeni özellikler için bir alan ayrılmalıdır. Bu da ContentPlaceHolder bileşeni ile gerçekleştirilmektedir. Burada ContentPlaceHolder bileşeni, bu Master Page’ i uygulayacak olan sayfaların serbestçe erişebilecekleri ve içerik oluşturabilecekleri alanları tanımlamaktadır. Master Page’ lerde, normal aspx sayfaları gibi tasarlanabilirler. Bir başka deyişle, Html kodları, aspx bileşenleri vb. içerebilirler. Projeye ait MasterPage.master isimli masterpage, image, menu ve ContentPlaceHolder ve PlaceHolder bileşenlerinden oluşmaktadır. 13
  14. 14. Şekil 2.5. Master Page oluşturma Burada standart olarak bir web sayfasının tasarlanmasından farklı bir işlem yapılmamıştır. En önemli nokta Master Page’ i uygulayacak sayfaların içeriklerini yazabilecekleri ContentPlaceHolder bileşeninin kullanılmasıdır. Dilersek bir Master Page içinde, birden fazla ContentPlaceHolder bileşeninede yer verebiliriz. Master Page’ in aspx kodlarına bakıldığında normal aspx sayfalarına göre en önemli değişik page direktifi yerine master direktifinin kullanılmasıdır. Master direktifi sayfanın bir Master Page olduğunu belirtmektedir. <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="AnaSayfa" %> ContentPlaceHolder bileşeni ise, <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> Anasayfanın masterpage tabanlı oluşturulması için anasayfaya yazılması gerek kod şu şekilde olmaktadır: <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="OkulOtomasyon-AnaSayfa.aspx.cs" Inherits="AnaSayfa" Title="OkulOtomasyon-Anasayfa" %> Yukarıda bulunan tek satır aslında çok şey ifade etmektedir. Herşeyden önce, MasterPageFile özelliği, sayfaya uygulanan Master Page’ in yolunu belirtir. Bu, sayfanın bir Master Page’ i uyguladığını başka bir deyişle master page’ den türetilerek üretildiğini gösterir. Kendi sınıfı ve code-behind dosyası vardır. Eğer sayfadaki Content alanı içerisinde düzenleme yapmak istenirse bunu sağlayabilmek için, Master Page’ de yer alan ContentPlaceHolder bileşeninin, bu sayfada bir Content bileşeni ile eşleştirilmesi gerekmektedir. Bunun için, web sayfasına aşağıdaki aspx kodları yazılmalıdır. Content bileşeninin, ContentPlaceHolderID özelliği, uygulanan Master Page’ deki hangi ContentPlaceHolder bileşenini eşleştireceğini belirtmektedir. Bu özelliğin değeri, birden falza ContentPlaceHolder’ ın, Master Page’ i uygulayan sayfalarda eşleştirilmesinde önem kazanır. 14
  15. 15. <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="server"> </asp:Content> Projede kullanılan diğer bir master page ise master isimli master page'tir. Bu master page'in içeriği örnek verilerek hem contentPlaceHolder hem de masterpage'in diğer özellikleri açıklanabilir: Eklenmiş olan tüm kontroller ve diğer içerikler, ContentPlaceHolder bileşenine ait takılar içerisinde yer almaktadır. Diğer taraftan ContentPlaceHolder takıları dışında herhangibir içerik oluşturmayı sağlayacak bileşenleri kullanma imkanı yoktur. Bir diğer önemli özellik de, içeriğin herhangi bir form takısı içerisinde yer almıyor oluşudur. Bunun sebebi, form takısının zaten Master Page’ de uygulanmış olmasıdır. Dolayısıyla web sayfası, Master Page’ den kalıtımsal olarak türetildiği için form takılarının burada kullanılmasına gerek yoktur. 2.1.1.7. Web User Control Daha önceden varolan bazı server ve HTML componentlerini kullanarak yeni bir görünüş yapmamıza yararlar. Yaptığımız bu controller .ascx dosyalarında saklanır ve nerede kullanılmak istenirse orada sayfaya eklenebilir. Oluşturulan bir Web User Control sayfanın istenilen yerine koyulabilir ve orada onun görünmesi sağlanabilir. 2.1.1.7.1 Özellikleri Web user controller proje içerisinde yaratılan ascx dosyalarıdır. Bu dosyalar içerisinde daha önceden var olan HTML ve server componentleri kullanılarak yeni bir görünüm oluşturulabilir. Web User Controller kullanıldıkları her proje içerisinde mutlaka bulunmalıdırlar. Bunun nendeni ise bunların compile edilememesidir..Yani Web User Controller derlenerek bir dll yapılıp bu DLL istenilen projede kullanılma imkanı yoktur. User Controller VS toolbox ında yani araç çubuğunda bulunmazlar. Onları herhangi bir projeye eklemek için Solution Explorer dan ascx dosyasını tutarak sayfada istenilen yere bırakılmalıdır. User Control kodları ise Web Formlar load edildikten sonra yüklenir. Page_Load eventi User Controlü yuklenmesinden önce gerçekleşmektedir. Bu özellikler .NET deki diğer componentlerde olmayan özelliklerdir. 2.1.1.7.2 Web User Control Oluşturma VS editöründe Solution Explorer da projeye sağ tıklanır ve Add New Item seçeneğini seçilir. Buarad açılan pencereden Web USer Controlü seçilip adı verilerek onaylanır. Böylelikle yeni bir ascx dosyası projenize eklenmiş olacaktır. User kontrole örnek olarak menü örneği verilebilir. Örneğin bir menü kontrolü var ve bu menü projenin her sayfasında kullanılıyor. Ve bu menude bazen değişiklikler yapılması gerekiyorsa bu durumda her sayfada bu işin tek tek yapılması yerine tek bir menü sayfası oluşturup bunu her sayfada kullanmak daha mantıklı olacaktır. Bu kullanım için bir user control oluşturulabilir. Menü de herhangi bir değişiklik yapılmak istendiğinde sadece bir yerde değişiklik yapılması yeterli olacaktır. Bu değişiklikler user control ün kullanılmış olduğu tüm sayfalarda geçerli olacaktır. 15
  16. 16. 2.1.2.SQL Ve MSSQL SQL, (İngilizce "Structured Query Language", Türkçe: Yapılandırılmış Sorgu Dili) verileri yönetmek ve tasarlamak için kullanılan bir veritabanı yönetim sistemidir. SQL, kendisi bir programlama dili olmamasına rağmen birçok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veritabanı ortamında kullanılan bir alt dildir. KOURYS sisteminde kullanılan MSSQL de SQL dilini kullanan bir veritabanıdır. Bu yüzden KOURYS sisteminde kullanılan SQL komutları aşağıda anlatılmıştır. SQL ile yalnızca veri tabanı üzerinde işlem yapılabilir. SQL'e özgü cümleler kullanarak veri tabanına kayıt eklenebilir, olan kayıtlar değiştirilebilir, silinebilir ve bu kayıtlardan listeler oluşturulabilir. SQL veri tanımlama deyimlerinden başlıcaları şunlardır: CREATE TABLE tablo_adı Yeni bir tablo oluşturmak için kullanılır. CREATE TABLE tabloilceler ( ilceNo mediumint(8) unsigned DEFAULT '0' NOT NULL, ilce varchar(30) NOT NULL, postakodu varchar(5), ilceTel char(3), plakaKodu char(2) NOT NULL ) 2.1.2.1. SQL Veri Tanımlama Deyimleri 2.1.2.1.1. ALTER TABLE tablo_adı: Yeni bir sütun eklemek, sütunun tipini veya uzunluğunu değiştirmek vb. yapısal değişiklikler yapılması için kullanılır. 2.1.2.1.2. DROP TABLE tablo_adı Tabloyu fiziksel olarak siler. 2.1.2.1.3. TRUNCATE TABLE tablo_adı Tablodaki tüm verileri siler (tablo yapısı kalır) 2.1.2.1.4. CREATE VIEW görüş_adı Görüntü oluşturmak için kullanılır. 2.1.2.1.5. DROP VIEW görüş_adı Görüntüyü siler. 2.1.2.1.6. CREATE INDEX indeks_adı Tablonun (en azından bir) sütun adı üzerinde indeks oluşturmak için kullanılır. 16
  17. 17. 2.1.2.1.7. DROP INDEX indeks_adı Yaratılan indeksleri veri tabanından kaldırmak için kullanılır.. 2.1.2.1.8. SELECT deyimi SELECT ilce, postakodu FROM tabloIlceler WHERE plakaKodu = '06' Ankara'nın ilçeleri ile posta kodlarını gösterir. 2.1.2.1.9. UPDATE deyimi UPDATE tabloIlceler SET postakodu = '06720' WHERE ilce = 'Bala' Bala'nın posta kodunu değiştirir. 2.1.2.1.10. INSERT deyimi INSERT INTO tabloIlceler VALUES (, 'Yenişehir', , , '53') Yeni veriler ekler 2.1.2.1.11. DELETE deyimi DELETE FROM tabloIlceler WHERE plakaKodu = '53' plakaKodu 53 olan bütün verileri siler MSSQL de projede kullanılan veritabanıdır. MSSQL de SQL dilini kullanan bir veritabanıdır. 2.1.2.2. SQL Deyimleri SQL deyimleri veritabanları üzerinde çeşitli işlemleri yerine getirirler. Veritabanından sorgulama yapmak için SELECT, ekleme yapmak için INSERT güncelleme yapmak için UPDATE, silme yapmak için DELETE, yeni tablo oluşturmak için CREATE TABLE gibi komutlara sahiptir. Bu komutlar işlevlerine göre şu şekilde kategorilendirilir:  DDL (Data Definition Language): Veri tanımlama deyimleri.  DML (Data Manuplation Language) : Veri düzenleme dili.  DCL (Data Control Language): Veri kontrol dili. DDL deyimleri veritabanı üzerinde nesne yaratmak için kullanılırlar. En yaygın kullanılan DDL deyimleri şunlardır: CREATE , ALTER, DROP Create deyimi tablo ve view gibi bir veritabanı nesnesi yaratmayı sağlar. Tablo Yaratmak: Veritabanı üzerinde bir tablo yaratmak için CREATE deyimi kullanılır. Yapısı: CREATE <tablo adı> Alter Deyimi daha önce yaratılmış nesnenin değiştirilmesini sağlar. Örneği bir tablonun tasarımını değiştirmek gibi. Örnek: ALTER TABLE Musteri 17
  18. 18. ADD tel varchar(20) NOT NULL Yukarıdaki deyimde müşteri tablosunun alanlarına tel adlı bir alan daha eklenmiştir. Drop deyimi bir nesnesin silinmesini sağlar. Örnek: DROP TABLE MUSTERI Müşteri tablosunun verilerini ve tabloyu siler. 2.1.2.3. DML (Data Manipulation Language) Deyimleri Veritabanı içindeki verileri elde etmek ve değiştirmekle ilgili SQL deyimleridir. 1. SELECT 2. INSERT 3. UPDATE 4. DELETE 2.1.2.3.1. Select Deyimi Veritabanındaki verilere erişmenin, diğer bir deyişle onları görmenin ya da onları elde etmenin en sık kullanılan yöntemidir. Genellikle bir ya da daha çok tablonun bütün alanlarıya da belli alanları için SELECT deyimi yazılır. Temel Yapısı: SELECT [ALL] [DISTINCT] liste [INTO yeni tablo] FROM [tablo] [WHERE ifade] [GROUP BY ifade] [HAVING ifade] [ORDER BY ifade] [COMPUTE ifade] Seçeneklerin Anlamları: All sözcüğü bütün satırların sonuç listesinde görünmesini sağlar. Distinct sözcüğü sadece tek olan (unique) kayıtların sonuç listesinde yer almasını sağlar. liste parametresi veriden seçilecek kolonu (sütunu) belirtir. Into sözcüğü yeni bir tablo yaratmayı sağlar. yeni tablo parametresi sorgu sonucu yaratılacak tabloyu belirtir. From sözcüğü belli bir tablonun seçilmesini sağlar. tablo parametresi ise sorgulanacak olan tablo ya da tabloları, görünümleri belirtir. Where bir koşulu belirterek sadece o kuşula uyan kayıtların seçilmesini sağlar. Group By Kayıtların gruplanmasını sağlar. HAVING deyimiyle de ara toplamların alınmasını sağlar. Having sözcüğü de kayıtlarda kısıtlama yapar ancak hesaplamayı etkilemez. 18
  19. 19. Order Bysözcüğü ise belirtilen kolona göre listelenen kayıtları sıralamayı sağlar. Sıralama artan (ASC) ya da azalan (DESC) olabilir Compute sözcüğü ise hesaplama yapar. Tipik olarak SUM, AVG, MIN, MAX, COUNT gibi fonksiyonları kullanarak hesaplama yapar. Örnek: SELECT * FROM musteri Yukarıdaki deyim ile musteri tablosundaki bütün bilgiler elde edilir. SELECT deyiminin ardından kullanılan * (asterisk) işareti bütün kayıtlar anlamına gelir. Bu deyimin aynısı (aynı sonucu vereni) şu şekilde de yapılabilir: Örnek: SELECT kod, ad, soyad, grup, il, bakiye FROM musteri Müşteri tablosu: kodu Ad Soyad grup il bakiye 1 Ahmet Uzun ithal İZMİR 300000 2 Ayşe Yılmaz ithal ANKARA 400000 3 Mehmet Yılmaz ihraç ANKARA 100000 4 Hüseyin Uzun ihraç İZMİR 600000 5 Nuri Gezer ithal İZMİR 900000 6 Fatma Örnek ihraç İSTANBUL 300000 Sorgunun sonucu: 1 Ahmet Uzun ithal İZMİR 300000 2 Ayşe Yılmaz ithal ANKARA 400000 3 Mehmet Yılmaz ihraç ANKARA 100000 4 Hüseyin Uzun ihraç İZMİR 600000 5 Nuri Gezer ithal İZMİR 900000 6 Fatma Örnek ihraç İSTANBUL 300000 SELECT deyimi ile sadece belli kolonlar (alanlar) da seçilebilir: ARAMA : Tablo: Arama Kriterleri: Karşılaştırma operatörleri (=, >, <, >=, <>, !=, !<, !> Aralık belirtme BETWEEN ve NOT BETWEEN Liste IN ve NOT IN String karşılaştırma LIKE ve NOT LIKE Bilinmeyen değerler IS NULL ve IS NOT NULL Koşulların birleştirilmesi AND, OR Olumsuzlaştırma NOT Örnek: SELECT * from musteri WHERE bakiye BETWEEN 100000 AND 3000000 Aynı anlamda: SELECT * from musteri WHERE bakiye <= 100000 AND>= 3000000 19
  20. 20. Örnekler: SELECT * FROM MUSTERI WHERE borcu BETWEEN 100 AND 2000 AND grup='özel' Yukarıdaki sorgulamada grubu 'özel' olan ve ayrıca da borcu değerinin 100 ile 200 arasında olanı listelenir. 2.1.2.3.2. Aritmetik İşlemler Aritmetik işlemleri gerçekleştirmek için belli operatörler kullanılır: 2.1.2.3.2.1. Operatör Açıklamaları + Toplama , -Çıkarma /Bölme , *Çarpma SELECT borcu, borcu*2 FROM MUSTERI 2.1.2.3.3.Verileri Sıralamak: SELECT deyimi ile elde edilen veriler istenirse sıralanabilir. Sıralama belirtilen bir ya da daha fazla kolona göre yapılır. Bunun dışında sıralama ASC (ascending-artan) ya da DESC (descending-azalan) olarak belirtilebilir. Kullanım Biçimi: SELECT kolon_listesi ORDER BY kolon adı ASC ya da DESC ORDER BY sözcüğü ise verilerin istenilen alan göre sıralı olarak listelenmesini sağlar. SELECT * FROMmusteri ORDER BY ad Yukarıdaki deyim ile müşteri tablosundaki bütün kayıtlar ad alanına göre sıralı olarak listelenirler. 2.1.2.3.4. Gruplandırma İşlemleri Gruplama seçenekleri tablo satırlarının belli alanlarına göre gruplandırılmasını sağlar. GROUP BY sözcüğü ise yapılan bir gruplandırma işlemine göre listeleme sağlar. Örnek: SELECT grup, sum(bakiye) FROM musteri GROUP BY grup Yukarıdaki örnekte müsteri tablosundaki bakiye alanı grup kodu bazında toplanır. GROUP BY ile yapılan gruplandırma (alt toplamlar) işlemi içinde ayrıca HAVING sözcüğü kullanılarak bir koşul da verilebilir. SELECT grup, sum(bakiye) FROM musteri GROUP BY grup HAVING il = 'İZMİR' Yukarıdaki deyim ile müşteri tablosundaki bütün kayıtların bakiye bilgiler gruplarına göre ara toplam alınır, bir de il bilgisine göre filtrelenir. Not: Gruplama yapılmayan her sütun GROUP BY deyiminde kullanılması gerekir: Örnek: SELECT PRODUCTID, CATEGORYID, SUM (UNITPRICE) FROM PRODUCTS GROUP BY PRODUCTID, CATEGORYID 20
  21. 21. 2.1.2.3.5.Compute Sözcüğü: COMPUTE sözcüğü toplama fonksiyonunun kullanarak query sonucunda bir toplam satırı üretir. COMPUTE BY sözcüğü ise ek toplam satırları yaratır. Kullanım Biçimi: COMPUTE fonksiyon (kolon_adı) Örnek: Sipariş tablosu: tarih Mkodu ürün adet fiyatı 1/1/1999 1 X-TV 10 100000 2/1/1999 1 X-TR 10 100000 2/1/1999 2 X-TV 15 100000 2/1/1999 3 X-KT 10 200000 3/1/1999 3 X-KT 20 150000 2/2/1999 1 X-TV 22 400000 SELECT ürün, adet FROM siparis ORDER BY ürün COMPUTE SUM(adet) Yukarıdaki örnekte adet kolonunun toplamı alınır. Sonucu: ürün adet X-KT 10 X-KT 20 X-TR 10 X-TV 10 X-TV 15 X-TV 22 Sum 87 2.1.2.3.6. Insert Deyimi Tabloya veri girmek için kullanılır. INSERT INTO <tablo adı> (sütunlar listesi) VALUES (değerler listesi) Örnek: INSERT INTO CARIANA (kodu, adi, grubu, adresi) VALUES ('600', 'FARUK', 'A', '76 sokak no 5') Örnek: INSER INTO deyimi ile bir tabloyu diğer bir tablodan doldurmak: use ornek INSERT INTO cariyedekf (kodu, adi, grubu, adresi) (SELECT kodu, adi, case grubu 21
  22. 22. when 'A' THEN 'ITHAL' when 'B' THEN 'YERLİ' ELSE 'DİĞER' end, adresi from cariana) 2.1.2.3.7.Update Deyimi Tablodaki verileri güncellemek için kullanılır. Genellikle güncelleştirilecek satırı belirtmek için WHERE sözcüğüyle kullanılır. Mevcut bir tablodaki satırları değiştirmek için UPDATE deyimi kullanılır. UPDATE deyimi sadece bir tablo üzerinde kullanılmalıdır. UPDATE deyimi ile SET ve WHERE sözcüğü kullanılır. SET sözcüğü değiştirilecek kolonları ve değerleri belirtir. WHERE sözcüğü ise değiştirilecek satırı belirtir. Update deyiminin kullanım biçimi: UPDATE tablo SET kolon = ifade WHERE arama_koşulu Örnek: Aşağıdaki örnekte fiyat değerini %10 artırır. UPDATE siparis SET fiyatı= fiyatı * 1.1 Örneğin bir kaydı düzeltmek istersek ; UPDATE Musteri SET Ad = 'Nuri Yılmaz' WHERE kod='1'; Örneğin tüm musterilerin bakiyesini %10 artırmak istediğimizde; UPDATE Musteri SET bakiye=bakiye*1.1; 2.1.2.3.8. Delete Deyimi Bir tablodaki verileri silmek için DELETE komutu kullanılır. Örneğin Öğrenci tablosundaki tüm verileri silmek için; DELETE * from musteri; Tabloda, bakiyesi 1000'den küçük olan müşterilerin satırlarını silmek için: DELETE * FROM musteri WHERE bakiye <=1000 Kullanım biçimi: DELETE tablo WHERE arama_koşulu Örnek: Tablodan satır silmek Aşağıdaki örnekte müşteri tablosundan 'B' grubuna sahip olan müşteriler silinir. DELETE musteri WHERE grubu = 'B' 22
  23. 23. 2.1.2.4. DCL (Data Control Language) Deyimleri Veritabanındaki kullanıcı haklarını düzenlemek için kullanılan deyimlerdir. Örneğin GRANT, DENY, REVOKE gibi. Örnek: USE Northwind GRANT SELECT ON Stok TO PUBLIC Adı geçen ve telif haklı olan ürünler bilgi amaçlı olarak kullanılmıştır. Grant Deyimi Aşağıdaki örnek Ayşe adlı kullanıcı veritabanı ve tablo oluşturma izni verilir: GRANT CREATE DATABASE, CREATE TABLE TO SEYDA 2.1.2.5. SQL FONKSİYONLARI SQL Server'da Fonksiyonlar, hesaplamalarda ve özellikle sistem hakkında bilgi almada yaygın olarak kullanılan araçlardır. Transact-SQL (T-SQL) programlama dilinde değişik kategorilerle adlandırılan fonksiyonlar vardır. Bunlardan en yaygını veriler üzerinde işlem yapan toplama ya da gruplama olarak adlandırabileceğimiz aggregate fonksiyonlarıdır. 2.1.2.5.1. Gruplama Fonksyonları Gruplama (aggregate) fonksiyonları bir dizi değer üzerinde hesaplama yaparlar ve bir sonuç değer döndürürler. Toplama ya da gruplama fonksiyonları olarak adlandırabileceğimiz bu fonksiyonlar genellikle GROUP BY deyimi ile kullanılırlar. Gruplama fonksiyonları aşağıdaki ifadeler içinde kullanılabilirler. SELECT deyiminin listesinden (bir subquery olarak) Bir COMPUTE ya da COMPUTE BY sözcüğü ile. Bir HAVING sözcüğü ile. Transact-SQL programlama dilinde şu aggregate fonksiyonları kullanılır: AVG COUNT GROUPING MAX MIN SUM STDEV STDEVP VAR VARP 23
  24. 24. 2.1.2.5.1.1. AVG (T-SQL) Fonksiyonu: Bir grup içindeki değerlerin ortalamasını döndürür. Null değerler dikkate alınmaz. Kullanım Biçimi: AVG([ALL | DISTINCT] ifade) Argümanları All: Ortalama fonksiyonunu bütün değerlere uygular. Distinct: İşlemin her tek değer için uygulanacağını belirtir. Diğer bir deyişle tekrar eden değerlerin yerine birisi kullanılır. İfade : Say ısal bir değeri olan ifade ya da kolon adı. Örnek: Aşağıdaki örnekte satış miktarları toplanmakta ve ortalaması alınarak iki ayrı sonuç değeri verilmektedir: USE Northwind GO SELECT AVG(quantity), SUM(quantity) FROM [Order Details] GO COUNT (T-SQL) Fonksiyonu Bir grup içindeki eleman sayısını verir. Kullanım Biçimi: COUNT({[ALL | DISTINCT] ifade] | *}) Argümanları: All: Fonksiyonunu bütün değerlere uygular. Distinct: İşlemin her tek değer için uygulanacağını belirtir. Diğer bir deyişle tekrar eden değerlerin yerine birisi kullanılır. İfade: Bir ifade ya da kolon adı. *: Bir tablodaki bütün satırların sayısını döndürmek için kullanılır. COUNT(*) herhangi bir paratmetre ile kullanılmaz ve DISTINCT ile kullanılmaz. Count(*) ile null ve tekrar eden değerler dahil bütün elemanlar sayılır. Örnek: Aşağıdaki örnekte ürünler tablosundaki ürünler sayılır. DISTINCT ile tekrara izin verilmez. USE Northwind GO SELECT COUNT(DISTINCT productname) FROM products GO 24
  25. 25. 2.1.2.5.1.2. Max (T-SQL) Fonksiyonu: İfade içindeki maksimum değeri döndürür. MAX([ALL DISTINCT] ifade) Argümanları: All: Fonskiyonunu bütün değerlere uygular. 2.1.2.5.1.3. Min (T-SQL) Fonksiyonu: İfade içindeki minimum değeri döndürür. Kullanım Biçimi MIN([ALL | DISTINCT] ifade) Argümanları: All: Fonskiyonunu bütün değerlere uygular. Örnek: Aşağıdaki örnekte en küçük satış adedi elde edilmektedir: USE Northwind GO SELECT MIN(quantity) FROM [Order Details] GO 2.1.2.5.1.4. Sum Fonksiyonu Değerlerin toplamlarını verir. SUM fonksiyonu sadece sayısal alanlarda kullanılır. Kullanım Biçimi: SUM ([ALL DISTINCT] ifade) Argümanları: All: Toplama (aggregate) fonksiyonunu bütün değerlere uygular. ALL seçeneği varsayım olarak kullanılır. Distinct: SUM fonksiyonunu tek değerlerin (unique) toplamını vermesini sağlar. İfade: Bir sabit, bir kolon, fonksiyon ya da bir aritmetik işlem. Örnek: USE pubs GO -- Satır toplamları SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) BY type MicroSoft SQL Server bir veritabanı sunucu yazılımıdır. Veritabanlarının oluşturulmasını ve yönetilmesini sağlar. Dünyadaki en güçlü ve en güvenilir veritabanı denilebilir. Verilerin organizasyonunu merkezi olarak yapan Sql Server client uygulamaların server üzerindeki verilere erişmesinide sağlar. Yani Ağrı'da bulunan bir şubeden İstanbul merkezde olan kayıtlara ulaşabilirsiniz. Microsoft SQL Server 2008, en kritik uygulamalarınızı çalıştırabilmenizi, uygulamaların geliştirme ve yönetimi için gerekli olan sure ve maliyeti azaltmanızı ve organizasyonunuzun tamamına, eyleme geçirilebilir kavrayışlar sunmanızı mümkün kılan, güvenilir, verimli ve zeki bir veri platformu sunmaktadır. 25
  26. 26. 2.2. Kodlama Standartları 2.2.1. Tanımlar ve Kısaltmalar 2.2.1.1. PascalCase İlk karakterin ve içerisinde yer alan tüm kelimelerin ilk harfinin büyük, diğer harflerin küçük olduğu isimdir. Örnek : MusteriNo 2.2.1.2. CamelCase İlk karakterin küçük, içerisinde yer alan tüm kelimelerin ilk harfinin büyük, diğer harflerin küçük olduğu isimdir. Örnek : musteriNo 2.2.1.3. UpperCase Tüm karakterleri büyük harf olan isimdir. Örnek : MUSTERINO 2.2.1.4. LowerCase Tüm karakterleri küçük harf olan isimdir. Örnek : musterino 2.2.2. C# İsimlendirme Standartları • Tüm class, method, property, vb. tüm isimler Türkçe verilmeli, isim içerisinde Türkçe karakter(‘ıİçÇğĞşŞöÖüÜ’) kesinlikle kullanılmamalıdır. • Tüm isimler, anlamlı, açıklayıcı olmalı ve içerisinde kısaltma kullanılmamalıdır. • Finart katman bileşenleri (entity, facade vs.) dışındaki public class isimleri ile tüm public member (metod, property, vb.) isimleri PascalCase verilmelidir. • Tüm private değişkenler ve metodların parametreleri camelCase isimlendirilmelidir. • Constant’lar UPPERCASE ve kelimeler arasında ‘_’ kullanılacak şekilde isimlendirilmelidir. • Member Variables isimleri için (kontroller dışında) ‘m_’ ön eki kullanılmalıdır. • Değişken isimleri için i, j, a, vb. gibi tek karakterler, döngülerdeki iterasyonlar dışında kullanılmamalıdır. • Metodlar için, bir emir ifade eden isimler (Oku, Getir, Kaydet, İptal, Sil vs.) seçilmesi tavsiye edilmektedir. • Form ve üzerinde kullanılan kontrollerin isimlendirilmesi için aşağıdaki standartlara uyulmalıdır. .Net Bileşenleri Ön Ek 26
  27. 27. Label Lbl TextBox Txt ComboBox Cmb CheckBox Chk NumericUpDown Nud GroupBox Grp Buton Btn Panel Pnl Form Form ListView Lvw RadioButton Rdb ContextMenu Cm TabControl Tbc TabPage Tbp ListBox Lbx PictureBox Pbx Tablo.. .Net Bileşenleri 2.2.2.1. Değişken Tanımlama Standartları • Her satırda bir değişken tanımlanmalıdır. Bu şekilde yapılan tanımlama, açıklama girişini kolaylaştırmaktadır. • Değişkenlere, tanımlandığı anda değer atanmasına özen gösterilmelidir. • Tanımlanan her değişken mutlaka kullanılmalıdır. • Her değişken sadece bir amaç için kullanılmalıdır. Örnek: int musteriNo = musteri.No; // Müşteri Numarası 2.2.2.2. Genel Hata Yönetimi • Yakalanan exception sonrası kullanıcıya, anlayabileceği ve yönlendirici bir mesaj verilmelidir. • Çok büyük try-catch blokları oluşturulmamalı, bunun yerine her farklı iş için ayrı bir blok kullanılmalı ve blok spesifik bir kod bölümünü kapsamalıdır. Bu şekilde hangi kod parçaçığının exception’ı oluşturduğunu kolaylıkla bulunabilir. • Static bir class’ın, constructor’ında alınan hata sebebiyle initialize işlemi gerçekleştirilemez ise, constructor bir daha çalışmayacak olduğu için uygulamada beklenmeyen hatalar oluşabilir. Constructor’a sahip statik class kullanımları için kontrol yöntemleri oluşturulmalıdır. 2.2.2.3. Programlama Pratikleri • Kod tekrarından kaçınılmalı, belirli bir işi yapan kod parçaları ayrı bir metod içerisine 27
  28. 28. alınmalıdır. • Tasarım sırasında, kod birimlerinin tek başına iş yapabilirliğinin yüksek, diğer birimler ile olan bağımlılığının düşük olmasına dikkat edilmelidir. • Dış girdiler ve dış kaynaklardan gelen veri (kullanıcı girdisi, dosya, vb.) için girdi kontrolleri oluşturulmalı, girdinin doğruluğu kontrol edilmelidir. • Değişkenler mümkün olan en küçük yaşam döngüsüne sahip olmalıdır. • En sık kullanılan case’ler ilk olarak kontrol ediliyor olmalıdır. • System namespace’i altında tanımlı tipler yerine C# spesifik tipler kullanılmalıdır. int yas; // Int32 string musteriAd; // String object kulaniciBilgi; // Object Beklenmeyen değerlerin/durumların oluşma olasılığı her zaman düşünülmeli ve gerekli kontrol yapısı kurulmalıdır. 2.2.2.4. Veritabanı Nesne Adlandırma Kuralları Bu bölüm, veritabanı nesnelerinin adlandırılmasında kullanılacak standartları içermektedir. Bu standartların uygulanması sonucunda, veritabanı üzerinde işlem yapması (değişiklikler yapma, sorun giderme, kod yazımı gibi) gerekli olabilecek tüm teknik personelin rahatlıkla anlayabileceği bir veritabanı oluşmuş ve yönetilmiş olacaktır. Bu bölüm, aşağıdaki başlıklarda tercih edilen adlandırma kurallarını içermektedir: • Tablolar – Tables • Geçici Tablolar – Temporary Tables • Görünümler - Views • Saklı prosedürler - Stored procedures • Kullanıcı tanımlı fonksiyonlar - User defined functions • Tetikleyiciler - Triggers • İndeksler – Indexes • Sütunlar – Columns • Kullanıcı tanımlı veri türleri - User defined data types • Primary keys • Foreign keys • Default bilgileri ve Kontrol kısıtları - Default and Check constraints • Değişkenler - Variables • Paketler – Packages • Sekanslar – Sequences İsimlendirmelerde 30 karakter olarak bir sınırlandırma getirilmiştir. Bu sınırlandırma çerçevesinde veritabanı nesneleri isimlendirilmelidir. Nesne isimleri tüm harfleri büyük olacak şekilde, yani “UPPERCASE” formatında yazılmalıdır. Türkçe harflere yazımda yer verilmemelidir. 2.2.2.5. Tabloların İsimlendirilmesi Tablolar, herhangi bir varlığın anlık bilgilerini sunmaktadır. Örneğin, tüm müsteri bilgileri bir tabloda saklanmaktadır. Burada “müsteri” bir varlık niteliğindedir, ve müsteri tablosunun tüm 28
  29. 29. satırları “müsteri” varlığının anlık bilgilerini sunmaktadır. Bu durumda, tabloyu, bilgilerini sunduğu varlığın ismi uyarınca adlandırmak gereklidir – yani “Musteriler”. Tabloda müsterilerin farklı anlardaki bilgileri sunulduğu için, tablo isminin çoğul olarak belirlenmesi gereklidir. Yazım Formatı: tbl(3 karakter)AmacaYonelikKısım Örn: tblKullaniciBilgileri şeklinde olacaktır. 2.2.2.6. Saklı Prosedürlerin İsimlendirilmesi Saklı prosedürler, iyi tanımlanmıs ve spesifik görev üstlenirler ve eylem/hareket odaklıdırlar. Bu nedenle, isimlerinin üstlendikleri görevleri ifade ediyor olması gereklidir. Üstlenilen görevi betimlemek için “fiil” yapısındaki kelimeler kullanılmalıdır. Yazım Formatı: sp_AmacaYonelikFiiller Örn: sp_getUsersInformation şeklinde olacaktır. Kelime dizgesinin başında stored procedure olduğunu belirten sp kelimesi kullanılacaktır. Prosedür yazım formatında ISLEM olarak belirtilen kelime yerine islemin amacına göre: insert islemleri için “INS”, delete islemleri için “DEL” update islemleri için “UPD” select gibi sorgulama islemleri için “SEL” yukarıda belirtilen “UPD” ve “SEL” lerin beraber kullanıldığı durumlarda veya scheduled işlemlerde “BAT” kelimeleri kullanılacaktır. Saklı Yordamlar yardımıyla tablolara veri eklemek son derece kolay, hızlı ve etkilidir. Bununla birlikte Saklı Yordamlar sağladıkları güvenlik kazanımları nedeni ilede tercih edilirler. Saklı Yordamları geliştirmek son derece kolaydır. İstediğiniz sql işlemini, satır silmek, satır aramak gibi işlemler kolayca gerçekleştirilmektedir. Şekil 2.6. Saklı yordamların avantajları 29
  30. 30. 2.2.2.7. Tetikleyicilerin (Trigger) İsimlendirilmesi Yazım Formatı: MODULKODU(3 karakter)_AMACAYONELIKISIM_ISLEM(3 karakter)_TRG Örn: RYS_KULLANICI_INS_TRG seklinde olacaktır. Amaca Yönelik olarak kullanılan Kelimeler arasında “_” karekteri kulanılmayacaktır. Kelime dizgesinin sonuna triger olduğunu belirten TRG kelimesi kullanılacaktır. Tetikleyici yazım formatında ISLEM olarak belirtilen kelime yerine islemin amacına göre: insert (ekleme) için “INS” update (güncelleme) için “UPD” delete (silme) için “DEL” kelimeleri kullanılacaktır. 2.2.2.8. Birincil Anahtarlar (Primary Keys) Birincil anahtar sütun(lar)ı, tablodaki her bir satırı birincil (unique) olarak belirleyen sütun(lar)dır.Bu nedenle, Birincil anahtar adlandırma kuralı olarak, tablo isminin önüne 'PK_' eklenmelidir. Yazım Formatı: PK_TABLOADI 2.2.2.9. Sekanslar(Sequences) Ardışık sırada numara üretmek için kullanılan yapılardır. Burada isimlendirmeler : Yazım Formatı: MODULKODU(3 karakter)_AMACAYONELIKISIM_SEQ şeklinde olmalıdır. 2.2.3. PROJE İÇERİĞİNİN ANLATILMASI Projenin uygulama kısmı ve veritabanı tasarımı aynı eş zamanlı tasarlanmıştır. Fakat anlaşılır olması açısından bu aşamalar uygulama kısmı ve veritabanı kısmı olarak iki kısımda anlatılacaktır. 2.2.3.1.UYGULAMA KISMI Projeye başlamadan önce projenin kullanıcılarının kimler olacağı belirlenmiştir. Bunlar: i) Öğrenciler 30
  31. 31. ii) Öğretmenler iii) Editör iv) İdareci Her bir kullanıcının görevleri ayrıdır ve sistemden bu görevleri yerine getirebilirler. Her bir kullanıcı kendilerine ait kullanıcı adı ve şifrelerini kullanarak sisteme giriş yaparlar ve kendilerine ait alanları görebilirler. Aşağıda her bir kullanıcı için kullanıcının yapabileceği işlevler belirtilmiştir. Uygulama kısmında projenin oluşturulduğu yazılım programında projenin bileşenlerinin görebileceği solution explorer kısmında projenin 3 katmanlı bir yapıya sahip olduğu görülmektedir. Bu katmanlardan ilki Blog isimli bir website kısmıdır. Diğer katmanlar ise metotların bulunduğu DAL isimli project katmanı ve nesnelerin bulunduğu PROPERTY katmanıdır. Solution explorerda website katmanında web page, user controls, style dosyaları ve masterpage nesneleri bulunmaktadır. Project kısmında ise nesnelere ait sınıflar bulunmaktadır. Bu sınıflar içinde web controls tarafından kullanılan metotlar bulunmaktadır. Web sayfaları masterpage ve user controls kullanılarak oluşturulmuştur. Masterpage, aynı özelliklerin ya da menülerin kullanıldığı benzer sayfaları oluştururken büyük kolaylık sağlamaktadır. Aşağıda projenin oluşturulduğu programda, projeye ait solution explorer'ın ekran görüntüsü mevcuttur: Şekil 2.7. Projeye ait solution explorer görüntüsü 31
  32. 32. Şekil 2.8. Tüm kullanıcıların giriş yaptığı anasayfa 2.2.3.1.1. Öğrenci Kısmı Öğrenci kısmında randevu alma ve randevu iptal etme işlemleri gerçekleştirilmektedir. 2.2.3.1.1.1. Randevu Alma Öğrenciler randevu almak için randevu al menüsüne tıkladıklarında Randevu Al isimli sayfaya yönlendirilirler. Bu sayfada, randevu almak için fakülte, bölüm ve öğretim üyesi isimlerini seçip, bir sonraki adıma geçmek için girdikleri bilgileri onaylarlar. Şekil 2.9. Randevu Al sayfası. Öğrenciler öğretim görevlisini seçtikten sonra bilgilerini girecekleri sayfaya yönlendirilirler. Bu sayfada öğretim görevlileri ile görüşmek istedikleri uygun gün ve saatleri seçip, istenilen bilgileri girip, dilerlerse dosya da ekleyip devam butonuna bastıklarında randevuları sisteme kaydolmaktadır. 32
  33. 33. Şekil 2.10. Randevu Al sayfasında öğrenci bilgilerinin girilmesi ve dosya ekleme işlemi Şekil 2.11. Randevu Al sayfası tüm bilgilerin girilmiş hali 33
  34. 34. 2.2.3.1.1.2. Randevu İptal Etme Öğrenciler aldıkları randevuları iptal etmek isteyebilirler. Bunun için de ayrı bir sayfa tasarlanmıştır. Öğrenciler Randevu İptal sayfasında öğrenci numarasını girerek tüm randevularını listeleyebilmektedir. Daha sonra bu randevularından silmek istediklerini seçerek randevularını sistemden silebilmektedirler. 34
  35. 35. 35
  36. 36. 36
  37. 37. Şekil 2.12. Randevu Sil sayfasında randevuların listelenmesi Şekil 2.13. Randevu Sil sayfasında randevu silindikten sonraki uyarı ekranı 2.2.3.1.2. Öğretim Üyesi Kısmı Öğretim üyeleri kendilerine ait programları görebilmek ve düzenlemek için önce sisteme giriş yapmalıdırlar. Öğretim üyeleri, sicil numaralarını ve şifrelerini girerek sisteme giriş yapmaktadırlar. 37
  38. 38. Şekil 2.14. Öğretim üyelerinin sisteme giriş yaptıkları sayfa. Öğretim üyeleri şifrelerini hatırlamadıkları takdirde Şifremi Unuttum linki üzerinden şifre Hatırlatma sayfasına yönlendirilip, o sayfada sicil numaralarını girdikleri takdirde maillerine şifre bilgileri ulaşmaktadır. Şekil 2.15. Şifre Hatırlatma Sayfası Öğretim görevlileri doğru sicil numarası ve şifrelerini girdikten sonra kendilerine ait anasayfaya yönlendirilirler. Bu sayfada dört adet menü bulunmaktadır. Bu menüler KOURYS anasayfasına dönüş, ofis saati ayarlama, randevu görüntüleme ve çıkış menüleridir. 38
  39. 39. Şekil 2.16. Öğretim görevlilerine ait anasayfa 2.2.3.1.2.1. Ofis Saatleri Ayarlama Ofis saatleri menüsü ile kullanıcı, haftalık randevu gün ve saatlerini ayarlayabilmektedir. Ayrıca seçtiği uygun gün ve saatleri aynı sayfada görebilmektedir. Haftalık gün ve saatler ayarlanırken çeşitli kontroller yapılarak kullanıcının, aynı gun ve saate birden fazla uygunluk vermesi engellenmektedir. Şekil 2.17. Ofis Saatleri sayfasında uygun randevu saatlerinin listelenmesi ve ayarlanması. 39
  40. 40. Projede Obout.Suite adlı programın dll.'leri projeye referans olarak gösterilmiştir ve böylece gridview'lara daha estetik bir görünüm kazandırılmıştır. Uygun randevu saatlerinin gösterilmesi bu sayede kullanıcıya daha kolay ve daha fonksiyonel kullanma olanağı sağlamıştır. 2.2.3.1.2.2. Randevu Görüntüleme Randevu Görüntüle menüsü ise öğretim üyesini, randevularını görüntülediği ve düzenlediği sayfaya yönlendirir. Bu sayfada kullanıcı, hangi gün ve saatte kimlerle randevusu olduğunu görüntüler, öğrenciler eğer randevu konusuyla ilgili dosya eklemişse, bu dosyaları bilgisayarına indirebilir. Öğretim görevlisi randevulardan uygun olmayanları sebep belirterek ya da belirtmeksizin iptal edebilir. Randevunun iptal edilmesi halinde öğrenciye bu durumla ilgili sistem tarafından randevu iptal maili yollanmaktadır. Şekil 2.18. Öğretim görevlisine ait randevu görüntüleme ve düzenleme sayfası 2.2.3.1.3. Admin Kısmı Sistem yöneticileri anasayfadan Admin Girişi menüsü üzerinden kendi giriş sayfalarına yönlendirilirler. Bu sayfada kullanıcı adı ve şifre girerek sisteme giriş yaparlar. 40
  41. 41. Şekil 2.19. Sistem yöneticisi giriş sayfası Sistem yöneticisi sisteme giriş yaptıktan sonra kendisine ait anasayfaya yönlendirilir. Bu anasayfada Fakülte Ekle, Bölüm Ekle, Kullanıcı Ekle, Kullanıcıları Listele ve Çıkış menüleri bulunmaktadır. Şekil 2.20. Sistem yöneticisi anasayfası 2.2.3.1.3.1. Bölüm Ekle Menüsü Bölüm ekle menüsü ile kullanıcı seçtiği fakültenin altına yeni bölüm ekleyebilmektedir. Ayrıca 41
  42. 42. sistemde kayıtlı olan tüm bölümleri ve bağlı oldukları fakülteleri de görebilmektedir ve varolan bölümlerden silinmesi gerekenleri de silebilmektedir. Şekil 2.21. Sistem yöneticisinin bölüm eklemek ve silmek için kullandığı sayfa 2.2.3.1.3.2. Fakülte Ekle Menüsü Sistem yöneticisi bölüm ekleyebildiği gibi sisteme yemi fakülte de ekleyebilmektedir. Bu işlemi Fakülte Ekle menüsü üzerinden gerçekleştirmektedir. Fakülte ekleme sayfasına yönetici sistemde varolan fakülteleri görüntüleyebilmekte ve silinmesi gereken fakülteleri silebilmektedir. Şekil 2.22. Sistem yöneticisinin fakülte eklemek ve silmek için kullandığı sayfa 2.2.3.1.3.3.Kullanıcı Ekle Menüsü 42
  43. 43. Sistem yöneticisi kullanıcı da ekleyebilmektedir. Kendisi gibi sistem yöneticisi ya da öğretim görevlisi ekleyebilmektedir. Sistem yöneticisi eklerken kullanıcı adı ve şifre bilgilerini sisteme kaydeder ve bunu kullanıcıya kendisi bildirir. Öğretim üyesi kaydederken ise, öğretim görevlisine ait kişisel bilgiler, Bağlı olduğu fakülte ve bölüm, mail adresleri, sicil numarası gibi bilgileri sisteme kaydeder. Şekil 2.23. Sistem yöneticisinin başka bir sistem yöneticisi eklediği sayfa 43
  44. 44. Şekil 2.24. Sistem yöneticisinin öğretim üyesi kaydı yaptığı sayfa 2.2.3.1.3.4. Kullanıcı Listele Menüsü Sistem yöneticileri sistemde kayıtlı olan tüm öğretim görevlileri ve bu öğretim görevlilerine ait bazı bilgileri görüntüleyebilmektedirler. Bu işlemi Kullanıcı Listele menüsü üzerinden gerçekleştirmektedirler. Listeledikleri kullanıcıları ayrıca silme hakkına da sahiptirler. Şekil 2.25. Sistem yöneticisi tarafından kullacıların listelenmesi ve silinmesi işlemleri sayfası 2.2.3.1. VERİTABANI KISMI Projede veritabanı sunucusu olarak Microsoft SQL Server 2005 kullanılmıştır. Veritabanı kısmında stored procedureler ve tablolar bulunmaktadır. Stored procedure ve tabloların ne işe yaradığı önceki bölümlerde anlatılmıştır. Bu bölümde bu stored procedure ve tabloların içeriklerine ve ne işe yaradıklarına değinilecektir. 2.2.3.1.1. Saklı Yordamlar - Stored Procedures Projede güvenliğin arttırılması ve hızın arttırılması amacı ile stored prosedürler kullanılmıştır. Aşağıda bu sp ler ve sp lerin hangi amaç için kullanıldıkları ne işe yaradıkları açıklanmıştır. 2.2.3.1.1.1 sp_addRandevu: Bu stored procedure randevu ekleme işleminde kullanılır. Randevu alma işleminde kullanıcıdan alınan bilgileri tblEklenenRandevular tablosuna eklemek için bu sp kullanılır. İlk başta sp içerisinde kullanılacak olan değişkenler tanımlanmıştır daha sonra ise bu değişkenlere programdan gelen değerer aktarılmıştır. En son olarak ise bu değerler tabloya yazılmıştır. Create proc sp_addRandevu ( @konu nvarchar(50), @icerik nvarchar(150), @ogrUyeID int, @ogrNo nvarchar(50), 44
  45. 45. @ogrAdý nvarchar(50), @ogrMail nvarchar(50), @randSaat nvarchar(50), @randGun nvarchar(50), @randDate datetime, @ogrUyeAd nvarchar(50), @filename nvarchar(50), @_RandevuGun nvarchar(50), @_RandevuSaat nvarchar(50) )as INSERT INTO tblEklenenRandevular(RANDEVU_KONU,RANDEVU_ICERIK,OGRUYE_ID,OGR_NO,OGR_ADI,OGR_MAIL,R ANDEVU_SAATI,RANDEVU_GUNU,RANDEVU_TARIHI,OGRUYE_ADI,RANDEVU_DOSYA,_RANDEVUGU N,_RANDEVUSAAT) VALUES (@konu,@icerik,@ogrUyeID,@ogrNo,@ogrAdý,@ogrMail,@randSaat,@randGun,@randDate,@ogrUyeAd,@filenam e,@_RandevuGun,@_RandevuSaat) 2.2.3.1.1.2. sp_BolumEkle: Bu stored procedure, yeni bir bölüm ekleme işleminde kullanılır. Yönetici KOURYS ye yeni bir bölüm eklediğinde değerler alınarak sp_BolumEkle sp si tarafından tblBolumler tablosuna yazılır. create proc sp_BolumEkle ( @fakulteid int, @bolumadi nvarchar(50) )as INSERT INTO tblBolumler (FAKULTE_ID,BOLUM_ADI) VALUES (@fakulteid,@bolumadi) 2.2.3.1.1.3. sp_getID: Bu stored procedure, adı verilen öğretim üyesinin id değerini geri döndürür. Daha önce her öğretim üyesinin kendisine ait özel bir id si olduğunu belirtmiştik. Bu sp de bu değeri istenilen yerde geri döndürür. Create proc sp_getID ( @username nvarchar(50) )as SELECT OGRUYE_ID FROM tblKullaniciBilgileri WHERE OGRUYE_ADI = @username 2.2.3.1.1.4. sp_insertFakulte: Bu stored procedure sisteme yeni bir fakulte eklenmek istenildiğinde kullanılır. Sistem yöneticisi yeni bir fakülte eklediğinde sp tarafından fakulteye ait değerler programdan alınır ve tblFakulteler tablosuna kaydedilir. create proc sp_insertFakulte ( @fakulteadi nvarchar(50) )as INSERT INTO tblFakulteler (FAKULTE_ADI) VALUES (@fakulteadi) 2.2.3.1.1.5. sp_Randevu_Listele: Bu sp sisteme giriş yapmış olan bir öğretim üyesinin kendisinden alınan randevuları görmesiini sağlar. Sistemden aldığı öğretim üyesi id sine göre o id li öğretim üyesinin randevularını listeler. Create proc sp_Randevu_Listele ( 45
  46. 46. @ogrID int )as SELECT RANDEVU_KONU,OGR_NO,OGR_ADI,OGR_MAIL,RANDEVU_TARIHI,RANDEVU_SAAT FROM tblEklenenRandevular WHERE OGRUYE_ID= @ogrID 2.2.3.1.1.6. sp_selectBolum: Bu sp randevu alma ekranında kullanıcı fakülteyi seçtiğinde o fakülteye bağlı bölümleri listelemek amaçlı kullanılır. Sistemden o fakültenin id sini alır ve o id ye bağlı bölümlerisisteme geri döndürür. create procedure sp_selectBolum @fakulte_id int as select BOLUM_ADI FROM tblBolumler where (FAKULTE_ID=@fakulte_id) 2.2.3.1.1.7. sp_selectBolumler: Bu sp tblBolumler tablosundaki tüm bölümlerin bilgisini alma amaçlı kullanılır. Bu liste sisteme yönetici olarak giriş yapıldığında yeni bölüm ekleme ekranında yöneticiye sunulur. Create proc sp_selectBolumler as SELECT BOLUM_ADI FROM tblBolumler 2.2.3.1.1.7. sp_selectFakulteler: bu sp tblFakulteler tablosundaki tüm bölümlerin bilgisini alma amaçlı kullanılır. Bu liste sisteme yönetici olarak giriş yapıldığında yeni fakülte ekleme ekranında yöneticiye sunulur. create procedure sp_selectFakulteler as select FAKULTE_ADI FROM tblFakulteler 2.2.3.1.1.8. sp_selectUser: Bu sp kullanıcı tablosundan öğretim üyelerinin sicil numara bilgilerini alır. Create proc [dbo].[sp_selectUser] as select OGRUYE_SICILNO FROM tblKullaniciBilgileri 2.2.3.1.1.9. sp_selectUsers: Bu sp tblKullaniciBilgileri tablosundaki tüm bölümlerin bilgisini alma amaçlı kullanılır. Bu liste sisteme yönetici olarak giriş yapıldığında yeni kullanıcı ekleme ekranında yöneticiye sunulur. Create proc [dbo].[sp_selectUsers] as SELECT * FROM tblKullaniciBilgileri 2.2.3.1.1.10. sp_UserControl: bu sp sistemden aldığı öğretim üyesi sicil numarasına göre o öğretim üyesinin id sini sisteme geri döndürür. create proc sp_userControl ( @sicilno nvarchar(15) )as select OGRUYE_ID from tblKullaniciBilgileri where OGRUYE_SICILNO=@sicilno 2.2.3.1.1.11. sp_getDepartments: Bu sp ile veritabanından tüm fakülte ve tüm bölümler çekilir. 46
  47. 47. create proc sp_getDepartments as select F.FAKULTE_ADI, B.BOLUM_ADI FROM tblFakulteler as F inner join tblBolumler B on B.FAKULTE_ID=F.FAKULTE_ID 2.2.3.1.1.12. sp_insertAdmin: Sistem yöneticisi sistemin yönetm panelinden kendisi dışında sisteme başka yönetici de ekleyebilir. Bu yöneticiyi eklerken sp_insertAdmin sp si kulanılmaktadır. Gerekli parametreleri alarak admin tablosuna kullanıcı ve şifre bilgisini yazar. create proc [dbo].[sp_insertAdmin] ( @name nvarchar(50), @password nvarchar(50) )as insert into tblAdmin(YoneticiAdi, YoneticiSifre) values (@name,@password) 2.2.3.1.1.13. sp_getUsersInformation: Bu sp ile veritabanından kullanıcı bilgileri çekilir. Bu bilgiler admin panelinde kullanıcıları listlemek için kullanılır. Sistem yöneticisi yönetim panelinden kullanıcı listesini görmek istediğinde bu sp kullanılarak admin e bu bilgiler sunulur. create proc sp_getUsersInformation AS select F.FAKULTE_ADI,B.BOLUM_ADI,K.OGRUYE_ADI,K.OGRUYE_MAIL, K.OGRUYE_SICILNO FROM tblKullaniciBilgileri AS K join tblBolumler B ON K.OGRUYE_BOLUMID=B.BOLUM_ID join tblFakulteler F ON K.OGRUYE_FAKULTEID=F.FAKULTE_ID 2.2.3.1.2. Tablolar 2.2.3.1.2.1. Bölümler Tablosu Tablo 1.1 de bölümler tablosu görülmektedir. Bu tabloda 3 adet sütün bulunmaktadır. FAKULTE_ID, BOLUM_ID, BOLUM_ADI. FAKULTE_ID bölümün hangi fakülteye bağlı olduğunu göstermektedir. BOLUM_ID bölümün numarasıdır ve her bölümün kendine özel numarası vardır. BOLUM_ADI ise o bölümün adıdır. 47
  48. 48. 48
  49. 49. Tablo 2.1. Bölümler Tablosu 2.2.3.1.2.2. Fakülteler Tablosu Tablo 1.2. fakülte kayıtlarını tutan tablodur. FAKULTE_ID o fakültenin numarasıdır ve her fakültenin ayrı bir numarası vardır. Bu numaralar otomatik olarak atanmaktadır. FAKULTE_ADI ise fakültenin ismidir. Tablo 2.2. Fakülteler Tablosu 2.2.3.1.2.3. Kullanıcı Bilgileri Tablosu Bu tabloda kullanıcı bilgileri yani öğretim üyelerinin bilgileri tutulmaktadır. Öğretim üyeleri KOURYS sistemini kullanabilmeleri için bu sisteme öncelikle kayıt olmalıdırlar. Bu kayıt işlemi esnasında öğretim üyesinden bir takım bilgiler istenmektedir. Bu tabloda bu bilgiler tutulmaktadır. 49
  50. 50. Tablo 2.3. Kullanıcı Bilgileri Tablosu 2.2.3.1.2.4. Eklenen Randevular Tablosu Bu tablo öğrenciler tarafından alınan randevu kayıtlarını tutar. Bu randevular bir haftalıktır. Alınan randevu saati ve randevu günü hem gerçek değerler olarak (Pazartesi 09:00-09:15) hem de üzerinde işlem yapılması için sayısal değerler olarak (0,0) olarak tutulur. Burada ilk 0 pazartesi gününü diğer 0 ise randevu alınabilecek ilk aralık olan 09:00-09:15 aralığını temsil etmektedir. Ayrıca öğrenci randevu alırken randevu konusu ile ilgili herhangi bir döküman ekleyebilmektedir. Bu dökümanlar da yine bu tabloda tutulmaktadır. Tablo 2.4. Eklenen randevular tablosu 2.2.3.1.2.5. Öğretim Üyesi Randevu Bilgileri Tablosu Bu tablolar her öğretim üyesi için öğretim üyesinin id sine göre oluşturulmaktadır. Her öğretim üyesine ait kendi tablosu vardır. Bu tablolar kullanıcı kaydı yapıldığında yani öğretim üyesi KOURYS'ye üye olduğunda oluşturulmaktadır. İçerisinde de öğretim üyesinin ofis saatleri bilgisini tutmaktadır. Öğretim üyesi kendi sayfasından girerek ofis saatlerini ayarladığında veriler bu tabloya yazılır. Yine tblEklenenRandevular tablosunda olduğu gibi (Tablo1.4.) randevu gün ve saat değerleri hem gerçek değerleri ile hem de sayısal değerler olarak tutulur. 50
  51. 51. Tablo 2.5. Randevu Saatleri Tablosu 51
  52. 52. SONUÇ VE ÖNERİLER Kocaeli Üniversitesi Randevu Yönetim Sistemi'nin amacı öğretim üyelerinin ofis saatlerini daha verimli bir şekilde kullanmasını amaçlamaktadır. Bu amaç doğrultusunda sistem geliştirilmiştir. Bu saatlerin en verimli şekilde kullanılabilmesi için sistem en detaylı şekilde gerçeklenmeye çalışılmıştır. Yazılım geliştirmenin temel amaçları iş yükünün hafifletilmesi ve mevcut sistemin daha kolay, daha sağlıklı ve daha verimli bir şekilde iyileştirilmesidir. Bu hususlar göz önüne alındığında Kocaeli Ünversitesi Randevu Yönetim Sistemi öğretim üyeleri ve öğrenciler arasında randevu saatlerinin daha önceden belirlenmesi hem öğretim üyesi için hem öğrenci için zaman kaybının önüne geçmektedir ve sistemin daha verimli bir şekilde çalışmasını sağlamaktadır. Sistem de ayrıca bir yönetici kısmı vardır ve yönetici sisteme yeni bileşenler ekleyebilmektedir. Bu da sistemin dinamik bir yapı da olmasını sağlamaktadır. Randevular sistemde bir haftalık olarak ayarlanmaktadır. Öğrenciler haftaiçi günlerinde öğretim üyelerinin belirlediği ofis saatleri aralığında randevularını alabilmektedirler. Fakat öğretim üyesinin sistemi kullanabilmesi için sistem yöneticisinin öğretim üyesini sisteme kaydetmesi gerekmektedir. Sisteme kayıt olan öğretim üyesi kendi kullanıcı adı ve şifresi ile sisteme giriş yaptıktan sonra ofis saatlerini ayarlayarak sistemi kullanmaya başlayabilir. Sonuç olarak, oluşturulan sistem ile öğretim üyesi ve öğrenci arasındaki görüşmeler daha kolay ve verimli bir şekilde sağlanmıştır.
  53. 53. KAYNAKLAR [1] http://www.nedirtv.com/video/Webiner-ASPNET-AJAX.aspx [2] Her Yönüyle C# Sefer ALGAN Pusula Yayıncılık [3] asp ile web programcılığı ve elektronik ticaret zafer demirkol [4] Building web solutions with ASP.NET and ADO.NET Yazar Esposito, Dino ISBN-ISSN 0735615780 Yayın Yeri : Yayınlayan Reymond, Washington : Microsoft Press Yayın Tarihi 2002 [5] Eser Adı ASP.NET Yazar Çankaya, Mehmet Nuri ISBN-ISSN 9753474970 Yayın Yeri : Yayınlayan Ankara : Seçkin Yayın Tarihi 2002 [6] Eser Adı Designing microsoft ASP. NET applications Yazar Reilly, Douglas J. ISBN-ISSN 0735613486 Yayın Yeri : Yayınlayan Redmond, Washington : Microsoft Press Yayın Tarihi c2002 [7] Eser Adı Programming Microsoft.Net Yazar Prosise, Jeff ISBN-ISSN 0735613761 Yayın Yeri : Yayınlayan Redmont, Washington : Microsoft Press Yayın Tarihi 2002 [8] C# ile ASP.NET - Zafer Demirkol - Pusula Yayınları [9] ASP.NET Unleashed / Web Programcılığı - Stephen Walther - Sistem Yayıncılık [10]ASP.NET ve C# Web Programcılığı - A.Russell Jones - Alfa Yayınları [11]Adım Adım Microsoft ASP.NET - G.Andrew Duthie - Arkadaş Yayınları [12] http://www.w3schools.com/SQl/default.asp
  54. 54. [13] http://www.connectionstrings.com/sql-server-2005 [14] http://msdn.microsoft.com/en-us/library/aa174792(SQL.80).aspx [15] http://www.asp.net/learn/ajax-videos/ [16] http://quickstarts.asp.net/QuickStartv20/aspnet/Default.aspx [17] http://www.asp.net/learn/ [18] http://www.sqlcourse.com/ [19] http://www.obout.com/inc/download.aspx [20] http://www.obout.com/inc/tu_add_component.aspx [21] http://www.zirvedekibeyinler.net/Videolar-144-asp-net-de-masterpage- yapisi.aspx

×