Tugas 5 PBO - Aplikasi Support System

Muhammad Izzuddin Al Islami

05111740000035 


Deskripsi

Sebuah Aplikasi Support System terdiri dari UI, sebuah pengolah input dan responder. User dapat memasukkan input pertanyaan ke dalam aplikasi, dan mendapat respon. Apabila query dari user tidak ditemukan, maka user akan dibalas dengan respon default seperti "Maaf, bisa ulangi kembali pertanyaan anda?".

Class Diagram

Dekronstruksi Module/Class yang dibutuhkan

Maka, untuk membangun aplikasi sesuai deskripsi diatas kita memerlukan beberapa modul:

  1. SupportSystem (modul sebagai UI menggunakan console BlueJ)
  2. InputReader (class yang mengolah dan memarsing input pengguna)
  3. Responder (class ini berisi himpunan respon dan kata kunci yang digunakan untuk menjawab query dari pengguna)

Implementasi (Source Code)

  1. SupportSystem.java
  2.  import java.util.HashSet;  
     /**  
      * Class SupportSystem  
      * Definisi aplikasi support system dan UI  
      */  
     public class SupportSystem  
     {  
       private InputReader reader;  
       private Responder responder;  
       public SupportSystem(){  
         reader = new InputReader();  
         responder = new Responder();  
       }  
       public void start(){  
         boolean finished = false;  
         clearScreen();  
         System.out.println("\nHalo, selamat datang! Saya Veronica, asisten virtual anda!");  
         System.out.println("Saya akan menjawab pertanyaanmu seputar aplikasi kami.");  
         System.out.println("Tulis 'end' jika ingin mengakhiri percakapan.\n");  
         while(!finished){   
           HashSet<String> input = reader.getInput();   
           if(input.contains("selesai")){  
             finished = true;  
           }   
           else{   
             String response = responder.generateResponse(input);   
             System.out.println(response);   
           }   
         }   
        System.out.println("Terimakasih telah menggunakan Veronica. Sampai jumpa kembali!");    
       }  
       public static void clearScreen() {   
         System.out.print('\u000C');  
         System.out.flush();   
       }  
     }  
    
  3. InputReader.java
  4.  import java.util.Scanner;  
     import java.util.HashSet;  
     /**  
      * Class InputReader, membaca input dari pengguna dan mengembalikan kata-kata dalam bentuk HashSet   
      */  
     public class InputReader{  
       private Scanner reader;   
       public InputReader(){   
        reader = new Scanner(System.in);   
       }   
       public HashSet<String> getInput(){   
        System.out.print("> ");   
        String inputLine = reader.nextLine().trim().toLowerCase();   
        String[] wordArray = inputLine.split(" ");   
        HashSet<String> words = new HashSet<String>();  
        for(String word : wordArray){   
         words.add(word);   
        }  
        return words;   
       }   
     }  
    
  5. Responder.java
  6.  import java.util.Random;  
     import java.util.ArrayList;  
     import java.util.HashMap;  
     import java.util.HashSet;  
     /**  
      * Class Responder  
      * Menghandle pertanyaan/query dari input user dan mengembalikan response  
      */  
     public class Responder {  
       private Random randomGenerator;   
       private ArrayList<String> defaultResponses;   
       private HashMap<String, String> responseMap;  
       public Responder(){  
         defaultResponses = new ArrayList<String>();   
         responseMap = new HashMap<String, String>();  
         randomGenerator = new Random();  
         fillResponsesMap();   
         fillDefaultResponse();  
       }  
       public String generateResponse(HashSet<String> sentence){  
         for(String word : sentence){   
          String response = responseMap.get(word);   
          if(response != null) return response;   
         }   
         return pickDefaultResponse();  
       }  
       private void fillResponsesMap(){  
         responseMap.put("lapor", "Untuk melakukan laporan, silahkan kirim email ke support@telkom.co.id.");  
         responseMap.put("gangguan", "Untuk melakukan laporan, silahkan kirim email ke support@telkom.co.id.");  
         responseMap.put("telepon", "Untuk melakukan perubahan nomor telepon silakan mengunjungi GraPARI terdekat.");  
         responseMap.put("promo", "Silahkan cek promo terbaru dari kami melalui aplikasi myTelkomsel!");  
         responseMap.put("saldo", "Anda bisa melakukan pengecekan saldo menggunakan aplikasi myTelkomsel atau melakukan panggilan ke *888#.");  
       }  
       private void fillDefaultResponse(){   
        defaultResponses.add("Maaf, bisa ulangi kembali pertanyaan anda?.");   
        defaultResponses.add("Apakah kamu ingin bertanya dengan admin kami?");   
        defaultResponses.add("Maaf Veronica tidak mengerti pertanyaan anda, bisa ulangi kembali pertanyaan anda?");  
       }  
       private String pickDefaultResponse(){   
        int index = randomGenerator.nextInt(defaultResponses.size());   
        return defaultResponses.get(index);   
       }   
     }  
    

Demo Aplikasi



Comments

Popular posts from this blog

Tugas 4 PBO - Aplikasi Ticket Machine

Tugas 6 PBO - Game World of Zuul

ETS PBO