Halo pecinta coding, kali ini saya akan membuat program untuk menghitung berapa banyak SKS yang harus dibayarkan dalam satu semester, bagi para mahasiswa, ini sangat membantu untuk mengetahui berapa banyak uang yang harus dikeluarkan untuk mengambil SKS  Berikut deskripsi program yang akan kita bua...

Program Penghitung Biaya Kuliah per SKS

Halo pecinta coding, kali ini saya akan membuat program untuk menghitung berapa banyak SKS yang harus dibayarkan dalam satu semester, bagi para mahasiswa, ini sangat membantu untuk mengetahui berapa banyak uang yang harus dikeluarkan untuk mengambil SKS

 Berikut deskripsi program yang akan kita buat :

  • Program berguna untuk menghitung berapa banyak jumlah SKS yang harus kita bayar semester ini.
  • Nilai yang diinput oleh user adalah, jumlah mata kuliah, SKS dan nilai per mata kuliah.
  • Program akan menghitung berapa IP yang diperoleh, lalu memutuskan berapa banyak SKS yang diperoleh.

 Langkah-langkah membuat tampilan program tersebut adalah sebagai berikut:

    1. Buat project baru dengan nama menghitungSKS
    2.  Masukkan ke dalam Form1 komponen-komponen yang dibutuhkan sebagai berikut. 11 buah Label, 6 buah TextBox, 4 buah Button, 1 buah ComboBox, dan 2 buah GroupBox.
      Atur tata letaknya kira-kira seperti pada gambar di bawah ini


    1.  Untuk langkah selanjutnya, kita akan mengubah semua nilai properties pada masing-masing objek yang ada pada Form1, termasuk nilai properties Form1 itu sendiri. Untuk mengetahui komponen dan properties yang mana yang akan diubah, dan apa nilainya, silahkan Anda lihat pada tabel di bawah ini.

 




  1. Setelah itu, klik komponen ComboBox dengan nama comboNilaiPerMataKuliah, pada bagian Properties Items, klik tombo l , maka akan muncul kotak dialog String Collection Editor.
  2. Masih di kotak dialog yang tadi, pada bagian Enter the strings in the collection (one per line): ketik huruf A, lalu Enter. Ketik huruf B,lalu Enter, dan seterusnya sampai huruf E. Klik OK. Untuk lebih jelasnya silahkan lihat gambar di bawah ini.

Untuk tahap selanjutnya kita akan melakukan coding. Langkah- langkahnya adalah sebagai berikut:

    1. Klik satu kali pada Form1, lalu tekan tombol F7, ketikkan kode di bawah ini.
    2. private int[] sksPerMataKuliah = new int[10];
              private char[] nilaiPerMataKuliah = new char[10];
              private int indexArray = 0, noMatKul = 0;
              public Form1()
              {
                  InitializeComponent();
              }

Keterangan Program:

      • Baris 1: mendeklarasikan array bertipe Integer, dengan panjang 10, dengan nama sksPerMataKuliah
      • Baris 2: mendeklarasikan array bertipe char, dengan panjang 10, dengan nama nilaiPerMataKuliah
      • Baris 3: mendeklarasikan variabel indexArray dan noMatkul.
      • Baris 4-7: baris ini tidak perlu diketik, karena baris ini sudah ada dengan sendirinya pada saat kita membuat project baru.

 

    1. Sebelum kita melanjutkan kode untuk di Form1. Terlebih dahulu kita akan membuat class baru.
    2. Pada menu utama klik Project, pilih Add New Item Atau bisa dengan menekan kombinasi tombol Ctrl + Shift + A. Maka akan tampil kotak dialog Add New Item. Lihat gambar di bawah ini.

    1. Pada kotak dialog tersebut, pilih Class dan isi dengan nama PembayaranSKS.cs, klik Add.

    1. Kemudian ketikkan kode berikut ini.
public class PembayaranSKS
    {
        protected float hargaPerSKS;
        private int jumlahSKSYangDiperoleh;

        public PembayaranSKS()
        {
            this.hargaPerSKS = 40000;
            this.jumlahSKSYangDiperoleh = 0;
        }

        public float GetHargaPerSKS()
        {
            return this.hargaPerSKS;
        }

        public float HitungSKSYangHarusDibayar(int jumlahSKSYangDiperoleh)
        {
            this.jumlahSKSYangDiperoleh = jumlahSKSYangDiperoleh;
            float hasil = this.jumlahSKSYangDiperoleh * hargaPerSKS;
            return hasil;
        }
    }

