SlideShare a Scribd company logo
T.C.
SİİRT ÜNİVERSİTESİ
MÜHENDİSLİK-MİMARLIK FAKÜLTESİ
BİLGİSAYAR MÜHENDİSLİĞİ
İNTERAKTİF EĞİTİM UYGULAMASI
BİTİRME TEZİ
Hazırlayan
Halil ŞAHİN 150304032
Hüseyin BİÇEN 150304032
Tez Danışmanı
Yrd. Doç. Dr. Yılmaz KAYA
SİİRT- 06.2019
T.C.
SİİRT ÜNİVERSİTESİ
MÜHENDİSLİK-MİMARLIK FAKÜLTESİ
İNTERAKTİF EĞİTİM UYGULAMASI
LİSANS TEZİ
Halil ŞAHİN
(150304030)
Hüseyin BİÇEN
(150304032)
Bilgisayar Mühendisliği Anabilim Dalı
Tez Danışmanı: Yrd. Doç. Dr. Yılmaz KAYA
06-2019
SİİRT
iii
ÖN SÖZ
Bu bitirme tezi çalışması, Siirt Üniversitesi, Mühendislik-Mimarlık Fakültesi,
Bilgisayar Mühendisliği Lisans Programı kapsamında hazırlanmıştır.
Yoğun bir çalışma temposu ile gerçekleştirdiğimiz olan bu çalışmada bizlere yol
gösteren değerli tez danışmanımız Yrd. Doç. Dr. Yılmaz KAYA’ya teşekkür ederiz.
Ayrıca üniversite hayatı boyunca geleceğimize mimarlık yapmış olan Doç. Dr. Musa
ATAŞ’a, Öğr. Gör. Bashar Alhaj AHMAD’a, Öğr. Gör. Hasan KURBAN’a ve Yrd. Doç.
Dr. Volkan Müjdat TİRYAKİ’ye teşekkürlerimizi arz ederiz.
Özellikle bu çalışmada ve dört yıllık üniversite hayatımız boyunca birlikte yoğun
bir mesai sarf ettiğimiz, bu süre zarfında birbirimizden desteğimizi esirgemediğimiz ben
Hüseyin BİÇEN değerli dostum Halil ŞAHİN’e ve ben Halil ŞAHİN değerli dostum
Hüseyin BİÇEN’e teşekkürlerimi sunuyoruz.
Halil ŞAHİN / Hüseyin BİÇEN
SİİRT-2019
iv
İÇİNDEKİLER
Sayfa
ÖN SÖZ ..........................................................................................................................iii
İÇİNDEKİLER ..............................................................................................................iv
ÖZET ............................................................................................................................... v
ABSTRACT....................................................................................................................vi
TABLOLAR LİSTESİ ...............................................................................................vivi
1. GİRİŞ ........................................................................................................................... 1
1.1. SQL Server Nedir?................................................................................................. 1
1.2. C# Nedir?............................................................................................................... 1
1.3. Asp.Net MVC Nedir? .....................................Hata! Yer işareti tanımlanmamış.
1.4. Api Nedir Nedir? ................................................................................................... 5
1.5. Asp.Net Web Api Nedir?....................................................................................... 5
2. MATERYAL VE METOT......................................................................................... 8
2.1. Veritabanı Oluşturma............................................................................................. 8
2.2. Entity Framework Oluşturma .............................................................................. 10
2.3. Asp.net MVC Web Api Oluşturma...................................................................... 11
2.4. Asp.net MVC Web Uygulaması oluşturma......................................................... 11
3. BULGULAR VE TARTIŞMA................................................................................. 15
4. SONUÇLAR.............................................................................................................. 21
5. KAYNAKLAR .......................................................................................................... 28
ÖZGEÇMİŞLER .......................................................................................................... 29
v
ÖZET
LİSANS TEZİ
İNTERAKTİF EĞİTİM UYGULAMASI
Halil ŞAHİN / Hüseyin BİÇEN
Siirt Üniversitesi
Mühendislik Mimarlık Fakültesi
Bilgisayar Mühendisliği Anabilim Dalı
Danışman: Dr. Öğr. Üyesi Yılmaz KAYA
2019, 30 Sayfa
Bu projenin amacı, eğitimde öğrenciyi, hayatının her aşamasında eğitime aktif olarak katmak ve
eğitimciyi, doğrudan öğrencinin hayatının her aşamasında kendisine sorunlarını ve sorularını danışabileceği
bir arkadaş haline getirmektir. Bunu yaparken öğretmen günün belli saatlerinde öğrencilerine notlar
gönderebilir, sorular sorabilir hatta çeşitli bilgilendirmelerde bulunabilir. Öğrenciler ise bu uygulama
üzerinden notlarına bakabilir, devamsızlıklarını görebilir, eğitim kurumunun bir duyurusu varsa bundan
haberdar olabilir. Aynı şekilde veliler öğrencilerini takip etme imkanını bulabilirler.
Anahtar Kelimeler: Eğitim, İnteraktivite, Yönetim, Mobil uygulama, Web uygulama
vi
ABSTRACT
BACHELOR’S THESIS
INTERACTIVE EDUCATION APPLICATION
Halil ŞAHİN / Hüseyin BİÇEN
Siirt University
Faculty of Engineering and Architecture
Computer Engineering Depertmant
Supervisior: PhD Yılmaz KAYA
2019, 30 Pages
The aim of this project is to actively involve the student in education at all stages of his life and to
make the educator a friend whom he can consult with his problems and questions directly at the student's
life. In doing so, the teacher may send notes, ask questions or even give information to his students at
certain times of the day. Students can view their grades through this application, see their discontinuity and
be aware of the announcement of an educational institution. In the same way parents can follow their
students.
Keywords: Education, Interactivity, Management, Mobile application, Web application
vii
TABLOLAR LİSTESİ
Sayfa
Tablo 1.3.1 ....................................................................................................................... 3
Tablo 1.3.2 ....................................................................................................................... 4
Tablo 1.5.1.1 .................................................................................................................... 6
Tablo 2.1.1 Veritabanı Genel Görünümü......................................................................... 8
Tablo 2.1.2 Öğrenci Tablosu............................................................................................ 8
Tablo 2.1.2 Öğretmen Tablosu......................................................................................... 9
Tablo 2.1.2 Sorular Tablosu............................................................................................. 9
Tablo 2.2.1 Entity Framework Tabloların Genel Görünümü......................................... 10
Tablo 2.2.2 Tabloların Class Yapıları............................................................................ 10
Tablo 2.3.1 Asp.net MVC Web Api Genel Yapısı ........................................................ 11
Tablo 2.4.1 Asp.net MVC Web Uygulamsı Genel Yapısı............................................. 11
Tablo 2.4.2 Asp.net MVC Web Uygulaması Student Controller Kodları ..................... 12
Tablo 2.4.3 Asp.net MVC Web Uygulaması Student Model Kodları ........................... 12
Tablo 2.4.4 Asp.net MVC Web Uygulamasının Student Index Kodları ...................... 13
Tablo 2.4.5 Asp.net MVC Web Uygulaması Student Create Kodları ........................... 13
Tablo 2.4.6 Asp.net MVC Web Uygulaması Student Delete Kodları ........................... 14
Tablo 2.4.7 Asp.net MVC Web Uygulaması Student Edit Kodları............................... 14
Tablo 4.1.1 Web Site Anasayfa...................................................................................... 21
Tablo 4.1.2 Öğrenci Girişi ............................................................................................. 21
Tablo 4.1.3 Öğretmen Girişi .......................................................................................... 21
Tablo 4.1.4 Yönetici Girişi............................................................................................. 21
Tablo 4.1.5 Öğrenci Index Sayfasu................................................................................ 22
Tablo 4.1.6 Öğrenci Ekleme Sayfası.............................................................................. 22
Tablo 4.1.7 Öğrenci Düzenleme Sayfası........................................................................ 22
viii
Tablo 4.1.8 Öğrenci Silme Sayfas.................................................................................. 23
Tablo 4.1.9 Öğretmenler Index Sayfası ......................................................................... 23
Tablo 4.1.10 Dersker Index Sayfası............................................................................... 23
Tablo 4.1.11 Sınıflar Index Sayfası................................................................................ 24
Tablo 4.1.12 Grup Index sayfası.................................................................................... 24
Tablo 4.1.13 Öğrenci Notlar Index Sayfası ................................................................... 24
Tablo 4.1.14 Öğrenci Ödemeler Index Sayfası.............................................................. 25
Tablo 4.1.15 Öğrenci Devamsızlık Index Sayfası ......................................................... 25
Tablo 4.1.16 Duyurular Index Sayfası ........................................................................... 25
Tablo 4.1.17 Sistem Yönetici Sayfası............................................................................ 26
Tablo 4.1.18 Öğretmenler Soru Yazma Sayfası............................................................. 26
Tablo 4.1.19 Öğrenci Index Sayfası............................................................................... 26
Tablo 4.1.20 Android Anasayfa (Duyurular)................................................................. 27
Tablo 4.1.21 Android Giriş Sayfası ............................................................................... 27
Tablo 4.1.22 Android Giriş Anasayfa............................................................................ 27
1
1. GİRİŞ
Teknolojinin gelişmesiyle birlikte İnteraktif Eğitim sistemlerinin, insan yaşamı
üzerindeki kolaylaştırıcı etkisi gün geçtikçe artmaktadır. Dünya genelinde teknolojik ve
ekonomik değişimlerin yönlendirilmesiyle farklı İnteraktif Eğitim sistemi tiplerine olan
talebin artması yenilik ve gelişmeler yönündeki ivmeyi hızlandırmıştır.
İnteraktif eğitim uygulaması, internet üzerinden okulunuza veya sınavlarınıza
yardımcı olabilmek için kullanılan bir tür evinizdeki dershanelerdir. İnteraktif eğitimde
amaç; öğrenciler için teknolojiyi kullanarak bir şeyler öğretmektir. Konu bazında
hazırlanmış testler, deneme sınavları gibi birçok unsuru içerisinde bulundurmaktadır.
Dershanelerdeki gibi konular üzerinde deneme sınavları yapılabilmektedir. Bunun
yanında anlamadığınız yerleri ilgili öğretmene sorma gibi bir durumunuz da söz
konusudur. Bu yönüyle de diğer uygulamaların karşısında ekstra avantajlara sahiptir.
1.1. SQL Server Nedir ?
SQL Server, Microsoft tarafından geliştirilmiş ilişkisel veri tabanı yönetim
sistemidir. İlişkisel veri tabanı sistemi ingilizce olarak Relational Database Management
System olarak adlandırılır ve kısaca RDBMS olarak bazı kaynaklarda karşımıza
çıkmaktadır. İlişkisel veri tabanı sisteminde veriler tablolar halinde tutulurlar ve bu
tablolar kendi aralarında ilişkisel anlamda birbiri ile bağlantılı olabilirler.
1.2. C# Nedir?
C#, yazılım sektörü içerisinde en sık kullanılan iki yazılım dili olan C ve C++ etkileşimi
ile türetilmiştir. Ayrıca C#, ortak platformlarda taşınabilir bir (portable language)
programlama dili olan Java ile pek çok açıdan benzerlik taşımaktadır . En büyük
özelliği ise .Net Framework platformu için hazırlanmış tamamen nesne yönelimli bir
yazılım dilidir. Yani nesneler önceden sınıflar halinde yazılıdır. Programcıya sadece o
nesneyi sürüklemek ve sonrasında nesneyi amaca uygun çalıştıracak kod satırlarını
yazmak kalır.
2
Microsoft tarafından geliştirilen C#, C++ ve Visual Basic dillerinde yer alan
tutarsızlıkları kaldırmak için geliştirilmiş bir dil olmasına rağmen kısa süre içerisinde
nesne yönelimli dillerin içinde en gelişmiş programlama dillerinden biri olmayı
başarmıştır.
Ayrıca gelişmiş derleyicisi (debugger) ile hata olasılığını ortadan kaldırmaktadır.
Yazılan program çalıştırıldıktan sonra derleyici tarafından algılanan Sınıf (Class) ve söz
dizimi (syntax) hataları yazılımcıya ayrı bir ekranda ayrıntısı ile gösterilir ve yazılımcı
bu hata penceresinden hataları tespit ederek kolayca düzeltebilir.
Ayrıca pek çok programcı tarafından kullanılan bir dil olmasından ötürü
takıldığımız noktalarda uzman programcılardan yardım almak oldukça kolaydır.
1.3. ASP.NET MVC Nedir?
ASP.NET MVC, MVC pattern’ini ASP.NET’e eklemek için Microsoft’un
geliştirdiği framework’tür. ASP.NET MVC’nin ne olduğunu anlamak için öncelikle
MVC’nin ne olduğunu incelemekte fayda var.
MVC, uygulama geliştirmede (özellikle web uygulaması geliştirmede) önemli
yere sahip mimari desenlerden biridir. Günümüzde MVC denince akla Microsoft’un
geliştirdiği ASP.NET MVC Framework gelmektedir, oysa 1979 yılından beri (Microsoft
1975 yılında kurulmuştur) yazılım dünyasında yer almaktadır.
MVC, Model , View , Controller kelimelerinin baş harflerinden oluşur ve her
kelime MVC’nin farklı bir katmanını ifade eder.
3
Tablo 1.3. 1
Model
MVC dünyasında model uygulama verisinin veya durumunun saklandığı yerdir,
genellikle veritabanı veya xml/json dosyası formatındadır.
Model, veri katmanını (database, xml, json dosyası, vb.) uygulamadan izole eder,
böylece diğer katmanlarda veri katmanının neresi olduğunun bilinmesine gerek kalmaz.
Model katmanı sıklıkla Entity Framework, Nhibernate, LLBLGen, vb. gibi araçlar
kullanılarak oluşturulur.
View
View, istemcinin gördüğü arayüzü içeren katmandır, genellikle Model
katmanındaki verinin kullanılması ile oluşturulur. View katmanının Model ve Controller
katmanlarından ayrılması ile arayüz değişikliklerinin uygulamanın diğer katmanlarını
değiştirmeye gerek kalmadan yapılabilmesi sağlanmıştır.
View katmanında HTML5 ve CSS3 gibi son versiyon teknolojiler kullanmak
mümkündür. HTML5 ve CSS3 ile masaüstü ve mobil tarayıcılarda çalışabilen
uygulamalar geliştirmek çok kolaylaşmıştır. Hatta Windows Store uygulamaları
geliştirmek için HTML5 ve CSS3 teknolojilerinden yararlanılabilir.
Controller
Controller, istemciden gelen isteği işlemek, Model ve View katmanları arasında
köprü olmak gibi görevleri yerine getirir. Controller içerisinde bir veya daha fazla Action
olabilir, genellikle her Action bir web sayfası üretmek için kullanılır.
4
Tablo 1.3. 2
MVC’nin diğer bir önemli yapıtaşı Routing mekanizmasıdır.
Routing
Routing, istemci’nin uygulamaya yaptığı isteği uygun Controller ve Action’a
yönlendiren yapıdır. İstemci, isteği uygulamanın belli bir adresine gönderir, routing
mekanizması sayesinde ilgili adres için en uygun Controller ve içerisindeki Action tespit
edilir ve çalıştırılır.
Neden ASP.NET MVC tercih etmeliyim?
MVC ile istemcinin isteğine karşılık üretilen çıktı üzerinde çok büyük kontrol
imkânı vardır. Bu sayede her alanına müdahale edebildiğimiz ve isteğe en uygun çıktının
üretilebilmesi sağlanmıştır.
MVC ile tekrar kullanılabilir (reusable) kod üretmek mümkündür. MVC’nin
katmanları birbirinden ayrıldığı için her bir katmanın başka projelerde kullanılabilmesi
sağlanmıştır.
MVC ile istemcinin istek göndereceği adresler üzerinde çok büyük kontrol imkânı
vardır. Bu sayede adresin içerik ile tam bir ilişki içerisinde olması sağlanmıştır. Arama
motorları için adres-içerik ilişkisi önemli olduğu için uygulamanın bulunabilirliğine
katkısı yüksektir.
MVC ile test edilebilir uygulamalar geliştirme çok kolaylaşmıştır. Katmanların
birbirinden ayrı olması ve Test Driven Development yapmayı kolaylaştırıcı mimarisi
sayesinde test edilebilir uygulama geliştirilebilmesi sağlanmıştır.
5
Sonuç
MVC uzun yıllardır birçok framework’te ve programlama dilinde kullanılmış
(Java, PHP, vb.) ve olgunlaşmış bir desendir. ASP.NET MVC sayesinde .Net framework
dilleri ile MVC pattern kullanılarak hızlı çalışan, test edilebilir, tekrar kullanılabilir
parçaları olabilen web uygulamaları geliştirilebilmesi sağlanmıştır.
1.4.API Nedir?
Asp .Net Web Api'a geçmeden önce Api nedir ondan bahsedelim. Api açılımı
"Application Programming Interface" olan Türkçe'de uygulama geliştirme arayüzü
anlamına gelir ve sahip olduğumuz service veya verileri dış dünyaya açıp başka
uygulamaların-platformların kullanımına sunmak için belli kurallar çerçevesinde
tanımlamalar yaptığımız bir arayüzdür.
1.5. ASP. NET WEB API Nedir?
Asp .Net Web Api ise farklı türde sayısız client (browsers, mobile phones, tablets,
pc, etc.) tarafından consume edilebilen HTTP protokolü üzerinden haberleşebilen
servisler oluşturmak için kullanılan bir framework şeklinde tanımlayabiliriz. Asp .net
MVC ile routing, controllers, action results, filter, model binders gibi ortak feature'lara
sahip olduklarından bir takım benzerlikler göstermektedir ancak MVC Framework'ün bir
parçası değildir. Asp .net Web Api Core Asp .Net'in bir parçasıdır ve MVC veya diğer
web application türleri ile birlikte kullanılabilir. Aynı zamanda bütün bunlardan bağımsız
stand-alone Web services application olarakta kullanılabilir.
1.5.1.Neden Asp.Net Web Api?
Günümüz dünyasında teknolojini gelişmesiyle birlikte firmalar artık web tabanlı
uygulamalar üzerinden müşterilerine tam olarak ulaşamaz hale geldiler. İnsanlar artık
günlük hayatlarının nerdeyse %50 sini akıllı telefonlar, tablet pc vs ile geçiriyorlar ve bu
6
cihazlarda insanların hayatlarını kolaylaştıracak olan milyonlarca uygulama mevcut.
Bunların yanında birde İOT ile birlikte gelecek 5 yılda dünyada 30 milyara yakın internete
bağlanabilen cihazlar olacağından bahsediliyor ve buda belki milyonlarca Api
geliştirmesi demek.
Firmalar veya uygulama geliştiriciler müşterilere daha kolay ve hızlı bir şekilde
ulaşmada kullanmak için servislerini ve sahip oldukları verilerin bir kısmını browserlar
yada internete bağlanabilen bu akıllı cihazlar tarafından consume edilebilmeleri için
Api'lar geliştirmeleri gerekmektedir. Çünkü Api'lar yapısı gereği bütün programlama
dilleri tarafından ortak kabul görmüş medya tiplerini (XML-JOSN..etc.) response olarak
alıp gerekli parse işlemlerinden sonra kolayca kullanabilir.
Tablo 1.5.1. 1
Web Api sahip olduğunuz veri ve servisleri birçok farklı cihazda kullanıma
sunmak için expose edebilmenizi sağlayan şahane bir framework ve dahası Web Api .Net
Framework üzerinde RESTful servisler inşa etmenizi sağlayacak ideal bir open source
platform. WCF Rest service'lerinin aksine Web Api HTTP protokolünün bütün
özelliklerini kullanır (URIs, request/response headers, caching, versioning, çeşitli content
format'ları) WCF Rest Service'lerinde yapıldığı gibi farklı cihazlar için extra config
ayarları vs yapmamıza da gerek bulunmamaktadır. Request'i yapılırken dönmesi gereken
response'un XML mi yoksa JSON formatında mı olacağına client'ın seçimine
bırakılmıştır çünkü Web Api birden fazla medya formatında response dönebilmektedir.
7
Başlıca Web API Özellikleri
• Http Get, Post, Put ve Delete metodlarıyla çalışabildiğinden CRUD
işlemelrini destekler,
• Response'larda HttpStatusCode ve Accept Header parametreleri bulunur,
• Response'lar kullanıcının istediği türde MediaTypeFormatter tarafından
formatlanabilir,
• OData desteği bulunmaktadır ve Query yazması oldukça kolaydır,
• Bir uygulama içerisinde veya IIS üzerinde host edilebilir,
• MVC'nin bazı özelliklerini taşır (routing, controllers, action results, filter,
model binders)
Neden Web Api'ı Seçmeliyiz ?
• Bir web service'e ihtiyacınız varsa ve soap'a ihtiyacınız yoksa en iyi
seçenek Web Api dir,
• Geliştirme sürece WCF de olduğu kadar zahmetli ve sıkıntılı değildir,
• Http tabanlı olduğundan Rest-ful servisler geliştirmek için en iyi
seçenektir,
• Exception ve Cache mimarileri oldukça performanslı ve yönetilebilir dir,
• Open Source olduğundan sürekli olarak geliştirilip yeni feature'lar
eklenmektedir,
• Microsoft yetkilileri Web Api sunumlarından birinde şuna benzer bir şey
söyledi "Biz daha iyisini yapana kadar en iyisi bu..!" bu demek oluyor ki
tam destek.
8
2. MATERYAL VE METOT
2.1. Veritabanı Oluşturulması
Tablo 2.1.1 Veritabanının Genel Görünümü
MS SQL Server 2017 ile Veritabanı oluşturulup ve tablolar burada tutulur. İçerik
tablodaki gibidir.
Tablo 2.1.1
Tablo 2.1.2 Öğrenci Tablosu
Öğrenci bilgileri “Student” tablosuna girilir ve burada tutulur.
Tablo 2.1.2
Tablo 2.1.3 Öğretmenler Tablosu
9
Öğretmen bilgileri “Teacher” tablosuna girilir ve burada tutulur.
Tablo 2.1.3
Tablo 2.1.4 Sorular Tablosu
Öğretmenler tarafında oluşturulan sorular “Questions” tablosuna girilir ve burada
tutulur.
Tablo 2.1.4
10
2.2. Entity Framework Oluşturma
Tablo 2.2.1 Tabloların Genel Görünümü
Tablo 2.2. 1
Tablo 2.2.2 Tabloların Class yapılarının oluşturulması
Tablo 2.2. 2
11
2.3. Asp.net MVC Web Api Oluşturma
Tablo 2.3.1 Asp.net MVC Api Projesinin Genel Görünümü
Tablo 2.3. 3
2.4. Asp.net MVC Web Uygulaması
Tablo 2.4.1 Asp.net MVC Web Uygulamasının Genel Görünümü
Tablo 2.4. 1
12
Tablo 2.4.2 Asp.net MVC Web Uygulamasının StudentController Sınıfı
Tablo 2.4. 2
Tablo 2.4.3 Asp.net MVC Web Uygulamasının Student Model (Entity Framework) Sınıfı
Tablo 2.4.3
13
Tablo 2.4.4 Asp.net MVC Web Uygulamasının Student Index Sayfası Html kodları
Tablo 2.4. 4
Tablo 2.4.5 Asp.net MVC Web Uygulamasının Student Create Sayfası Html kodları
Tablo 2.4. 5
14
Tablo 2.4.6 Asp.net MVC Web Uygulamasının Student Delete Sayfası Html kodları
Tablo 2.3. 6
Tablo 2.4.7 Asp.net MVC Web Uygulamasının Student Edit Sayfası Html kodları
Tablo 2.4. 7
15
3. BULGULAR VE TARTIŞMA
Azimli çalışma ve gerekli araştırmanın yanında, var olan bilgi ve deneyimlerimiz
ile uygulamamızı belli bir aşamaya getirmeyi başardık. Lâkin gerek projenin büyüklüğü,
gerek ise vakit yetersizliğinden dolayı hâlen bizim açımızdan tatmin edici bir seviyeye
gelebilmiş değiliz. Uygulama teorik ve pratik olarak var olan hâliyle ticari kullanıma
hazırdır. Biz ekstra modüller eklemek adına ekstra süreye ihtiyaç duyduk. Bu modüller;
• Öğretmen ile öğrenci mesajlaşması
• Başarı yüzdesi tablosu
• Canlı soru ve test paylaşımı ( Eklendi ama tamamlanmadı)
Uygulamamızı dört ana kısımdan meydana getirdik. Bu kısımlar sırasıyla:
1.Veri Tabanı
2.MVC (Model – View – Controller)
3.Web API
4.Android
Aşağıda her aşama ile alakalı bulgu ve tartışmaları ayrı ayrı tartışıyor olacağız.
3.1. Veri Tabanı Bulgular ve Tartışmaları
Veri tabanı tarafında karşılaşılan en büyük sorun genellikle tablo ilişkileri
arasında olmuştur. Bu sorunun asıl kaynağı veri tabanı tablolarını teoride oluşturup
pratiğe dökmemekti. Uygulamamızı geliştirmeye başlayıp, test etmeye devam ettikçe bu
sorunları da çözmüş olduk. Veri tabanının ilişkisel hâli son olarak Tablo 3.2.1 gibidir ve
şu hâliyle uygulamamızın arayüzüyle tamamıyla uyum içerisindedir.
3.2. MVC Bulgular ve Tartışmaları
3.2.1. Sorun – 1 : Görüntü dosyalarının veri tabanına kaydedilmesi
Öğrenciler ve Öğretmenlerin CRUD işlemlerinde eklenen resmin veri tabanına
kaydedilirken boyut ve server yoğunluğuna bağlı olarak yavaşlamalar yaşanıyordu.
Çözüm; Yeni eklenen resmin locale kaydedilmesi ve resmin yol uzantısının veri tabanına
kaydedilmesiyle sorun çözüldü.
16
3.2.2. Sorun – 2: Boolean değerlerin CRUD işlemleri
Bir veri tabanı uygulamasında boolean değerlerin CRUD işlemlerinin uygulamasında
yaşanan büyük sorunlardandı. Örneğin; Bir değerin (Cinsiyet, Durum...vs) Kullanıcıdan
veri alınırken veya gösterilirken problem yaşadık.
Çözüm; Asp.Net MVC Html Helper Teknolojisi kullanarak bu sorun çözüldü.
3.2.3. Sorun – 3: Öğrenci veya Öğretmen Hızlı Arama
Öğrencilerin herhangi bir bilgisinin değiştirmesi durumunda hızlı bir şekilde öğrenciyi
bulmak görevliler açısından zor olmalı. Örneğin: 500 öğrencisi olan bir eğitim
kurumunun, öğrenciler arasında bir kayıt bulmak bir zaman sorunu teşkil eder.
Çözüm; .Net’in LINQ teknolojini kullanarak bu sorun çözüldü.
3.2.4. Sorun – 4: Tarih gerektiren Textboxların takvim eklenmesi
Tarih eklemek için Textbox’a tıklandığında bir takvim açılması ve doğru bir şekilde
tarihin veri tabanına kaydedilmesi gerekmektedir.
Çözüm; Bu sorun JQuery’nin Datapicker nesnesi kullanarak çözüldü.
3.2.5. Sorun – 5: Arama teknolojisi (Ad, Soyad veya TC ile)
Notlar, Ödemeler ve Devamsızlıklar percerelerinden veri eklerken, textbox’a girilen id
ile veri tabanına kaydedilmesi gerekiyor ki; bu durumda her öğrencini Id numarasını
bilinmesi gerekir. Bu sorunun Id ile değil; Ad, Soyad veya T.C. Numarası ile hızlı bir
şekilde öğrenci bulunması gerekiyor.
Çözüm; Bu sorunu “Chosen, a Select Box Enhancer for jQuery and Prototype” script’i
kullanarak çözüldü.
3.2.6. Sorun – 6: Kullanıcıların Yetkileri
Üç farklı kullanıcı tipi(Yönetici, Öğretmen, Öğrenci/Veli) olduğundan dolayı, bunların
erişimlerinin belirlenmesi için üç farklı giriş Anahtarı tanımlanıp oturum işlemlerinin bu
anahtarlar üzerinden tanımlandı.
17
3.3. Web API Bulgular ve Tartışmaları
3.3.1. Sorun – 1 : XML formatından JSON formatına geçiş
Bilindiği üzere bir API üzerinden datayı serialize etmenin iki türlü formatı mevcuttur. Bu
formatlar :
1. XML
2. JSON
Web API ile ilk defa bir model serialize edildiğinde bunu XML formatında yapar. Bizler
daha evrensel bir format olan JSON formatını kullanmak istedik.
Çözüm:
Bu sorunu Global.asax.cs sınıfının içerisine:
Kod satırını ekleyerek çözmüş bulunduk.
3.3.2. Sorun – 2 : Reference Loop Handling Hatası
Reference Loop Handling Rest API tarafında birbirleriyle ilişkili birden fazla sınıfı
çağırdığımız zaman karşılaştığımız bir sorundu. Bu hata doğrultusunda iki sınıf
birbirlerini sürekli çağırıyor ve sonuçta cache taşmasından dolayı result hata fırlatıyordu.
Çözüm:
Bu sorunu Reference Loop Handling hatasını NewtonSoft Json tarafında ignore eden
aşağıdaki kod satırını Global.asax.cs sınıfına ekleyerek çözdük.
3.3.3. Sorun – 3 : Tüm öğrenciler geri döndürülürken karşılaşılan hata
Bu hata kapsamında tüm öğrencileri çağırırken kullanılan http://localhost/api/Students
URL’i üzerinde dönen result bütün öğrenci bilgilerini içermiyordu.
Çözüm:
Önceden kullanılan HTTP Get yapısı Queryable<ClassType> ve Enumarable<
ClassType > yapılarıyla değiştirilerek hata çözüldü.
18
3.3.4. Sorun – 4 : Null Reference Hatası
Tarzında atılan bir sorguda bazı değerler null değerler gönderiyordu.
Null Reference bulgusunu bir hata olarak tanımlamak pek doğru değildir. Çünkü
tercihlere göre değişebilir. Bu bulgu basitçe bir sınıfın içerisindeki boş değerlerin
karşısında çağırılan sorguda “Null” değerinin gösteriliyor olmasıdır.
Biz sorgularımızda “Null” değerlerini görmek istemediğimizden ve bu sorunun
çözümünde yeterli kaynak da bulamadığımızdan sorunu StackOverFlow üzerinde
dillendirdik.
Sorunun linki: https://stackoverflow.com/questions/55076529/wrong-serialization-on-
linq-web-api/55076949#55076949
19
Çözüm:
Aşağıdaki kod satırı WebApiConfig.cs sınıfına eklenerek sorun çözüldü.
3.4. Android Uygulama Bulgular ve Tartışmaları
4.4.1. Sorun -1: Proje için en uygun HTTP kütüphanesinin seçimi
Karşılaşılan bulguların en başında projeye en uygun HTTP kütüphanesini seçmek vardı.
HTTP kütüphanesinin amacı WebAPI tarafından serve edilen datayı serialize etmektir.
Çözüm:
Başlangıçta Retrofit kullanılsa da gerek yetersizliği, gerek ise projeye uygun bir
kütüphane olmaması hasebiyle Android Volley Library kullanılmıştır.
3.4.2. Sorun -2: IIS üzerinden serialize edilen dataya Android üzerinden
ulaşmama
Projenin başlarında bu hata bayağı zamanımızı aldı. Çözümü için sofistike yollara
başvurduğumuz hatayı StackOverFlow’da dillendirmemize rağmen en sonunda çözümü
de kendimiz bulmuş olduk.
StackOverFlow:https://stackoverflow.com/questions/55092593/how-can-i-connect-
from-my-android-application-to-webapi/55130562#55130562
Çözüm:
Adım 1: Windows Defender'ı açın -> güvenlik duvarı ve ağ koruması -> Ortak Ağ ->
koruması kapatıldı.
Adım: 2: Jexus Manager uygulaması kuruldu, pc adınızın altındaki siteler sekmesine
gidip yeni Web Sitesi Eklendi.
Herhangi bir proje adı verin ve Fiziksel yol altındaki butondan web uygulama yolunuzu
seçildi. Bir port verdik, örn. 61508. Ana bilgisayar adı için 127.0.0.1 kullandık, IP Adresi
için kendi IPv4 adresimizi kullanın ve onayladık.
20
Adım 3: Sol tarafta site adının altından sağ tıklayıp proje IIS üzerinden çalıştırıldı.
Adım 4: PC üzerinden çalıştığı test edildikten sonra android üzerindeki mevcut
URL şu şekilde güncellendi: http://10.0.2.2:61508/api/Students ve veriler android
tarafına başarıyla çekildi.
3.4.3. Sorun - 3: JSON Object – JSON Array Farkından Kaynaklı Bulgu
Projeyi Android üzerinde serialize ederken datayı eksik veya parça parça (Parse Edilmiş)
hâlini çekememizden kaynaklı olarak bir sorun olduğunu fark ettik. Bu sorun aslında iki
tip JSON yapısı olduğundan kaynaklı bir sıkıntıydı.
Çözüm:
Neredeyse bütün kaynaklarda JSON Object yapısının nasıl parse edileceğine dair bilgiler
bulunuyordu. Daha sonra iki tip JSON serializer metodunun olduğunun farkına vardıktan
sonra yapımızı JSON Object tipinden JSON Array tipine çekerek sorunu çözmüş
bulunduk.
JSON Object Tip Gösterimi:
JSON Array Tip Gösterimi:
21
4. SONUÇLAR
4.1. Sonuç
Uygulamanın girişinde, şık tasarımının yanında responsive (her platforma duyarlı)
tasarımıyla ve Bootstrap ile süslenmiş anasayfa kullanıcıları karşılamaktadır.
Bu tasarımda sırasıyla; Anasayfa, Duyurular, Neden Biz, Galeri ve İletişim
Butonlarının yanında öğrencilerin, öğretmenlerin ve yöneticilerin ayrı ayrı giriş
yapabileceği giriş seçeneği yer almaktadır.
Tablo 4.1. 1 Anasayfa
Tablo 4.1. 2 Öğrenci Giriş Tablo 4.1. 3 Öğretmen Girişi
Tablo 4.1. 4 Yönetici Girişi
22
Tablo 4.1. 5 Öğrenci Index Sayfası
Tablo 4.1. 6 Öğrenci Ekleme Sayfası
Tablo 4.1. 7 Öğrenci Düzenleme Sayfası
23
Tablo 4.1. 8 Öğrenci Silme Sayfası
Tablo 4.1. 9 Öğretmen Index Sayfası
Tablo 4.1. 10 Dersler Index Sayfası
24
Tablo 4.1. 11 Sınıflar Index sayfası
Tablo 4.1. 12 Grup Index Sayfası
Tablo 4.1. 13 Öğrenci Notlar Index Sayfası
25
Tablo 4.1. 14 Öğrenci Ödemeler Index Sayfası
Tablo 4.1. 15 Öğrenci Devamsızlık Index Sayfası
Tablo 4.1. 16 Duyurular Index Sayfası
26
Tablo 4.1. 17 Sistem Yönetici Sayfası
Tablo 4.1. 18 Öğretmenler Soru Yazma Sayfası
Tablo 4.1. 19 Öğrenci Index Sayfası
27
Tablo 4.1. 20 Mobil Uygulama Anasayfa
Tablo 4.1. 21 Mobil Uygulama Giriş Sayfası Tablo 4.1. 22 Mobil Uygulama Giriş Anasayfa
28
5. KAYNAKLAR
[1] https://www.uzaktanegitim.com/haberler/interaktif-etkilesimli-egitim-nedir/237
[2] https://medium.com/@resulzel/c-nedir-c-ile-neler-yapılabilir-199e8b337615
[3] http://www.borakasmer.com/asp-net-mvc-nedir-ne-ise-yarar/
[4] https://github.com/ianbar20/JSON-Volley-Tutorial/tree/master/Example-JSON-Files
[5] https://harvesthq.github.io/chosen/
[6] https://bootsnipp.com/
[7] https://getbootstrap.com/
[8] https://fontawesome.com/v4.7.0/icons/
[9] https://my.vertabelo.com/login
[10] https://www.sitepoint.com/mastering-complex-lists-with-the-android-recyclerview
[11] https://flatuicolors.com/palette/defo
[12] https://www.youtube.com/watch?v=66-lO5sGF20
[13] [Book]C# in Depth - Jon Skeet [https://www.manning.com/books/c-sharp-in-depth-fourth-edition]
[14] https://stackoverflow.com/questions/42858314/web-api-get-method-returns-empty-in-json
[15] https://www.tutorialsteacher.com/webapi/request-response-data-formats-in-web-api
[16] http://instinctcoder.com/how-to-call-asp-net-web-api-from-android-studio/
[17] http://www.fypsolutions.com/tutorials/rest-api-client-in-android-using-volley-and-gson/
[18] https://github.com/mcxiaoke/android-volley/issues/143
[19] https://www.mobilhanem.com/android-volley-kullanimi-ve-json-parse-etme/
[20] https://stackoverflow.com/questions/2929562/register-application-class-in-manifest
[21]https://www.tutorialspoint.com/how-to-sort-volley-json-array-based-on-id-in-android
[22] http://www.androiddeft.com/json-parsing-android-volley/
[23] https://www.youtube.com/watch?v=y2xtLqP8dSQ
[24] https://www.youtube.com/watch?v=FzwBYPzCIHk
[25] https://www.youtube.com/watch?v=ASarfHD7HRM
[26] https://www.youtube.com/watch?v=kN8IiQWQfVU
[27] https://www.youtube.com/watch?v=aIkpVzqLuhA
[28] https://www.youtube.com/watch?v=s7wmiS2mSXY
[29] https://jsoneditoronline.org/
[30] https://www.youtube.com/watch?v=E7Voso411Vs
[31] https://www.youtube.com/watch?v=63QbTz9tFo4
[32]https://www.freecodecamp.org/news/how-to-perform-crud-operations-with-asp-net-core-using-vs-
code-and-ado-net-b12404aef708/
[33]https://www.tutlane.com/tutorial/aspnet-mvc/ado-net-crud-operations-insert-update-delete-in-asp-net-
mvc-4-example
29
ÖZGEÇMİŞ
KİŞİSEL BİLGİLER
Adı Soyadı
:
Hüseyin BİÇEN
Doğum Yeri ve Tarihi
:
Batman / 13.06.1996
Telefon
:
+90 543 837 9296
E-posta
:
huseynbicen@gmail.com
EĞİTİM
Derece Adı, İlçe, İl Bitirme Yılı
Lise : Batman Fatih Lisesi 2014
Üniversite : Siirt Üniversitesi Bilgisayar Mühendisliği 2019
İŞ DENEYİMLERİ
Yıl Kurum Görevi
2017 Microsoft Türkiye Stajyer
2018 Index Grup Stajyer
UZMANLIK ALANI
• C# (.Net) ■■■■■■■■■■□□
• JAVA ■■■■■■■■■□□□
• C & C++ ■■■■■■■□□□□□
• Machine Learning ■■■■■■■■□□□□
• OOP in C# and Java ■■■■■■■■■□□□
• IOT ■■■■■■■■□□□□
• Asp.Net / Asp.Net Core / Asp.Net MVC / Web Api ■■■■■■■■■■□□
• Xamarin (Cross Platform) / Android ■■■■■■■■□□□□
30
ÖZGEÇMİŞ
KİŞİSEL BİLGİLER
Adı Soyadı
:
Halil ŞAHİN
Doğum Yeri ve Tarihi
:
Batman / 01.05.1991
Telefon
:
+90 553 492 2220
E-posta
:
Halilsahin.dev@gmail.com
EĞİTİM
Derece Adı, İlçe, İl Bitirme Yılı
Lise : 75. Yıl Cumhuriyet Anadolu Lisesi 2010
Üniversite : Siirt Üniversitesi Bilgisayar Mühendisliği 2019
İŞ DENEYİMLERİ
Yıl Kurum Görevi
2016 Microsoft Türkiye Stajyer
2017 Hes Kablo Stajyer
2018 Solvia Stajyer
UZMANLIK ALANI
• C# (.Net) ■■■■■■■■■■□□
• JAVA ■■■■■■■■■□□□
• C & C++ ■■■■■■■□□□□□
• Machine Learning ■■■■■■■■□□□□
• OOP in C# and Java ■■■■■■■■■□□□
• IOT ■■■■■■■■□□□□
• Asp.Net / Asp.Net Core / Asp.Net MVC / Web Api ■■■■■■■■■■□□
• Xamarin (Cross Platform) / Android ■■■■■■■■□□□□

