Rabu, 08 Februari 2017

Cara Membuat Kalkulator Sederhana Mengunakan Visual Basic Studio C#


Kali ini saya akan menjelaskan cara membuat aplikasi kalkulator (sederhana) menggunakan bahasa C#. Kalkulator yang dibuat adalah kalkulator berbasis desktop dan masih berupa operasi dasar aritmatika. Kemudian proses perhitungannya yaitu, kita menginputkan bilangan-bilangan yang ingin dihitung, setelah semuanya selesai diinput, ketika diklik Enter, baru akan muncul hasilnya. Jadi tidak seperti kalkulator-kalkulator pada umumnya yang langsung akan menghitung operasi dari dua bilangan yang diinputkan. 🙂



Langsung aja, buka Microsoft Visual Studionya.

Buat project baru, pilih Visual C# > Windows Form Application, kemudian isi nama project dan lokasi projectnya.

Buat desain sedemikian rupa sesuai kreatifitas Anda. Berikut contoh desain yang saya buat:.



Keterangan:

1. TextBox -> txtOperasi
2. Button -> btnSatu
3. Button -> btnDua
4. Button -> btnTiga
5. Button -> btnClear
6. Button -> btnBack
7. Button -> btnEmpat
8. Button -> btnLima
9. Button -> btnEnam
10. Button -> btnTambah
11. Button -> btnKurang
12. Button -> btnTujuh
13. Button -> btnDelapan
14. Button -> btnSembilan
15. Button -> btnKali
16. Button -> btnBagi
17. Button -> btnNol
18. Button -> btnEnter
19. Button -> btnPersen



Kemudian kita ke bagian coding, pertama-tama kita buat dulu method checkSamaDengan untuk mengecek apakah dalam output textbox terdapat karakter sama dengan (=) atau tidak. Tipe datanya kita buat void saja, bukan Boolean karena nantinya method ini akan digunakan di beberapa event atau method, jadi untuk mengurangi pengecekan lagi ketika menggunakan Boolean.


private void checkSamaDengan()
{
    Boolean b;
    if (txtOperasi.Text.Contains("="))
        b = true;
    else
        b = false;

    if (b == true)
        txtOperasi.Text = "0";
}

Kemudian kita buat method checkNol untuk mengecek apakah terdapat angka 0 di setiap awal angka atau tidak. Sama seperti method checkSamaDengan, method ini kita beri tipe void.


private void checkNol(String angka)
{
    checkSamaDengan();

    int length = txtOperasi.Text.Length;

    if (length>1)
        txtOperasi.AppendText(angka);
    else if (length == 1) {
        if (txtOperasi.Text.Equals("0"))
            txtOperasi.Text = angka;
        else
            txtOperasi.AppendText(angka);
    }
}


Selanjutnya kita buat method insertSimbol dengan 1 parameter String. Method ini digunakan untuk menambahkan simbol operasi aritmatika dasar (+, -, *, /). Method ini diberi tipe void


private void insertSimbol(String simbol)
{
    checkSamaDengan();

    int length = txtOperasi.Text.Length;

    if (length >= 1)
    {
        if (!txtOperasi.Text.ElementAt(length - 1).Equals(' '))
            txtOperasi.AppendText(simbol);
        else
            txtOperasi.Text = txtOperasi.Text.Substring(0, length - 3) + simbol;
    }
}

Selanjutnya kita buat method hitung yang digunakan untuk menghitung operasi. Method ini mempunyai parameter-parameter seperti pada method changeKurangToTambah ditambah dengan 1 parameter bertipe String.


