Tugas Pemrograman Java – Technical Support System
Nama: Hosea Felix Sanjaya
Kelas: PBO - A
NRP: 5025241177
Berikut adalah implementasi lengkap dari program Technical Support System dalam bahasa Java yang terdiri dari tiga file: SupportSystem.java, Responder.java, dan InputReader.java.
SupportSystem.java
import java.io.IOException;
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 != null && input.startsWith("bye")) {
finished = true;
} else {
String response = responder.generateResponse();
System.out.println(response);
}
}
printGoodbye();
}
/**
* Print a welcome message to the screen.
*/
private void printWelcome() {
System.out.println();
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();
System.out.println("We will assist you with any problem you might have.");
System.out.println();
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...");
}
// Simple main to run the support system
public static void main(String[] args) throws IOException {
SupportSystem sys = new SupportSystem();
sys.start();
}
}
Responder.java
public class Responder {
/**
* Construct a Responder - nothing to do
*/
public Responder() {
}
/**
* Generate a response.
*
* @return A string that should be displayed as the response
*/
public String generateResponse() {
return "That sounds interesting. Tell me more...";
}
}
InputReader.java
import java.util.Scanner;
public class InputReader {
private final Scanner scanner;
public InputReader() {
scanner = new Scanner(System.in);
}
/**
* Read a line of input from the user.
* @return the input line (trimmed), or null if EOF
*/
public String getInput() {
if (scanner.hasNextLine()) {
return scanner.nextLine().trim();
} else {
return null;
}
}
}
Penjelasan Singkat Program
- SupportSystem.java adalah kelas utama yang menjalankan sistem dukungan teknis.
- Responder.java menghasilkan tanggapan otomatis untuk setiap input dari pengguna.
- InputReader.java digunakan untuk membaca input teks dari pengguna.
Pada saat program dijalankan, pengguna akan melihat pesan sambutan dan dapat mengetik masalah mereka. Ketik bye untuk keluar dari sistem.
© 2025 – Hosea Felix Sanjaya | Project: Technical Support System
Dokumentasi
Tampilan Program Saat Dijalankan
Penerapannya di Sistem FRS
Berikut adalah implementasi lengkap dari program FRS Academic Support System dalam bahasa Java yang berfungsi membantu mahasiswa dalam menyelesaikan berbagai permasalahan saat pengisian FRS seperti kelas penuh, jadwal bentrok, atau login gagal.
AcademicSupport.java
import java.util.*;
import java.util.concurrent.TimeUnit;
public class AcademicSupport {
private Map> responses;
private Random random;
public AcademicSupport() {
responses = new HashMap<>();
random = new Random();
responses.put("kelas penuh", Arrays.asList(
"Silakan konfirmasi ke TU untuk membuka kelas tambahan.",
"Hubungi bagian akademik agar kelas tersebut bisa ditambah kuotanya."
));
responses.put("salah ambil kelas", Arrays.asList(
"Drop kelas yang salah dan pilih kelas yang sesuai.",
"Segera ubah pilihan mata kuliah sebelum periode FRS berakhir."
));
responses.put("login gagal", Arrays.asList(
"Pastikan username dan password benar, atau reset password di DPTSI.",
"Coba login melalui perangkat lain, bisa jadi browser Anda bermasalah."
));
responses.put("gagal ambil kelas", Arrays.asList(
"SKS tidak mencukupi atau prasyarat belum terpenuhi.",
"Coba periksa apakah Anda sudah lulus mata kuliah prasyaratnya."
));
responses.put("jadwal bentrok", Arrays.asList(
"Pilih kelas dengan jadwal berbeda atau konsultasi dengan dosen wali.",
"Anda bisa mengganti kelas lain yang tidak bertabrakan."
));
responses.put("gagal akses website", Arrays.asList(
"Coba lagi beberapa saat. Jika tetap gagal, hubungi DPTSI.",
"Pastikan koneksi internet stabil dan website sedang tidak maintenance."
));
responses.put("pilihan tidak muncul", Arrays.asList(
"Pastikan periode pengisian FRS sudah dibuka.",
"Hubungi TU jika data semester Anda belum terupdate."
));
responses.put("captcha salah", Arrays.asList(
"Perhatikan huruf besar kecil. Refresh halaman jika captcha tidak muncul.",
"Gunakan browser lain jika captcha tidak terbaca."
));
responses.put("frs belum disetujui", Arrays.asList(
"Hubungi dosen wali untuk menyetujui FRS Anda.",
"Pastikan dosen wali sudah menyetujui FRS sebelum submit."
));
responses.put("frs ditutup", Arrays.asList(
"Periode FRS telah berakhir. Hubungi dosen wali untuk bantuan.",
"Silakan ajukan permohonan perpanjangan ke bagian akademik."
));
responses.put("web lag", Arrays.asList(
"Coba refresh halaman, bisa jadi koneksi internet lambat.",
"Tutup tab lain untuk mengurangi beban jaringan."
));
}
public String getResponse(String userInput) {
String lowerInput = userInput.toLowerCase();
for (String key : responses.keySet()) {
if (lowerInput.contains(key)) {
List replyList = responses.get(key);
return replyList.get(random.nextInt(replyList.size()));
}
}
String[] generic = {
"Bisa dijelaskan lebih detail permasalahannya?",
"Saya belum paham, bisa dijelaskan ulang?",
"Tolong jelaskan masalah Anda dengan lebih spesifik."
};
return generic[random.nextInt(generic.length)];
}
private void delayResponse() {
try {
TimeUnit.MILLISECONDS.sleep(400 + random.nextInt(400));
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
public static void main(String[] args) {
AcademicSupport as = new AcademicSupport();
Scanner scanner = new Scanner(System.in);
System.out.println("=== Sistem Bantuan Akademik / FRS ===");
System.out.println("Ketik kata kunci seperti 'kelas penuh', 'frs ditutup', atau 'login gagal'.");
System.out.println("Ketik 'exit' untuk keluar.\n");
while (true) {
System.out.print("Problem: ");
String input = scanner.nextLine();
if (input.equalsIgnoreCase("exit")) {
System.out.println("\nTerima kasih telah menggunakan layanan ini. Semoga membantu!");
break;
}
as.delayResponse();
String response = as.getResponse(input);
System.out.println("→ " + response + "\n");
}
scanner.close();
}
}
Penjelasan Fungsionalitas FRS
- Program ini meniru chatbot akademik yang membantu mahasiswa ketika menghadapi kendala saat pengisian FRS.
- Masalah yang dikenali mencakup kelas penuh, login gagal, jadwal bentrok, FRS belum disetujui, dan lain-lain.
- Mahasiswa cukup mengetik permasalahan, dan sistem akan memberikan solusi otomatis sesuai konteks.
- Respon dihasilkan secara acak dari kumpulan saran yang relevan agar terasa lebih alami.
- Ketik
exituntuk mengakhiri sesi.
© 2025 – Hosea Felix Sanjaya | Project: FRS Academic Support System



Tidak ada komentar:
Posting Komentar