Keterangan Program:

      • Baris 1: tambahkan public, sebelum perintah class. Karena kita akan membuat lebih dari satu class.
      • Baris 2: mendeklarasikan variabel hargaPerSKS, dengan tipe data float dan hak akses protected.
      • Baris 3: mendeklarasikan variabel jumlahSKSYangDiperoleh, dengan tipe data int dan hak akses private.
      • Baris 5-9: membuat konstruktor untuk class PembayaranSKS().
      • Baris 10-13: membuat method dengan nama GetHargaPerSKS(), yang berguna untuk mengambil nilai dari variabel hargaPerSKS. Karena variabel ini tidak menggunakan hak akses public, sehingga tidak bias diakses secara langsung dari luar class.
      • Baris 14-19: membuat method dengan nama HitungSKSYangHarusDibayar(), yang berguna untuk menghitung berapa banyak SKS yang harus dibayar untuk bulan ini. Yang didapat dari rumus jumlahSKSYangDiperoleh dikali hargaPerSKS

 

    1. Selanjutnya kita akan membuat class turunan dari class PembayaranSKS, yaitu class IPSemesterIni. Ketikkan kode berikut tepat di bawah class PembayaranSKS.
// inherit dari class PembayaranSKS
    public class IPSemesterIni : PembayaranSKS
    {
        float totalSKSDiperoleh, totalKNDiperoleh;
        int JumlahSKSSemesterIni;

        // constructor
        public IPSemesterIni()
        {
            this.totalSKSDiperoleh = 0;
            this.totalKNDiperoleh = 0;
        }

        public IPSemesterIni(float totalSKSDiperoleh, float totalKNDiperoleh)
        {
            this.totalSKSDiperoleh = totalSKSDiperoleh;
            this.totalKNDiperoleh = totalKNDiperoleh;
        }

        public float HitungIPYangDiperoleh(float totalSKSDiperoleh, float totalKNDiperoleh)
        {
            return totalKNDiperoleh / totalSKSDiperoleh;
        }

        public int SKSYangDiperolehSemesterBaru(float IPSemesterIni)
        {
            if (IPSemesterIni <= 2.5) { JumlahSKSSemesterIni = 18; }
            else if ((IPSemesterIni > 2.5) && (IPSemesterIni < 3)) { JumlahSKSSemesterIni = 21; }
            else if (IPSemesterIni >= 3) { JumlahSKSSemesterIni = 24; }

            return JumlahSKSSemesterIni;
        }
    }

Keterangan Program:

      • Baris 2: membuat class dengan nama IPSemesterIni, yang diturunkan dari class PembayaranSKS.
      • Baris 7-16: pada baris ini terdapat dua bua konstruktor, dimana pada konstructor pertama tidak terdapat parameter. Sedangkan pada konstructor yang kedua terdapat parameter, yaitu totalSKSDiperoleh dan totalKNDiperoleh.
      • Baris 17-20: membuat method dengan nama HitungIPYangDiperoleh(), yang berguna untuk menghitung berapa besar IP yang diperoleh dengan cara membagi totalKNDiperoleh dengan totalSKSDiperoleh.
      • Baris 21-27: membuat method dengan nama SKSYangDiperolehSemesterBaru(), yang berguna untuk menghitung berapa SKS yang diperoleh untuk semester berikutnya. Dengan kondisi, jika IP kurang dari atau sama dengan 2,5, SKS semester ini 18. Jika IP antara 2,5 - 3, SKS semester ini 21. Dan jika IP lebih besar dari atau sama dengan 3, SKS semester ini 24.
    1. Kemudian kita akan membuat class turunan dari class IPSemesterIni, yaitu class SKSSemesterIni. Ketikkan kode berikut tepat di bawah class IPSemesterIni.
