Selasa, 23 September 2025

Pertemuan 5 - Implementasi Grouping Objek

 

Sistem FRS Mata Kuliah dengan JAWA JAVA

Nama : Hosea Felix Sanjaya
Kelas : PBO - A
NRP : 5025241177


1. Class Dosen

public class Dosen { private String nama; private String nip; public Dosen(String nama, String nip) { this.nama = nama; this.nip = nip; } public String getNama() { return nama; } public String getNip() { return nip; } }

Penjelasan:

  • Dosen menyimpan nama dan NIP dosen.

  • Atribut bersifat private → hanya bisa diakses lewat getter.

  • Constructor digunakan untuk mengisi data saat objek Dosen dibuat.


2. Class Mahasiswa

public class Mahasiswa { private String nama; private String nrp; public Mahasiswa(String nama, String nrp) { this.nama = nama; this.nrp = nrp; } public String getNama() { return nama; } public String getNrp() { return nrp; } }

Penjelasan:

  • Mahasiswa menyimpan nama dan NRP mahasiswa.

  • Sama seperti Dosen, atribut bersifat private.

  • Objek Mahasiswa akan digunakan untuk mendaftar mata kuliah.


3. Class MatKul

public class MatKul { private String kode; private String nama; private int sks; private Dosen dosenPengampu; private String jadwal; private int kapasitas; private Mahasiswa[] peserta; private int jumlahPeserta; public MatKul(String kode, String nama, int sks, Dosen dosenPengampu, String jadwal, int kapasitas) { this.kode = kode; this.nama = nama; this.sks = sks; this.dosenPengampu = dosenPengampu; this.jadwal = jadwal; this.kapasitas = kapasitas; this.peserta = new Mahasiswa[kapasitas]; this.jumlahPeserta = 0; } public String getKode() { return kode; } public String getNama() { return nama; } public int getSks() { return sks; } public Dosen getDosenPengampu() { return dosenPengampu; } public String getJadwal() { return jadwal; } public int getKapasitas() { return kapasitas; } public int getJumlahPeserta() { return jumlahPeserta; } public boolean sudahTerdaftar(Mahasiswa m) { for (int i = 0; i < jumlahPeserta; i++) { if (peserta[i].getNrp().equals(m.getNrp())) { return true; } } return false; } public boolean daftarMahasiswa(Mahasiswa m) { if (sudahTerdaftar(m)) { return false; } if (jumlahPeserta < kapasitas) { peserta[jumlahPeserta] = m; jumlahPeserta++; return true; } return false; } }

Penjelasan:

  • MatKul menyimpan info kode MK, nama MK, SKS, dosen pengampu, jadwal, kapasitas kelas, dan daftar peserta.

  • Method sudahTerdaftar() mengecek apakah mahasiswa sudah ikut mata kuliah itu.

  • Method daftarMahasiswa() untuk mendaftarkan mahasiswa baru, hanya jika belum terdaftar dan kapasitas belum penuh.


4. Class Classroom

public class Classroom { private Mahasiswa mahasiswa; private MatKul matakuliah; public Classroom(Mahasiswa mahasiswa, MatKul matakuliah) { this.mahasiswa = mahasiswa; this.matakuliah = matakuliah; } public void tampilkanInfo() { System.out.println("Mahasiswa: " + mahasiswa.getNama() + " (" + mahasiswa.getNrp() + ")"); System.out.println("Mengambil Mata Kuliah: " + matakuliah.getNama() + " [" + matakuliah.getKode() + "]"); System.out.println("Dosen Pengampu: " + matakuliah.getDosenPengampu().getNama()); System.out.println("===================================="); } }

Penjelasan:

  • Classroom menghubungkan Mahasiswa dengan Mata Kuliah.

  • Method tampilkanInfo() untuk menampilkan detail mahasiswa yang mengambil mata kuliah tertentu.


