import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class CrudDataSiswa {
static class Siswa {
String nis, namaLengkap, jenisKelamin, tempatTanggalLahir, kelas, jurusan, alamat, noHpOrtu;
Siswa(String nis, String namaLengkap, String jenisKelamin, String tempatTanggalLahir,
String kelas, String jurusan, String alamat, String noHpOrtu) {
this.nis = nis;
this.namaLengkap = namaLengkap;
this.jenisKelamin = jenisKelamin;
this.tempatTanggalLahir = tempatTanggalLahir;
this.kelas = kelas;
this.jurusan = jurusan;
this.alamat = alamat;
this.noHpOrtu = noHpOrtu;
}
}
static ArrayList<Siswa> daftarSiswa = new ArrayList<>();
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
int pilihan;
do {
System.out.println("\n===== APLIKASI CRUD DATA SISWA =====");
System.out.println("1. Tambah Data Siswa");
System.out.println("2. Lihat Data Siswa");
System.out.println("3. Ubah Data Siswa");
System.out.println("4. Hapus Data Siswa");
System.out.println("5. Simpan ke File CSV");
System.out.println("6. Keluar");
System.out.print("Pilih menu (1-6): ");
pilihan = input.nextInt();
input.nextLine(); // Menangani newline yang tertinggal setelah input
switch (pilihan) {
case 1 -> tambahSiswa();
case 2 -> lihatSiswa();
case 3 -> ubahSiswa();
case 4 -> hapusSiswa();
case 5 -> simpanKeCSV();
case 6 -> System.out.println("Terima kasih telah menggunakan aplikasi.");
default -> System.out.println("Pilihan tidak valid!");
}
} while (pilihan != 6);
}
static void tambahSiswa() {
System.out.print("Masukkan NIS: ");
String nis = input.nextLine();
System.out.print("Masukkan Nama Lengkap: ");
String nama = input.nextLine();
System.out.print("Masukkan Jenis Kelamin (L/P): ");
String jk = input.nextLine();
System.out.print("Masukkan Tempat, Tanggal Lahir: ");
String ttl = input.nextLine();
System.out.print("Masukkan Kelas: ");
String kelas = input.nextLine();
System.out.print("Masukkan Jurusan: ");
String jurusan = input.nextLine();
System.out.print("Masukkan Alamat: ");
String alamat = input.nextLine();
System.out.print("Masukkan No. HP Orang Tua: ");
String noHp = input.nextLine();
daftarSiswa.add(new Siswa(nis, nama, jk, ttl, kelas, jurusan, alamat, noHp));
System.out.println("Data siswa berhasil ditambahkan!");
}
static void lihatSiswa() {
if (daftarSiswa.isEmpty()) {
System.out.println("Belum ada data siswa.");
} else {
System.out.println("\n=== DAFTAR SISWA ===");
int no = 1;
for (Siswa s : daftarSiswa) {
System.out.printf("No : %d%n", no++);
System.out.println("NIS : " + s.nis);
System.out.println("Nama : " + s.namaLengkap);
System.out.println("Jenis Kelamin : " + s.jenisKelamin);
System.out.println("TTL : " + s.tempatTanggalLahir);
System.out.println("Kelas : " + s.kelas);
System.out.println("Jurusan : " + s.jurusan);
System.out.println("Alamat : " + s.alamat);
System.out.println("No. HP Ortu : " + s.noHpOrtu);
System.out.println("----------------------------------------");
}
}
}
static void ubahSiswa() {
lihatSiswa();
if (!daftarSiswa.isEmpty()) {
System.out.print("Masukkan nomor siswa yang ingin diubah: ");
int index = input.nextInt() - 1;
input.nextLine(); // Menangani newline yang tertinggal setelah input
if (index >= 0 && index < daftarSiswa.size()) {
System.out.print("Masukkan NIS baru: ");
String nis = input.nextLine();
System.out.print("Masukkan Nama Lengkap baru: ");
String nama = input.nextLine();
System.out.print("Masukkan Jenis Kelamin baru: ");
String jk = input.nextLine();
System.out.print("Masukkan TTL baru: ");
String ttl = input.nextLine();
System.out.print("Masukkan Kelas baru: ");
String kelas = input.nextLine();
System.out.print("Masukkan Jurusan baru: ");
String jurusan = input.nextLine();
System.out.print("Masukkan Alamat baru: ");
String alamat = input.nextLine();
System.out.print("Masukkan No. HP Ortu baru: ");
String noHp = input.nextLine();
daftarSiswa.set(index, new Siswa(nis, nama, jk, ttl, kelas, jurusan, alamat, noHp));
System.out.println("Data siswa berhasil diubah!");
} else {
System.out.println("Nomor tidak valid!");
}
}
}
static void hapusSiswa() {
lihatSiswa();
if (!daftarSiswa.isEmpty()) {
System.out.print("Masukkan nomor siswa yang ingin dihapus: ");
int index = input.nextInt() - 1;
input.nextLine(); // Menangani newline yang tertinggal setelah input
if (index >= 0 && index < daftarSiswa.size()) {
daftarSiswa.remove(index);
System.out.println("Data siswa berhasil dihapus!");
} else {
System.out.println("Nomor tidak valid!");
}
}
}
static void simpanKeCSV() {
try (FileWriter writer = new FileWriter("data_siswa.csv")) {
writer.append("No,NIS,Nama Lengkap,Jenis Kelamin,Tempat, Tanggal Lahir,Kelas,Jurusan,Alamat,No. HP Orang Tua\n");
int no = 1;
for (Siswa s : daftarSiswa) {
writer.append(String.format("%d,%s,%s,%s,%s,%s,%s,%s,%s\n", no++, s.nis, s.namaLengkap,
s.jenisKelamin, s.tempatTanggalLahir, s.kelas, s.jurusan, s.alamat, s.noHpOrtu));
}
System.out.println("Data berhasil disimpan ke file: data_siswa.csv");
} catch (IOException e) {
System.out.println("Terjadi kesalahan saat menyimpan file: " + e.getMessage());
}
}
}