// inherit dari class IPSemesterIni
    public class SKSSemesterIni : IPSemesterIni
    {
        private int jumlahMataKuliah;
        private int[] sksPerMataKuliah = new int[10];
        private char[] nilaiPerMataKuliah = new char[10];
        private float totalSKSDiperoleh, totalKNDiperoleh;

        private int i, nilaiDalamAngka, temp = 0;

        // constructor       
        public SKSSemesterIni(int jumlahMataKuliah, int[] sksPerMataKuliah, char[] nilaiPerMataKuliah)
        {

            this.jumlahMataKuliah = jumlahMataKuliah;
            this.sksPerMataKuliah = sksPerMataKuliah;
            this.nilaiPerMataKuliah = nilaiPerMataKuliah;
        }

        // namanya bukan SKS => K.N, else?
        public float HitungTotalKNDiperoleh()
        {
            for (i = 0; i < jumlahMataKuliah; i++)
            {
                switch (nilaiPerMataKuliah[i])
                {
                    case 'A':
                        nilaiDalamAngka = 4;
                        break;

                    case 'B':
                        nilaiDalamAngka = 3;
                        break;

                    case 'C':
                        nilaiDalamAngka = 2;
                        break;

                    case 'D':
                        nilaiDalamAngka = 1;
                        break;

                    case 'E':
                        nilaiDalamAngka = 0;
                        break;

                    default:
                        nilaiDalamAngka = 0;
                        break;
                }

                temp = sksPerMataKuliah[i] * nilaiDalamAngka;
                totalKNDiperoleh = totalKNDiperoleh + temp;
            }

            return totalKNDiperoleh;
        }

        public float HitungTotalSKSDiperoleh()
        {
            for (i = 0; i < jumlahMataKuliah; i++)
            {
                totalSKSDiperoleh += sksPerMataKuliah[i];
            }

            return totalSKSDiperoleh;
        }
    }

Keterangan Program:

      • Baris 2: membuat class dengan nama SKSSemesterIni, yang diturunkan dari class IPSemesterIni.
      • Baris 10-15: membuat konstruktor.
      • Baris 16-45: membuat method dengan nama HitungTotalKNDiperoleh(), yang berguna untuk menghitung berapa total KN (Komulatif Nilai) yang diperoleh dengan rumus sksPerMataKuliah dikali dengan nilaiDalamAngka. nilaiDalamAngka, diperoleh dari statement switch, yang bertugas untuk merubah nilai dari bentuk Huruf ke bentuk Angka
      • Baris 46-53: membuat method dengan nama HitungTotalSKSDiperoleh(), yang berguna untuk menjumlahkan SKS masing-masing mata kuliah (sksPerMataKuliah), lalu hasilnya ditampung di variabel totalSKSDiperoleh

 

    1. Sampai disini kita telah selesai membuat class sendiri yang menerapkan konsep OOP. Selanjutnya kita tinggal menggunakan class-class tersebut. Sekarang kembali ke Form1.
    2. Klik ganda pada TextBox txtJumlahMatKul, lalu ketikan kode berikut ini.
private void txtJumlahMatKul_TextChanged(object sender, EventArgs e)
        {
            if (int.Parse(txtJumlahMatKul.Text) > 10)
                txtJumlahMatKul.Text = "10";
            else if (int.Parse(txtJumlahMatKul.Text) <= 0)
                txtJumlahMatKul.Text = "1";
        }

Keterangan Program:

      • Baris kode ini berguna untuk membatasi input hanya boleh antara 1-10.
      • Baris 3: periksa apakah text yang diinput pada TextBox txtJumlahMatKul, lebih besar dari 10
      • Baris 4: jika benar, isi TextBox txtJumlahMatKul dengan angka 10.
      • Baris 5: jika salah, periksa lagi apakah text yang diinput pada TextBox txtJumlahMatKul, lebih kecil dari atau sama dengan 0
      • Baris 6: jika benar, isi TextBox txtJumlahMatKul dengan angka
        private void cmdOke_Click(object sender, EventArgs e)
                {
                    gbDataMatKul.Visible = true;
        
                    if (int.Parse(txtJumlahMatKul.Text) == 1)
                    {
                        cmdNext.Enabled = false;
                        cmdHitung.Enabled = true;
                    }
        
                    lblNoMatKul.Text = "1";
                    noMatKul = 2;
        
                    txtJumlahMatKul.Enabled = false;
                    cmdOke.Enabled = false;
                }
          
    1. Lalu, klik ganda pada Button cmdOke, lalu ketikan kode berikut ini..

Keterangan Program:

      • Baris 3: menampilkan  GroupBox gbDataMatKul.
      • Baris 4-8: periksa apakah text yang diinput pada TextBox txtJumlahMatKul, sama dengan angka 1. Jika benar, maka ubah status Button cmdNext menjadi tidak bisa ditekan (disable). Dan ubah status Button cmdHitung menjadi bisa ditekan (enable).
      • Baris 9: isi TextBox lblNoMatKul, dengan string angka 1. - Baris 10: isi variabel noMatKul, dengan integer angka 2.
      • Baris 11 dan 12: disable TextBox txtJumlahMatKul dan Button cmdOke.

 

    1. Klik ganda TextBox txtSKSPerMataKuliah, lalu ketikan kode ini.
