Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Java Programming Project for Student Rating System, Exercises of Java Programming

A java programming project for a student rating system in an educational institution. The project involves creating a class hierarchy for students, undergraduate and graduate students, and faculty members. The system reads student ratings from a text file and performs various calculations and reports. It also predicts a missing rating using appropriate algorithms.

What you will learn

  • What is the class hierarchy for the student rating system?
  • How are missing ratings predicted in the student rating system?
  • How are student ratings read from a text file in Java?

Typology: Exercises

2018/2019

Uploaded on 11/11/2019

damla-cekic
damla-cekic 🇹🇷

1 document

1 / 5

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
2018-2019 Güz Dönemi
Ege Üniversitesi Bilgisayar Mühendisliği Bölümü
112 Algoritma ve Programlama II Dersi
Proje-1
Veriliş Tarihi: 20.03.2019
Teslim Tarihi: 12.04.2019
Genel Problem Tanımı:
Lisans ve lisansüstü öğrencileri olan bir eğitim kurumunun, öğretim elemanları hakkında
öğrencilerinin yaptığı derecelendirmeleri (ratings) bir dosyada sakladığı varsayılmaktadır. Kurum,
bu derecelendirmeler ile ilgili olarak çeşitli hesaplamalar, işlemler, raporlamalar yapmak
istemektedir. Ayrıca, girilmeyen bir derecelendirme puan değeri için tahmin de yapılacaktır. Bu
bağlamda aşağıda detaylı olarak verilen gereksinimleri karşılayacak Java kodlarını yazınız.
Gereksinimler:
Öğrencileri temsilen kalıtım (inheritance) kullanılarak bir sınıf hiyerarşisi oluşturulacaktır:
Studentsınıfı, öğrenci numarasını temsil etmek için int tipinde “studentID” değişkeni ile, ad ve
soyadı temsilen String tipinde “Name” ve “Surname” değişkenlerine sahiptir. Student sınıfı için;
parametresiz “constructor”, tüm değişkenleri kullanan “constructor” ve “copy constructor” metotları
ile “toString” metodunu yazınız. Get ve Set metotlarını otomatik olarak oluşturunuz.
Lisans öğrencilerini temsil etmek için “Student” sınıfından kalıtım ile “UnderGraduate” isimli bir sınıf
türetiniz. “UnderGraduate” sınıfında öğrencinin eğitim kurumunda izlediği akademik patikayı (track)
(yazılım mühendisliği, yapay zeka, gömülü sistemler gibi…) temsilen String tipinde track
değişikeni bulunmaktadır. UnderGraduate sınıfı için ayrıca, yukarıda söz edilen üç adet
“constructor” metot ve “toString” metodu yazılmalıdır. Get ve Set metotlarını otomatik olarak
oluşturunuz.
Lisansüstü öğrencileri temsil etmek için Student” sınıfından kalıtım ile Graduateisimli bir sınıf
türetiniz. “Graduate sınıfında öğrencinin tez konusunu temsilen String tipinde subject değişkeni
ile tez danışmanını temsilen String tipinde advisor değişkenleri bulunmaktadır. Graduate sınıfı
için ayrıca, yukarıda söz edilen üç adet “constructor” metot ve “toString” metodu yazılmalıdır. Get
ve Set metotlarını otomatik olarak oluşturunuz.
Not: Öğrenci (Student) hiyerarşisindeki sınıflarda veriler ile ilgili hata kontrollerine gerek yoktur.
pf3
pf4
pf5

Partial preview of the text

Download Java Programming Project for Student Rating System and more Exercises Java Programming in PDF only on Docsity!

2018 - 2019 Güz Dönemi

Ege Üniversitesi Bilgisayar Mühendisliği Bölümü

112 Algoritma ve Programlama II Dersi

Proje- 1

Veriliş Tarihi: 20 .03.201 9

Teslim Tarihi: 12 .04.201 9

Genel Problem Tanımı:

Lisans ve lisansüstü öğrencileri olan bir eğitim kurumunun, öğretim elemanları hakkında öğrencilerinin yaptığı derecelendirmeleri (ratings) bir dosyada sakladığı varsayılmaktadır. Kurum, bu derecelendirmeler ile ilgili olarak çeşitli hesaplamalar, işlemler, raporlamalar yapmak istemektedir. Ayrıca, girilmeyen bir derecelendirme puan değeri için tahmin de yapılacaktır. Bu bağlamda aşağıda detaylı olarak verilen gereksinimleri karşılayacak Java kodlarını yazınız.

Gereksinimler:

