Tuesday 13 December 2016

Membuat Pembagian Kelas Dengan Memperhitungkan Sisa Data Menggunakan Tabel Java Netbeans (Final)

Algoritma Pembagian Kelas Dengan Memperhitungkan Sisa Data Menggunakan Java Netbeans (Final)

Pada artikel kali ini berkaitan erat dengan artikel sebelumnya yaitu “Membuat pembagian kelas dengan memperhitungkan sisa data menggunakan tabel javanetbeans”. Dan seperti yang dijelaskan pada artikel sebelumnya, artikel ini berisi mengenai pembuatan aplikasi yang akan menghitung pembagian kelas dengan memperhitungkan sisa dari hasil pembagian. 

Misalnya terdapat 93 murid, sedangkan per-kelas rata-rata menampung sebanyak 30 murid. Maka akan dihasilkan 3 buah kelas dengan sisa murid sebanyak 3 orang. Aplikasi ini secara otomatis akan menambahkan sisa murid tersebut kedalam beberapa kelas yang tersedia. Jadi akan  tercipta sebuah kelas yang masing-masing memiliki 31 murid per-kelas.

Lalu bagaimana jika jumlah murid terdapat 94 orang? Maka akan tercatat 32, 31, dan 31 dalam masing-masing kelas. Namun permasalahan yang ada apabila sisa murid terdapat 29 orang, maka akan terbagi menjadi 40, 40 dan 39. Bukankah lebih efektif bila menambah sebuah kelas yang baru? (agar sistem belajar juga tidak terganggu? Hehe) Jadi akan ada 4 kelas dengan masing-masing kelas berisi 30,30,30 dan 29 (murid). Berdasarkan hal ini aplikasi dibuat dengan menggunakan sistem algoritma tersebut. Bila ada jumlah sisa 20 orang atau lebih, makan akan dibuat sebuah kelas baru.

Okey, mungkin sobat Dettline ada yang sudah tidak sabar untuk melihatnya bagaimana caranya?! Langsung saja, Dettline akan mencoba untuk membahasnya secara detail.


Pertama-tama, silakan sobat Dettline membuat sebuah project.

Lalu buat tampilan tabel seperti berikut.


Tampilan tersebut terdapat 2 textfield, textfield (kotak berwarna merah) diberi nama variabel “siswa”, lalu texfield (kotak berwarna biru) bernama “kelas”, sedangkan tombol proses (kotak berwarna hijau) diberi nama “proses” dan terakhir adalah pemberian nama variabel tabel (kotak berwarna coklat) dengan nama “tabel”. Tabel tersebut tidak perlu di-edit, karena kita akan melakukan edit table melalui source code.


Langkah ke dua yaitu merubah struktur tabel secara manual melalui source.

Masuk ke dalam source lalu scroll ke bagian paling atas. Sisipkan kode seperti tampilan dibawah ini.


Pada tampilan diatas, beberapa kode disisipkan pada baris ke 8, 15 dan baris ke 21 sampai 23.

Ket : bila ada garis merah atau error pada tulisan DefaultTableModel, sobat dapat tekan ALT+ENTER dengan keadaan kursor terletak pada tulisan tersebut. Hal itu dapat disebabkan karena salah penulisan “import javax.swing.table.DefaultTableModel;” atau “import javax.swing.table.DefaultTableModel;” belum dicatat diatas.

Struktur kode diatas adalah membuat variabel baru atas nama “bebas”, lalu membuat 2 buah kolom dengan judul ”Banyak Kelas” dan “Murid Dalam 1 Kelas”, lalu kode tersebut diterapkan ke dalam table yang sebelumnya diberi nama variabel “tabel”.


Masuk Ke Dalam Source Tombol Proses

Setelah itu semua dilakukan, silakan sobat masuk kedalam source kode pada tombol proses, dapat juga dilakukan melalui cara seperti dibawah ini.




