Membuat Fungsi Clear Screen di Java
66 / 100

Create a TodoList Application (CRUD) with Java and Files

Membuat Class Baru

Create a TodoList Application (CRUD) with Java and Files, Buatlah class baru di dalam project AplikasiFile dengan nama TodoListApp.

Advertisements
Membuat Class TodoListApp

Kemudian isi dengan kode berikut:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class TodoListApp {

    // deklarasi variabel global
    static String fileName;
    static ArrayList<String> todoLists;
    static boolean isEditing = false;
    static Scanner input;

    public static void main(String[] args) {
        
    }
    
    static void clearScreen(){
    }

    static void showMenu() {
    }

    static void backToMenu() {
    }

    static void readTodoList() {
    }

    static void showTodoList() {
    }

    static void addTodoList() {
    }

    static void editTodoList() {
    }

    static void deleteTodoList() {
    }

}

Create a Clear Screen Function in Java

Fungsi ini kita butuhkan untuk membersihkan layar. Silahkan isi kode untuk fungsi clearScreen() seperti berikut ini:

static void clearScreen() {
    try {
        final String os = System.getProperty("os.name");
        if (os.contains("Windows")) {
            // clear screen untuk windows
            new ProcessBuilder("cmd", "/c", "cls")
                    .inheritIO()
                    .start()
                    .waitFor();
        } else {
            // clear screen untuk Linux, Unix, Mac
            Runtime.getRuntime().exec("clear");
            System.out.print("3[H3[2J");
            System.out.flush();
        }
    } catch (final Exception e) {
        System.out.println("Error karena: " + e.getMessage());
    }
}

Kalau kita perhatikan, fungsi ini akan menjalankan perintah cls and celar.

Jika kamu membuka program ini dari Windows, maka perintah cls yang akan digunakan. And clear untuk Linux, Unix, dan Mac.

Tapi fungsi ini tidak bisa bekerja pada jendela output di Netbeans.

Membuat Fungsi showMenu()

Berikutnya kita membutuhkan fungsi showMenu() untuk menampilkan menu apa saja yang ada di aplikasi.

Silahkan isi kode untuk fungsi showMenu() seperti berikut ini:

static void showMenu() {
    System.out.println("=== TODO LIST APP ===");
    System.out.println("[1] Lihat Todo List");
    System.out.println("[2] Tambah Todo List");
    System.out.println("[3] Edit Todo List");
    System.out.println("[4] Hapus Todo List");
    System.out.println("[0] Keluar");
    System.out.println("---------------------");
    System.out.print("Pilih menu> ");

    String selectedMenu = input.nextLine();

    if (selectedMenu.equals("1")) {
        showTodoList();
    } else if (selectedMenu.equals("2")) {
        addTodoList();
    } else if (selectedMenu.equals("3")) {
        editTodoList();
    } else if (selectedMenu.equals("4")) {
        deleteTodoList();
    } else if (selectedMenu.equals("0")) {
        System.exit(0);
    } else {
        System.out.println("Kamu salah pilih menu!");
        backToMenu();
    }
}

Selain menampilkan menu, fungsi ini juga akan menentukan fungsi mana yang akan dieksekusi saat menu dipilih.

Example, user memilih menu 1, maka fungsi showTodoList() yang akan dieksekusi.

Membuat Fungsi backToMenu()

Fungsi ini kita butuhkan untuk kembali ke Menu Utama. Silahkan isi kode di dalam fungsi backToMenu() seperti ini:

static void backToMenu() {
    System.out.println("");
    System.out.print("Tekan [Enter] untuk kembali..");
    input.nextLine();
    clearScreen();
}

Fungsi ini akan meminta user untuk menekan Enter. Setelah itu akan membersihkan layar dan membuka menu Utama.

Walaupun kita tidak memanggil fungsi showMenu() di sana, tapi tetap akan kembali ke menu.

Ini karena kita akan kembali ke main loop.

Apa itu main loop?

Nanti kita akan buat dan bahas..

Membuat Fungsi readTodoList()

Fungsi ini kita butuhkan untuk membaca isi File. Silahkan isi kode untuk fungsi readTodoList() seperti berikut ini:

static void readTodoList() {
    try {
        File file = new File(fileName);
        Scanner fileReader = new Scanner(file);

        // load isi file ke dalam array todoLists
        todoLists.clear();
        while (fileReader.hasNextLine()) {
            String data = fileReader.nextLine();
            todoLists.add(data);
        }

    } catch (FileNotFoundException e) {
        System.out.println("Error karena: " + e.getMessage());
    }
}

Fungsi ini akan membaca file, lalu isinya akan disimpan dalam variabel array todoLists.

Fungsi ini akan kita panggil saat kita ingin membaca ulang isi file.

Membuat Fungsi showTodoList()

Fungsi ini kita butuhkan untuk menampilkan isi dari file todolist.txt.

Silahkan isi kode fungsi showTodoList() seperti berikut ini:

static void showTodoList() {
    clearScreen();
    readTodoList();
    if (todoLists.size() > 0) {
        System.out.println("TODO LIST:");
        int index = 0;
        for (String data : todoLists) {
            System.out.println(String.format("[%d] %s", index, data));
            index++;
        }
    } else {
        System.out.println("Tidak ada data!");
    }

    if (!isEditing) {
        backToMenu();
    }
}