Öğrencileri temsilen kalıtım (inheritance) kullanılarak bir sınıf hiyerarşisi oluşturulacaktır: “Student” sınıfı, öğrenci numarasını temsil etmek için int tipinde “studentID” değişkeni ile, ad ve soyadı temsilen String tipinde “Name” ve “Surname” değişkenlerine sahiptir. “Student sınıfı için; parametresiz “constructor”, tüm değişkenleri kullanan “constructor” ve “copy constructor” metotları ile “toString” metodunu yazınız. Get ve Set metotlarını otomatik olarak oluşturunuz. Lisans öğrencilerini temsil etmek için “Student” sınıfından kalıtım ile “UnderGraduate” isimli bir sınıf türetiniz. “UnderGraduate” sınıfında öğrencinin eğitim kurumunda izlediği akademik patikayı (track) (yazılım mühendisliği, yapay zeka, gömülü sistemler gibi…) temsilen String tipinde “track” değişikeni bulunmaktadır. “UnderGraduate” sınıfı için ayrıca, yukarıda söz edilen üç adet “constructor” metot ve “toString” metodu yazılmalıdır. Get ve Set metotlarını otomatik olarak oluşturunuz. Lisansüstü öğrencileri temsil etmek için “Student” sınıfından kalıtım ile “Graduate” isimli bir sınıf türetiniz. “Graduate” sınıfında öğrencinin tez konusunu temsilen String tipinde “subject” değişkeni ile tez danışmanını temsilen String tipinde “advisor değişkenleri bulunmaktadır. “Graduate” sınıfı için ayrıca, yukarıda söz edilen üç adet “constructor” metot ve “toString” metodu yazılmalıdır. Get ve Set metotlarını otomatik olarak oluşturunuz. Not: Öğrenci (Student) hiyerarşisindeki sınıflarda veriler ile ilgili hata kontrollerine gerek yoktur.

Bu noktada, istenen işlemlere geçmeden önce, eğitim kurumunun dosya formatının anlaşılması önem taşımaktadır ve aşağıda bu metin dosyası içeriği örnek üzerinde açıklanmaktadır. Kurum.txt dosyası içeriği:

5,A,B,C,D,E

u,101,Ali,Ceviz,Yapay zeka

g, 2 01,Ayse,Can,Makine ogrenmesi,Ahmet Celik

u,102,Veli,Tuz,Gomulu sistemler

u,103,Zeynep,Demir,Yapay zeka

g, 2 02,Ahmet,Tunc,Veri madenciligi,Can Durmaz

Dosyanın ilk satırında, kaç adet öğretim elemanı derecelendirildiği ile bu öğretim elemanlarına karşılık gelen harf kodları yer almaktadır. Örneğin, bu dosyada, 5 adet öğretim elemanı derecelendirilmiş olup, bu öğretim elemanları A, B, C, D ve E harfleri ile kodlanmıştır. ( NOT- 1 : Bu projede, ayrı bir öğretim elemanı sınıfı yazımı ve harf kodların öğretim elemanı nesneleri ile eşlenmesi istenmemektedir; arzu ettiğiniz takdirde ileride proje dışı olarak ayrıca bu eklemeyi kendiniz yapabilirsiniz.) Örnek dosyanın diğer satırları ise şu şekilde düzenlenmiştir: İlk olarak öğrenci bilgileri yer almakta (u:lisans öğrencisi (undergraduate), g:lisansüstü öğreci (graduate) anlamında), hemen bir alt satırında ilgili öğrencinin öğretim elemanları için yaptığı derecelendirmeler bulunmaktadır. Örneğin, dosyanın 2. ve 3. satırı açıklanacak olursa; 101 numaralı, Ali isimli, Ceviz soyadlı ve izlediği akademik patika yapay zeka olan lisans öğrencisi A öğretim elemanına 3, B öğretim elemanına 4, C öğretim elemanına 3, D öğretim elemanına 5 ve E öğretim elemanına 1 puan vermiştir. Benzer şekilde, diğer öğrencilerin bilgileri ve yaptıkları öğretim elemanı derecelendirmeleri dosya içeriğinden de görüldüğü gibi benzer şekilde yer almaktadır. NOT- 2 : Derecelendirmeler 1 ile 5 arasında yapılmakta olup, 1 puan “çok kötü”, 5 puan ise “çok iyi” anlamındadır. NOT- 3 : Dosyadaki satırlardaki verilerin “virgül” işareti ile ayrıldığı görülmektedir. Verileri dosyadan elde ederken Java’da hazır olarak bulunan “StringTokenizer” sınıfını veya uygun göreceğiniz başka bir hazır sınıfı kullanabilirsiniz.