More Related Content

What's hot

Railway Reservation System - Requirement Engineering
Railway Reservation System - Requirement EngineeringRailway Reservation System - Requirement Engineering
Railway Reservation System - Requirement Engineering
Danish Javed
 
8 risk yonetimi
8   risk yonetimi8   risk yonetimi
8 risk yonetimi
Beka Cotur, MSc, PMP
 
Doktora Tezimin Savunma Slaytları
Doktora Tezimin Savunma SlaytlarıDoktora Tezimin Savunma Slaytları
Doktora Tezimin Savunma Slaytları
netsentez
 
Proje Döngüsü Yönetimi
Proje Döngüsü YönetimiProje Döngüsü Yönetimi
Proje Döngüsü Yönetimi
Avrupa Birliği Proje Yönetimi
 
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
Erol Bozkurt
 
Internship report on flutter lawyer app
Internship report  on flutter lawyer appInternship report  on flutter lawyer app
Internship report on flutter lawyer app
Independent University , Bangladesh
 
SRS Attendance ERP
SRS Attendance ERPSRS Attendance ERP
SRS Attendance ERP
Akshun kc
 
Software testing principles
Software testing principlesSoftware testing principles
Software testing principles
Donato Di Pierro
 
Teknik Rapor Nasıl Yazılır?
Teknik Rapor Nasıl Yazılır?Teknik Rapor Nasıl Yazılır?
Teknik Rapor Nasıl Yazılır?
Cumhuriyet Üniversitesi
 
