Revisi support system

 

Nama         : Hafidz Panji Ashari
NRP           : 5025231278
Kelas          : PBO-A

Pada revisi kaliini, Saya mengubah kode program sebelumnya  agar pencocokan respons dilakukan dengan mencari kata kunci sebagai substring dalam input pengguna, bukan mencocokkan seluruh input. Dan mengubah file renpose menjadi spesifik untuk masalah-masalah umum yang mungkin dihadapi pengguna ketika menginstal Windows

Jadi, kita harus melakukan hal berikut:

  1. Perluas Pencocokan Substring: Cek apakah input dari pengguna mengandung kata kunci yang ada sebagai substring di dalam HashMap.
  2. Update Logic generateResponse(): Alih-alih langsung mencocokkan input dengan key di HashMap, lakukan pengecekan substring pada setiap kata kunci dalam input pengguna.

kode yang sudah di revisi 

import java.util.HashMap;
import java.util.Random;
import java.util.Scanner;

public class SupportSystem {
    private InputReader reader;
    private Responder responder;

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

    public void start() {
        System.out.println("Selamat datang di support system instalasi Windows.");
        System.out.println("Ketik 'bye' untuk keluar dari sistem.");

        boolean finished = false;
        while (!finished) {
            String input = reader.getInput();  // Dapatkan input dari pengguna
            if (input.equalsIgnoreCase("bye")) {
                finished = true;
            } else {
                String response = responder.generateResponse(input);  // Generate response input
                System.out.println(response);
            }
        }
        System.out.println("Goodbyee .... !");
    }

    public static void main(String[] args) {
        SupportSystem system = new SupportSystem();
        system.start();
    }

    // Kelas InputReader sebagai inner class
    private class InputReader {
        private Scanner scanner;

        public InputReader() {
            scanner = new Scanner(System.in);
        }

        public String getInput() {
            System.out.print("> ");  // Menampilkan prompt input
            return scanner.nextLine();  // Mengembalikan input dari pengguna
        }
    }

    // Kelas Responder sebagai inner class
    private class Responder {
        private HashMap<String, String> responses;
        private Random random;

        public Responder() {
            responses = new HashMap<>();
            fillResponses();  // Mengisi daftar respon yang tersedia
            random = new Random();
        }

        private void fillResponses() {
            responses.put("lupaakun", "Jika Anda lupa akun, coba gunakan akun administrator
                            untuk masuk, atau pulihkan akun melalui opsi pemulihan.");
            responses.put("lupapassword", "Jika Anda lupa password, gunakan fitur 'Lupa
                            Password' di layar login atau reset password melalui perangkat lain.");
            responses.put("koneksi", "Pastikan kabel ethernet tersambung atau Wi-Fi aktif
                           untuk koneksi internet selama instalasi.");
            responses.put("partisi", "Pilih partisi yang ingin Anda gunakan untuk menginstal
                           Windows. Hati-hati, ini dapat menghapus data pada partisi yang dipilih.");
            responses.put("driver", "Jika perangkat keras tidak terdeteksi, Anda mungkin
                            perlu menginstal driver terbaru dari situs produsen.");
            responses.put("lisensi", "Masukkan kunci lisensi Windows Anda selama instalasi.
                            Jika tidak, Anda bisa melanjutkan dengan memilih opsi
                            'Saya tidak memiliki kunci produk'.");
            responses.put("boot", "Pastikan USB atau DVD instalasi dipilih sebagai prioritas
                            pertama di BIOS agar proses instalasi Windows bisa dimulai.");
        }

        public String generateResponse(String input) {
            // Loop melalui semua kunci dalam HashMap
            for (String keyword : responses.keySet()) {
                // Jika input pengguna mengandung kata kunci sebagai substring
                if (input.toLowerCase().contains(keyword.toLowerCase())) {
                    return responses.get(keyword);
                }
            }
            // Mengembalikan respon acak jika tidak ada kecocokan
            return generateRandomResponse();
        }

        private String generateRandomResponse() {
            String[] defaultResponses = {
                "Saya kurang paham maksudnya, bisa jelaskan lagi?",
                "Maaf, saya tidak yakin bagaimana menjawab itu. Coba periksa panduan instalasi."
            };
            int index = random.nextInt(defaultResponses.length);
            return defaultResponses[index];
        }
    }
}



Penjelasan Revisi Kode

  1. Pencarian Kata Kunci Sebagai Substring:

    • Di dalam generateResponse(), kita melakukan loop melalui semua key di responses dan mengecek apakah input pengguna mengandung kata kunci tersebut.
    • input.toLowerCase().contains(keyword.toLowerCase()) memastikan pencocokan tidak case-sensitive.
  2. Respons Default:

    • Jika tidak ada kata kunci yang ditemukan dalam input, respons acak default diberikan.


output




Penjelasan Daftar Respon Baru

  1. "lupaakun": Memberikan saran untuk menggunakan akun administrator atau opsi pemulihan.
  2. "lupapassword": Menjelaskan cara mengatasi lupa password dengan fitur pemulihan.
  3. "koneksi": Menjelaskan langkah-langkah memastikan koneksi internet selama instalasi.
  4. "partisi": Memberikan informasi tentang cara memilih partisi dengan hati-hati.
  5. "driver": Menyarankan solusi untuk masalah perangkat keras yang tidak terdeteksi.
  6. "lisensi": Menjelaskan cara memasukkan kunci lisensi atau opsi untuk melanjutkan tanpa lisensi.
  7. "boot": Instruksi untuk memprioritaskan USB atau DVD di BIOS agar instalasi dapat dimulai.




Comments

Popular posts from this blog

Daily Task Manager

EAS

DisplayClock