Masukkan kode berikut didalam fungsi tombol tersebut.


          int a=Integer.parseInt(kelas.getText());
        int b=Integer.parseInt(siswa.getText());
        int c=b/a;
        int d=b%a;
        int [] data=new int[c];
        int j=0;
       
        for(int i=0; i<d; i++)
        {
            if(j>=c)
            {
                j=0;
                data[j]=data[j]+1;
                j++;
            } else
            {
                data[j]=data[j]+1;
                j++;
            }
        }
        bebas.setRowCount(0);
        if(d>=20)
        {
            int[]dataf=new int[c+1];
            for(int i=0; i<c+1; i++)
            {
                dataf[i]=0;
                dataf[c]=d;
               
                String kels="TI-";
                String tampil=String.valueOf(i+1);
                String hasil=kels+tampil;
                if(i==c)
                {
                    Object[]info={hasil,dataf[i]};
                    bebas.addRow(info);
                } else
                {
                    Object[]info={hasil,a+dataf[i]};
                    bebas.addRow(info);
                }
            }
        } else
        {
            for(int i=0; i<c; i++)
            {
                String kels="TI-";
                String tampil=String.valueOf(i+1);
                String hasil=kels+tampil;
               
                Object[]info={hasil,a+data[i]};
                bebas.addRow(info);
            }
        }


Finish!

Nah, sampai disini sobat dapat menjalankan program sobat.
Lihat hasilnya dan TAA DAAA!!

Berjalan sesuai rencana bukan?


Dari algoritma diatas dapat diketahui, variabel “int a” merupakan konversi integer dari variabel “kelas” dan variabel “int b” adalah konversi integer dari variabel “siswa”. Lalu variabel c” dan “d” masing-masing memiliki fungsi sebagai hasil bagi bilangan bulat (tanpa koma) dan hasil modulus (sisa bagi) dari variabel “b” dan “a”.

Sedangkan int data” merupakan wadah array untuk menampung jumlah sisa pembagian. Contoh: bila kelas terbentuk sebanyak 3 kelas, sedangkan sisa murid sebanyak 4 orang. Maka array dari variabel “data” tersebut akan mengolah sisanya melalui looping for yang ada dibawahnya dengan cara:
(+1 untuk array0)
(+1 untuk array1)
(+1 untuk array2)
Nah sampai sini variabel “j” memiliki peran penting untuk kembali ke array awal bila array telah melampaui jumlah kelas. Sehingga akan kembali ke array0.
(+1 untuk array0)
Hasilnya
Array0=2
Array1=1
Array2=1

Jadi, nantinya array tersebut akan dijumlah dengan “int a”.
Misal int a” berisi nilai 30. Otomatis akan tersusun sebanyak 3 kelas dengan masing-masing memiliki murid 32,31,31 (per-kelas).

Ket : looping for yang digunakan paling awal, berfungsi untuk menyiapkan sisa untuk dijumlahkan menggunakan array yang akan berlaku untuk menjumlahnya dengan variabel “kelas” atau dapat juga disebut sebagai variabel “int a”

Lalu fungsi if(d>=20) digunakan untuk membuat kelas baru dengan ketentuan bila sisa murid yang dimiliki lebih besar atau sama dengan 20, maka akan dibuat kelas yang baru. (jadi, sobat bebas menentukan disini, besarnya nilai sisa yang menentukan untuk membuat kelas baru)

Dalam koding tersebut dapat dilihat bahwa array kali ini sudah ditambah dengan angka 1.
int []dataf=new int[c+1];
Jelas bahwa array yang digunakan akan ada tambahan 1 kelas yg baru.
Bila keadaan true maka perhitungan sisa yang ada dalam looping atau for diatas akan diabaikan, namun bila keadaan false maka looping atau for diatas akan digunakan.

Masing masing for yang ada didalam if dan else digunakan untuk menginput data dan akan ditampilkan kedalam tabel.

YAPS, mungkin penjelasan dari Dettline mengenai algoritma diatas seperti ini. Bila ada kekurangan atau hal yang sobat kurang pahami atau keterangan yang kurang jelas, sobat Dettline boleh berkomentar atau langsung hubungi akun Admin Dettline.

Semoga artikel ini dapat menjadi solusi tepat bagi sobat Dettline!

Untuk penjelasan langkah-langkah pembuatan secara langsung, sobat dapat melihat video yang ada dibawah ini.



Load disqus comments

0 komentar