private void hitung(List<String> listSimbol, List<double> listAngka, String simbol)
{
    for (int i = 0; i < listSimbol.Count(); i++)
    {
        if (listSimbol.ElementAt(i).Equals(simbol))
        {
            double a = listAngka.ElementAt(i);
            double b = listAngka.ElementAt(i + 1);
            listAngka.RemoveRange(i, 2);

            double c = 0;
            if (simbol.Equals("*"))
                c = a * b;
            else if (simbol.Equals("/"))
                c = a / b;
            else if (simbol.Equals("+"))
                c = a + b;

            listAngka.Insert(i, c);
            listSimbol.RemoveAt(i);
        }
    }


Selanjutnya kita buat method hasil. Method ini digunakan untuk memproses operasi aritmatika sedemikian hingga mencetak hasilnya di textbox.


private void hasil()
{
    checkSamaDengan();

    if (txtOperasi.Text.Trim().Split().Length %2 == 0)
        txtOperasi.Text = txtOperasi.Text.Substring(0, txtOperasi.Text.Length-3);

    String text = txtOperasi.Text;

    String[] arr = text.Trim().Split();

    List<double> listAngka = new List<double>();
    List<String> listSimbol = new List<String>();

    Boolean cek = true;

    for (int i = 0; i < arr.Length; i++)
    {
        int j = 0, k = 0;
        if (i % 2 == 0)
        {
            listAngka.Add(Convert.ToDouble(arr[i]));
            j++;
        }
        else if (private void hasil()
{
    checkSamaDengan();

    if (txtOperasi.Text.Trim().Split().Length %2 == 0)
        txtOperasi.Text = txtOperasi.Text.Substring(0, txtOperasi.Text.Length-3);

    String text = txtOperasi.Text;

    String[] arr = text.Trim().Split();

    List<double> listAngka = new List<double>();
    List<String> listSimbol = new List<String>();

    Boolean cek = true;

    for (int i = 0; i < arr.Length; i++)
    {
        int j = 0, k = 0;
        if (i % 2 == 0)
        {
            listAngka.Add(Convert.ToDouble(arr[i]));
            j++;
        }
        else if (i % 2 == 1)
        {
            listSimbol.Add(arr[i]);
            k++;
        }
    }

    changeKurangToTambah(listSimbol, listAngka);

    while (cek == true)
    {
        hitung(listSimbol, listAngka, "*");
        hitung(listSimbol, listAngka, "/");
        hitung(listSimbol, listAngka, "-");
        hitung(listSimbol, listAngka, "+");

        if (listSimbol.Count != 0)
            cek = true;
        else
            cek = false;
    }

    txtOperasi.AppendText(" = " + listAngka.ElementAt(0));
}

Method terakhir yaitu reset, untuk mereset hasil ke posisi awal (0).

private void reset()
{
    txtOperasi.Text = "0";
}


Nah setelah semua method-method di atas dibuat, sekarang kita berikan aksi-aksi (event) pada object-objectnya (button dan form). 🙂

Pertama kita buat event untuk button 1 – button 9.



private void btnSatu_Click(object sender, EventArgs e)
{
    checkNol("1");
}

private void btnDua_Click(object sender, EventArgs e)
{
    checkNol("2");
}

private void btnTiga_Click(object sender, EventArgs e)
{
    checkNol("3");
}

private void btnEmpat_Click(object sender, EventArgs e)
{
    checkNol("4");
}

private void btnLima_Click(object sender, EventArgs e)
{
    checkNol("5");
}

private void btnEnam_Click(object sender, EventArgs e)
{
    checkNol("6");
}

private void btnTujuh_Click(object sender, EventArgs e)
{
    checkNol("7");
}

private void btnDelapan_Click(object sender, EventArgs e)
{
    checkNol("8");
}

private void btnSembilan_Click(object sender, EventArgs e)
{
    checkNol("9");
}

Kemudian kita buat event untuk button 0.


private void btnNol_Click(object sender, EventArgs e)
{
    int length = txtOperasi.Text.Length;
    if (length > 1)
    {
        if (!txtOperasi.Text.ElementAt(length - 1).Equals(' '))
            txtOperasi.AppendText("0");
    }
    else if (length == 1)
    {
        if (!txtOperasi.Text.Equals("0"))
            txtOperasi.AppendText("0");
    }
}

Selanjutnya kita buat event pada button operasi aritmatika.


private void btnKurang_Click(object sender, EventArgs e)
{
    insertSimbol(" - ");
}

private void btnKali_Click(object sender, EventArgs e)
{
    insertSimbol(" * ");
}

private void btnBagi_Click(object sender, EventArgs e)
{
    insertSimbol(" / ");
}

Selanjutnya buat event pada button clear untuk mereset hasil.

private void btnClear_Click(object sender, EventArgs e)
{
    reset();
}

Selanjutnya buat event pada button persen untuk membagi angka yang diinputkan terakhir dengan 100.

private void btnPersen_Click(object sender, EventArgs e)
{
    int length = txtOperasi.Text.Length;

    String[] arr = txtOperasi.Text.Split();

    if (length >= 1)
    {
        if (!txtOperasi.Text.ElementAt(length - 1).Equals(' '))
        {
            txtOperasi.Text = "";
            for (int i = 0; i < arr.Length-1; i++)
            {
                txtOperasi.AppendText(arr[i] + " ");
            }
            txtOperasi.AppendText((Convert.ToDouble(arr[arr.Length-1])/100) + "");
        }
    }
}

Selanjutnya, buat event pada button back untuk menghapus karakter terakhir yang diinputkan.

private void btnBack_Click(object sender, EventArgs e)
{
    int length = txtOperasi.Text.Length;

    if (length > 1)
    {
        if (!txtOperasi.Text.ElementAt(length - 1).Equals(' '))
            txtOperasi.Text = txtOperasi.Text.Substring(0, length - 1);
        else
            txtOperasi.Text = txtOperasi.Text.Substring(0, length - 3);
    }
    else if (length == 1)
    {
        reset();
    }
}

Selanjutnya, buat event pada button enter untuk menghitung operasi aritmatika yang telah diinputkan

private void btnEnter_Click(object sender, EventArgs e)
{
    hasil();
}

Terakhir, kita buat event pada form ketika form diload

private void Form1_Load(object sender, EventArgs e)
{
    reset();
    txtOperasi.ReadOnly = true; 
    txtOperasi.BackColor = System.Drawing.SystemColors.Window;
}.
.
Selesai deh :D, hasilnya seperti berikut ini:



Sekian tutorial kali ini,Semoga mudah dimengerti dan semoga bermanfaat.

Tidak ada komentar:

Posting Komentar