Azure App Service Overview
Azure App Service OverviewAzure App Service Overview
Azure App Service Overview
Takeshi Fukuhara
 
PROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOTPROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOT
Tushar Dhoot
 
msr_以前のアーキテクチャ
msr_以前のアーキテクチャmsr_以前のアーキテクチャ
msr_以前のアーキテクチャ
default Takakuni
 
Project Management - Web Application Report
Project Management - Web Application ReportProject Management - Web Application Report
Project Management - Web Application Report
Nakul Sharma
 
project sentiment analysis
project sentiment analysisproject sentiment analysis
project sentiment analysissneha penmetsa
 
Student Marks Analyzing System-Problem Statement, SRS, ERD, DFD, Structured C...
Student Marks Analyzing System-Problem Statement, SRS, ERD, DFD, Structured C...Student Marks Analyzing System-Problem Statement, SRS, ERD, DFD, Structured C...
Student Marks Analyzing System-Problem Statement, SRS, ERD, DFD, Structured C...
grandhiprasuna
 
Proje Risklerinin Tanımlanması
Proje Risklerinin TanımlanmasıProje Risklerinin Tanımlanması
Proje Risklerinin Tanımlanması
Ahmet Han
 
staj-örnek
staj-örnekstaj-örnek
staj-örnek
burakert
 