5. Class Main

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Dosen d1 = new Dosen("Wahyu Suadi", "19700101"); Dosen d2 = new Dosen("Dwi Agung", "19720303"); Dosen d3 = new Dosen("Yudhi Purwanto", "197206789"); MatKul[] daftarMK = new MatKul[3]; daftarMK[0] = new MatKul("IF101", "Sistem Digital", 3, d1, "Senin 08.00-10.00", 2); daftarMK[1] = new MatKul("IF102", "Struktur Data", 3, d2, "Rabu 10.00-12.00", 1); daftarMK[2] = new MatKul("IF103", "Dasar Pemrograman", 3, d3, "Kamis 10.00-12.00", 3); int pilihanMenu = 0; while (pilihanMenu != 4) { System.out.println("\n===== SISTEM PENGAMBILAN MATA KULIAH ====="); System.out.println("1. Daftar Mahasiswa ke Mata Kuliah"); System.out.println("2. Lihat Daftar Mata Kuliah"); System.out.println("3. Lihat Histori Mahasiswa"); System.out.println("4. Keluar"); System.out.print("Pilih menu: "); pilihanMenu = sc.nextInt(); sc.nextLine(); if (pilihanMenu == 1) { System.out.print("Masukkan nama mahasiswa: "); String nama = sc.nextLine(); System.out.print("Masukkan NRP: "); String nrp = sc.nextLine(); Mahasiswa mhs = new Mahasiswa(nama, nrp); System.out.println("\nDaftar Mata Kuliah:"); for (int i = 0; i < daftarMK.length; i++) { MatKul mk = daftarMK[i]; System.out.println((i+1) + ". " + mk.getNama() + " (" + mk.getKode() + ") - Kapasitas: " + mk.getJumlahPeserta() + "/" + mk.getKapasitas()); } System.out.print("\nPilih mata kuliah (nomor): "); int pilihan = sc.nextInt(); sc.nextLine(); if (pilihan > 0 && pilihan <= daftarMK.length) { MatKul mk = daftarMK[pilihan - 1]; if (mk.sudahTerdaftar(mhs)) { System.out.println("\nPendaftaran gagal! Mahasiswa sudah mengambil mata kuliah ini."); } else { boolean berhasil = mk.daftarMahasiswa(mhs); if (berhasil) { System.out.println("\nPendaftaran berhasil!"); System.out.println("Mahasiswa: " + mhs.getNama() + " (" + mhs.getNrp() + ")"); System.out.println("Mengambil MK: " + mk.getNama() + " [" + mk.getKode() + "]"); System.out.println("Dosen: " + mk.getDosenPengampu().getNama()); System.out.println("Jadwal: " + mk.getJadwal()); } else { System.out.println("\nPendaftaran gagal! Kelas sudah penuh."); } } } else { System.out.println("Pilihan tidak valid."); } } else if (pilihanMenu == 2) { System.out.println("\nDaftar Mata Kuliah:"); for (int i = 0; i < daftarMK.length; i++) { MatKul mk = daftarMK[i]; System.out.println((i+1) + ". " + mk.getNama() + " (" + mk.getKode() + ") - Kapasitas: " + mk.getJumlahPeserta() + "/" + mk.getKapasitas()); } } else if (pilihanMenu == 3) { System.out.print("Masukkan NRP mahasiswa: "); String nrpCari = sc.nextLine(); System.out.println("\nHistori mata kuliah untuk NRP " + nrpCari + ":"); boolean ada = false; for (int i = 0; i < daftarMK.length; i++) { MatKul mk = daftarMK[i]; if (mk.sudahTerdaftar(new Mahasiswa("", nrpCari))) { System.out.println("- " + mk.getNama() + " (" + mk.getKode() + "), Dosen: " + mk.getDosenPengampu().getNama() + ", Jadwal: " + mk.getJadwal()); ada = true; } } if (!ada) { System.out.println("Belum ada mata kuliah yang diambil."); } } else if (pilihanMenu == 4) { System.out.println("Terima kasih, program selesai."); } else { System.out.println("Menu tidak valid."); } } sc.close(); } }

Penjelasan:

  • Main adalah class utama tempat program dijalankan.

  • Menyediakan menu interaktif:

    1. Daftar Mahasiswa ke Mata Kuliah

    2. Lihat Daftar Mata Kuliah

    3. Lihat Histori Mahasiswa

    4. Keluar

  • Program menggunakan array untuk menyimpan daftar mata kuliah dan mahasiswa yang sudah terdaftar.


Kesimpulan

Program ini menunjukkan bagaimana OOP dapat digunakan untuk membuat sistem sederhana FRS Mata Kuliah.

  • Dosen, Mahasiswa, dan MatKul adalah entitas utama.

  • Classroom menghubungkan mahasiswa dengan mata kuliah.

  • Main berperan sebagai interface pengguna (menu interaktif).

Dengan sistem ini, mahasiswa bisa mendaftar, melihat daftar mata kuliah, serta mengecek histori pengambilan kuliah.

Dokumentasi:





Tidak ada komentar:

Posting Komentar

Pertemuan 15 : Aplikasi CRUD JAVA

Pertemuan 15 - Java CRUD Database Tanggal: 9 Desember 2025 Nama: Hosea Felix Sanjaya NRP: 5025241177 a. Setup & Persiapan Envi...