Membuat aplikasi untuk Implementasi Tech Support System
Pada laporan ini saya telah berhasil mengimplementasikan tech support system sederhana.
SupportSystem.java
Class membuat dan memasangkan dua komponen lain, yaitu InputReader dan Responder, lalu menjalankan loop, menampilkan pesan sambutan, membaca input pengguna, memeriksa perintah keluar, dan meminta Responder memberikan balasan untuk setiap kalimat yang diberikan.
Code:
InputReader.java
Class membungkus Scanner untuk mengambil satu baris teks dari System.in dan mengembalikannya ke pemanggil.
Code:
Responder.java
Class menyimpan kata kunci untuk setiap respons beserta daftar balasan umum. Saat menerima kalimat dari pengguna, kemudian dijadikan ke huruf kecil, mencari apakah ada kata kunci yang muncul, lalu mengembalikan respons yang sesuai. Jika tidak ada yang cocok, maka akan memilih salah satu balasan umum secara acak.
import java.util.Locale;
public class SupportSystem {
private final InputReader reader;
private final Responder responder;
public SupportSystem() {
reader = new InputReader();
responder = new Responder();
}
public void start() {
cetakSambutan();
boolean selesai = false;
while (!selesai) {
System.out.print("> ");
String input = reader.getInput();
if (input == null) break;
String trimmed = input.trim();
if (trimmed.equalsIgnoreCase("keluar") || trimmed.equalsIgnoreCase("bye")) {
selesai = true;
} else if (trimmed.isEmpty()) {
System.out.println("Silakan tulis sesuatu agar saya bisa membantu.");
} else {
System.out.println(responder.generateResponse(trimmed));
}
}
cetakPerpisahan();
}
private void cetakSambutan() {
System.out.println("Selamat datang di Tech Support\n");
System.out.println("Ceritakan masalah Anda.");
System.out.println("Kami akan membantu Anda dengan masalah apa pun yang Anda miliki.");
System.out.println("Ketik 'keluar' untuk menutup sistem.");
}
private void cetakPerpisahan() {
System.out.println("Terima kasih telah menghubungi kami. Sampai jumpa!");
}
public static void main(String[] args) {
new SupportSystem().start();
}
}
import java.util.Scanner;
public class InputReader {
private final Scanner scanner = new Scanner(System.in);
public String getInput() {
return scanner.hasNextLine() ? scanner.nextLine() : null;
}
}
import java.util.*;
public class Responder {
private final Map<String, String> knowledgeBase = new LinkedHashMap<>();
private final List<String> fallbacks = Arrays.asList(
"Bisa jelaskan detailnya?",
"Sejak kapan masalah ini terjadi?",
"Langkah terakhir apa yang sudah Anda coba?"
);
private final Random rng = new Random();
public Responder() {
knowledgeBase.put("crash", "Jika aplikasi crash, coba mulai ulang dan periksa pembaruan.");
knowledgeBase.put("freeze", "Jika aplikasi hang, tutup aplikasi lain dan mulai ulang perangkat Anda.");
knowledgeBase.put("slow", "Periksa penggunaan memori dan proses latar belakang.");
knowledgeBase.put("install", "Masalah instalasi sering terkait perizinan. Apakah Anda punya hak admin?");
knowledgeBase.put("update", "Pastikan Anda di versi terbaru.");
knowledgeBase.put("save", "Periksa izin tulis dan ruang penyimpanan.");
knowledgeBase.put("error", "Pesan kesalahan apa yang muncul?");
knowledgeBase.put("password", "Gunakan fitur 'Lupa kata sandi' di layar masuk untuk mereset.");
knowledgeBase.put("network", "Periksa koneksi internet serta pengaturan proxy/VPN Anda.");
knowledgeBase.put("halo", "Halo! Ada masalah apa yang bisa saya bantu?");
}
public String generateResponse(String userInput) {
String lower = userInput.toLowerCase(Locale.ROOT);
for (Map.Entry<String, String> e : knowledgeBase.entrySet()) {
if (lower.contains(e.getKey())) return e.getValue();
}
return fallbacks.get(rng.nextInt(fallbacks.size()));
}
}