Android College Application Project Report
Android College Application Project ReportAndroid College Application Project Report
Android College Application Project Report
stalin george
 
Passport Automation System
Passport Automation SystemPassport Automation System
Passport Automation System
Megha Sahu
 

What's hot (20)

Railway Reservation System - Requirement Engineering
Railway Reservation System - Requirement EngineeringRailway Reservation System - Requirement Engineering
Railway Reservation System - Requirement Engineering
 
8 risk yonetimi
8   risk yonetimi8   risk yonetimi
8 risk yonetimi
 
Doktora Tezimin Savunma Slaytları
Doktora Tezimin Savunma SlaytlarıDoktora Tezimin Savunma Slaytları
Doktora Tezimin Savunma Slaytları
 
Proje Döngüsü Yönetimi
Proje Döngüsü YönetimiProje Döngüsü Yönetimi
Proje Döngüsü Yönetimi
 
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
 
Internship report on flutter lawyer app
Internship report  on flutter lawyer appInternship report  on flutter lawyer app
Internship report on flutter lawyer app
 
SRS Attendance ERP
SRS Attendance ERPSRS Attendance ERP
SRS Attendance ERP
 
Software testing principles
Software testing principlesSoftware testing principles
Software testing principles
 
Teknik Rapor Nasıl Yazılır?
Teknik Rapor Nasıl Yazılır?Teknik Rapor Nasıl Yazılır?
Teknik Rapor Nasıl Yazılır?
 
Azure App Service Overview
Azure App Service OverviewAzure App Service Overview
Azure App Service Overview
 
PROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOTPROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOT
 
msr_以前のアーキテクチャ
msr_以前のアーキテクチャmsr_以前のアーキテクチャ
msr_以前のアーキテクチャ
 
Project Management - Web Application Report
Project Management - Web Application ReportProject Management - Web Application Report
Project Management - Web Application Report
 
project sentiment analysis
project sentiment analysisproject sentiment analysis
project sentiment analysis
 
Student Marks Analyzing System-Problem Statement, SRS, ERD, DFD, Structured C...
Student Marks Analyzing System-Problem Statement, SRS, ERD, DFD, Structured C...Student Marks Analyzing System-Problem Statement, SRS, ERD, DFD, Structured C...
Student Marks Analyzing System-Problem Statement, SRS, ERD, DFD, Structured C...
 
Proje Risklerinin Tanımlanması
Proje Risklerinin TanımlanmasıProje Risklerinin Tanımlanması
Proje Risklerinin Tanımlanması
 
staj-örnek
staj-örnekstaj-örnek
staj-örnek
 
Bilimsel sunu
Bilimsel sunuBilimsel sunu
Bilimsel sunu
 
Android College Application Project Report
Android College Application Project ReportAndroid College Application Project Report
Android College Application Project Report
 
Passport Automation System
Passport Automation SystemPassport Automation System
Passport Automation System
 

Similar to Bitirme raporu

Artificial intelligence in architecture design and bim
Artificial intelligence in architecture design and bimArtificial intelligence in architecture design and bim
Artificial intelligence in architecture design and bim
Global Architectural Development
 
Uludağ İnşaatlı Olmak
Uludağ İnşaatlı OlmakUludağ İnşaatlı Olmak
Uludağ İnşaatlı Olmak
yenalll
 
Risk Management and Insurance
Risk Management and InsuranceRisk Management and Insurance
Risk Management and InsuranceAli Osman Öncel
 
Uu insaatli olmak3
Uu insaatli olmak3Uu insaatli olmak3
Uu insaatli olmak3yenalll
 
DDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi RaporuDDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi Raporu
Oğuzcan Pamuk
 
Mobil i̇şletim sistemlerinde güvenlik
Mobil i̇şletim sistemlerinde güvenlikMobil i̇şletim sistemlerinde güvenlik
Mobil i̇şletim sistemlerinde güvenlik
Fuat Savaş
 