private void txtSKSPerMataKuliah_TextChanged(object sender, EventArgs e)
        {
            if (txtSKSPerMataKuliah.Text == "")
                cmdNext.Enabled = false;
            else
                cmdNext.Enabled = true;
        }

Keterangan Program:

      • Baris 3: periksa apakah text yang diinput pada TextBox txtJumlahMatKul, sama dengan kosong, A.K.A belum ada yang diinput.
      • Baris 4: jika benar, disable Button cmdNext.
      • Baris 5-6: jika salah, enable Button cmdNext.

 

    1. Langkah berikutnya, klik ganda Button cmdNext, lalu ketikan kode ini.
private void cmdNext_Click(object sender, EventArgs e)
        {
            if (indexArray < int.Parse(txtJumlahMatKul.Text))
            {
                if (indexArray < int.Parse(txtJumlahMatKul.Text) - 1)
                {
                    lblNoMatKul.Text = Convert.ToString(noMatKul);
                    noMatKul++;
                }
                else
                {
                    txtSKSPerMataKuliah.Enabled = false;
                    comboNilaiPerMataKuliah.Enabled = false;

                    cmdNext.Enabled = false;
                    cmdHitung.Enabled = true;
                }

                sksPerMataKuliah[indexArray] = int.Parse(txtSKSPerMataKuliah.Text);
                nilaiPerMataKuliah[indexArray] = char.Parse(comboNilaiPerMataKuliah.Text);
                indexArray++;
            }

            txtSKSPerMataKuliah.Text = "";
            txtSKSPerMataKuliah.Focus();
            comboNilaiPerMataKuliah.Text = "A";
        }

Keterangan Program:

      • Baris 3: periksa apakah isi variabel indexArray  lebih kecil dari isi TextBox txtJumlahMatKul.
      • Baris 5: jika benar, periksa lagi apakah isi variabel indexArray  lebih kecil dari isi TextBox txtJumlahMatKul kurang 1.
      • Baris 7-8: jika benar, isi Label lblNoMatKul dengan isi dari variabel noMatKul. Lalu tambah isi variabel noMatKul, sebanyak 1 poin.
      • Baris 12-15: jika salah, disable TextBox txtSKSPerMataKuliah, ComboBox comboNilaiPerMataKuliah.Enabled, dan Button cmdNext. Lalu enable cmdHitung.
      • Baris 17: isi array sksPerMataKuliah, dengan isi teks dari TextBox txtSKSPerMataKuliah. Untuk posisi indexnya ditentukan oleh nilai variabel indexArray.
      • Baris 18: isi array nilaiPerMataKuliah, dengan isi teks dari ComboBox comboNilaiPerMataKuliah. Untuk posisi indexnya juga ditentukan oleh nilai variabel indexArray.
      • Baris 19: tambah isi variabel indexArray, sebanyak 1 poin. - Baris 21 dan 22: kosongkan TextBox txtSKSPerMataKuliah dan fokus atau pindahkan posisi kursor ke TextBox txtSKSPerMataKuliah tersebut. - Baris 23: ubah posisi teks ComboBox comboNilaiPerMataKuliah, ke teks huruf A
    1. Selanjutnya, klik ganda pada Button cmdHitung, lalu ketikan kode berikut ini.
private void cmdHitung_Click(object sender, EventArgs e)
        {
            gbHasilHitung.Visible = true;
            cmdHitung.Enabled = false;

            int jumlahMatKul = int.Parse(txtJumlahMatKul.Text);

            SKSSemesterIni objHitungSKS = new SKSSemesterIni(jumlahMatKul, sksPerMataKuliah, nilaiPerMataKuliah);

            float totalKNDiperoleh = objHitungSKS.HitungTotalKNDiperoleh();
            float totalSKSDiperoleh = objHitungSKS.HitungTotalSKSDiperoleh();

            float IPSemesterIni = objHitungSKS.HitungIPYangDiperoleh(totalSKSDiperoleh, totalKNDiperoleh);
            txtIP.Text = IPSemesterIni.ToString();

            int SKSSemesterIni = objHitungSKS.SKSYangDiperolehSemesterBaru(IPSemesterIni);
            txtSKSSemesterIni.Text = SKSSemesterIni.ToString();

            /*
            float SKSYangHarusDibayar = objHitungSKS.HitungSKSYangHarusDibayar(SKSSemesterIni);
            txtTotalSKSYangHarusDiBayar.Text = SKSYangHarusDibayar.ToString() + ",-";

            float hargaPerSKS = objHitungSKS.GetHargaPerSKS();
            txtHargaPerSKS.Text = hargaPerSKS.ToString() + ",-";
            */

            UbahHargaSKS objUbahHargaSKS = new UbahHargaSKS();
            float SKSYangHarusDibayar = objUbahHargaSKS.HitungSKSYangHarusDibayar(SKSSemesterIni, 45000);
            txtTotalSKSYangHarusDiBayar.Text = SKSYangHarusDibayar.ToString() + ",-";
            float hargaPerSKS = objUbahHargaSKS.GetHargaPerSKS();
            txtHargaPerSKS.Text = hargaPerSKS.ToString() + ",-";
        }