Klavyeden, ilk önce öğrenci tipi (daha önce söz edildiği gibi “u” veya g”) aldıktan sonra, buna göre gerekli diğer verileri de alarak ilgili öğrenci nesnesini oluşturup öğrencilerin tutulduğu diziye ekleyiniz. Daha sonra bu öğrenci için, ilk (derecelendirilecek öğretim elemanı sayısı-1) kadar öğretim elemanı için (örneğin, 5 öğretim elemanı derecelendiriliyor ise ilk dört öğretim elemanı için) derecelendirme puanlarını klavyeden alınız. Son öğretim elemanı için olan puanı ise aşağıda anlatılan yöntemle tahmin ettikten sonra ilgili öğrencinin derecelendirme puanlarını da iki boyutlu diziye ekleyiniz. İlk (n- 1 ) adet öğretim elemanı için puanlaması alınan öğrencinin verdiği puanlara en çok benzeyen öğrencinin bulunabilmesi için aşağıdaki formülü kullanınız (eğer A, B, C, D, E öğretim elemanları var ise): Benzerlik Değeri=| Ak – Ad| + | Bk – Bd| + | Ck – Cd| + | Dk – Dd| Burada, k indeksi ile gösterilen klavyeden girilen değer, d indeksi ile gösterilen ise dosyadaki (dizideki) bir diğer öğrenciye ait olan değerdir. Bu farkların mutlak değeri alınarak toplanmaktadır. Düşük bir değer çıkması çok benzerlik var, büyük bir değer çıkması az benzerlik var anlamını taşımaktadır. Buna göre, klavyeden giriş yapılan öğrencinin girmiş olduğu ilk (n- 1 ) adet puanlama değerini kullanarak yukarıdaki formül ile bu öğrenciye en çok benzeyen öğrenci(ler) bulunmalı, hakkında veri girişi yapılmayan son öğretim elemanının puanı benzer öğrenci(ler) dikkate alınarak (aynı benzerlik değerine sahip birden fazla öğrenci varsa ortalama alınarak, aynı benzerlik değerinde sadece bir öğrenci varsa da o öğrencinin son öğretim elemanı için verdiği puan baz alınarak) belirlenmelidir.

  1. Klavyeden giriş yapılan öğrencilerin bilgilerini yazdırınız. Daha sonra sadece bu öğrencilerin puanlamalarını kullanarak her bir öğretim elemanı için ortalama derecelendirme puanını hesaplayarak yazdırınız. Tarihler, Rapor İçeriği ve Diğer Bilgiler:
  1. Proje tek kişi olarak yapılabileceği gibi, 2 veya 3 kişilik gruplar olarak da yapılabilecektir. (3’den fazla kişiden oluşacak bir gruba kesinlikle izin verilemeyecektir, bu nedenle 4 veya daha fazla öğrenciden oluşan grup başvurusu yapılmaması gerekmektedir.) Grupların en geç 26 Mart 2019 Salı günü mesai bitimine kadar aşağıdaki bağlantıdan erişilebilen E- tablo dokümanına kayıt edilmesi gerekmektedir. Proje süreci başlamış kabul edildiğinden, bu tarihten sonra bildirilen gruplardan veya talep edilecek değişikliklerden belli bir puan kesintisi yapılma durumunda kalınacaktır. Grupları kayıt edebilmek için bağlantı: https://docs.google.com/spreadsheets/d/1lcZfJKnRqQE_df18bubvCTWyrYHocJ46VfkWZf1yi0U/edit ?usp=sharing
  1. Projeler ve raporları 12 Nisan 2019 Cuma günü mesai bitimine kadar http://sorubank.ege.edu.tr/~moodle web sitesindeki ilgili ders sayfası kullanılarak sisteme yüklenmelidir. NetBeans ortamında kodlanarak çalıştırılacak Java projesine ilişkin klasör sıkıştırılmış (zip, rar gibi) halde, dosya adı adı grup üyelerinin öğrenci numaralarının alt çizgi karakteri ile birleşiminden (örneğin 05090004219_05090004235.rar) oluşacak şekilde sisteme yüklenmelidir.
  2. Proje raporları ayrıca 12 Nisan 201 9 Cuma günü mesai sonuna kadar bilgisayar çıktısı olarak dersin asistanlarına teslim edilmelidir. Proje raporunda temel olarak aşağıdaki bilgilerin olması beklenmektedir;  Programcı Kataloğu (Kullanılan sınıf ve metotları açıklayınız, tasarım, gerçekleştirim ve test için harcadığınız süreleri yazınız, kaynak kodun çıktısını gerekli yerlerde açıklamalar yapılmış olarak ekleyiniz.)  Kullanıcı Kataloğu (Programın kullanım kılavuzunu ekran görüntüleri de kullanarak hazırlayınız, varsa programdaki kısıtlamaları belirtiniz.)  Biçimsel Kurallar: Raporun kapak sayfası olması, her sayfada sayfa numarası bulunması ve her sayfada sayfanın üst tarafında üst bilgi olarak Alg ve Prog II, 201 8 - 2019 Proje-1 bilgisine ek olarak grup üyelerinin isim ve numaralarının yer alması gerekmektedir.
  3. Proje tesliminde en fazla 2 günlük gecikmeler kabul edilecek, ancak son teslim tarihinden sonraki her gün için proje notunda % 1 0 kesinti yapılacaktır.
  4. Proje, yıl içi notuna etki edeceği için dersi alttan alan öğrenciler tarafından da yapılmalıdır.

6. Başka gruplardan alıntı olduğu anlaşılan projeler, gerek alıntı yapılan gerekse alıntı yapan

gruplar için değerlendirme dışı bırakılacaktır. Her grubun kendi çabaları ile yapabildiği kadarıyla teslim ettiği bir proje, içerisinde alıntılar olan bir projeye göre daha değerli olacaktır.