Review UAS PeBeO

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. :D Semangat! Duh, pinjem laptop lagi niy . . .

2 Responses to “Review UAS PeBeO”


  1. 1 Tonny July 3, 2009 at 2:34 am

    panjang ku comment wis,.. pas uas ku maneh di commentan kitu?? enya weh teu beres…


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s




nuPunya

nuTukarLink

Tukar Link Yuk, Sahabat !


Copy Link Ini di Blog Anda :
<p align= "center"><a href="http://www.wisnumulyadi.wordpress.com"><img src="http://wisnumulyadi.files.wordpress.com/2009/10/header1.png" border="0" width="70" height="25" title="wisnumulyadi" ></a></p>

nuStats

  • 767 nuHits

nuKategori

nuTemanSeperjuangan


Follow

Get every new post delivered to your Inbox.