Keterangan Program:

      • Baris 3: tampilkan GroupBox gbHasilHitung.
      • Baris 4: disable Button cmdHitung
      • Baris 5: ambil isi teks TextBox txtJumlahMatKul, lalu simpan ke dalam variabel jumlahMatKul.
      • Baris 6: membuat objek baru dari class SKSSemesterIni dengan nama objHitungSKS.
      • Baris 7: menghitung total KN dengan menggunakan method HitungTotalKNDiperoleh(), lalu simpan hasilnya ke variabel totalKNDiperoleh. –
      • Baris 8: menghitung total SKS yang diperoleh dengan menggunakan method HitungTotalSKSDiperoleh(), lalu simpan hasilnya ke variabel totalSKSDiperoleh.
      • Baris 9: menghitung IP semester ini dengan menggunakan method HitungIPYangDiperoleh(), lalu simpan hasilnya ke variabel IPSemesterIni
      • Baris 10: menampilkan isi variabel IPSemesterIni melalui TextBox txtIP.
      • Baris 11: menghitung SKS yang diperoleh untuk semester baru berdasarkan besar IP dengan menggunakan method SKSYangDiperolehSemesterBaru(), lalu simpan hasilnya ke variabel SKSSemesterIni
      • Baris 12: menampilkan isi variabel SKSSemesterIni melalui TextBox txtSKSSemesterIni
      • Baris 13: menghitung SKS yang harus dibayar dengan menggunakan method HitungSKSYangHarusDibayar(), lalu simpan hasilnya ke variabel SKSYangHarusDibayar.
      • Baris 14: menampilkan isi variabel SKSYangHarusDibayar melalui TextBox txtTotalSKSYangHarusDiBayar.
      • Baris 15: mengambil isi variabel hargaPerSKS milik class PembayaranSKS dengan menggunakan method GetHargaPerSKS(), lalu simpan hasilnya ke variabel lokal hargaPerSKS
      • Baris 16: menampilkan isi variabel hargaPerSKS melalui TextBox txtHargaPerSKS.

 

    1. Selanjutnya, klik ganda pada Button cmdKeluar, lalu ketikan kode berikut ini, untuk keluar dari aplikasi.
 private void cmdKeluar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    1. Coding sudah selesai, tekan F5 untuk menjalankan program dan akan muncul tampilan sebagai berikut :

Berikutnya kita akan melakukan testing atau ujicoba program.

Langkah-langkah melakukan ujicoba program adalah sebagai berikut:

      1. Setelah program dijalankan, isi Jumlah Mata Kuliah dengan angka 2. lalu tekan Oke.
      2. Akan muncul GroupBox Data Mata Kuliah. Isi SKS dengan angka 4, lalu pilih Nilai A. Lalu tekan Next.

      1.  Isi SKS dengan angka 2, lalu pilih Nilai B. Lalu tekan Next.

      1. Tekan tombol Hitung, maka akan       muncul  GroupBox Hasil Penghitungan yang berisikan Indeks Prestasi (IP), SKS Semester Ini, Harga Per SKS, dan Total SKS Yang Harus Dibayar.

Sekian tutorial saya kali ini, semoga membantu teman-teman mahasiswa yang sedang ingin mengisi KRS, sampai ketemu di tutorial selanjutnya.


About Author

Sendy PK

Saya adalah Programmer yang memiliki impian untuk menguasai dunia kunjungi situs pribadi saya di www.spk.my.id dan Online Shop saya di www.spkshop.web.id


Comment & Discussions

  • Yose Ervan Barus
    mas
    di fungsi hitungnya error
    the type or namespace name 'SKSSemesterIni" could not be found (are you missing a using directive or an assembly reference?)
    kenapa ya?

  • Please LOGIN before if you want to give the comment.