Fungsi ini hanya melakukan print atau cetak isi file. Kita memanggil fungsi readTodoList() di sini, untuk membaca isi file.

Membuat Fungsi addTodoList()

Berikutnya, silahakan isi kode untuk fungsi addTodoList() seperti ini:

static void addTodoList() {
    clearScreen();

    System.out.println("Apa yang ingin kamu kerjakan?");
    System.out.print("Jawab: ");
    String newTodoList = input.nextLine();

    try {
        // tulis file
        FileWriter fileWriter = new FileWriter(fileName, true);
        fileWriter.append(String.format("%s%n", newTodoList));
        fileWriter.close();
        System.out.println("Berhasil ditambahkan!");
    } catch (IOException e) {
        System.out.println("Terjadi kesalahan karena: " + e.getMessage());
    }

    backToMenu();
}

Fungsi ini akan meminta user untuk menginputkan data todo list, kemudian menuliskannya ke dalam file.

Membuat Fungsi editTodoList()

Fungsi ini kita butuhkan untuk mengubah isi data. Silahkan isi kode untuk fungsi editTodoList() seperti berikut ini:

static void editTodoList() {
    isEditing = true;
    showTodoList();

    try {
        System.out.println("-----------------");
        System.out.print("Pilih Indeks> ");
        int index = Integer.parseInt(input.nextLine());

        if (index > todoLists.size()) {
            throw new IndexOutOfBoundsException("Kamu memasukan data yang salah!");
        } else {

            System.out.print("Data baru: ");
            String newData = input.nextLine();

            // update data
            todoLists.set(index, newData);

            System.out.println(todoLists.toString());

            try {
                FileWriter fileWriter = new FileWriter(fileName, false);

                // write new data
                for (String data : todoLists) {
                    fileWriter.append(String.format("%s%n", data));
                }
                fileWriter.close();

                System.out.println("Berhasil diubah!");
            } catch (IOException e) {
                System.out.println("Terjadi kesalahan karena: " + e.getMessage());
            }
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

    isEditing = false;
    backToMenu();
}

Cara kerja fungsi ini ada beberapa langkah:

  1. Meminta user untuk memilih nomer indeks dari data (indeks dalam array todolist)
  2. Memeriksa indeks
  3. Meminta user untuk menginputkan data baru
  4. Menyimpan data baru ke dalam array todolist
  5. Menulis ulang semua isi array todolist ke dalam file

Membuat Fungsi deleteTodoList()

Fungsi ini kita butuhkan untuk menghapus data todolist. Silahkan tulis kode untuk fungsi deleteTodoList() seperti berikut ini.

static void deleteTodoList() {
    isEditing = true;
    showTodoList();

    System.out.println("-----------------");
    System.out.print("Pilih Indeks> ");
    int index = Integer.parseInt(input.nextLine());

    try {
        if (index > todoLists.size()) {
            throw new IndexOutOfBoundsException("Kamu memasukan data yang salah!");
        } else {

            System.out.println("Kamu akan menghapus:");
            System.out.println(String.format("[%d] %s", index, todoLists.get(index)));
            System.out.println("Apa kamu yakin?");
            System.out.print("Jawab (y/t): ");
            String jawab = input.nextLine();

            if (jawab.equalsIgnoreCase("y")) {
                // hapus data
                todoLists.remove(index);

                // tulis ulang file
                try {
                    FileWriter fileWriter = new FileWriter(fileName, false);

                    // write new data
                    for (String data : todoLists) {
                        fileWriter.append(String.format("%s%n", data));
                    }
                    fileWriter.close();

                    System.out.println("Berhasil dihapus!");
                } catch (IOException e) {
                    System.out.println("Terjadi kesalahan karena: " + e.getMessage());
                }
            }
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

    isEditing = false;
    backToMenu();
}

Cara kerja fungsi deleteTodoList() juga hampir sama dengan editTodoList().

Membuat Inisialisasi dan Main Loop

Final, kita harus membuat inisialisasi dan main loop pada fungsi main().

Silahkan tulis kode untuk fungsi main() seperti berikut ini.

public static void main(String[] args) {
    // initialize
    todoLists = new ArrayList<>();
    input = new Scanner(System.in);

    String filePath = System.console() == null ? "/src/todolist.txt" : "/todolist.txt";
    fileName = System.getProperty("user.dir") + filePath;

    System.out.println("FILE: " + fileName);

    // run the program (main loop)
    while (true) {
        showMenu();
    }
}

Pertama kita harus melakukan inisalisasi atau mengisi nilai pertama untuk tiap variabel global yang belum memiliki isi agar tidak terjadi NullPointerException.

Untuk menentukan lokasi file yang akan dibaca, kita menulisnya seperti ini:

String filePath = System.console() == null ? "/src/todolist.txt" : "/todolist.txt";
fileName = System.getProperty("user.dir") + filePath;

Kaerna nanti kita akan coba membuka palikasi dari luar dan di dalam Netbeans.

because, alamat file (path) yang dibaca di Netbeans berbeda dengan yang di lauar.

Final, kita membuat main loop menjaga agar program tidak berhenti selama kita tidak menutupnya.

Advertisements

source : https://www.petanikode.com/java-file-crud/

Advertisements

 444 total views,  4 views today

By admin

Writer

Leave a Reply

Your email address will not be published. Required fields are marked *