Huff,,90 menit di kelas bersenjatakan laptop pinjeman nyelesein uas, ndak beres dong. Nyobain lagi dikosan, dengan kepala dingin, ternyata bisa juga. Hmm, niy reviewnyah. Ndak step by step, tapi teteup ada penjelasannya kok, check out.
Sebelumnya niy soal UAS PeBeO kemaren.
===========================================================
Diberikan sebuah data mentah sebagai berikut dengan jumlah item yang dimasukkan tidak terbatas.
| KODBRG | HARGA | QTY | JUMLAH |
| X001 | 1000 | 3 | 3000 |
| X002 | 2000 | 6 | 12000 |
| X003 | 3000 | 5 | 15000 |
| X004 | 4000 | 4 | 16000 |
| X005 | 5000 | 10 | 50000 |
Selanjutnya saudara diminta untuk membuat program menu dengan pilihan sebagai berikut :
1. ENTRY {isi data + proses + save ke file text}
2. LOAD{}
3. EXIT
Ketentuan proses adalah menampilkan diskon dan netto, dimana diskon diberikan sebesar 10% bagi bagi jumlah yang di atas 100.000, dan netto adalah jumlah dikurangi diskon.
Data yang disimpan adalah KODEBRG sampai dengan NETTO.
Pada saat menampilkan data, nilai TOTAL harus pula disertakan.
| KODBRG | HARGA | QTY | JUMLAH | DISKON | NETTO |
| X001 | 1000 | 3 | 3000 | xxxxxxxxxx | xxxxxxxxxx |
| X002 | 2000 | 6 | 12000 | xxxxxxxxxx | xxxxxxxxxx |
| X003 | 3000 | 5 | 15000 | xxxxxxxxxx | xxxxxxxxxx |
| X004 | 4000 | 4 | 16000 | xxxxxxxxxx | xxxxxxxxxx |
| X005 | 5000 | 10 | 50000 | xxxxxxxxxx | xxxxxxxxxx |
| TOTAL | xxxxxxxxxx | ||||
===========================================================
Nah, jawaban kode dalam java versi Wisnu Mulyadi, sebagai berikut :
//import class-class yang diperlukan
import java.io.File;
import java.io.FileOutputStream;
import java.util.Formatter;
import java.util.Scanner;
public class uas {
//deklarasi scanner untuk pembacaan dari keyboard
public static Scanner bacaInput = new Scanner(System.in);
public static void entry(String paramKode, int paramHarga, int paramQty) {
//deklarasi formatter
Formatter f;
try {
//penghitungan jumlah
int jumlah = paramHarga * paramQty;
//penghitungan diskon, apabila jumlah lebih dari 100000
//maka mendapatkan diskon sebesar 10%
int diskon = 0;
if (jumlah > 100000) {
diskon = (10 * jumlah) / 100;
}
//penghitungan netto
int netto = jumlah - diskon;
//menginstantiasikan objek dengan nama f dari Formatter
//dengan parameter berupa instantiasi FileOutputStream
//dengan parameter nama file, dan true (agar bisa diappend)
//append : terus melakukan penambahan pada file text, tidak menimpa
f = new Formatter(new FileOutputStream("data.txt", true));
//untuk melakukan penulisan ke file, digunakan fungsi format
//dengan parameter berupa format dan nilai yang akan dimasukkan
//%s untuk String
//%d untuk integer
//sedangkan -10 untuk menambahkan spasi setelah penulisan, begitu kira-kira
//sehingga didapatkan format yang rapi
f.format("%-10s %-10d %-10d %-10d %-10d %d \n", paramKode, paramHarga, paramQty, jumlah, diskon, netto);
//penutupan aliran data formatter
f.close();
} catch (Exception e) {
System.err.println("Pesan Error" + e);
}
}
public static void load() {
//deklarasi scanner
Scanner bacaFile;
try {
//baca data.txt dengan menggunakan scanner
bacaFile = new Scanner(new File("data.txt"));
//inisialiasi total netto
int totalNetto = 0;
//membuat header, \t untuk tab
System.out.print("Kode \t");
System.out.print("Harga \t");
System.out.print("Qty \t");
System.out.print("Jumlah \t");
System.out.print("Diskon \t");
System.out.println("Netto");
while (bacaFile.hasNext()) {
//format pembacaan disesuaikan dengan apa yang akan dibaca
//next untuk String
//nextInt untuk int
//tampilkan isi, \t untuk tab
//pembacaan untuk kode dan tampilkan
System.out.print(bacaFile.next() + "\t");
//pembacaan untuk harga dan tampilkan
System.out.print(bacaFile.nextInt() + "\t");
//pembacaan untuk qty dan tampilkan
System.out.print(bacaFile.nextInt() + "\t");
//pembacaan untuk jumlah dan tampilkan
System.out.print(bacaFile.nextInt() + "\t");
//pembacaan untuk diskon dan tampilkan
System.out.print(bacaFile.nextInt() + "\t");
//untuk pembacaan terakhir (netto),
//akan dimasukkan dulu ke dalam variabel netto
//bertipe data int
//ini dilakukan untuk menghitung totalNetto perbaris
//pembacaan untuk kode dan tampilkan
int netto = bacaFile.nextInt();
//mengupdate nilai total netto setiap kali perulangan / perbaris
totalNetto = totalNetto + netto;
//tampilkan nilai netto
System.out.println(netto);
}
//penutupan aliran data scanner
bacaFile.close();
System.out.println("======================================================");
//menampilkan nilai totalNetto
System.out.println(" Total " + totalNetto);
} catch (Exception e) {
System.err.println("Pesan Error" + e);
}
}
public static void main(String[] args) {
//pengulangan program selamanya
while (true) {
System.out.println("Menu");
System.out.println("1. Entry");
System.out.println("2. Load");
System.out.println("3. Exit");
System.out.print("Pilihan Anda : ");
//pembacaan pilihan menu dari input keyboard
int pilih = bacaInput.nextInt();
switch (pilih) {
//jika memilih 1
case 1:
//perulangan sampai pengguna menginputkan S atau s
do {
System.out.println("======================================================");
System.out.println("Entry");
System.out.println("======================================================");
System.out.print("Kode : ");
//pembacaan inputan dari keyboard, dimasukkan ke dalam
//variable kode bertipe String
String kode = bacaInput.next();
System.out.print("Harga : ");
//pembacaan inputan dari keyboard, dimasukkan ke dalam
//variable harga bertipe int
int harga = bacaInput.nextInt();
System.out.print("Qty : ");
//pembacaan inputan dari keyboard, dimasukkan ke dalam
//variable qty bertipe int
int qty = bacaInput.nextInt();
//pemanggilan method entry dengan parameter
//kode, harga, qty
entry(kode, harga, qty);
System.out.println("======================================================");
System.out.print("Inputkan selain S untuk entry lagi...");
} while (!(bacaInput.next().equalsIgnoreCase("S")));
break;
//jika memilih 2
case 2:
System.out.println("======================================================");
System.out.println("Load");
System.out.println("======================================================");
//pemanggilan method load
load();
System.out.println("======================================================");
break;
//jika memilih 3
case 3:
//untuk melakukan exit
System.exit(0);
break;
//jika memilih selain dari pilihan menu
default:
System.out.println("Salah Menu");
break;
}
}
}
}
Perhatian : pengcopy paste-an code biasanya mengakibatkan error, saya sediakan source untuk didownload di sini.
Silakan tinggalkan komentar kalau anda menemukan kesulitan atau kodenya menimbulkan error.
Kawan2, sukses buat retest Jumat 3 Juli 2009.
Semangat! Duh, pinjem laptop lagi niy . . .
panjang ku comment wis,.. pas uas ku maneh di commentan kitu?? enya weh teu beres…
tah nya sitoni mah sok nyindir,,heu2,,sibuk teu puguh pas uas mah uy,,