Pertemuan 7: Membuat TechSupport FRS

Tugas Pertemuan 7

Nama: Farrel Aqilla Novianto

NRP: 5025241015

Kelas: Pemrograman Berorientasi Objek (A)

Source Code

TechSupport FRS - mySupport

Pada pertemuan ini, saya membuat program sistem bantuan (support system) berbasis teks yang meniru percakapan antara pengguna dengan asisten FRS (Formulir Rencana Studi). Sistem ini dirancang untuk memberikan respons otomatis terhadap berbagai masalah yang sering muncul dalam proses pengisian FRS. Selain memberi respons berdasarkan kata kunci, program ini mengadopsi ide dari konsep “More-Sophisticated Behavior” agar tingkah laku sistem tidak monoton dan lebih adaptif.

Latihan ini menerapkan konsep “More-Sophisticated Behavior” dan Pemrograman Berorientasi Objek (OOP), dengan cara membagi program menjadi beberapa kelas yang memiliki tanggung jawab berbeda:

  1. SupportSystem → pengendali utama alur program
  2. InputReader → menangani input pengguna
  3. Responder → menyimpan dan mengembalikan jawaban sesuai masalah

Dengan cara ini, setiap kelas memiliki peran spesifik sehingga kode menjadi lebih terstruktur, mudah dibaca, dan mudah dikembangkan.

Kode SupportSystem.java

/**
 *
 * @version Farrel Aqilla Novianto
 */
public class SupportSystem{
    private InputReader reader;
    private Responder responder;

    public SupportSystem(){
        reader = new InputReader();
        responder = new Responder();
    }

    public void start(){
        System.out.println("==========================================");
        System.out.println("       FRS SUPPORT SYSTEM (mySupport)     ");
        System.out.println("==========================================");
        System.out.println("Selamat datang di sistem bantuan FRS");
        System.out.println("Ketik 'bye' untuk keluar dari sesi bantuan");
        System.out.println("------------------------------------------");

        while(true){
            System.out.print("> ");
            String input = reader.getInput();
            if (input.equalsIgnoreCase("bye")){
                break;
            }

            String response = responder.generateResponse(input);
            System.out.println(response);
        }

        System.out.println("\nTerima kasih telah menggunakan sistem bantuan FRS - mySupport");
        System.out.println("Permasalahan Anda akan kami tindaklanjuti secepatnya");
    }
    public static void main(String[] args){
        SupportSystem system = new SupportSystem();
        system.start();
    }
}

Kode InputReader.java

/**
 *
 * @version Farrel Aqilla Novianto
 */
import java.util.Scanner;

public class InputReader{
    private Scanner scanner;
    public InputReader(){
        scanner = new Scanner(System.in);
    }
    public String getInput(){
        return scanner.nextLine();
    }
}
Kode Responder.java
/**
 *
 * @version Farrel Aqilla Novianto
 */
import java.util.HashMap;
import java.util.Map;

public class Responder{
    private Map<String, String> responses;
    public Responder(){
        responses = new HashMap<>();
        responses.put("penuh", "Mohon maaf, kelas tersebut sudah mencapai kapasitas maksimum. Silakan coba kelas paralel lain atau hubungi dosen pengampu untuk penambahan kuota");
        responses.put("kuota", "Jika kuota kelas sudah penuh, Anda dapat memantau sistem FRS secara berkala karena mahasiswa lain mungkin membatalkan kelas tersebut");
        responses.put("frs belum disetujui", "Silakan hubungi dosen wali dan lakukan konsultasi terlebih dahulu");
        responses.put("ipk kurang", "Anda tidak memenuhi syarat pengambilan mata kuliah tersebut. Harap hubungi dosen wali atau pihak akademik untuk rekomendasi pengganti");
        responses.put("tidak tersedia", "Mata kuliah yang Anda cari saat ini tidak tersedia. Pastikan periode FRS sudah dibuka atau periksa daftar mata kuliah aktif semester ini");
        responses.put("sks terisi semua", "Anda tidak dapat menambah mata kuliah karena sisa SKS Anda sudah habis");
        responses.put("jadwal bentrok", "Terjadi bentrok jadwal antara dua mata kuliah. Silakan ubah salah satu kelas atau pilih waktu lain yang tidak konflik");
        responses.put("sistem down", "Kami sedang melakukan pemeliharaan sistem FRS. Mohon tunggu beberapa saat dan coba kembali nanti");
        responses.put("frs tidak bisa diakses", "Sistem FRS saat ini mungkin sedang padat atau dalam maintenance. Silakan coba beberapa menit lagi atau hubungi admin akademik");
        responses.put("gagal login", "Login gagal karena validasi data FRS belum lengkap");
    }
    public String generateResponse(String input){
        String lower = input.toLowerCase();
        for(String keyword : responses.keySet()){
            if(lower.contains(keyword)){
                return responses.get(keyword);
            }
        }
        return "Terima kasih telah menghubungi sistem bantuan FRS. Mohon jelaskan permasalahan Anda dengan lebih detail agar kami dapat membantu dengan tepat";
    }
}

Dokumentasi

Kesimpulan

Program ini menunjukkan penerapan prinsip “More-Sophisticated Behavior” dalam bentuk:

  • Encapsulation: tiap kelas punya fungsi tersendiri (pemisahan logika)

  • Variatif: Struktur data tambahan seperti Maps dan Sets, serta fitur Java seperti static 

  • Modularity: mudah dikembangkan karena tiap komponen berdiri sendiri

  • Responsibility Separation: SupportSystem untuk logika utama, InputReader untuk input, Responder untuk respons

Komentar

Postingan populer dari blog ini

Final Project: Tetris

Pertemuan 4: Membuat Clock Display