Wednesday, October 9, 2024

Pertemuan 6 - Support System

Nama: Muhammad Risyad Himawan Putra

NRP: 5025231205

Kelas: Pemrograman Berbasis Obyek (G)


 Support System in BlueJ




Source Code Github


Class SupportSystem
public class SupportSystem { private InputReader reader; private Responder responder; /** * Creates a technical support system. */ public SupportSystem() { reader = new InputReader(); responder = new Responder(); } /** * Start the technical support system. This will print a welcome * message and enter into a dialog with the user, until the user * ends the dialog. */ public void start() { boolean finished = false; printWelcome(); while(!finished) { String input = reader.getInput(); if(input.toLowerCase().startsWith("bye")) { finished = true; } else { String response = responder.generateResponse(input.toLowerCase()); System.out.println(response); } } printGoodbye(); } /** * Print a welcome message to the screen. */ private void printWelcome() { System.out.println("Welcome to the DodgySoft Technical Support System."); System.out.println(); System.out.println("Please tell us about your problem."); System.out.println("We will assist you with any problem you might have."); System.out.println("Please type 'bye' to exit our system."); } /** * Print a good-bye message to the screen. */ private void printGoodbye() { System.out.println("Nice talking to you. Bye..."); } }

Class ini menghubungkan class InputReader yang digunakan untuk membaca input
user dan class Responder yang digunakan untuk meng-output respons berdasarkan
input tersebut. SupportSystem juga dapat mengakhiri chat dengan meng-input
kata "bye" di terminal.

Class InputReader
import java.util.HashSet; import java.util.Scanner; public class InputReader { private Scanner reader; /** * Create a new InputReader that reads text from the text terminal. */ public InputReader() { reader = new Scanner(System.in); } /** * Read a line of text from standard input (the text terminal), * and return it as a String. * * @return A String typed by the user. */ public String getInput() { System.out.print("> "); // print prompt String inputLine = reader.nextLine(); return inputLine; } }


Class ini berfungsi sebagai pembaca input dari pengguna lewat terminal.
Menggunakan Scanner dari system untuk membaca input dan me-return input
menjadi sebuah string.

Class Responder

import java.util.Random; import java.util.HashMap; public class Responder { Random answerNum; private String[] answers; private HashMap<String, Integer> keywords; int allAnswers = 22; /** * Construct a Responder * generating the answer-Array and keyword-HashMap */ public Responder(){ answers(); keywordlist(); } /** * Generate a response. * @return A string that should be displayed as the response * @param ai answer-index * @param lastAnswer stores last answer-index, so it does not show up twice in row */ public String generateResponse(String input){ answerNum = new Random(); int ai = 0; int lastAnswer = 0; boolean match = false; String[] splitInput = input.split("[^a-zA-Z]"); for(int i = 0; i < splitInput.length && !match; i++){ if(keywords.containsKey(splitInput[i])){ match = true; ai = keywords.get(splitInput[i]); } } if(!match){ while(ai == lastAnswer){ ai = answerNum.nextInt(10); } } lastAnswer = ai; return answers[ai]; } /** * Setting up an Array with potential answers */ private void answers(){ answers = new String[allAnswers]; answers[0] = "Did you ask google?"; answers[1] = "Did you turn it off and on?"; answers[2] = "Keep talking, i'll get myself a coffee."; answers[3] = "ohhh my gosh..."; answers[4] = "42"; answers[5] = "i have no clue."; answers[6] = "have a break, have a kitkat"; answers[7] = "wenn's mal wieder länger dauert..."; answers[8] = "loading 31%"; answers[9] = "talk to the hand."; answers[10] = "java, java, java"; answers[11] = "Computer, Rechner, Ordenador"; answers[12] = "apple, apple, apple, ..."; answers[13] = "Microsoft, Winzigweich, pico fofo"; answers[14] = "the answer to life, the universe and everything is 42"; answers[15] = "Mac, mac, mack, muck, mick..."; answers[16] = "Aaahhh... we're all gonna die..."; answers[17] = "this might take a li'l while."; answers[18] = "printing is not good for the enviroment."; answers[19] = "which distribution?"; answers[20] = "did you try rooting it?"; } /** * setting up a HashMap with potential keywords */ private void keywordlist(){ keywords = new HashMap<String, Integer>(); keywords.put("java", 10); keywords.put("computer", 11); keywords.put("ios", 12); keywords.put("windows", 13); keywords.put("life", 14); keywords.put("mac", 15); keywords.put("crashed", 16); keywords.put("loading", 17); keywords.put("print", 18); keywords.put("linux", 19); keywords.put("android", 20); keywords.put("problem", 2); } }

Class ini berfungsi untuk memberikan output berupa respons berdasarkan input
dari pengguna. Respons yang dikeluarkan berdasarkan list jawaban dan keyword
dari HashMap. Jika keyword ditemukan maka akan memberikan respons yang sesuai
dengan input tersebut, jika keyword tidak ditemukan maka respons akan diacak
dari list respons yang ada.


Cara Kerja

1. Buat object SUpportSystem. Lalu start object tersebut menggunakan
   fungsi Start.





2. Lakukan percakapan lewat terminal. Akhiri chat dengan mengetik "bye".































No comments:

Post a Comment

PPB EAS - Aplikasi Member Timezone

Manajemen Keanggotaan & Loyalty Program Timezone dengan Room Database dan Jetpack Compose Aryaka Leorgi Epridaka - 5025231117 Muhammad ...