NIM : 2011035
a) Buatlah sebuah program yang mampu melakukan input, update, delete sebuah data yang telah
di inputkan sebelumnya. Kemudian lakukan pencarian data (Searching array) dan buatlah menu
pilihan untuk 1. Input, 2. Update, 3. Delete, dan 4. Cari (Menggunakan Array, Seleksi Kondisi,
dan Switch Case).
1. Netbeans Project
Pembahasan/Ulasan :
(prauas_package.Record.java)
package prauas_package;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.StringTokenizer;
BufferedWriter bw;
bw = new BufferedWriter(new FileWriter(DB, true));
Scanner strInput = new Scanner(System.in);
System.out.print("NIM : ");
nim = strInput.nextLine();
System.out.print("Nama Lengkap : ");
nama = strInput.nextLine();
System.out.print("Jenis Kelamin : ");
jk = strInput.nextLine();
System.out.print("Jurusan : ");
jurusan = strInput.nextLine();
bw.newLine();
bw.write(nim + "," + nama + "," + jk + "," + jurusan);
bw.flush();
bw.newLine();
bw.close();
System.out.println("-----------------------------------------
------------------------------------------------");
nim = String.valueOf(st.nextToken());
nama = String.valueOf(st.nextToken());
jk = String.valueOf(st.nextToken());
jurusan = String.valueOf(st.nextToken());
spasi_nim = 15 - nim.length();
spasi_nl = 26 - nama.length();
spasi_jk = 17 - jk.length();
spasi_jur = 27 - jurusan.length();
s_nim.delete(0, s_nim.length());
s_nl.delete(0, s_nl.length());
s_jk.delete(0, s_jk.length());
s_jr.delete(0, s_jr.length());
}
System.out.println("|
|");
System.out.println("-----------------------------------------
-----------------------------------------------");
System.out.println("");
}
}
BufferedWriter bw;
try (BufferedReader br = new BufferedReader(new FileReader(db)))
{
bw = new BufferedWriter(new FileWriter(tempDB));
System.out.println("Menghapus Data Mahasiswa\n");
System.out.print("Masukkan NIM Mahasiswa : ");
if (record.contains(nim)) {
continue;
}
bw.write(record);
bw.flush();
bw.newLine();
}
}
bw.close();
db.delete();
tempDB.renameTo(db);
System.out.println("-----------------------------------------
------------------------------------------------");
System.out.println("| NIM Nama
JK Jurusan |");
System.out.println("-----------------------------------------
------------------------------------------------");
spasi_nim = 15 - nim.length();
spasi_nl = 26 - nama.length();
spasi_jk = 17 - jk.length();
spasi_jur = 27 - jurusan.length();
if (record.contains(kata_kunci)) {
System.out.println("| " + nim + s_nim.toString() +
nama + s_nl.toString() + jk + s_jk.toString() + jurusan + s_jr.toString()
+ " |");
}
s_nim.delete(0, s_nim.length());
s_nl.delete(0, s_nl.length());
s_jk.delete(0, s_jk.length());
s_jr.delete(0, s_jr.length());
System.out.println("|
|");
System.out.println("-----------------------------------------
-----------------------------------------------");
System.out.println("");
}
BufferedWriter bw;
Scanner strInput;
try (BufferedReader br = new BufferedReader(new FileReader(db)))
{
bw = new BufferedWriter(new FileWriter(tempDB));
StringBuilder s_nim = new StringBuilder();
StringBuilder s_nl = new StringBuilder();
StringBuilder s_jk = new StringBuilder();
StringBuilder s_jr = new StringBuilder();
strInput = new Scanner(System.in);
System.out.println("Mengubah Data Mahasiswa\n");
/**
* *
*/
System.out.print("Masukkan NIM Mahasiswa : ");
myNim = strInput.nextLine();
System.out.println("-----------------------------------------
------------------------------------------------");
System.out.println("| NIM Nama
JK Jurusan |");
System.out.println("-----------------------------------------
------------------------------------------------");
spasi_nim = 15 - nim.length();
// 15 - 7 = 8
spasi_nl = 26 - nama.length();
spasi_jk = 17 - jk.length();
spasi_jur = 27 - jurusan.length();
if (record.contains(myNim)) {
System.out.println("| " + nim + s_nim.toString() +
nama + s_nl.toString() + jk + s_jk.toString() + jurusan + s_jr.toString()
+ " |");
}
s_nim.delete(0, s_nim.length());
s_nl.delete(0, s_nl.length());
s_jk.delete(0, s_jk.length());
s_jr.delete(0, s_jr.length());
}
System.out.println("|
|");
System.out.println("-----------------------------------------
-----------------------------------------------");
System.out.println("");
}
/**
* *
*/
System.out.println("Nama Lengkap : ");
newNama = strInput.nextLine();
System.out.println("Jenis Kelamin : ");
newJk = strInput.nextLine();
System.out.println("Jurusan : ");
newJur = strInput.nextLine();
bw.close();
}
db.delete();
boolean success = tempDB.renameTo(db);
System.out.println("\nBerhasil Mengubah Data!");
}
}
Output
(prauas_package.App.java)
package prauas_package;
import java.awt.AWTException;
import java.io.IOException;
import java.util.Scanner;
while (cont.equalsIgnoreCase("y")) {
System.out.println("\n"
+ "=================================================\n"
+ "|| Data Mahasiswa Universitas Punya Saya ||\n"
+ "=================================================\n"
+ "|| 1 ===> Input Data Mahasiswa Baru ||\n"
+ "|| 2 ===> Melihat Semua Data Mahasiswa ||\n"
+ "|| 3 ===> Menghapus Salah Satu Data Mahasiswa ||\n"
+ "|| 4 ===> Mencari Data Mahasiswa ||\n"
+ "|| 5 ===> Mengubah Data Mahasiswa ||\n"
+ "|| N ===> Exit Program ||\n"
+ "=================================================\n"
+ "\n");
switch (choice) {
case "1":
doRecord.Add();
break;
case "2":
doRecord.ViewAll();
break;
case "3":
doRecord.DeleteByNIM();
break;
}
}
Output
strInput sebagai inputan nilai keyboard untuk memilih menu yang ada di lokasi switch case.
Berdasarkan nilai yang ada di switch case yaitu :
1. Input data Mahasiswa
2. Menampilkan semua data Mahasiswa yang ada di file text
3. Menghapus salah satu data Mahasiswa
4. Mencari data mahasiswa
5. Mengubah data mahasiswa.
Y. Melanjutkan Program
N. Memberhentikan Program
Fungsi – fungsi yang tadi disebutkan dalam switch case berasal dari Record.java atau class Record
dengan inisiasi doRecord pada baris ke-13.
Class Record berisi void atau inisiasi metode program yang berada di switch case pada class App.
Sebelumnya, kita membuat variabel privat untuk memasukkan lokasi file text dengan nama DB
sebagai database text utama, dan DBTemp sebagai database backup atau penyimpanan ganda.
Method Add berfungsi sebagai memasukkan satu baris data ke dalam file text dengan
menggunakan librari BufferedWritter sebagai fungsi menulis ke dalam file txt, dan FileReader
sebagai pembaca file txt berdasarkan lokasi file yang variabelnya yaitu DB. Memasukkan data
NIM, Nama Lengkap, Jenis Kelamin, serta Jurusan sebagai data yang saya buat. Memasukkan nilai
keyboard ke dalam txt menggunakan librari Scanner.
Method ViewAll yang saya buat untuk menampilkan semua data yang terdapat pada file txt.
Membaca file menggunakan BufferedReader dan mengambil file menggunakan FileReader. Disitu
juga dibuat untuk pembuatan spasi per field dan penampungan nilai dari field tersebut. Fungsi d
ari pembuatan space per field yaitu membuat tampilan tabel lebih rapih dan enak dipandang
dengan menggunakan fungsi StringBuilder. Menampilkan data menggunakan perulangan
BufferedReader method newLine. Artinya ia mengambil perbaris dan belum dipecah perkolom.
Masuk perulangan dan menggunakan librari StringTokenizer untuk pemisah perkolomnya
berdasarkan koma. Menginputkan variabel nim, nama, jk, dan jurusan menggunakan method
String Tokenizer yaitu .nextToken dan memasukkan spasi yang perhitungannya panjang spasi
yang digunakan dikurangi panjang karakter (mis: 16 – 7 karakter). Lalu peritungan spasi
dimasukkan perulangan lagi untuk membuat spasi kosong yang tadi menggunakan StringBuilder
yaitu .append. lalu menampilkan data menggunakan System Out Println lalu hapus spasi yang
dibuat oleh perulangan tadi menggunakan method StringBuilder yaitu .delete yang panjangnya
berdasarkan spasi yang dimasukkan nilai perulangannya.
DeleteByNim, seperti nama fungsinya. Ini menjalankan program untuk menghapus data
berdasarkan nim mahasiswa. Memasukkan inputan keyboard nim dengan method Scanner
dengan inisiasi strInput. Melakukan perulangan lagi yang sebelumnya membaca file menggunakan
BufferedReader dan FileReader. Didalam perulangannya terdapat kondisi, jika kolom baris
tersebut mengandung nilai dari inputan keyboard, maka akan menjalankan skrip continue yang
akan di jelaskan lebih teoritis di selanjutnya. Lalu menulis ulang berdasarkan file yang di ambil
oleh BufferedWritter kecuali kolom yang nilainya sama dengan inputan keyboard tadi dan
membuat baris baru. Lalu menutup BufferedWritter tsb dan menghapus file DB utama serta
mengubah nama DBTemp menjadi file utama.
Data dengan nim 3213 dihapus dan mengasilkan view tabel seperti ini
SearchByKeyword, mencari data berdasarkan keyword yang kita ketik. Memasukkan nilai Inputan
keyboard seperti fungsi delete. Bedanya, setelah kita melakukan input keyboard, masuk ke
perulangan dan menampilkan data yang mengandung isi dari nilai inputan keyboard.
UpdateByNim, mengubah data berdasarkan nim yang dimasukkan. Cara kerjanya hampir sama
juga seperti SearchByKeyword dan DeleteByNim. Bedanya, setelah memasukkan nilai inputan
keyboard, memasukkan nilai nama, jenis kelamin, dan jurusan. Lalu mengubah data lama
berdasarkan nim yang tadi di inputkan menjadi data yang di inputkan oleh keyboard.
1. Void adalah method yang tidak memiliki nilai kembali/return, bisanya digunakan tidak untuk
mencari nilai dalam suatu operasi, untuk mendeklarasikannya kita harus menembahkan kata
kunci void.
2. Throws digunakan untuk mendeklarasikan exception yang biasanya sama seperti
digunakan saat penggunaan blok try-catch. Sedangkan, throw digunakan untuk secara
eksplisit melempar sebuah exception. ... Deklarasi menggunakan throws dapat digunakan
baik untuk single exception maupun multiple exception
3. try..catch. Statement tersebut digunakan untuk mengurung eksekusi yang
menampilkan error dan dapat membuat program tetap berjalan tanpa dihentikan secara
langsung.
4. BufferedReader merupakan salah satu class yang paling banyak digunakan dalam
pemrograman Java. Pada kesempatan kali ini kita akan mencoba memahami syntax dasar,
penggunaan method dan juga prinsip dari class tersebut untuk membaca input dari user. Fungsi
dasar dari BufferedReader adalah membaca file dari input stream.
5. FileReader digunakan untuk membaca data dari file. Ini mengembalikan data dalam format
byte seperti kelas FileInputStream. Ini adalah kelas berorientasi karakter yang digunakan untuk
penanganan file di java.
6. StringBuilder(String str): Mengkonstruksi suatu string builder dengan string yang
ditentukan. Kapasitas inisialnya adalah 16 karakter dan ditambah dengan panjang dari argumen
string yang diberikan.
7. nextToken () digunakan untuk mengembalikan token berikutnya dari tokenizer string ini.
8. .readline () membaca sebaris teks. Sebuah garis dianggap diakhiri oleh salah satu dari
umpan garis ('\ n'), carriage return ('\ r'), atau carriage return diikuti segera oleh linefeed.
9. Metode java string valueOf () mengonversi berbagai jenis nilai menjadi string.
10. append () untuk menambahkan objek yang diteruskan ke dalam daftar yang ada
11. file adalah media penyimpanan eksternal bagi program java.
12. for digunakan untuk pengulangan (looping) pada java.
13. BufferedWriter adalah sebuah class library pada java yang digunakan untuk membuat dan
menulis data berupa karakter tunggal
14. record contains berfungsi untukv menjelaskan ukuran, dalam karakter, dari record data
dalam sebuah file.
15. Continue digunakan setelah kondisi IF yang digunakan untuk meyeleksi “kapan”
perulangan harus d skip atau di lewati.