Anda di halaman 1dari 13

NIM : 2011032

NIM : 2011035

Nama : Muhammad Rizal


Rega Candra Negoro Herlambang
Mata Kuliah : Algoritma dan Pemrograman
Program Studi: Informatika

 TUGAS PRA UAS


Pertanyaan/Soal :

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).

Seluruh jawaban dikumpul dalam bentuk ;

1. Netbeans Project

2. Laporan sedikit Mengenai Penjelasan Program Yang dibuat

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035

Pembahasan/Ulasan :

a) Membuat Project PraUAS_Project. Setelah itu, membuat Package prauas_package. Didalam


package ini terdapat 2 (dua) file java, yaitu Record dan App.

(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;

public class Record {

private final String DB = "C:\\Users\\ACER\\Desktop\\db.txt";


private final String DBTemp = "C:\\Users\\ACER\\Desktop\\dbTemp.txt";

void Add() throws IOException {

BufferedWriter bw;
bw = new BufferedWriter(new FileWriter(DB, true));
Scanner strInput = new Scanner(System.in);

String nim, nama, jk, jurusan;

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("\nBerhasil Memasukkan Data!\n");


}

void ViewAll() throws IOException {


try (BufferedReader br = new BufferedReader(new FileReader(DB)))
{
int spasi_nim = 0, spasi_nl = 0, spasi_jk = 0, spasi_jur = 0;
String record, nim, nama, jk, jurusan;

StringBuilder s_nim = new StringBuilder();


StringBuilder s_nl = new StringBuilder();
StringBuilder s_jk = new StringBuilder();
StringBuilder s_jr = new StringBuilder();

System.out.println("-----------------------------------------
------------------------------------------------");

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035
System.out.println("| NIM Nama
JK Jurusan |");
System.out.println("-----------------------------------------
------------------------------------------------");

while ((record = br.readLine()) != null) {

StringTokenizer st = new StringTokenizer(record, ",");

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();

for (int k = 0; k < spasi_nim; k++) {


s_nim.append(" ");
}
for (int k = 0; k < spasi_nl; k++) {
s_nl.append(" ");
}
for (int k = 0; k < spasi_jk; k++) {
s_jk.append(" ");
}
for (int k = 0; k < spasi_jur; k++) {
s_jr.append(" ");
}

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("");
}
}

void DeleteByNIM() throws IOException {


Scanner strInput = new Scanner(System.in);
String nim, record;

File tempDB = new File(DBTemp);


File db = new File(DB);

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 : ");

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035
nim = strInput.nextLine();
while ((record = br.readLine()) != null) {

if (record.contains(nim)) {
continue;
}

bw.write(record);
bw.flush();
bw.newLine();

}
}
bw.close();

db.delete();

tempDB.renameTo(db);

System.out.println("\nBerhasil Menghapus Data\n");

void SearchByKeywords() throws IOException {


String kata_kunci, record, nim, nama, jk, jurusan;
int spasi_nim = 0, spasi_nl = 0, spasi_jk = 0, spasi_jur = 0;
Scanner strInput = new Scanner(System.in);

StringBuilder s_nim = new StringBuilder();


StringBuilder s_nl = new StringBuilder();
StringBuilder s_jk = new StringBuilder();
StringBuilder s_jr = new StringBuilder();

try (BufferedReader br = new BufferedReader(new FileReader(DB)))


{
System.out.println("Pencarian Data Mahasiswa\n");

System.out.println("Masukkan Kata Kunci : ");


kata_kunci = strInput.nextLine();

System.out.println("-----------------------------------------
------------------------------------------------");
System.out.println("| NIM Nama
JK Jurusan |");
System.out.println("-----------------------------------------
------------------------------------------------");

while ((record = br.readLine()) != null) {

StringTokenizer st = new StringTokenizer(record, ",");


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();

for (int k = 0; k < spasi_nim; k++) {


s_nim.append(" ");

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035
}
for (int k = 0; k < spasi_nl; k++) {
s_nl.append(" ");
}
for (int k = 0; k < spasi_jk; k++) {
s_jk.append(" ");
}
for (int k = 0; k < spasi_jur; k++) {
s_jr.append(" ");
}

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("");
}

void UpdateByNIM() throws IOException {


String newNama, newJk, newJur, record, record2, nim, nama, jk,
jurusan, myNim;
int spasi_nim = 0, spasi_nl = 0, spasi_jk = 0, spasi_jur = 0;

File db = new File(DB);


File tempDB = new File(DBTemp);

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("-----------------------------------------
------------------------------------------------");

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035
while ((record = br.readLine()) != null) {

StringTokenizer st = new StringTokenizer(record, ",");


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();
// 15 - 7 = 8
spasi_nl = 26 - nama.length();
spasi_jk = 17 - jk.length();
spasi_jur = 27 - jurusan.length();

for (int k = 0; k < spasi_nim; k++) {


s_nim.append(" ");
}
for (int k = 0; k < spasi_nl; k++) {
s_nl.append(" ");
}
for (int k = 0; k < spasi_jk; k++) {
s_jk.append(" ");
}
for (int k = 0; k < spasi_jur; k++) {
s_jr.append(" ");
}

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();

try (BufferedReader br2 = new BufferedReader(new FileReader(db)))


{
while ((record2 = br2.readLine()) != null) {
if (record2.contains(myNim)) {
bw.write(myNim + "," + newNama + "," + newJk + "," +
newJur);
} else {

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035
bw.write(record2);
}
bw.flush();
bw.newLine();
}

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;

public class App {


public static void main(String args[])throws IOException, AWTException {

Scanner strInput = new Scanner(System.in);


Record doRecord = new Record();
String choice, cont = "y";

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");

System.out.print("Pilih Menu : ");


choice = strInput.nextLine();
System.out.println("");

switch (choice) {
case "1":
doRecord.Add();
break;
case "2":
doRecord.ViewAll();
break;
case "3":
doRecord.DeleteByNIM();
break;

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035
case "4":
doRecord.SearchByKeywords();
break;
case "5":
doRecord.UpdateByNIM();
break;
case "N":
System.exit(0);
break;
case "n":
System.exit(0);
break;
default:
System.out.println("Perintah Menu Tidak Ada!");
break;
}

System.out.println("Kembali ke Menu ? y/n");


cont = strInput.nextLine();

}
}

Output

Menjalankan program melalui class App.

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.

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035

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.

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035

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

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035

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.

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035

Data dengan nim 2011001 berubah sesuai yang diinputkan tadi

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.

Tahun Akademik 2020/2021


NIM : 2011032
NIM : 2011035

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.

Tahun Akademik 2020/2021

Anda mungkin juga menyukai