OneCompiler

Main.Java

107

import java.util.ArrayList;
import java.util.Scanner;

class Mahasiswa {
private String nama;
private String nim;
private double ipk;

public Mahasiswa(String nama, String nim, double ipk) {
    this.nama = nama;
    this.nim = nim;
    this.ipk = ipk;
}

public String getNama() {
    return nama;
}

public String getNim() {
    return nim;
}

public double getIpk() {
    return ipk;
}


public void setNama(String nama) {
    this.nama = nama;
}

public void setNim(String nim) {
    this.nim = nim;
}

public void setIpk(double ipk) {
    this.ipk = ipk;
}


public void tampilData() {
    System.out.println("Nama: " + nama);
    System.out.println("NIM: " + nim);
    System.out.printf("IPK: %.2f\n", ipk);
}

}

public class Main {
static Scanner scanner = new Scanner(System.in);
static ArrayList<Mahasiswa> daftarMahasiswa = new ArrayList<>();

public static void main(String[] args) {
    var pilihan = 0;
    do {
        System.out.println("\nMenu:");
        System.out.println("1. Input Data Mahasiswa");
        System.out.println("2. Edit Data Mahasiswa");
        System.out.println("3. Tampilkan Semua Data");
        System.out.println("4. Hapus Data Mahasiswa");
        System.out.println("5. Keluar");
        System.out.print("Pilih menu (1-5): ");

        try {
            pilihan = scanner.nextInt();
            scanner.nextLine();
        } catch (Exception e) {
            System.out.println("Input harus berupa angka!");
            scanner.nextLine();
            continue;
        }

        switch (pilihan) {
            case 1:
                inputData();
                break;
            case 2:
                editData();
                break;
            case 3:
                tampilkanData();
                break;
            case 4:
                hapusData();
                break;
            case 5:
                System.out.println("Program selesai.");
                break;
            default:
                System.out.println("Pilihan tidak valid!");
        }
    } while (pilihan != 5);
}


static void inputData() {
    System.out.print("Masukkan jumlah mahasiswa: ");
    int jumlah = scanner.nextInt();
    scanner.nextLine();

    for (int i = 0; i < jumlah; i++) {
        System.out.println("\nData Mahasiswa ke-" + (i + 1));
        System.out.print("Nama: ");
        String nama = scanner.nextLine();
        System.out.print("NIM: ");
        String nim = scanner.nextLine();
        System.out.print("IPK: ");
        double ipk;
        try {
            ipk = scanner.nextDouble();
            scanner.nextLine();
            if (ipk < 0 || ipk > 4) {
                System.out.println("IPK harus antara 0-4!");
                i--;
                continue;
            }
        } catch (Exception e) {
            System.out.println("Input IPK tidak valid!");
            scanner.nextLine();
            i--;
            continue;
        }

        daftarMahasiswa.add(new Mahasiswa(nama, nim, ipk));
    }
    System.out.println("Data berhasil disimpan!");
}

static void editData() {
    tampilkanData();
    if (daftarMahasiswa.isEmpty()) {
        return;
    }

    System.out.print("Masukkan nomor mahasiswa yang akan diedit (1-" + daftarMahasiswa.size() + "): ");
    int index = scanner.nextInt() - 1;
    scanner.nextLine();

    if (index < 0 || index >= daftarMahasiswa.size()) {
        System.out.println("Data mahasiswa tidak ditemukan!");
        return;
    }

    System.out.println("\nEdit Data Mahasiswa ke-" + (index + 1));
    System.out.print("Nama baru (" + daftarMahasiswa.get(index).getNama() + "): ");
    String nama = scanner.nextLine();
    if (!nama.trim().isEmpty()) {
        daftarMahasiswa.get(index).setNama(nama);
    }

    System.out.print("NIM baru (" + daftarMahasiswa.get(index).getNim() + "): ");
    String nim = scanner.nextLine();
    if (!nim.trim().isEmpty()) {
        daftarMahasiswa.get(index).setNim(nim);
    }

    System.out.print("IPK baru (" + daftarMahasiswa.get(index).getIpk() + "): ");
    String ipkInput = scanner.nextLine();
    if (!ipkInput.trim().isEmpty()) {
        try {
            double ipk = Double.parseDouble(ipkInput);
            if (ipk >= 0 && ipk <= 4) {
                daftarMahasiswa.get(index).setIpk(ipk);
            } else {
                System.out.println("IPK harus antara 0-4!");
            }
        } catch (NumberFormatException e) {
            System.out.println("Input IPK tidak valid!");
        }
    }

    System.out.println("Data berhasil diubah!");
}

static void tampilkanData() {
    System.out.println("\nDaftar Mahasiswa:");
    if (daftarMahasiswa.isEmpty()) {
        System.out.println("Belum ada data mahasiswa!");
        return;
    }

    for (int i = 0; i < daftarMahasiswa.size(); i++) {
        System.out.println("\nMahasiswa ke-" + (i + 1));
        daftarMahasiswa.get(i).tampilData();
    }
}

// Fitur baru: Hapus data mahasiswa
static void hapusData() {
    tampilkanData();
    if (daftarMahasiswa.isEmpty()) {
        return;
    }

    System.out.print("Masukkan nomor mahasiswa yang ingin dihapus (1-" + daftarMahasiswa.size() + "): ");
    try {
        int index = scanner.nextInt() - 1;
        scanner.nextLine();

        if (index < 0 || index >= daftarMahasiswa.size()) {
            System.out.println("Nomor tidak valid!");
            return;
        }

        Mahasiswa dihapus = daftarMahasiswa.remove(index);
        System.out.println("Data mahasiswa \"" + dihapus.getNama() + "\" berhasil dihapus!");

    } catch (Exception e) {
        System.out.println("Input harus berupa angka!");
        scanner.nextLine();
    }
}

}