PERAKENDECİLİKTE KATEGORİ YÖNETİMİ VE BİR MİKRO ALAN YÖNETİMİ ÇALIŞMASI - BER...
PERAKENDECİLİKTE KATEGORİ YÖNETİMİ VE BİR MİKRO ALAN YÖNETİMİ ÇALIŞMASI - BER...PERAKENDECİLİKTE KATEGORİ YÖNETİMİ VE BİR MİKRO ALAN YÖNETİMİ ÇALIŞMASI - BER...
PERAKENDECİLİKTE KATEGORİ YÖNETİMİ VE BİR MİKRO ALAN YÖNETİMİ ÇALIŞMASI - BER...
Berk Hizliates
 
Bilgisayar Mühendisliği Bölüm Tanıtım Sunumu
Bilgisayar Mühendisliği Bölüm Tanıtım SunumuBilgisayar Mühendisliği Bölüm Tanıtım Sunumu
Bilgisayar Mühendisliği Bölüm Tanıtım Sunumu
unalspam
 
Megep Veritabani Dersi Modul 2 Veritabaninda Tablolar
Megep  Veritabani Dersi Modul 2  Veritabaninda TablolarMegep  Veritabani Dersi Modul 2  Veritabaninda Tablolar
Megep Veritabani Dersi Modul 2 Veritabaninda Tablolar
deniz armutlu
 
Uludağ İnşaatlı Olmak 2017
Uludağ İnşaatlı Olmak 2017Uludağ İnşaatlı Olmak 2017
Uludağ İnşaatlı Olmak 2017
yenalll
 
Üniversite Yazılım Mühendisliği programları müfredatının SWEBOK kılavuzu kull...
Üniversite Yazılım Mühendisliği programları müfredatının SWEBOK kılavuzu kull...Üniversite Yazılım Mühendisliği programları müfredatının SWEBOK kılavuzu kull...
Üniversite Yazılım Mühendisliği programları müfredatının SWEBOK kılavuzu kull...
Vahid Garousi
 
Eğitimciler İçin Yeni Bir Web Aracı Yüksek Lisans Tezi
Eğitimciler İçin Yeni Bir Web Aracı Yüksek Lisans TeziEğitimciler İçin Yeni Bir Web Aracı Yüksek Lisans Tezi
Eğitimciler İçin Yeni Bir Web Aracı Yüksek Lisans Tezi
veliakcakaya
 
Tasarımın temel ilkeleri
Tasarımın temel ilkeleriTasarımın temel ilkeleri
Tasarımın temel ilkeleriErol Dizdar
 
Veri tabanı planlama
Veri tabanı planlamaVeri tabanı planlama
Veri tabanı planlamakhan_27
 
Açıköğretim'de e-Öğrenme'nin Yapıtaşları
Açıköğretim'de e-Öğrenme'nin YapıtaşlarıAçıköğretim'de e-Öğrenme'nin Yapıtaşları
Açıköğretim'de e-Öğrenme'nin Yapıtaşları
Mehmet Emin Mutlu
 
Teknik resim ve çizim teknolojileri 520 tc0007 (1)
Teknik resim ve çizim teknolojileri 520 tc0007 (1)Teknik resim ve çizim teknolojileri 520 tc0007 (1)
Teknik resim ve çizim teknolojileri 520 tc0007 (1)Iklimlendirme Sogutma
 
Escola module 6 tr
Escola module 6 trEscola module 6 tr
Escola module 6 tr
caniceconsulting
 

Similar to Bitirme raporu (20)

Artificial intelligence in architecture design and bim
Artificial intelligence in architecture design and bimArtificial intelligence in architecture design and bim
Artificial intelligence in architecture design and bim
 
Uludağ İnşaatlı Olmak
Uludağ İnşaatlı OlmakUludağ İnşaatlı Olmak
Uludağ İnşaatlı Olmak
 
Risk Management and Insurance
Risk Management and InsuranceRisk Management and Insurance
Risk Management and Insurance
 
Uu insaatli olmak3
Uu insaatli olmak3Uu insaatli olmak3
Uu insaatli olmak3
 
DDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi RaporuDDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi Raporu
 
Kablosuz ortam
Kablosuz ortamKablosuz ortam
Kablosuz ortam
 
Grafik ve animasyon
Grafik ve animasyonGrafik ve animasyon
Grafik ve animasyon
 
Mobil i̇şletim sistemlerinde güvenlik
Mobil i̇şletim sistemlerinde güvenlikMobil i̇şletim sistemlerinde güvenlik
Mobil i̇şletim sistemlerinde güvenlik
 
PERAKENDECİLİKTE KATEGORİ YÖNETİMİ VE BİR MİKRO ALAN YÖNETİMİ ÇALIŞMASI - BER...
PERAKENDECİLİKTE KATEGORİ YÖNETİMİ VE BİR MİKRO ALAN YÖNETİMİ ÇALIŞMASI - BER...PERAKENDECİLİKTE KATEGORİ YÖNETİMİ VE BİR MİKRO ALAN YÖNETİMİ ÇALIŞMASI - BER...
PERAKENDECİLİKTE KATEGORİ YÖNETİMİ VE BİR MİKRO ALAN YÖNETİMİ ÇALIŞMASI - BER...
 
Bilgisayar Mühendisliği Bölüm Tanıtım Sunumu
Bilgisayar Mühendisliği Bölüm Tanıtım SunumuBilgisayar Mühendisliği Bölüm Tanıtım Sunumu
Bilgisayar Mühendisliği Bölüm Tanıtım Sunumu
 
Megep Veritabani Dersi Modul 2 Veritabaninda Tablolar
Megep  Veritabani Dersi Modul 2  Veritabaninda TablolarMegep  Veritabani Dersi Modul 2  Veritabaninda Tablolar
Megep Veritabani Dersi Modul 2 Veritabaninda Tablolar
 
Xamarin ile Android Uygulama
Xamarin ile Android UygulamaXamarin ile Android Uygulama
Xamarin ile Android Uygulama
 
Uludağ İnşaatlı Olmak 2017
Uludağ İnşaatlı Olmak 2017Uludağ İnşaatlı Olmak 2017
Uludağ İnşaatlı Olmak 2017
 
Üniversite Yazılım Mühendisliği programları müfredatının SWEBOK kılavuzu kull...
Üniversite Yazılım Mühendisliği programları müfredatının SWEBOK kılavuzu kull...Üniversite Yazılım Mühendisliği programları müfredatının SWEBOK kılavuzu kull...
Üniversite Yazılım Mühendisliği programları müfredatının SWEBOK kılavuzu kull...
 
Eğitimciler İçin Yeni Bir Web Aracı Yüksek Lisans Tezi
Eğitimciler İçin Yeni Bir Web Aracı Yüksek Lisans TeziEğitimciler İçin Yeni Bir Web Aracı Yüksek Lisans Tezi
Eğitimciler İçin Yeni Bir Web Aracı Yüksek Lisans Tezi
 
Tasarımın temel ilkeleri
Tasarımın temel ilkeleriTasarımın temel ilkeleri
Tasarımın temel ilkeleri
 
Veri tabanı planlama
Veri tabanı planlamaVeri tabanı planlama
Veri tabanı planlama
 
Açıköğretim'de e-Öğrenme'nin Yapıtaşları
Açıköğretim'de e-Öğrenme'nin YapıtaşlarıAçıköğretim'de e-Öğrenme'nin Yapıtaşları
Açıköğretim'de e-Öğrenme'nin Yapıtaşları
 
Teknik resim ve çizim teknolojileri 520 tc0007 (1)
Teknik resim ve çizim teknolojileri 520 tc0007 (1)Teknik resim ve çizim teknolojileri 520 tc0007 (1)
Teknik resim ve çizim teknolojileri 520 tc0007 (1)
 
Escola module 6 tr
Escola module 6 trEscola module 6 tr
Escola module 6 tr
 

Bitirme raporu

  • 1. T.C. SİİRT ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ İNTERAKTİF EĞİTİM UYGULAMASI BİTİRME TEZİ Hazırlayan Halil ŞAHİN 150304032 Hüseyin BİÇEN 150304032 Tez Danışmanı Yrd. Doç. Dr. Yılmaz KAYA SİİRT- 06.2019
  • 2. T.C. SİİRT ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ İNTERAKTİF EĞİTİM UYGULAMASI LİSANS TEZİ Halil ŞAHİN (150304030) Hüseyin BİÇEN (150304032) Bilgisayar Mühendisliği Anabilim Dalı Tez Danışmanı: Yrd. Doç. Dr. Yılmaz KAYA 06-2019 SİİRT
  • 3. iii ÖN SÖZ Bu bitirme tezi çalışması, Siirt Üniversitesi, Mühendislik-Mimarlık Fakültesi, Bilgisayar Mühendisliği Lisans Programı kapsamında hazırlanmıştır. Yoğun bir çalışma temposu ile gerçekleştirdiğimiz olan bu çalışmada bizlere yol gösteren değerli tez danışmanımız Yrd. Doç. Dr. Yılmaz KAYA’ya teşekkür ederiz. Ayrıca üniversite hayatı boyunca geleceğimize mimarlık yapmış olan Doç. Dr. Musa ATAŞ’a, Öğr. Gör. Bashar Alhaj AHMAD’a, Öğr. Gör. Hasan KURBAN’a ve Yrd. Doç. Dr. Volkan Müjdat TİRYAKİ’ye teşekkürlerimizi arz ederiz. Özellikle bu çalışmada ve dört yıllık üniversite hayatımız boyunca birlikte yoğun bir mesai sarf ettiğimiz, bu süre zarfında birbirimizden desteğimizi esirgemediğimiz ben Hüseyin BİÇEN değerli dostum Halil ŞAHİN’e ve ben Halil ŞAHİN değerli dostum Hüseyin BİÇEN’e teşekkürlerimi sunuyoruz. Halil ŞAHİN / Hüseyin BİÇEN SİİRT-2019
  • 4. iv İÇİNDEKİLER Sayfa ÖN SÖZ ..........................................................................................................................iii İÇİNDEKİLER ..............................................................................................................iv ÖZET ............................................................................................................................... v ABSTRACT....................................................................................................................vi TABLOLAR LİSTESİ ...............................................................................................vivi 1. GİRİŞ ........................................................................................................................... 1 1.1. SQL Server Nedir?................................................................................................. 1 1.2. C# Nedir?............................................................................................................... 1 1.3. Asp.Net MVC Nedir? .....................................Hata! Yer işareti tanımlanmamış. 1.4. Api Nedir Nedir? ................................................................................................... 5 1.5. Asp.Net Web Api Nedir?....................................................................................... 5 2. MATERYAL VE METOT......................................................................................... 8 2.1. Veritabanı Oluşturma............................................................................................. 8 2.2. Entity Framework Oluşturma .............................................................................. 10 2.3. Asp.net MVC Web Api Oluşturma...................................................................... 11 2.4. Asp.net MVC Web Uygulaması oluşturma......................................................... 11 3. BULGULAR VE TARTIŞMA................................................................................. 15 4. SONUÇLAR.............................................................................................................. 21 5. KAYNAKLAR .......................................................................................................... 28 ÖZGEÇMİŞLER .......................................................................................................... 29
  • 5. v ÖZET LİSANS TEZİ İNTERAKTİF EĞİTİM UYGULAMASI Halil ŞAHİN / Hüseyin BİÇEN Siirt Üniversitesi Mühendislik Mimarlık Fakültesi Bilgisayar Mühendisliği Anabilim Dalı Danışman: Dr. Öğr. Üyesi Yılmaz KAYA 2019, 30 Sayfa Bu projenin amacı, eğitimde öğrenciyi, hayatının her aşamasında eğitime aktif olarak katmak ve eğitimciyi, doğrudan öğrencinin hayatının her aşamasında kendisine sorunlarını ve sorularını danışabileceği bir arkadaş haline getirmektir. Bunu yaparken öğretmen günün belli saatlerinde öğrencilerine notlar gönderebilir, sorular sorabilir hatta çeşitli bilgilendirmelerde bulunabilir. Öğrenciler ise bu uygulama üzerinden notlarına bakabilir, devamsızlıklarını görebilir, eğitim kurumunun bir duyurusu varsa bundan haberdar olabilir. Aynı şekilde veliler öğrencilerini takip etme imkanını bulabilirler. Anahtar Kelimeler: Eğitim, İnteraktivite, Yönetim, Mobil uygulama, Web uygulama
  • 6. vi ABSTRACT BACHELOR’S THESIS INTERACTIVE EDUCATION APPLICATION Halil ŞAHİN / Hüseyin BİÇEN Siirt University Faculty of Engineering and Architecture Computer Engineering Depertmant Supervisior: PhD Yılmaz KAYA 2019, 30 Pages The aim of this project is to actively involve the student in education at all stages of his life and to make the educator a friend whom he can consult with his problems and questions directly at the student's life. In doing so, the teacher may send notes, ask questions or even give information to his students at certain times of the day. Students can view their grades through this application, see their discontinuity and be aware of the announcement of an educational institution. In the same way parents can follow their students. Keywords: Education, Interactivity, Management, Mobile application, Web application
  • 7. vii TABLOLAR LİSTESİ Sayfa Tablo 1.3.1 ....................................................................................................................... 3 Tablo 1.3.2 ....................................................................................................................... 4 Tablo 1.5.1.1 .................................................................................................................... 6 Tablo 2.1.1 Veritabanı Genel Görünümü......................................................................... 8 Tablo 2.1.2 Öğrenci Tablosu............................................................................................ 8 Tablo 2.1.2 Öğretmen Tablosu......................................................................................... 9 Tablo 2.1.2 Sorular Tablosu............................................................................................. 9 Tablo 2.2.1 Entity Framework Tabloların Genel Görünümü......................................... 10 Tablo 2.2.2 Tabloların Class Yapıları............................................................................ 10 Tablo 2.3.1 Asp.net MVC Web Api Genel Yapısı ........................................................ 11 Tablo 2.4.1 Asp.net MVC Web Uygulamsı Genel Yapısı............................................. 11 Tablo 2.4.2 Asp.net MVC Web Uygulaması Student Controller Kodları ..................... 12 Tablo 2.4.3 Asp.net MVC Web Uygulaması Student Model Kodları ........................... 12 Tablo 2.4.4 Asp.net MVC Web Uygulamasının Student Index Kodları ...................... 13 Tablo 2.4.5 Asp.net MVC Web Uygulaması Student Create Kodları ........................... 13 Tablo 2.4.6 Asp.net MVC Web Uygulaması Student Delete Kodları ........................... 14 Tablo 2.4.7 Asp.net MVC Web Uygulaması Student Edit Kodları............................... 14 Tablo 4.1.1 Web Site Anasayfa...................................................................................... 21 Tablo 4.1.2 Öğrenci Girişi ............................................................................................. 21 Tablo 4.1.3 Öğretmen Girişi .......................................................................................... 21 Tablo 4.1.4 Yönetici Girişi............................................................................................. 21 Tablo 4.1.5 Öğrenci Index Sayfasu................................................................................ 22 Tablo 4.1.6 Öğrenci Ekleme Sayfası.............................................................................. 22 Tablo 4.1.7 Öğrenci Düzenleme Sayfası........................................................................ 22
  • 8. viii Tablo 4.1.8 Öğrenci Silme Sayfas.................................................................................. 23 Tablo 4.1.9 Öğretmenler Index Sayfası ......................................................................... 23 Tablo 4.1.10 Dersker Index Sayfası............................................................................... 23 Tablo 4.1.11 Sınıflar Index Sayfası................................................................................ 24 Tablo 4.1.12 Grup Index sayfası.................................................................................... 24 Tablo 4.1.13 Öğrenci Notlar Index Sayfası ................................................................... 24 Tablo 4.1.14 Öğrenci Ödemeler Index Sayfası.............................................................. 25 Tablo 4.1.15 Öğrenci Devamsızlık Index Sayfası ......................................................... 25 Tablo 4.1.16 Duyurular Index Sayfası ........................................................................... 25 Tablo 4.1.17 Sistem Yönetici Sayfası............................................................................ 26 Tablo 4.1.18 Öğretmenler Soru Yazma Sayfası............................................................. 26 Tablo 4.1.19 Öğrenci Index Sayfası............................................................................... 26 Tablo 4.1.20 Android Anasayfa (Duyurular)................................................................. 27 Tablo 4.1.21 Android Giriş Sayfası ............................................................................... 27 Tablo 4.1.22 Android Giriş Anasayfa............................................................................ 27
  • 9. 1 1. GİRİŞ Teknolojinin gelişmesiyle birlikte İnteraktif Eğitim sistemlerinin, insan yaşamı üzerindeki kolaylaştırıcı etkisi gün geçtikçe artmaktadır. Dünya genelinde teknolojik ve ekonomik değişimlerin yönlendirilmesiyle farklı İnteraktif Eğitim sistemi tiplerine olan talebin artması yenilik ve gelişmeler yönündeki ivmeyi hızlandırmıştır. İnteraktif eğitim uygulaması, internet üzerinden okulunuza veya sınavlarınıza yardımcı olabilmek için kullanılan bir tür evinizdeki dershanelerdir. İnteraktif eğitimde amaç; öğrenciler için teknolojiyi kullanarak bir şeyler öğretmektir. Konu bazında hazırlanmış testler, deneme sınavları gibi birçok unsuru içerisinde bulundurmaktadır. Dershanelerdeki gibi konular üzerinde deneme sınavları yapılabilmektedir. Bunun yanında anlamadığınız yerleri ilgili öğretmene sorma gibi bir durumunuz da söz konusudur. Bu yönüyle de diğer uygulamaların karşısında ekstra avantajlara sahiptir. 1.1. SQL Server Nedir ? SQL Server, Microsoft tarafından geliştirilmiş ilişkisel veri tabanı yönetim sistemidir. İlişkisel veri tabanı sistemi ingilizce olarak Relational Database Management System olarak adlandırılır ve kısaca RDBMS olarak bazı kaynaklarda karşımıza çıkmaktadır. İlişkisel veri tabanı sisteminde veriler tablolar halinde tutulurlar ve bu tablolar kendi aralarında ilişkisel anlamda birbiri ile bağlantılı olabilirler. 1.2. C# Nedir? C#, yazılım sektörü içerisinde en sık kullanılan iki yazılım dili olan C ve C++ etkileşimi ile türetilmiştir. Ayrıca C#, ortak platformlarda taşınabilir bir (portable language) programlama dili olan Java ile pek çok açıdan benzerlik taşımaktadır . En büyük özelliği ise .Net Framework platformu için hazırlanmış tamamen nesne yönelimli bir yazılım dilidir. Yani nesneler önceden sınıflar halinde yazılıdır. Programcıya sadece o nesneyi sürüklemek ve sonrasında nesneyi amaca uygun çalıştıracak kod satırlarını yazmak kalır.
  • 10. 2 Microsoft tarafından geliştirilen C#, C++ ve Visual Basic dillerinde yer alan tutarsızlıkları kaldırmak için geliştirilmiş bir dil olmasına rağmen kısa süre içerisinde nesne yönelimli dillerin içinde en gelişmiş programlama dillerinden biri olmayı başarmıştır. Ayrıca gelişmiş derleyicisi (debugger) ile hata olasılığını ortadan kaldırmaktadır. Yazılan program çalıştırıldıktan sonra derleyici tarafından algılanan Sınıf (Class) ve söz dizimi (syntax) hataları yazılımcıya ayrı bir ekranda ayrıntısı ile gösterilir ve yazılımcı bu hata penceresinden hataları tespit ederek kolayca düzeltebilir. Ayrıca pek çok programcı tarafından kullanılan bir dil olmasından ötürü takıldığımız noktalarda uzman programcılardan yardım almak oldukça kolaydır. 1.3. ASP.NET MVC Nedir? ASP.NET MVC, MVC pattern’ini ASP.NET’e eklemek için Microsoft’un geliştirdiği framework’tür. ASP.NET MVC’nin ne olduğunu anlamak için öncelikle MVC’nin ne olduğunu incelemekte fayda var. MVC, uygulama geliştirmede (özellikle web uygulaması geliştirmede) önemli yere sahip mimari desenlerden biridir. Günümüzde MVC denince akla Microsoft’un geliştirdiği ASP.NET MVC Framework gelmektedir, oysa 1979 yılından beri (Microsoft 1975 yılında kurulmuştur) yazılım dünyasında yer almaktadır. MVC, Model , View , Controller kelimelerinin baş harflerinden oluşur ve her kelime MVC’nin farklı bir katmanını ifade eder.
  • 11. 3 Tablo 1.3. 1 Model MVC dünyasında model uygulama verisinin veya durumunun saklandığı yerdir, genellikle veritabanı veya xml/json dosyası formatındadır. Model, veri katmanını (database, xml, json dosyası, vb.) uygulamadan izole eder, böylece diğer katmanlarda veri katmanının neresi olduğunun bilinmesine gerek kalmaz. Model katmanı sıklıkla Entity Framework, Nhibernate, LLBLGen, vb. gibi araçlar kullanılarak oluşturulur. View View, istemcinin gördüğü arayüzü içeren katmandır, genellikle Model katmanındaki verinin kullanılması ile oluşturulur. View katmanının Model ve Controller katmanlarından ayrılması ile arayüz değişikliklerinin uygulamanın diğer katmanlarını değiştirmeye gerek kalmadan yapılabilmesi sağlanmıştır. View katmanında HTML5 ve CSS3 gibi son versiyon teknolojiler kullanmak mümkündür. HTML5 ve CSS3 ile masaüstü ve mobil tarayıcılarda çalışabilen uygulamalar geliştirmek çok kolaylaşmıştır. Hatta Windows Store uygulamaları geliştirmek için HTML5 ve CSS3 teknolojilerinden yararlanılabilir. Controller Controller, istemciden gelen isteği işlemek, Model ve View katmanları arasında köprü olmak gibi görevleri yerine getirir. Controller içerisinde bir veya daha fazla Action olabilir, genellikle her Action bir web sayfası üretmek için kullanılır.
  • 12. 4 Tablo 1.3. 2 MVC’nin diğer bir önemli yapıtaşı Routing mekanizmasıdır. Routing Routing, istemci’nin uygulamaya yaptığı isteği uygun Controller ve Action’a yönlendiren yapıdır. İstemci, isteği uygulamanın belli bir adresine gönderir, routing mekanizması sayesinde ilgili adres için en uygun Controller ve içerisindeki Action tespit edilir ve çalıştırılır. Neden ASP.NET MVC tercih etmeliyim? MVC ile istemcinin isteğine karşılık üretilen çıktı üzerinde çok büyük kontrol imkânı vardır. Bu sayede her alanına müdahale edebildiğimiz ve isteğe en uygun çıktının üretilebilmesi sağlanmıştır. MVC ile tekrar kullanılabilir (reusable) kod üretmek mümkündür. MVC’nin katmanları birbirinden ayrıldığı için her bir katmanın başka projelerde kullanılabilmesi sağlanmıştır. MVC ile istemcinin istek göndereceği adresler üzerinde çok büyük kontrol imkânı vardır. Bu sayede adresin içerik ile tam bir ilişki içerisinde olması sağlanmıştır. Arama motorları için adres-içerik ilişkisi önemli olduğu için uygulamanın bulunabilirliğine katkısı yüksektir. MVC ile test edilebilir uygulamalar geliştirme çok kolaylaşmıştır. Katmanların birbirinden ayrı olması ve Test Driven Development yapmayı kolaylaştırıcı mimarisi sayesinde test edilebilir uygulama geliştirilebilmesi sağlanmıştır.
  • 13. 5 Sonuç MVC uzun yıllardır birçok framework’te ve programlama dilinde kullanılmış (Java, PHP, vb.) ve olgunlaşmış bir desendir. ASP.NET MVC sayesinde .Net framework dilleri ile MVC pattern kullanılarak hızlı çalışan, test edilebilir, tekrar kullanılabilir parçaları olabilen web uygulamaları geliştirilebilmesi sağlanmıştır. 1.4.API Nedir? Asp .Net Web Api'a geçmeden önce Api nedir ondan bahsedelim. Api açılımı "Application Programming Interface" olan Türkçe'de uygulama geliştirme arayüzü anlamına gelir ve sahip olduğumuz service veya verileri dış dünyaya açıp başka uygulamaların-platformların kullanımına sunmak için belli kurallar çerçevesinde tanımlamalar yaptığımız bir arayüzdür. 1.5. ASP. NET WEB API Nedir? Asp .Net Web Api ise farklı türde sayısız client (browsers, mobile phones, tablets, pc, etc.) tarafından consume edilebilen HTTP protokolü üzerinden haberleşebilen servisler oluşturmak için kullanılan bir framework şeklinde tanımlayabiliriz. Asp .net MVC ile routing, controllers, action results, filter, model binders gibi ortak feature'lara sahip olduklarından bir takım benzerlikler göstermektedir ancak MVC Framework'ün bir parçası değildir. Asp .net Web Api Core Asp .Net'in bir parçasıdır ve MVC veya diğer web application türleri ile birlikte kullanılabilir. Aynı zamanda bütün bunlardan bağımsız stand-alone Web services application olarakta kullanılabilir. 1.5.1.Neden Asp.Net Web Api? Günümüz dünyasında teknolojini gelişmesiyle birlikte firmalar artık web tabanlı uygulamalar üzerinden müşterilerine tam olarak ulaşamaz hale geldiler. İnsanlar artık günlük hayatlarının nerdeyse %50 sini akıllı telefonlar, tablet pc vs ile geçiriyorlar ve bu
  • 14. 6 cihazlarda insanların hayatlarını kolaylaştıracak olan milyonlarca uygulama mevcut. Bunların yanında birde İOT ile birlikte gelecek 5 yılda dünyada 30 milyara yakın internete bağlanabilen cihazlar olacağından bahsediliyor ve buda belki milyonlarca Api geliştirmesi demek. Firmalar veya uygulama geliştiriciler müşterilere daha kolay ve hızlı bir şekilde ulaşmada kullanmak için servislerini ve sahip oldukları verilerin bir kısmını browserlar yada internete bağlanabilen bu akıllı cihazlar tarafından consume edilebilmeleri için Api'lar geliştirmeleri gerekmektedir. Çünkü Api'lar yapısı gereği bütün programlama dilleri tarafından ortak kabul görmüş medya tiplerini (XML-JOSN..etc.) response olarak alıp gerekli parse işlemlerinden sonra kolayca kullanabilir. Tablo 1.5.1. 1 Web Api sahip olduğunuz veri ve servisleri birçok farklı cihazda kullanıma sunmak için expose edebilmenizi sağlayan şahane bir framework ve dahası Web Api .Net Framework üzerinde RESTful servisler inşa etmenizi sağlayacak ideal bir open source platform. WCF Rest service'lerinin aksine Web Api HTTP protokolünün bütün özelliklerini kullanır (URIs, request/response headers, caching, versioning, çeşitli content format'ları) WCF Rest Service'lerinde yapıldığı gibi farklı cihazlar için extra config ayarları vs yapmamıza da gerek bulunmamaktadır. Request'i yapılırken dönmesi gereken response'un XML mi yoksa JSON formatında mı olacağına client'ın seçimine bırakılmıştır çünkü Web Api birden fazla medya formatında response dönebilmektedir.
  • 15. 7 Başlıca Web API Özellikleri • Http Get, Post, Put ve Delete metodlarıyla çalışabildiğinden CRUD işlemelrini destekler, • Response'larda HttpStatusCode ve Accept Header parametreleri bulunur, • Response'lar kullanıcının istediği türde MediaTypeFormatter tarafından formatlanabilir, • OData desteği bulunmaktadır ve Query yazması oldukça kolaydır, • Bir uygulama içerisinde veya IIS üzerinde host edilebilir, • MVC'nin bazı özelliklerini taşır (routing, controllers, action results, filter, model binders) Neden Web Api'ı Seçmeliyiz ? • Bir web service'e ihtiyacınız varsa ve soap'a ihtiyacınız yoksa en iyi seçenek Web Api dir, • Geliştirme sürece WCF de olduğu kadar zahmetli ve sıkıntılı değildir, • Http tabanlı olduğundan Rest-ful servisler geliştirmek için en iyi seçenektir, • Exception ve Cache mimarileri oldukça performanslı ve yönetilebilir dir, • Open Source olduğundan sürekli olarak geliştirilip yeni feature'lar eklenmektedir, • Microsoft yetkilileri Web Api sunumlarından birinde şuna benzer bir şey söyledi "Biz daha iyisini yapana kadar en iyisi bu..!" bu demek oluyor ki tam destek.
  • 16. 8 2. MATERYAL VE METOT 2.1. Veritabanı Oluşturulması Tablo 2.1.1 Veritabanının Genel Görünümü MS SQL Server 2017 ile Veritabanı oluşturulup ve tablolar burada tutulur. İçerik tablodaki gibidir. Tablo 2.1.1 Tablo 2.1.2 Öğrenci Tablosu Öğrenci bilgileri “Student” tablosuna girilir ve burada tutulur. Tablo 2.1.2 Tablo 2.1.3 Öğretmenler Tablosu
  • 17. 9 Öğretmen bilgileri “Teacher” tablosuna girilir ve burada tutulur. Tablo 2.1.3 Tablo 2.1.4 Sorular Tablosu Öğretmenler tarafında oluşturulan sorular “Questions” tablosuna girilir ve burada tutulur. Tablo 2.1.4
  • 18. 10 2.2. Entity Framework Oluşturma Tablo 2.2.1 Tabloların Genel Görünümü Tablo 2.2. 1 Tablo 2.2.2 Tabloların Class yapılarının oluşturulması Tablo 2.2. 2
  • 19. 11 2.3. Asp.net MVC Web Api Oluşturma Tablo 2.3.1 Asp.net MVC Api Projesinin Genel Görünümü Tablo 2.3. 3 2.4. Asp.net MVC Web Uygulaması Tablo 2.4.1 Asp.net MVC Web Uygulamasının Genel Görünümü Tablo 2.4. 1
  • 20. 12 Tablo 2.4.2 Asp.net MVC Web Uygulamasının StudentController Sınıfı Tablo 2.4. 2 Tablo 2.4.3 Asp.net MVC Web Uygulamasının Student Model (Entity Framework) Sınıfı Tablo 2.4.3
  • 21. 13 Tablo 2.4.4 Asp.net MVC Web Uygulamasının Student Index Sayfası Html kodları Tablo 2.4. 4 Tablo 2.4.5 Asp.net MVC Web Uygulamasının Student Create Sayfası Html kodları Tablo 2.4. 5
  • 22. 14 Tablo 2.4.6 Asp.net MVC Web Uygulamasının Student Delete Sayfası Html kodları Tablo 2.3. 6 Tablo 2.4.7 Asp.net MVC Web Uygulamasının Student Edit Sayfası Html kodları Tablo 2.4. 7
  • 23. 15 3. BULGULAR VE TARTIŞMA Azimli çalışma ve gerekli araştırmanın yanında, var olan bilgi ve deneyimlerimiz ile uygulamamızı belli bir aşamaya getirmeyi başardık. Lâkin gerek projenin büyüklüğü, gerek ise vakit yetersizliğinden dolayı hâlen bizim açımızdan tatmin edici bir seviyeye gelebilmiş değiliz. Uygulama teorik ve pratik olarak var olan hâliyle ticari kullanıma hazırdır. Biz ekstra modüller eklemek adına ekstra süreye ihtiyaç duyduk. Bu modüller; • Öğretmen ile öğrenci mesajlaşması • Başarı yüzdesi tablosu • Canlı soru ve test paylaşımı ( Eklendi ama tamamlanmadı) Uygulamamızı dört ana kısımdan meydana getirdik. Bu kısımlar sırasıyla: 1.Veri Tabanı 2.MVC (Model – View – Controller) 3.Web API 4.Android Aşağıda her aşama ile alakalı bulgu ve tartışmaları ayrı ayrı tartışıyor olacağız. 3.1. Veri Tabanı Bulgular ve Tartışmaları Veri tabanı tarafında karşılaşılan en büyük sorun genellikle tablo ilişkileri arasında olmuştur. Bu sorunun asıl kaynağı veri tabanı tablolarını teoride oluşturup pratiğe dökmemekti. Uygulamamızı geliştirmeye başlayıp, test etmeye devam ettikçe bu sorunları da çözmüş olduk. Veri tabanının ilişkisel hâli son olarak Tablo 3.2.1 gibidir ve şu hâliyle uygulamamızın arayüzüyle tamamıyla uyum içerisindedir. 3.2. MVC Bulgular ve Tartışmaları 3.2.1. Sorun – 1 : Görüntü dosyalarının veri tabanına kaydedilmesi Öğrenciler ve Öğretmenlerin CRUD işlemlerinde eklenen resmin veri tabanına kaydedilirken boyut ve server yoğunluğuna bağlı olarak yavaşlamalar yaşanıyordu. Çözüm; Yeni eklenen resmin locale kaydedilmesi ve resmin yol uzantısının veri tabanına kaydedilmesiyle sorun çözüldü.
  • 24. 16 3.2.2. Sorun – 2: Boolean değerlerin CRUD işlemleri Bir veri tabanı uygulamasında boolean değerlerin CRUD işlemlerinin uygulamasında yaşanan büyük sorunlardandı. Örneğin; Bir değerin (Cinsiyet, Durum...vs) Kullanıcıdan veri alınırken veya gösterilirken problem yaşadık. Çözüm; Asp.Net MVC Html Helper Teknolojisi kullanarak bu sorun çözüldü. 3.2.3. Sorun – 3: Öğrenci veya Öğretmen Hızlı Arama Öğrencilerin herhangi bir bilgisinin değiştirmesi durumunda hızlı bir şekilde öğrenciyi bulmak görevliler açısından zor olmalı. Örneğin: 500 öğrencisi olan bir eğitim kurumunun, öğrenciler arasında bir kayıt bulmak bir zaman sorunu teşkil eder. Çözüm; .Net’in LINQ teknolojini kullanarak bu sorun çözüldü. 3.2.4. Sorun – 4: Tarih gerektiren Textboxların takvim eklenmesi Tarih eklemek için Textbox’a tıklandığında bir takvim açılması ve doğru bir şekilde tarihin veri tabanına kaydedilmesi gerekmektedir. Çözüm; Bu sorun JQuery’nin Datapicker nesnesi kullanarak çözüldü. 3.2.5. Sorun – 5: Arama teknolojisi (Ad, Soyad veya TC ile) Notlar, Ödemeler ve Devamsızlıklar percerelerinden veri eklerken, textbox’a girilen id ile veri tabanına kaydedilmesi gerekiyor ki; bu durumda her öğrencini Id numarasını bilinmesi gerekir. Bu sorunun Id ile değil; Ad, Soyad veya T.C. Numarası ile hızlı bir şekilde öğrenci bulunması gerekiyor. Çözüm; Bu sorunu “Chosen, a Select Box Enhancer for jQuery and Prototype” script’i kullanarak çözüldü. 3.2.6. Sorun – 6: Kullanıcıların Yetkileri Üç farklı kullanıcı tipi(Yönetici, Öğretmen, Öğrenci/Veli) olduğundan dolayı, bunların erişimlerinin belirlenmesi için üç farklı giriş Anahtarı tanımlanıp oturum işlemlerinin bu anahtarlar üzerinden tanımlandı.
  • 25. 17 3.3. Web API Bulgular ve Tartışmaları 3.3.1. Sorun – 1 : XML formatından JSON formatına geçiş Bilindiği üzere bir API üzerinden datayı serialize etmenin iki türlü formatı mevcuttur. Bu formatlar : 1. XML 2. JSON Web API ile ilk defa bir model serialize edildiğinde bunu XML formatında yapar. Bizler daha evrensel bir format olan JSON formatını kullanmak istedik. Çözüm: Bu sorunu Global.asax.cs sınıfının içerisine: Kod satırını ekleyerek çözmüş bulunduk. 3.3.2. Sorun – 2 : Reference Loop Handling Hatası Reference Loop Handling Rest API tarafında birbirleriyle ilişkili birden fazla sınıfı çağırdığımız zaman karşılaştığımız bir sorundu. Bu hata doğrultusunda iki sınıf birbirlerini sürekli çağırıyor ve sonuçta cache taşmasından dolayı result hata fırlatıyordu. Çözüm: Bu sorunu Reference Loop Handling hatasını NewtonSoft Json tarafında ignore eden aşağıdaki kod satırını Global.asax.cs sınıfına ekleyerek çözdük. 3.3.3. Sorun – 3 : Tüm öğrenciler geri döndürülürken karşılaşılan hata Bu hata kapsamında tüm öğrencileri çağırırken kullanılan http://localhost/api/Students URL’i üzerinde dönen result bütün öğrenci bilgilerini içermiyordu. Çözüm: Önceden kullanılan HTTP Get yapısı Queryable<ClassType> ve Enumarable< ClassType > yapılarıyla değiştirilerek hata çözüldü.
  • 26. 18 3.3.4. Sorun – 4 : Null Reference Hatası Tarzında atılan bir sorguda bazı değerler null değerler gönderiyordu. Null Reference bulgusunu bir hata olarak tanımlamak pek doğru değildir. Çünkü tercihlere göre değişebilir. Bu bulgu basitçe bir sınıfın içerisindeki boş değerlerin karşısında çağırılan sorguda “Null” değerinin gösteriliyor olmasıdır. Biz sorgularımızda “Null” değerlerini görmek istemediğimizden ve bu sorunun çözümünde yeterli kaynak da bulamadığımızdan sorunu StackOverFlow üzerinde dillendirdik. Sorunun linki: https://stackoverflow.com/questions/55076529/wrong-serialization-on- linq-web-api/55076949#55076949
  • 27. 19 Çözüm: Aşağıdaki kod satırı WebApiConfig.cs sınıfına eklenerek sorun çözüldü. 3.4. Android Uygulama Bulgular ve Tartışmaları 4.4.1. Sorun -1: Proje için en uygun HTTP kütüphanesinin seçimi Karşılaşılan bulguların en başında projeye en uygun HTTP kütüphanesini seçmek vardı. HTTP kütüphanesinin amacı WebAPI tarafından serve edilen datayı serialize etmektir. Çözüm: Başlangıçta Retrofit kullanılsa da gerek yetersizliği, gerek ise projeye uygun bir kütüphane olmaması hasebiyle Android Volley Library kullanılmıştır. 3.4.2. Sorun -2: IIS üzerinden serialize edilen dataya Android üzerinden ulaşmama Projenin başlarında bu hata bayağı zamanımızı aldı. Çözümü için sofistike yollara başvurduğumuz hatayı StackOverFlow’da dillendirmemize rağmen en sonunda çözümü de kendimiz bulmuş olduk. StackOverFlow:https://stackoverflow.com/questions/55092593/how-can-i-connect- from-my-android-application-to-webapi/55130562#55130562 Çözüm: Adım 1: Windows Defender'ı açın -> güvenlik duvarı ve ağ koruması -> Ortak Ağ -> koruması kapatıldı. Adım: 2: Jexus Manager uygulaması kuruldu, pc adınızın altındaki siteler sekmesine gidip yeni Web Sitesi Eklendi. Herhangi bir proje adı verin ve Fiziksel yol altındaki butondan web uygulama yolunuzu seçildi. Bir port verdik, örn. 61508. Ana bilgisayar adı için 127.0.0.1 kullandık, IP Adresi için kendi IPv4 adresimizi kullanın ve onayladık.
  • 28. 20 Adım 3: Sol tarafta site adının altından sağ tıklayıp proje IIS üzerinden çalıştırıldı. Adım 4: PC üzerinden çalıştığı test edildikten sonra android üzerindeki mevcut URL şu şekilde güncellendi: http://10.0.2.2:61508/api/Students ve veriler android tarafına başarıyla çekildi. 3.4.3. Sorun - 3: JSON Object – JSON Array Farkından Kaynaklı Bulgu Projeyi Android üzerinde serialize ederken datayı eksik veya parça parça (Parse Edilmiş) hâlini çekememizden kaynaklı olarak bir sorun olduğunu fark ettik. Bu sorun aslında iki tip JSON yapısı olduğundan kaynaklı bir sıkıntıydı. Çözüm: Neredeyse bütün kaynaklarda JSON Object yapısının nasıl parse edileceğine dair bilgiler bulunuyordu. Daha sonra iki tip JSON serializer metodunun olduğunun farkına vardıktan sonra yapımızı JSON Object tipinden JSON Array tipine çekerek sorunu çözmüş bulunduk. JSON Object Tip Gösterimi: JSON Array Tip Gösterimi:
  • 29. 21 4. SONUÇLAR 4.1. Sonuç Uygulamanın girişinde, şık tasarımının yanında responsive (her platforma duyarlı) tasarımıyla ve Bootstrap ile süslenmiş anasayfa kullanıcıları karşılamaktadır. Bu tasarımda sırasıyla; Anasayfa, Duyurular, Neden Biz, Galeri ve İletişim Butonlarının yanında öğrencilerin, öğretmenlerin ve yöneticilerin ayrı ayrı giriş yapabileceği giriş seçeneği yer almaktadır. Tablo 4.1. 1 Anasayfa Tablo 4.1. 2 Öğrenci Giriş Tablo 4.1. 3 Öğretmen Girişi Tablo 4.1. 4 Yönetici Girişi
  • 30. 22 Tablo 4.1. 5 Öğrenci Index Sayfası Tablo 4.1. 6 Öğrenci Ekleme Sayfası Tablo 4.1. 7 Öğrenci Düzenleme Sayfası
  • 31. 23 Tablo 4.1. 8 Öğrenci Silme Sayfası Tablo 4.1. 9 Öğretmen Index Sayfası Tablo 4.1. 10 Dersler Index Sayfası
  • 32. 24 Tablo 4.1. 11 Sınıflar Index sayfası Tablo 4.1. 12 Grup Index Sayfası Tablo 4.1. 13 Öğrenci Notlar Index Sayfası
  • 33. 25 Tablo 4.1. 14 Öğrenci Ödemeler Index Sayfası Tablo 4.1. 15 Öğrenci Devamsızlık Index Sayfası Tablo 4.1. 16 Duyurular Index Sayfası
  • 34. 26 Tablo 4.1. 17 Sistem Yönetici Sayfası Tablo 4.1. 18 Öğretmenler Soru Yazma Sayfası Tablo 4.1. 19 Öğrenci Index Sayfası
  • 35. 27 Tablo 4.1. 20 Mobil Uygulama Anasayfa Tablo 4.1. 21 Mobil Uygulama Giriş Sayfası Tablo 4.1. 22 Mobil Uygulama Giriş Anasayfa
  • 36. 28 5. KAYNAKLAR [1] https://www.uzaktanegitim.com/haberler/interaktif-etkilesimli-egitim-nedir/237 [2] https://medium.com/@resulzel/c-nedir-c-ile-neler-yapılabilir-199e8b337615 [3] http://www.borakasmer.com/asp-net-mvc-nedir-ne-ise-yarar/ [4] https://github.com/ianbar20/JSON-Volley-Tutorial/tree/master/Example-JSON-Files [5] https://harvesthq.github.io/chosen/ [6] https://bootsnipp.com/ [7] https://getbootstrap.com/ [8] https://fontawesome.com/v4.7.0/icons/ [9] https://my.vertabelo.com/login [10] https://www.sitepoint.com/mastering-complex-lists-with-the-android-recyclerview [11] https://flatuicolors.com/palette/defo [12] https://www.youtube.com/watch?v=66-lO5sGF20 [13] [Book]C# in Depth - Jon Skeet [https://www.manning.com/books/c-sharp-in-depth-fourth-edition] [14] https://stackoverflow.com/questions/42858314/web-api-get-method-returns-empty-in-json [15] https://www.tutorialsteacher.com/webapi/request-response-data-formats-in-web-api [16] http://instinctcoder.com/how-to-call-asp-net-web-api-from-android-studio/ [17] http://www.fypsolutions.com/tutorials/rest-api-client-in-android-using-volley-and-gson/ [18] https://github.com/mcxiaoke/android-volley/issues/143 [19] https://www.mobilhanem.com/android-volley-kullanimi-ve-json-parse-etme/ [20] https://stackoverflow.com/questions/2929562/register-application-class-in-manifest [21]https://www.tutorialspoint.com/how-to-sort-volley-json-array-based-on-id-in-android [22] http://www.androiddeft.com/json-parsing-android-volley/ [23] https://www.youtube.com/watch?v=y2xtLqP8dSQ [24] https://www.youtube.com/watch?v=FzwBYPzCIHk [25] https://www.youtube.com/watch?v=ASarfHD7HRM [26] https://www.youtube.com/watch?v=kN8IiQWQfVU [27] https://www.youtube.com/watch?v=aIkpVzqLuhA [28] https://www.youtube.com/watch?v=s7wmiS2mSXY [29] https://jsoneditoronline.org/ [30] https://www.youtube.com/watch?v=E7Voso411Vs [31] https://www.youtube.com/watch?v=63QbTz9tFo4 [32]https://www.freecodecamp.org/news/how-to-perform-crud-operations-with-asp-net-core-using-vs- code-and-ado-net-b12404aef708/ [33]https://www.tutlane.com/tutorial/aspnet-mvc/ado-net-crud-operations-insert-update-delete-in-asp-net- mvc-4-example
  • 37. 29 ÖZGEÇMİŞ KİŞİSEL BİLGİLER Adı Soyadı : Hüseyin BİÇEN Doğum Yeri ve Tarihi : Batman / 13.06.1996 Telefon : +90 543 837 9296 E-posta : huseynbicen@gmail.com EĞİTİM Derece Adı, İlçe, İl Bitirme Yılı Lise : Batman Fatih Lisesi 2014 Üniversite : Siirt Üniversitesi Bilgisayar Mühendisliği 2019 İŞ DENEYİMLERİ Yıl Kurum Görevi 2017 Microsoft Türkiye Stajyer 2018 Index Grup Stajyer UZMANLIK ALANI • C# (.Net) ■■■■■■■■■■□□ • JAVA ■■■■■■■■■□□□ • C & C++ ■■■■■■■□□□□□ • Machine Learning ■■■■■■■■□□□□ • OOP in C# and Java ■■■■■■■■■□□□ • IOT ■■■■■■■■□□□□ • Asp.Net / Asp.Net Core / Asp.Net MVC / Web Api ■■■■■■■■■■□□ • Xamarin (Cross Platform) / Android ■■■■■■■■□□□□
  • 38. 30 ÖZGEÇMİŞ KİŞİSEL BİLGİLER Adı Soyadı : Halil ŞAHİN Doğum Yeri ve Tarihi : Batman / 01.05.1991 Telefon : +90 553 492 2220 E-posta : Halilsahin.dev@gmail.com EĞİTİM Derece Adı, İlçe, İl Bitirme Yılı Lise : 75. Yıl Cumhuriyet Anadolu Lisesi 2010 Üniversite : Siirt Üniversitesi Bilgisayar Mühendisliği 2019 İŞ DENEYİMLERİ Yıl Kurum Görevi 2016 Microsoft Türkiye Stajyer 2017 Hes Kablo Stajyer 2018 Solvia Stajyer UZMANLIK ALANI • C# (.Net) ■■■■■■■■■■□□ • JAVA ■■■■■■■■■□□□ • C & C++ ■■■■■■■□□□□□ • Machine Learning ■■■■■■■■□□□□ • OOP in C# and Java ■■■■■■■■■□□□ • IOT ■■■■■■■■□□□□ • Asp.Net / Asp.Net Core / Asp.Net MVC / Web Api ■■■■■■■■■■□□ • Xamarin (Cross Platform) / Android ■■■■■■■■□□□□